aboutsummaryrefslogtreecommitdiff
path: root/llvm
diff options
context:
space:
mode:
Diffstat (limited to 'llvm')
-rw-r--r--llvm/docs/CommandGuide/index.rst1
-rw-r--r--llvm/docs/CommandGuide/llvm-offload-binary.rst185
-rw-r--r--llvm/docs/LangRef.rst18
-rw-r--r--llvm/docs/OptBisect.rst42
-rw-r--r--llvm/docs/RISCVUsage.rst2
-rw-r--r--llvm/docs/ReleaseNotes.md6
-rw-r--r--llvm/examples/Kaleidoscope/Chapter8/toy.cpp3
-rw-r--r--llvm/include/llvm-c/Core.h16
-rw-r--r--llvm/include/llvm/ADT/EquivalenceClasses.h2
-rw-r--r--llvm/include/llvm/Analysis/HeatUtils.h8
-rw-r--r--llvm/include/llvm/Analysis/IR2Vec.h9
-rw-r--r--llvm/include/llvm/Bitcode/LLVMBitCodes.h1
-rw-r--r--llvm/include/llvm/CodeGen/LiveRangeEdit.h19
-rw-r--r--llvm/include/llvm/CodeGen/MIR2Vec.h186
-rw-r--r--llvm/include/llvm/CodeGen/Passes.h5
-rw-r--r--llvm/include/llvm/ExecutionEngine/Orc/EPCGenericDylibManager.h16
-rw-r--r--llvm/include/llvm/ExecutionEngine/Orc/ExecutorResolutionGenerator.h74
-rw-r--r--llvm/include/llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h9
-rw-r--r--llvm/include/llvm/ExecutionEngine/Orc/Shared/TargetProcessControlTypes.h6
-rw-r--r--llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/ExecutorResolver.h48
-rw-r--r--llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleExecutorDylibManager.h6
-rw-r--r--llvm/include/llvm/IR/Attributes.td3
-rw-r--r--llvm/include/llvm/IR/FixedMetadataKinds.def1
-rw-r--r--llvm/include/llvm/IR/InstrTypes.h8
-rw-r--r--llvm/include/llvm/InitializePasses.h2
-rw-r--r--llvm/include/llvm/Support/CrashRecoveryContext.h7
-rw-r--r--llvm/include/llvm/Support/SpecialCaseList.h15
-rw-r--r--llvm/include/llvm/Transforms/Instrumentation/AllocToken.h46
-rwxr-xr-xllvm/lib/Analysis/ConstantFolding.cpp9
-rw-r--r--llvm/lib/Analysis/HeatUtils.cpp62
-rw-r--r--llvm/lib/Analysis/InstructionSimplify.cpp182
-rw-r--r--llvm/lib/Analysis/Loads.cpp24
-rw-r--r--llvm/lib/Analysis/ValueTracking.cpp4
-rw-r--r--llvm/lib/Analysis/models/x86SeedEmbeddingVocab100D.json677
-rw-r--r--llvm/lib/Bitcode/Reader/BitcodeReader.cpp2
-rw-r--r--llvm/lib/Bitcode/Writer/BitcodeWriter.cpp2
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp2
-rw-r--r--llvm/lib/CodeGen/CMakeLists.txt1
-rw-r--r--llvm/lib/CodeGen/CodeGen.cpp2
-rw-r--r--llvm/lib/CodeGen/InlineSpiller.cpp21
-rw-r--r--llvm/lib/CodeGen/LiveRangeEdit.cpp108
-rw-r--r--llvm/lib/CodeGen/MIR2Vec.cpp306
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp8
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h2
-rw-r--r--llvm/lib/CodeGen/SplitKit.cpp4
-rw-r--r--llvm/lib/ExecutionEngine/Orc/CMakeLists.txt1
-rw-r--r--llvm/lib/ExecutionEngine/Orc/EPCDebugObjectRegistrar.cpp7
-rw-r--r--llvm/lib/ExecutionEngine/Orc/EPCDynamicLibrarySearchGenerator.cpp18
-rw-r--r--llvm/lib/ExecutionEngine/Orc/EPCGenericDylibManager.cpp20
-rw-r--r--llvm/lib/ExecutionEngine/Orc/ExecutorResolutionGenerator.cpp98
-rw-r--r--llvm/lib/ExecutionEngine/Orc/LookupAndRecordAddrs.cpp7
-rw-r--r--llvm/lib/ExecutionEngine/Orc/SelfExecutorProcessControl.cpp18
-rw-r--r--llvm/lib/ExecutionEngine/Orc/Shared/OrcRTBridge.cpp4
-rw-r--r--llvm/lib/ExecutionEngine/Orc/TargetProcess/CMakeLists.txt1
-rw-r--r--llvm/lib/ExecutionEngine/Orc/TargetProcess/ExecutorResolver.cpp47
-rw-r--r--llvm/lib/ExecutionEngine/Orc/TargetProcess/SimpleExecutorDylibManager.cpp71
-rw-r--r--llvm/lib/IR/ConstantFold.cpp9
-rw-r--r--llvm/lib/IR/Core.cpp8
-rw-r--r--llvm/lib/IR/Instructions.cpp41
-rw-r--r--llvm/lib/IR/Verifier.cpp10
-rw-r--r--llvm/lib/Passes/PassBuilder.cpp1
-rw-r--r--llvm/lib/Passes/PassRegistry.def1
-rw-r--r--llvm/lib/Support/SpecialCaseList.cpp35
-rw-r--r--llvm/lib/Target/AArch64/GISel/AArch64RegisterBankInfo.cpp4
-rw-r--r--llvm/lib/Target/AMDGPU/AMDGPU.td3
-rw-r--r--llvm/lib/Target/AMDGPU/AMDGPUAttributor.cpp4
-rw-r--r--llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp9
-rw-r--r--llvm/lib/Target/AMDGPU/DSInstructions.td20
-rw-r--r--llvm/lib/Target/AMDGPU/FLATInstructions.td130
-rw-r--r--llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp1
-rw-r--r--llvm/lib/Target/ARM/ARMISelLowering.cpp1
-rw-r--r--llvm/lib/Target/ARM/ARMInstrVFP.td112
-rw-r--r--llvm/lib/Target/ARM/ARMRegisterInfo.td8
-rw-r--r--llvm/lib/Target/BPF/BPFCheckAndAdjustIR.cpp138
-rw-r--r--llvm/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp56
-rw-r--r--llvm/lib/Target/RISCV/RISCVExpandAtomicPseudoInsts.cpp4
-rw-r--r--llvm/lib/Target/RISCV/RISCVFeatures.td2
-rw-r--r--llvm/lib/Target/RISCV/RISCVGISel.td54
-rw-r--r--llvm/lib/Target/RISCV/RISCVISelLowering.cpp134
-rw-r--r--llvm/lib/Target/RISCV/RISCVInstrInfo.cpp29
-rw-r--r--llvm/lib/Target/RISCV/RISCVInstrInfo.h19
-rw-r--r--llvm/lib/Target/RISCV/RISCVInstrInfoA.td28
-rw-r--r--llvm/lib/Target/RISCV/RISCVInstrInfoZa.td20
-rw-r--r--llvm/lib/Target/RISCV/RISCVInstrInfoZalasr.td11
-rw-r--r--llvm/lib/Target/RISCV/RISCVSchedSiFive7.td36
-rw-r--r--llvm/lib/Target/RISCV/RISCVScheduleV.td55
-rw-r--r--llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp191
-rw-r--r--llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp3
-rw-r--r--llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp5
-rw-r--r--llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp10
-rw-r--r--llvm/lib/Transforms/Instrumentation/AllocToken.cpp494
-rw-r--r--llvm/lib/Transforms/Instrumentation/CMakeLists.txt1
-rw-r--r--llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp14
-rw-r--r--llvm/lib/Transforms/Scalar/DFAJumpThreading.cpp108
-rw-r--r--llvm/lib/Transforms/Utils/CodeExtractor.cpp1
-rw-r--r--llvm/lib/Transforms/Utils/Local.cpp7
-rw-r--r--llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp92
-rw-r--r--llvm/lib/Transforms/Vectorize/VPlan.h3
-rw-r--r--llvm/lib/Transforms/Vectorize/VPlanConstruction.cpp5
-rw-r--r--llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp6
-rw-r--r--llvm/lib/Transforms/Vectorize/VPlanUtils.cpp4
-rw-r--r--llvm/runtimes/CMakeLists.txt8
-rw-r--r--llvm/test/Assembler/ConstantExprFold.ll6
-rw-r--r--llvm/test/Bitcode/attributes.ll6
-rw-r--r--llvm/test/Bitcode/compatibility.ll8
-rw-r--r--llvm/test/CMakeLists.txt1
-rw-r--r--llvm/test/CodeGen/AArch64/arm64-saddlp1d-uaddlp1d.mir50
-rw-r--r--llvm/test/CodeGen/AArch64/arm64-vadd.ll5
-rw-r--r--llvm/test/CodeGen/AMDGPU/addrspacecast-constantexpr.ll4
-rw-r--r--llvm/test/CodeGen/AMDGPU/annotate-kernel-features-hsa-call.ll40
-rw-r--r--llvm/test/CodeGen/AMDGPU/annotate-kernel-features-hsa.ll26
-rw-r--r--llvm/test/CodeGen/AMDGPU/annotate-kernel-features.ll18
-rw-r--r--llvm/test/CodeGen/AMDGPU/atomic_load_local.ll132
-rw-r--r--llvm/test/CodeGen/AMDGPU/atomic_store_local.ll196
-rw-r--r--llvm/test/CodeGen/AMDGPU/attributor-flatscratchinit-undefined-behavior.ll4
-rw-r--r--llvm/test/CodeGen/AMDGPU/attributor-flatscratchinit.ll38
-rw-r--r--llvm/test/CodeGen/AMDGPU/bf16.ll3693
-rw-r--r--llvm/test/CodeGen/AMDGPU/calling-conventions.ll6
-rw-r--r--llvm/test/CodeGen/AMDGPU/direct-indirect-call.ll2
-rw-r--r--llvm/test/CodeGen/AMDGPU/duplicate-attribute-indirect.ll2
-rw-r--r--llvm/test/CodeGen/AMDGPU/fcanonicalize-elimination.ll6
-rw-r--r--llvm/test/CodeGen/AMDGPU/fneg-combines.new.ll10
-rw-r--r--llvm/test/CodeGen/AMDGPU/fptrunc.f16.ll738
-rw-r--r--llvm/test/CodeGen/AMDGPU/implicitarg-offset-attributes.ll26
-rw-r--r--llvm/test/CodeGen/AMDGPU/indirect-call-set-from-other-function.ll2
-rw-r--r--llvm/test/CodeGen/AMDGPU/issue120256-annotate-constexpr-addrspacecast.ll4
-rw-r--r--llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.fp8.f16.ll24
-rw-r--r--llvm/test/CodeGen/AMDGPU/llvm.amdgcn.rcp.bf16.ll14
-rw-r--r--llvm/test/CodeGen/AMDGPU/llvm.amdgcn.rsq.bf16.ll6
-rw-r--r--llvm/test/CodeGen/AMDGPU/llvm.amdgcn.tanh.ll12
-rw-r--r--llvm/test/CodeGen/AMDGPU/min.ll92
-rw-r--r--llvm/test/CodeGen/AMDGPU/minmax.ll20
-rw-r--r--llvm/test/CodeGen/AMDGPU/propagate-flat-work-group-size.ll18
-rw-r--r--llvm/test/CodeGen/AMDGPU/propagate-waves-per-eu.ll42
-rw-r--r--llvm/test/CodeGen/AMDGPU/recursive_global_initializer.ll2
-rw-r--r--llvm/test/CodeGen/AMDGPU/remove-no-kernel-id-attribute.ll10
-rw-r--r--llvm/test/CodeGen/AMDGPU/simple-indirect-call-2.ll12
-rw-r--r--llvm/test/CodeGen/AMDGPU/simple-indirect-call.ll2
-rw-r--r--llvm/test/CodeGen/AMDGPU/uniform-work-group-attribute-missing.ll2
-rw-r--r--llvm/test/CodeGen/AMDGPU/uniform-work-group-multistep.ll4
-rw-r--r--llvm/test/CodeGen/AMDGPU/uniform-work-group-nested-function-calls.ll4
-rw-r--r--llvm/test/CodeGen/AMDGPU/uniform-work-group-prevent-attribute-propagation.ll4
-rw-r--r--llvm/test/CodeGen/AMDGPU/uniform-work-group-propagate-attribute.ll4
-rw-r--r--llvm/test/CodeGen/AMDGPU/uniform-work-group-recursion-test.ll6
-rw-r--r--llvm/test/CodeGen/AMDGPU/uniform-work-group-test.ll2
-rw-r--r--llvm/test/CodeGen/ARM/GlobalISel/arm-instruction-select-combos.mir16
-rw-r--r--llvm/test/CodeGen/ARM/GlobalISel/arm-select-copy_to_regclass-of-fptosi.mir2
-rw-r--r--llvm/test/CodeGen/ARM/GlobalISel/select-fp.mir388
-rw-r--r--llvm/test/CodeGen/ARM/GlobalISel/select-pr35926.mir2
-rw-r--r--llvm/test/CodeGen/ARM/bf16_fast_math.ll18
-rw-r--r--llvm/test/CodeGen/ARM/cortex-m7-wideops.mir17
-rw-r--r--llvm/test/CodeGen/ARM/fp16-litpool-arm.mir2
-rw-r--r--llvm/test/CodeGen/ARM/fp16-litpool-thumb.mir2
-rw-r--r--llvm/test/CodeGen/ARM/fp16-litpool2-arm.mir2
-rw-r--r--llvm/test/CodeGen/ARM/fp16-litpool3-arm.mir2
-rw-r--r--llvm/test/CodeGen/ARM/fp16_fast_math.ll86
-rw-r--r--llvm/test/CodeGen/ARM/ipra-reg-usage.ll2
-rw-r--r--llvm/test/CodeGen/ARM/llrint-conv.ll11
-rw-r--r--llvm/test/CodeGen/ARM/lrint-conv.ll48
-rw-r--r--llvm/test/CodeGen/ARM/misched-prevent-erase-history-of-subunits.mir4
-rw-r--r--llvm/test/CodeGen/ARM/vector-lrint.ll1301
-rw-r--r--llvm/test/CodeGen/ARM/vlldm-vlstm-uops.mir4
-rw-r--r--llvm/test/CodeGen/BPF/addr-space-memintrinsic-gep.ll60
-rw-r--r--llvm/test/CodeGen/BPF/addr-space-memintrinsic-no-gep.ll49
-rw-r--r--llvm/test/CodeGen/MIR2Vec/Inputs/mir2vec_dummy_2D_vocab.json11
-rw-r--r--llvm/test/CodeGen/MIR2Vec/Inputs/mir2vec_inconsistent_dims.json7
-rw-r--r--llvm/test/CodeGen/MIR2Vec/Inputs/mir2vec_invalid_vocab.json5
-rw-r--r--llvm/test/CodeGen/MIR2Vec/Inputs/mir2vec_zero_vocab.json12
-rw-r--r--llvm/test/CodeGen/MIR2Vec/Inputs/reference_x86_vocab_print.txt6882
-rw-r--r--llvm/test/CodeGen/MIR2Vec/Inputs/reference_x86_vocab_wo=0.5_print.txt6882
-rw-r--r--llvm/test/CodeGen/MIR2Vec/vocab-basic.ll14
-rw-r--r--llvm/test/CodeGen/MIR2Vec/vocab-error-handling.ll15
-rw-r--r--llvm/test/CodeGen/RISCV/GlobalISel/atomic-load-store-fp.ll118
-rw-r--r--llvm/test/CodeGen/RISCV/atomic-rmw.ll14130
-rw-r--r--llvm/test/CodeGen/RISCV/attributes.ll6
-rw-r--r--llvm/test/CodeGen/RISCV/float-imm.ll8
-rw-r--r--llvm/test/CodeGen/RISCV/half-imm.ll76
-rw-r--r--llvm/test/CodeGen/Thumb2/LowOverheadLoops/emptyblock.mir68
-rw-r--r--llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-mov.mir16
-rw-r--r--llvm/test/CodeGen/Thumb2/LowOverheadLoops/lstp-insertion-position.mir12
-rw-r--r--llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-after-dlstp.mir8
-rw-r--r--llvm/test/CodeGen/Thumb2/pipeliner-inlineasm.mir16
-rw-r--r--llvm/test/CodeGen/Thumb2/scavenge-lr.mir16
-rw-r--r--llvm/test/CodeGen/Thumb2/swp-exitbranchdir.mir16
-rw-r--r--llvm/test/CodeGen/Thumb2/swp-fixedii-le.mir12
-rw-r--r--llvm/test/CodeGen/Thumb2/swp-fixedii.mir16
-rw-r--r--llvm/test/CodeGen/Thumb2/swp-regpressure.mir160
-rw-r--r--llvm/test/CodeGen/WebAssembly/simd-setcc-reductions.ll13
-rw-r--r--llvm/test/DebugInfo/KeyInstructions/Generic/loop-unroll-runtime.ll2
-rw-r--r--llvm/test/DebugInfo/dwarf-complex-int.ll59
-rw-r--r--llvm/test/Instrumentation/AddressSanitizer/RISCV/asan-rvv-intrinsics.ll2828
-rw-r--r--llvm/test/Instrumentation/AllocToken/basic.ll98
-rw-r--r--llvm/test/Instrumentation/AllocToken/basic32.ll31
-rw-r--r--llvm/test/Instrumentation/AllocToken/extralibfuncs.ll44
-rw-r--r--llvm/test/Instrumentation/AllocToken/fast.ll42
-rw-r--r--llvm/test/Instrumentation/AllocToken/ignore.ll29
-rw-r--r--llvm/test/Instrumentation/AllocToken/invoke.ll123
-rw-r--r--llvm/test/Instrumentation/AllocToken/nonlibcalls.ll85
-rw-r--r--llvm/test/Instrumentation/AllocToken/remark.ll38
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/abilist_aggregate.ll20
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/arith.ll95
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/array.ll2
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/dfsan-pass-second-run.ll2
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/dont_combine_offset_labels_on_gep.ll31
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/origin_abilist.ll24
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/origin_cached_shadows.ll164
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/origin_call.ll4
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/origin_load.ll2
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/origin_mem_intrinsic.ll59
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/origin_other_ops.ll238
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/origin_phi.ll65
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/origin_select.ll6
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/origin_store.ll6
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/origin_store_threshold.ll39
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/origin_track_load.ll39
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/phi.ll35
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/select.ll121
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/store.ll8
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/struct.ll26
-rw-r--r--llvm/test/Instrumentation/DataFlowSanitizer/vector.ll83
-rw-r--r--llvm/test/MC/RISCV/attribute-arch.s4
-rw-r--r--llvm/test/TableGen/RuntimeLibcallEmitter-calling-conv.td70
-rw-r--r--llvm/test/TableGen/RuntimeLibcallEmitter-conflict-warning.td18
-rw-r--r--llvm/test/TableGen/RuntimeLibcallEmitter.td78
-rw-r--r--llvm/test/Transforms/DFAJumpThreading/dfa-jump-threading-analysis.ll13
-rw-r--r--llvm/test/Transforms/DFAJumpThreading/dfa-jump-threading-transform.ll15
-rw-r--r--llvm/test/Transforms/GVN/2011-07-07-MatchIntrinsicExtract.ll87
-rw-r--r--llvm/test/Transforms/GVN/2011-09-07-TypeIdFor.ll61
-rw-r--r--llvm/test/Transforms/GVN/2012-05-22-PreCrash.ll30
-rw-r--r--llvm/test/Transforms/GVN/2016-08-30-MaskedScatterGather-inseltpoison.ll30
-rw-r--r--llvm/test/Transforms/GVN/2016-08-30-MaskedScatterGather.ll30
-rw-r--r--llvm/test/Transforms/GVN/MemdepMiscompile.ll40
-rw-r--r--llvm/test/Transforms/GVN/basic-undef-test.ll15
-rw-r--r--llvm/test/Transforms/GVN/bitcast-of-call.ll17
-rw-r--r--llvm/test/Transforms/GVN/br-identical.ll27
-rw-r--r--llvm/test/Transforms/GVN/calls-nonlocal.ll103
-rw-r--r--llvm/test/Transforms/GVN/calls-readonly.ll36
-rw-r--r--llvm/test/Transforms/GVN/cond_br.ll38
-rw-r--r--llvm/test/Transforms/GVN/cond_br2.ll93
-rw-r--r--llvm/test/Transforms/GVN/crash-no-aa.ll13
-rw-r--r--llvm/test/Transforms/GVN/critical-edge-split-failure.ll31
-rw-r--r--llvm/test/Transforms/GVN/dbg-redundant-load.ll36
-rw-r--r--llvm/test/Transforms/GVN/fake-use-constprop.ll16
-rw-r--r--llvm/test/Transforms/GVN/flags.ll15
-rw-r--r--llvm/test/Transforms/GVN/fold-const-expr.ll17
-rw-r--r--llvm/test/Transforms/GVN/fpmath.ll51
-rw-r--r--llvm/test/Transforms/GVN/funclet.ll30
-rw-r--r--llvm/test/Transforms/GVN/int_sideeffect.ll60
-rw-r--r--llvm/test/Transforms/GVN/invariant.group.ll563
-rw-r--r--llvm/test/Transforms/GVN/invariant.start.ll43
-rw-r--r--llvm/test/Transforms/GVN/load-constant-mem.ll26
-rw-r--r--llvm/test/Transforms/GVN/load-from-unreachable-predecessor.ll19
-rw-r--r--llvm/test/Transforms/GVN/malloc-load-removal.ll59
-rw-r--r--llvm/test/Transforms/GVN/mssa-update-dead-def.ll24
-rw-r--r--llvm/test/Transforms/GVN/no-mem-dep-info.ll16
-rw-r--r--llvm/test/Transforms/GVN/noalias.ll37
-rw-r--r--llvm/test/Transforms/GVN/non-local-offset.ll44
-rw-r--r--llvm/test/Transforms/GVN/nonescaping-malloc.ll4
-rw-r--r--llvm/test/Transforms/GVN/null-aliases-nothing.ll31
-rw-r--r--llvm/test/Transforms/GVN/phi-translate-partial-alias.ll18
-rw-r--r--llvm/test/Transforms/GVN/pr10820.ll11
-rw-r--r--llvm/test/Transforms/GVN/pr12979.ll83
-rw-r--r--llvm/test/Transforms/GVN/pr17732.ll9
-rw-r--r--llvm/test/Transforms/GVN/pr17852.ll64
-rw-r--r--llvm/test/Transforms/GVN/pr24397.ll15
-rw-r--r--llvm/test/Transforms/GVN/pr24426.ll11
-rw-r--r--llvm/test/Transforms/GVN/pr25440.ll91
-rw-r--r--llvm/test/Transforms/GVN/pr28562.ll10
-rw-r--r--llvm/test/Transforms/GVN/pr28879.ll29
-rw-r--r--llvm/test/Transforms/GVN/pr36063.ll15
-rw-r--r--llvm/test/Transforms/GVN/pr42605.ll60
-rw-r--r--llvm/test/Transforms/GVN/pr49193.ll33
-rw-r--r--llvm/test/Transforms/GVN/pre-new-inst.ll19
-rw-r--r--llvm/test/Transforms/GVN/propagate-ir-flags.ll27
-rw-r--r--llvm/test/Transforms/GVN/rle-no-phi-translate.ll34
-rw-r--r--llvm/test/Transforms/GVN/rle-nonlocal.ll30
-rw-r--r--llvm/test/Transforms/GVN/simplify-icf-cache-invalidation.ll28
-rw-r--r--llvm/test/Transforms/GVN/stale-loop-info.ll23
-rw-r--r--llvm/test/Transforms/GVN/unreachable-predecessor.ll32
-rw-r--r--llvm/test/Transforms/GVN/unreachable_block_infinite_loop.ll43
-rw-r--r--llvm/test/Transforms/GVN/volatile-nonvolatile.ll47
-rw-r--r--llvm/test/Transforms/GlobalOpt/cleanup-pointer-root-users-gep-constexpr.ll10
-rw-r--r--llvm/test/Transforms/HardwareLoops/ARM/structure.ll8
-rw-r--r--llvm/test/Transforms/Inline/attributes.ll42
-rw-r--r--llvm/test/Transforms/InstCombine/AMDGPU/fmed3.ll39
-rw-r--r--llvm/test/Transforms/InstSimplify/fminmax-folds.ll245
-rw-r--r--llvm/test/Transforms/InstSimplify/ptrtoint.ll14
-rw-r--r--llvm/test/Transforms/LoopUnroll/AArch64/apple-unrolling.ll140
-rw-r--r--llvm/test/Transforms/LoopUnroll/AArch64/runtime-unroll-generic.ll10
-rw-r--r--llvm/test/Transforms/LoopUnroll/AArch64/vector.ll30
-rw-r--r--llvm/test/Transforms/LoopUnroll/AMDGPU/unroll-runtime.ll16
-rw-r--r--llvm/test/Transforms/LoopUnroll/ARM/multi-blocks.ll44
-rw-r--r--llvm/test/Transforms/LoopUnroll/Hexagon/reuse-lcssa-phi-scev-expansion.ll16
-rw-r--r--llvm/test/Transforms/LoopUnroll/PowerPC/p8-unrolling-legalize-vectors-inseltpoison.ll12
-rw-r--r--llvm/test/Transforms/LoopUnroll/PowerPC/p8-unrolling-legalize-vectors.ll12
-rw-r--r--llvm/test/Transforms/LoopUnroll/RISCV/vector.ll14
-rw-r--r--llvm/test/Transforms/LoopUnroll/WebAssembly/basic-unrolling.ll10
-rw-r--r--llvm/test/Transforms/LoopUnroll/convergent.controlled.ll10
-rw-r--r--llvm/test/Transforms/LoopUnroll/followup.ll2
-rw-r--r--llvm/test/Transforms/LoopUnroll/runtime-epilog-debuginfo.ll4
-rw-r--r--llvm/test/Transforms/LoopUnroll/runtime-exit-phi-scev-invalidation.ll21
-rw-r--r--llvm/test/Transforms/LoopUnroll/runtime-i128.ll16
-rw-r--r--llvm/test/Transforms/LoopUnroll/runtime-loop-at-most-two-exits.ll25
-rw-r--r--llvm/test/Transforms/LoopUnroll/runtime-loop-branchweight.ll2
-rw-r--r--llvm/test/Transforms/LoopUnroll/runtime-loop-multiple-exits.ll827
-rw-r--r--llvm/test/Transforms/LoopUnroll/runtime-loop.ll4
-rw-r--r--llvm/test/Transforms/LoopUnroll/runtime-loop1.ll4
-rw-r--r--llvm/test/Transforms/LoopUnroll/runtime-loop2.ll4
-rw-r--r--llvm/test/Transforms/LoopUnroll/runtime-loop5.ll23
-rw-r--r--llvm/test/Transforms/LoopUnroll/runtime-multiexit-heuristic.ll121
-rw-r--r--llvm/test/Transforms/LoopUnroll/runtime-unroll-assume-no-remainder.ll14
-rw-r--r--llvm/test/Transforms/LoopUnroll/runtime-unroll-reductions.ll69
-rw-r--r--llvm/test/Transforms/LoopUnroll/runtime-unroll-remainder.ll27
-rw-r--r--llvm/test/Transforms/LoopUnroll/scev-invalidation-lcssa.ll16
-rw-r--r--llvm/test/Transforms/LoopUnroll/tripcount-overflow.ll17
-rw-r--r--llvm/test/Transforms/LoopUnroll/unroll-heuristics-pgo.ll2
-rw-r--r--llvm/test/Transforms/LoopUnroll/unroll-loads-cse.ll70
-rw-r--r--llvm/test/Transforms/LoopUnrollAndJam/dependencies_visit_order.ll15
-rw-r--r--llvm/test/Transforms/LoopUnrollAndJam/followup.ll2
-rw-r--r--llvm/test/Transforms/LoopUnrollAndJam/unroll-and-jam.ll119
-rw-r--r--llvm/test/Transforms/LoopVectorize/X86/float-induction-x86.ll62
-rw-r--r--llvm/test/Transforms/LoopVectorize/dereferenceable-info-from-assumption-constant-size.ll28
-rw-r--r--llvm/test/Transforms/LoopVectorize/epilog-vectorization-scev-expansion.ll73
-rw-r--r--llvm/test/Transforms/LoopVectorize/single-early-exit-deref-assumptions.ll37
-rw-r--r--llvm/test/Transforms/LowerTypeTests/simple.ll4
-rw-r--r--llvm/test/Transforms/PhaseOrdering/AArch64/extra-unroll-simplifications.ll24
-rw-r--r--llvm/test/Transforms/SCCP/binaryops-constexprs.ll28
-rw-r--r--llvm/test/Transforms/SimplifyCFG/merge-calls-alloc-token.ll104
-rw-r--r--llvm/test/tools/llvm-ar/extract.test3
-rw-r--r--llvm/test/tools/llvm-ar/print.test3
-rw-r--r--llvm/test/tools/llvm-exegesis/AArch64/no-aliasing-ld-str.s4
-rw-r--r--llvm/test/tools/llvm-mca/RISCV/SiFive7/vector-fp.s4848
-rw-r--r--llvm/test/tools/llvm-mca/RISCV/SpacemitX60/atomic.s44
-rw-r--r--llvm/test/tools/llvm-offload-binary/llvm-offload-binary.ll14
-rw-r--r--llvm/test/tools/llvm-reduce/inline-call-sites-cost.ll95
-rw-r--r--llvm/test/tools/llvm-reduce/inline-call-sites.ll765
-rw-r--r--llvm/tools/llc/llc.cpp56
-rw-r--r--llvm/tools/lli/ForwardingMemoryManager.h7
-rw-r--r--llvm/tools/llvm-offload-binary/CMakeLists.txt13
-rw-r--r--llvm/tools/llvm-offload-binary/llvm-offload-binary.cpp258
-rw-r--r--llvm/tools/llvm-profdata/CMakeLists.txt5
-rw-r--r--llvm/tools/llvm-profdata/llvm-profdata.cpp5
-rw-r--r--llvm/tools/llvm-reduce/CMakeLists.txt1
-rw-r--r--llvm/tools/llvm-reduce/DeltaManager.cpp1
-rw-r--r--llvm/tools/llvm-reduce/DeltaPasses.def2
-rw-r--r--llvm/tools/llvm-reduce/deltas/ReduceInlineCallSites.cpp103
-rw-r--r--llvm/tools/llvm-reduce/deltas/ReduceInlineCallSites.h18
-rw-r--r--llvm/unittests/Analysis/IR2VecTest.cpp54
-rw-r--r--llvm/unittests/CodeGen/CMakeLists.txt1
-rw-r--r--llvm/unittests/CodeGen/MIR2VecTest.cpp217
-rw-r--r--llvm/unittests/ExecutionEngine/Orc/ObjectLinkingLayerTest.cpp4
-rw-r--r--llvm/unittests/IR/FunctionTest.cpp19
-rw-r--r--llvm/unittests/IR/InstructionsTest.cpp67
-rw-r--r--llvm/unittests/TargetParser/RISCVISAInfoTest.cpp6
-rw-r--r--llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.cpp41
-rw-r--r--llvm/utils/emacs/llvm-mode.el2
-rw-r--r--llvm/utils/gn/secondary/bolt/lib/Passes/BUILD.gn2
-rw-r--r--llvm/utils/gn/secondary/clang/test/BUILD.gn1
-rw-r--r--llvm/utils/gn/secondary/clang/tools/clang-offload-packager/BUILD.gn10
-rw-r--r--llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn1
-rw-r--r--llvm/utils/gn/secondary/llvm/lib/ExecutionEngine/Orc/BUILD.gn1
-rw-r--r--llvm/utils/gn/secondary/llvm/lib/ExecutionEngine/Orc/TargetProcess/BUILD.gn1
-rw-r--r--llvm/utils/gn/secondary/llvm/lib/Transforms/Instrumentation/BUILD.gn1
-rw-r--r--llvm/utils/gn/secondary/llvm/test/BUILD.gn1
-rw-r--r--llvm/utils/gn/secondary/llvm/tools/llvm-offload-binary/BUILD.gn8
-rw-r--r--llvm/utils/gn/secondary/llvm/tools/llvm-profdata/BUILD.gn2
-rw-r--r--llvm/utils/gn/secondary/llvm/tools/llvm-reduce/BUILD.gn1
-rw-r--r--llvm/utils/llvm.grm1
-rw-r--r--llvm/utils/profcheck-xfail.txt5
-rw-r--r--llvm/utils/vim/syntax/llvm.vim1
-rw-r--r--llvm/utils/vscode/llvm/syntaxes/ll.tmLanguage.yaml1
371 files changed, 47436 insertions, 9038 deletions
diff --git a/llvm/docs/CommandGuide/index.rst b/llvm/docs/CommandGuide/index.rst
index f85f32a..8f080de 100644
--- a/llvm/docs/CommandGuide/index.rst
+++ b/llvm/docs/CommandGuide/index.rst
@@ -92,6 +92,7 @@ Developer Tools
llvm-pdbutil
llvm-profgen
llvm-tli-checker
+ llvm-offload-binary
Remarks Tools
~~~~~~~~~~~~~~
diff --git a/llvm/docs/CommandGuide/llvm-offload-binary.rst b/llvm/docs/CommandGuide/llvm-offload-binary.rst
new file mode 100644
index 0000000..960b12d
--- /dev/null
+++ b/llvm/docs/CommandGuide/llvm-offload-binary.rst
@@ -0,0 +1,185 @@
+llvm-offload-binary - LLVM Offload Binary Packager
+==================================================
+
+.. program:: llvm-offload-binary
+
+SYNOPSIS
+--------
+
+:program:`llvm-offload-binary` [*options*] [*input files...*]
+
+DESCRIPTION
+-----------
+
+:program:`llvm-offload-binary` is a utility for bundling multiple device object
+files into a single binary container. The resulting binary can then be embedded
+into the host section table to form a fat binary containing offloading code for
+different targets. Conversely, it can also extract previously bundled device
+images.
+
+The binary format begins with the magic bytes ``0x10FF10AD``, followed by a
+version and size. Each binary contains its own header, allowing tools to locate
+offloading sections even when merged by a linker. Each offload entry includes
+metadata such as the device image kind, producer kind, and key-value string
+metadata. Multiple offloading images are concatenated to form a fat binary.
+
+EXAMPLE
+-------
+
+.. code-block:: console
+
+ # Package multiple device images into a fat binary:
+ $ llvm-offload-binary -o out.bin \
+ --image=file=input.o,triple=nvptx64,arch=sm_70
+
+ # Extract a matching image from a fat binary:
+ $ llvm-offload-binary in.bin \
+ --image=file=output.o,triple=nvptx64,arch=sm_70
+
+ # Extract and archive images into a static library:
+ $ llvm-offload-binary in.bin --archive -o libdevice.a
+
+OPTIONS
+-------
+
+.. option:: --archive
+
+ When extracting from an input binary, write all extracted images into a static
+ archive instead of separate files.
+
+.. option:: --image=<<key>=<value>,...>
+
+ Specify a set of arbitrary key-value arguments describing an image.
+ Commonly used optional keys include ``arch`` (e.g. ``sm_70`` for CUDA) and
+ ``triple`` (e.g. nvptx64-nvidia-cuda).
+
+.. option:: -o <file>
+
+ Write output to <file>. When bundling, this specifies the fat binary filename.
+ When extracting, this specifies the archive or output file destination.
+
+.. option:: --help, -h
+
+ Display available options. Use ``--help-hidden`` to show hidden options.
+
+.. option:: --help-list
+
+ Display a list of all options. Use ``--help-list-hidden`` to show hidden ones.
+
+.. option:: --version
+
+ Display the version of the :program:`llvm-offload-binary` executable.
+
+.. option:: @<FILE>
+
+ Read command-line options from response file `<FILE>`.
+
+BINARY FORMAT
+-------------
+
+The binary format is marked by the magic bytes ``0x10FF10AD``, followed by a
+version number. Each created binary contains its own header. This allows tools
+to locate offloading sections even after linker operations such as relocatable
+linking. Conceptually, this binary format is a serialization of a string map and
+an image buffer.
+
+.. table:: Offloading Binary Header
+ :name: table-binary_header
+
+ +----------+--------------+----------------------------------------------------+
+ | Type | Identifier | Description |
+ +==========+==============+====================================================+
+ | uint8_t | magic | The magic bytes for the binary format (0x10FF10AD) |
+ +----------+--------------+----------------------------------------------------+
+ | uint32_t | version | Version of this format (currently version 1) |
+ +----------+--------------+----------------------------------------------------+
+ | uint64_t | size | Size of this binary in bytes |
+ +----------+--------------+----------------------------------------------------+
+ | uint64_t | entry offset | Absolute offset of the offload entries in bytes |
+ +----------+--------------+----------------------------------------------------+
+ | uint64_t | entry size | Size of the offload entries in bytes |
+ +----------+--------------+----------------------------------------------------+
+
+Each offload entry describes a bundled image along with its associated metadata.
+
+.. table:: Offloading Entry Table
+ :name: table-binary_entry
+
+ +----------+---------------+----------------------------------------------------+
+ | Type | Identifier | Description |
+ +==========+===============+====================================================+
+ | uint16_t | image kind | The kind of the device image (e.g. bc, cubin) |
+ +----------+---------------+----------------------------------------------------+
+ | uint16_t | offload kind | The producer of the image (e.g. openmp, cuda) |
+ +----------+---------------+----------------------------------------------------+
+ | uint32_t | flags | Generic flags for the image |
+ +----------+---------------+----------------------------------------------------+
+ | uint64_t | string offset | Absolute offset of the string metadata table |
+ +----------+---------------+----------------------------------------------------+
+ | uint64_t | num strings | Number of string entries in the table |
+ +----------+---------------+----------------------------------------------------+
+ | uint64_t | image offset | Absolute offset of the device image in bytes |
+ +----------+---------------+----------------------------------------------------+
+ | uint64_t | image size | Size of the device image in bytes |
+ +----------+---------------+----------------------------------------------------+
+
+The entry table refers to both a string table and the raw device image itself.
+The string table provides arbitrary key-value metadata.
+
+.. table:: Offloading String Entry
+ :name: table-binary_string
+
+ +----------+--------------+-------------------------------------------------------+
+ | Type | Identifier | Description |
+ +==========+==============+=======================================================+
+ | uint64_t | key offset | Absolute byte offset of the key in the string table |
+ +----------+--------------+-------------------------------------------------------+
+ | uint64_t | value offset | Absolute byte offset of the value in the string table |
+ +----------+--------------+-------------------------------------------------------+
+
+The string table is a collection of null-terminated strings stored in the image.
+Offsets allow string entries to be interpreted as key-value pairs, enabling
+flexible metadata such as architecture or target triple.
+
+The enumerated values for ``image kind`` and ``offload kind`` are:
+
+.. table:: Image Kind
+ :name: table-image_kind
+
+ +---------------+-------+---------------------------------------+
+ | Name | Value | Description |
+ +===============+=======+=======================================+
+ | IMG_None | 0x00 | No image information provided |
+ +---------------+-------+---------------------------------------+
+ | IMG_Object | 0x01 | The image is a generic object file |
+ +---------------+-------+---------------------------------------+
+ | IMG_Bitcode | 0x02 | The image is an LLVM-IR bitcode file |
+ +---------------+-------+---------------------------------------+
+ | IMG_Cubin | 0x03 | The image is a CUDA object file |
+ +---------------+-------+---------------------------------------+
+ | IMG_Fatbinary | 0x04 | The image is a CUDA fatbinary file |
+ +---------------+-------+---------------------------------------+
+ | IMG_PTX | 0x05 | The image is a CUDA PTX file |
+ +---------------+-------+---------------------------------------+
+
+.. table:: Offload Kind
+ :name: table-offload_kind
+
+ +------------+-------+---------------------------------------+
+ | Name | Value | Description |
+ +============+=======+=======================================+
+ | OFK_None | 0x00 | No offloading information provided |
+ +------------+-------+---------------------------------------+
+ | OFK_OpenMP | 0x01 | The producer was OpenMP offloading |
+ +------------+-------+---------------------------------------+
+ | OFK_CUDA | 0x02 | The producer was CUDA |
+ +------------+-------+---------------------------------------+
+ | OFK_HIP | 0x03 | The producer was HIP |
+ +------------+-------+---------------------------------------+
+ | OFK_SYCL | 0x04 | The producer was SYCL |
+ +------------+-------+---------------------------------------+
+
+SEE ALSO
+--------
+
+:manpage:`clang(1)`, :manpage:`llvm-objdump(1)`
diff --git a/llvm/docs/LangRef.rst b/llvm/docs/LangRef.rst
index 20bd811..6d0e828 100644
--- a/llvm/docs/LangRef.rst
+++ b/llvm/docs/LangRef.rst
@@ -2529,6 +2529,9 @@ For example:
if the attributed function is called during invocation of a function
attributed with ``sanitize_realtime``.
This attribute is incompatible with the ``sanitize_realtime`` attribute.
+``sanitize_alloc_token``
+ This attribute indicates that implicit allocation token instrumentation
+ is enabled for this function.
``speculative_load_hardening``
This attribute indicates that
`Speculative Load Hardening <https://llvm.org/docs/SpeculativeLoadHardening.html>`_
@@ -8577,6 +8580,21 @@ Example:
The ``nofree`` metadata indicates the memory pointed by the pointer will not be
freed after the attached instruction.
+'``alloc_token``' Metadata
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The ``alloc_token`` metadata may be attached to calls to memory allocation
+functions, and contains richer semantic information about the type of the
+allocation. This information is consumed by the ``alloc-token`` pass to
+instrument such calls with allocation token IDs.
+
+The metadata contains a string with the type of an allocation.
+
+.. code-block:: none
+
+ call ptr @malloc(i64 64), !alloc_token !0
+
+ !0 = !{!"<type-name>"}
Module Flags Metadata
=====================
diff --git a/llvm/docs/OptBisect.rst b/llvm/docs/OptBisect.rst
index 0e4d31a..e3ba078 100644
--- a/llvm/docs/OptBisect.rst
+++ b/llvm/docs/OptBisect.rst
@@ -8,7 +8,7 @@ Using -opt-bisect-limit to debug optimization errors
Introduction
============
-The -opt-bisect-limit option provides a way to disable all optimization passes
+The ``-opt-bisect-limit`` option provides a way to disable all optimization passes
above a specified limit without modifying the way in which the Pass Managers
are populated. The intention of this option is to assist in tracking down
problems where incorrect transformations during optimization result in incorrect
@@ -19,10 +19,10 @@ skipped while still allowing correct code generation call a function to
check the opt-bisect limit before performing optimizations. Passes which
either must be run or do not modify the IR do not perform this check and are
therefore never skipped. Generally, this means analysis passes, passes
-that are run at CodeGenOptLevel::None and passes which are required for register
+that are run at ``CodeGenOptLevel::None`` and passes which are required for register
allocation.
-The -opt-bisect-limit option can be used with any tool, including front ends
+The ``-opt-bisect-limit`` option can be used with any tool, including front ends
such as clang, that uses the core LLVM library for optimization and code
generation. The exact syntax for invoking the option is discussed below.
@@ -36,7 +36,7 @@ transformations that is difficult to replicate with tools like opt and llc.
Getting Started
===============
-The -opt-bisect-limit command line option can be passed directly to tools such
+The ``-opt-bisect-limit`` command-line option can be passed directly to tools such
as opt, llc and lli. The syntax is as follows:
::
@@ -49,17 +49,17 @@ indicating the index value that is associated with that optimization. To skip
optimizations, pass the value of the last optimization to be performed as the
opt-bisect-limit. All optimizations with a higher index value will be skipped.
-In order to use the -opt-bisect-limit option with a driver that provides a
+In order to use the ``-opt-bisect-limit`` option with a driver that provides a
wrapper around the LLVM core library, an additional prefix option may be
required, as defined by the driver. For example, to use this option with
-clang, the "-mllvm" prefix must be used. A typical clang invocation would look
+clang, the ``-mllvm`` prefix must be used. A typical clang invocation would look
like this:
::
clang -O2 -mllvm -opt-bisect-limit=256 my_file.c
-The -opt-bisect-limit option may also be applied to link-time optimizations by
+The ``-opt-bisect-limit`` option may also be applied to link-time optimizations by
using a prefix to indicate that this is a plug-in option for the linker. The
following syntax will set a bisect limit for LTO transformations:
@@ -72,11 +72,11 @@ following syntax will set a bisect limit for LTO transformations:
LTO passes are run by a library instance invoked by the linker. Therefore any
passes run in the primary driver compilation phase are not affected by options
-passed via '-Wl,-plugin-opt' and LTO passes are not affected by options
-passed to the driver-invoked LLVM invocation via '-mllvm'.
+passed via ``-Wl,-plugin-opt`` and LTO passes are not affected by options
+passed to the driver-invoked LLVM invocation via ``-mllvm``.
Passing ``-opt-bisect-print-ir-path=path/foo.ll`` will dump the IR to
-``path/foo.ll`` when -opt-bisect-limit starts skipping passes.
+``path/foo.ll`` when ``-opt-bisect-limit`` starts skipping passes.
Bisection Index Values
======================
@@ -85,7 +85,7 @@ The granularity of the optimizations associated with a single index value is
variable. Depending on how the optimization pass has been instrumented the
value may be associated with as much as all transformations that would have
been performed by an optimization pass on an IR unit for which it is invoked
-(for instance, during a single call of runOnFunction for a FunctionPass) or as
+(for instance, during a single call of ``runOnFunction`` for a ``FunctionPass``) or as
little as a single transformation. The index values may also be nested so that
if an invocation of the pass is not skipped individual transformations within
that invocation may still be skipped.
@@ -99,7 +99,7 @@ is not a problem.
When an opt-bisect index value refers to an entire invocation of the run
function for a pass, the pass will query whether or not it should be skipped
each time it is invoked and each invocation will be assigned a unique value.
-For example, if a FunctionPass is used with a module containing three functions
+For example, if a ``FunctionPass`` is used with a module containing three functions
a different index value will be assigned to the pass for each of the functions
as the pass is run. The pass may be run on two functions but skipped for the
third.
@@ -144,13 +144,13 @@ Example Usage
Pass Skipping Implementation
============================
-The -opt-bisect-limit implementation depends on individual passes opting in to
-the opt-bisect process. The OptBisect object that manages the process is
+The ``-opt-bisect-limit`` implementation depends on individual passes opting in to
+the opt-bisect process. The ``OptBisect`` object that manages the process is
entirely passive and has no knowledge of how any pass is implemented. When a
-pass is run if the pass may be skipped, it should call the OptBisect object to
+pass is run if the pass may be skipped, it should call the ``OptBisect`` object to
see if it should be skipped.
-The OptBisect object is intended to be accessed through LLVMContext and each
+The ``OptBisect`` object is intended to be accessed through ``LLVMContext`` and each
Pass base class contains a helper function that abstracts the details in order
to make this check uniform across all passes. These helper functions are:
@@ -160,7 +160,7 @@ to make this check uniform across all passes. These helper functions are:
bool FunctionPass::skipFunction(const Function &F);
bool LoopPass::skipLoop(const Loop *L);
-A MachineFunctionPass should use FunctionPass::skipFunction() as such:
+A ``MachineFunctionPass`` should use ``FunctionPass::skipFunction()`` as such:
.. code-block:: c++
@@ -170,11 +170,11 @@ A MachineFunctionPass should use FunctionPass::skipFunction() as such:
// Otherwise, run the pass normally.
}
-In addition to checking with the OptBisect class to see if the pass should be
-skipped, the skipFunction(), skipLoop() and skipBasicBlock() helper functions
-also look for the presence of the "optnone" function attribute. The calling
+In addition to checking with the ``OptBisect`` class to see if the pass should be
+skipped, the ``skipFunction()``, ``skipLoop()`` and ``skipBasicBlock()`` helper functions
+also look for the presence of the ``optnone`` function attribute. The calling
pass will be unable to determine whether it is being skipped because the
-"optnone" attribute is present or because the opt-bisect-limit has been
+``optnone`` attribute is present or because the ``opt-bisect-limit`` has been
reached. This is desirable because the behavior should be the same in either
case.
diff --git a/llvm/docs/RISCVUsage.rst b/llvm/docs/RISCVUsage.rst
index f9e2e4a..49184e3 100644
--- a/llvm/docs/RISCVUsage.rst
+++ b/llvm/docs/RISCVUsage.rst
@@ -334,7 +334,7 @@ LLVM supports (to various degrees) a number of experimental extensions. All exp
The primary goal of experimental support is to assist in the process of ratification by providing an existence proof of an implementation, and simplifying efforts to validate the value of a proposed extension against large code bases. Experimental extensions are expected to either transition to ratified status, or be eventually removed. The decision on whether to accept an experimental extension is currently done on an entirely case by case basis; if you want to propose one, attending the bi-weekly RISC-V sync-up call is strongly advised.
``experimental-zalasr``
- LLVM implements the `0.0.5 draft specification <https://github.com/mehnadnerd/riscv-zalasr>`__.
+ LLVM implements the `0.9 draft specification <https://github.com/riscv/riscv-zalasr/releases/tag/v0.9>`__.
``experimental-zibi``
LLVM implements the `0.1 release specification <https://github.com/riscv/zibi/releases/tag/v0.1.0>`__.
diff --git a/llvm/docs/ReleaseNotes.md b/llvm/docs/ReleaseNotes.md
index 85c16b9c..79d93d0 100644
--- a/llvm/docs/ReleaseNotes.md
+++ b/llvm/docs/ReleaseNotes.md
@@ -146,6 +146,8 @@ Changes to the Python bindings
Changes to the C API
--------------------
+* Add `LLVMGetOrInsertFunction` to get or insert a function, replacing the combination of `LLVMGetNamedFunction` and `LLVMAddFunction`.
+
Changes to the CodeGen infrastructure
-------------------------------------
@@ -177,6 +179,10 @@ Changes to Sanitizers
Other Changes
-------------
+* Introduces the `AllocToken` pass, an instrumentation pass providing tokens to
+ memory allocators enabling various heap organization strategies, such as heap
+ partitioning.
+
External Open Source Projects Using LLVM {{env.config.release}}
===============================================================
diff --git a/llvm/examples/Kaleidoscope/Chapter8/toy.cpp b/llvm/examples/Kaleidoscope/Chapter8/toy.cpp
index 739b895..1575211 100644
--- a/llvm/examples/Kaleidoscope/Chapter8/toy.cpp
+++ b/llvm/examples/Kaleidoscope/Chapter8/toy.cpp
@@ -1228,7 +1228,8 @@ int main() {
TheModule->setTargetTriple(Triple(TargetTriple));
std::string Error;
- auto Target = TargetRegistry::lookupTarget(TargetTriple, Error);
+ auto Target =
+ TargetRegistry::lookupTarget(TheModule->getTargetTriple(), Error);
// Print an error and exit if we couldn't find the requested target.
// This generally occurs if we've forgotten to initialise the
diff --git a/llvm/include/llvm-c/Core.h b/llvm/include/llvm-c/Core.h
index d02cf98..3d22f859 100644
--- a/llvm/include/llvm-c/Core.h
+++ b/llvm/include/llvm-c/Core.h
@@ -1207,6 +1207,22 @@ LLVM_C_ABI LLVMValueRef LLVMAddFunction(LLVMModuleRef M, const char *Name,
LLVMTypeRef FunctionTy);
/**
+ * Obtain or insert a function into a module.
+ *
+ * If a function with the specified name already exists in the module, it
+ * is returned. Otherwise, a new function is created in the module with the
+ * specified name and type and is returned.
+ *
+ * The returned value corresponds to a llvm::Function instance.
+ *
+ * @see llvm::Module::getOrInsertFunction()
+ */
+LLVM_C_ABI LLVMValueRef LLVMGetOrInsertFunction(LLVMModuleRef M,
+ const char *Name,
+ size_t NameLen,
+ LLVMTypeRef FunctionTy);
+
+/**
* Obtain a Function value from a Module by its name.
*
* The returned value corresponds to a llvm::Function value.
diff --git a/llvm/include/llvm/ADT/EquivalenceClasses.h b/llvm/include/llvm/ADT/EquivalenceClasses.h
index 90d8948..5e8c2fa 100644
--- a/llvm/include/llvm/ADT/EquivalenceClasses.h
+++ b/llvm/include/llvm/ADT/EquivalenceClasses.h
@@ -128,7 +128,7 @@ private:
/// ECValues, it just keeps the key as part of the value.
DenseMap<ElemTy, ECValue *> TheMapping;
- /// List of all members, used to provide a determinstic iteration order.
+ /// List of all members, used to provide a deterministic iteration order.
SmallVector<const ECValue *> Members;
mutable BumpPtrAllocator ECValueAllocator;
diff --git a/llvm/include/llvm/Analysis/HeatUtils.h b/llvm/include/llvm/Analysis/HeatUtils.h
index 179862c..2391086 100644
--- a/llvm/include/llvm/Analysis/HeatUtils.h
+++ b/llvm/include/llvm/Analysis/HeatUtils.h
@@ -23,17 +23,17 @@ class BlockFrequencyInfo;
class Function;
// Returns number of calls of calledFunction by callerFunction.
-LLVM_ABI uint64_t getNumOfCalls(Function &callerFunction,
- Function &calledFunction);
+LLVM_ABI uint64_t getNumOfCalls(const Function &CallerFunction,
+ const Function &CalledFunction);
// Returns the maximum frequency of a BB in a function.
LLVM_ABI uint64_t getMaxFreq(const Function &F, const BlockFrequencyInfo *BFI);
// Calculates heat color based on current and maximum frequencies.
-LLVM_ABI std::string getHeatColor(uint64_t freq, uint64_t maxFreq);
+LLVM_ABI std::string getHeatColor(uint64_t Freq, uint64_t MaxFreq);
// Calculates heat color based on percent of "hotness".
-LLVM_ABI std::string getHeatColor(double percent);
+LLVM_ABI std::string getHeatColor(double Percent);
} // namespace llvm
diff --git a/llvm/include/llvm/Analysis/IR2Vec.h b/llvm/include/llvm/Analysis/IR2Vec.h
index ed43f19..81409df 100644
--- a/llvm/include/llvm/Analysis/IR2Vec.h
+++ b/llvm/include/llvm/Analysis/IR2Vec.h
@@ -153,8 +153,11 @@ private:
/// Section-based storage
std::vector<std::vector<Embedding>> Sections;
- const size_t TotalSize;
- const unsigned Dimension;
+ // Fixme: Check if these members can be made const (and delete move
+ // assignment) after changing Vocabulary creation by using static factory
+ // methods.
+ size_t TotalSize = 0;
+ unsigned Dimension = 0;
public:
/// Default constructor creates empty storage (invalid state)
@@ -164,7 +167,7 @@ public:
VocabStorage(std::vector<std::vector<Embedding>> &&SectionData);
VocabStorage(VocabStorage &&) = default;
- VocabStorage &operator=(VocabStorage &&) = delete;
+ VocabStorage &operator=(VocabStorage &&) = default;
VocabStorage(const VocabStorage &) = delete;
VocabStorage &operator=(const VocabStorage &) = delete;
diff --git a/llvm/include/llvm/Bitcode/LLVMBitCodes.h b/llvm/include/llvm/Bitcode/LLVMBitCodes.h
index 1c7d346..464f475 100644
--- a/llvm/include/llvm/Bitcode/LLVMBitCodes.h
+++ b/llvm/include/llvm/Bitcode/LLVMBitCodes.h
@@ -800,6 +800,7 @@ enum AttributeKindCodes {
ATTR_KIND_SANITIZE_TYPE = 101,
ATTR_KIND_CAPTURES = 102,
ATTR_KIND_DEAD_ON_RETURN = 103,
+ ATTR_KIND_SANITIZE_ALLOC_TOKEN = 104,
};
enum ComdatSelectionKindCodes {
diff --git a/llvm/include/llvm/CodeGen/LiveRangeEdit.h b/llvm/include/llvm/CodeGen/LiveRangeEdit.h
index 6473138a..d0ed3ff 100644
--- a/llvm/include/llvm/CodeGen/LiveRangeEdit.h
+++ b/llvm/include/llvm/CodeGen/LiveRangeEdit.h
@@ -75,24 +75,14 @@ private:
/// FirstNew - Index of the first register added to NewRegs.
const unsigned FirstNew;
- /// ScannedRemattable - true when remattable values have been identified.
- bool ScannedRemattable = false;
-
/// DeadRemats - The saved instructions which have already been dead after
/// rematerialization but not deleted yet -- to be done in postOptimization.
SmallPtrSet<MachineInstr *, 32> *DeadRemats;
- /// Remattable - Values defined by remattable instructions as identified by
- /// tii.isTriviallyReMaterializable().
- SmallPtrSet<const VNInfo *, 4> Remattable;
-
/// Rematted - Values that were actually rematted, and so need to have their
/// live range trimmed or entirely removed.
SmallPtrSet<const VNInfo *, 4> Rematted;
- /// scanRemattable - Identify the Parent values that may rematerialize.
- void scanRemattable();
-
/// foldAsLoad - If LI has a single use and a single def that can be folded as
/// a load, eliminate the register by folding the def into the use.
bool foldAsLoad(LiveInterval *LI, SmallVectorImpl<MachineInstr *> &Dead);
@@ -175,11 +165,6 @@ public:
Register create() { return createFrom(getReg()); }
- /// anyRematerializable - Return true if any parent values may be
- /// rematerializable. This function must be called before
- /// canRematerializeAt is called..
- bool anyRematerializable();
-
/// Remat - Information needed to rematerialize at a specific location.
struct Remat {
const VNInfo *const ParentVNI; // parent_'s value at the remat location.
@@ -189,9 +174,9 @@ public:
explicit Remat(const VNInfo *ParentVNI) : ParentVNI(ParentVNI) {}
};
- /// canRematerializeAt - Determine if ParentVNI can be rematerialized at
+ /// canRematerializeAt - Determine if RM.Orig can be rematerialized at
/// UseIdx. It is assumed that parent_.getVNINfoAt(UseIdx) == ParentVNI.
- bool canRematerializeAt(Remat &RM, VNInfo *OrigVNI, SlotIndex UseIdx);
+ bool canRematerializeAt(Remat &RM, SlotIndex UseIdx);
/// rematerializeAt - Rematerialize RM.ParentVNI into DestReg by inserting an
/// instruction into MBB before MI. The new instruction is mapped, but
diff --git a/llvm/include/llvm/CodeGen/MIR2Vec.h b/llvm/include/llvm/CodeGen/MIR2Vec.h
new file mode 100644
index 0000000..ea68b45
--- /dev/null
+++ b/llvm/include/llvm/CodeGen/MIR2Vec.h
@@ -0,0 +1,186 @@
+//===- MIR2Vec.h - Implementation of MIR2Vec ------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM
+// Exceptions. See the LICENSE file for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// This file defines the MIR2Vec vocabulary
+/// analysis(MIR2VecVocabLegacyAnalysis), the core mir2vec::MIREmbedder
+/// interface for generating Machine IR embeddings, and related utilities.
+///
+/// MIR2Vec extends IR2Vec to support Machine IR embeddings. It represents the
+/// LLVM Machine IR as embeddings which can be used as input to machine learning
+/// algorithms.
+///
+/// The original idea of MIR2Vec is described in the following paper:
+///
+/// RL4ReAl: Reinforcement Learning for Register Allocation. S. VenkataKeerthy,
+/// Siddharth Jain, Anilava Kundu, Rohit Aggarwal, Albert Cohen, and Ramakrishna
+/// Upadrasta. 2023. RL4ReAl: Reinforcement Learning for Register Allocation.
+/// Proceedings of the 32nd ACM SIGPLAN International Conference on Compiler
+/// Construction (CC 2023). https://doi.org/10.1145/3578360.3580273.
+/// https://arxiv.org/abs/2204.02013
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CODEGEN_MIR2VEC_H
+#define LLVM_CODEGEN_MIR2VEC_H
+
+#include "llvm/Analysis/IR2Vec.h"
+#include "llvm/CodeGen/MachineBasicBlock.h"
+#include "llvm/CodeGen/MachineFunction.h"
+#include "llvm/CodeGen/MachineFunctionPass.h"
+#include "llvm/CodeGen/MachineInstr.h"
+#include "llvm/CodeGen/MachineModuleInfo.h"
+#include "llvm/IR/PassManager.h"
+#include "llvm/Pass.h"
+#include "llvm/Support/CommandLine.h"
+#include "llvm/Support/ErrorOr.h"
+#include <map>
+#include <set>
+#include <string>
+
+namespace llvm {
+
+class Module;
+class raw_ostream;
+class LLVMContext;
+class MIR2VecVocabLegacyAnalysis;
+class TargetInstrInfo;
+
+namespace mir2vec {
+extern llvm::cl::OptionCategory MIR2VecCategory;
+extern cl::opt<float> OpcWeight;
+
+using Embedding = ir2vec::Embedding;
+
+/// Class for storing and accessing the MIR2Vec vocabulary.
+/// The MIRVocabulary class manages seed embeddings for LLVM Machine IR
+class MIRVocabulary {
+ friend class llvm::MIR2VecVocabLegacyAnalysis;
+ using VocabMap = std::map<std::string, ir2vec::Embedding>;
+
+private:
+ // Define vocabulary layout - adapted for MIR
+ struct {
+ size_t OpcodeBase = 0;
+ size_t OperandBase = 0;
+ size_t TotalEntries = 0;
+ } Layout;
+
+ enum class Section : unsigned { Opcodes = 0, MaxSections };
+
+ ir2vec::VocabStorage Storage;
+ mutable std::set<std::string> UniqueBaseOpcodeNames;
+ const TargetInstrInfo &TII;
+ void generateStorage(const VocabMap &OpcodeMap);
+ void buildCanonicalOpcodeMapping();
+
+ /// Get canonical index for a machine opcode
+ unsigned getCanonicalOpcodeIndex(unsigned Opcode) const;
+
+public:
+ /// Static method for extracting base opcode names (public for testing)
+ static std::string extractBaseOpcodeName(StringRef InstrName);
+
+ /// Get canonical index for base name (public for testing)
+ unsigned getCanonicalIndexForBaseName(StringRef BaseName) const;
+
+ /// Get the string key for a vocabulary entry at the given position
+ std::string getStringKey(unsigned Pos) const;
+
+ MIRVocabulary() = delete;
+ MIRVocabulary(VocabMap &&Entries, const TargetInstrInfo *TII);
+ MIRVocabulary(ir2vec::VocabStorage &&Storage, const TargetInstrInfo &TII)
+ : Storage(std::move(Storage)), TII(TII) {}
+
+ bool isValid() const {
+ return UniqueBaseOpcodeNames.size() > 0 &&
+ Layout.TotalEntries == Storage.size() && Storage.isValid();
+ }
+
+ unsigned getDimension() const {
+ if (!isValid())
+ return 0;
+ return Storage.getDimension();
+ }
+
+ // Accessor methods
+ const Embedding &operator[](unsigned Opcode) const {
+ assert(isValid() && "MIR2Vec Vocabulary is invalid");
+ unsigned LocalIndex = getCanonicalOpcodeIndex(Opcode);
+ return Storage[static_cast<unsigned>(Section::Opcodes)][LocalIndex];
+ }
+
+ // Iterator access
+ using const_iterator = ir2vec::VocabStorage::const_iterator;
+ const_iterator begin() const {
+ assert(isValid() && "MIR2Vec Vocabulary is invalid");
+ return Storage.begin();
+ }
+
+ const_iterator end() const {
+ assert(isValid() && "MIR2Vec Vocabulary is invalid");
+ return Storage.end();
+ }
+
+ /// Total number of entries in the vocabulary
+ size_t getCanonicalSize() const {
+ assert(isValid() && "Invalid vocabulary");
+ return Storage.size();
+ }
+};
+
+} // namespace mir2vec
+
+/// Pass to analyze and populate MIR2Vec vocabulary from a module
+class MIR2VecVocabLegacyAnalysis : public ImmutablePass {
+ using VocabVector = std::vector<mir2vec::Embedding>;
+ using VocabMap = std::map<std::string, mir2vec::Embedding>;
+ VocabMap StrVocabMap;
+ VocabVector Vocab;
+
+ StringRef getPassName() const override;
+ Error readVocabulary();
+ void emitError(Error Err, LLVMContext &Ctx);
+
+protected:
+ void getAnalysisUsage(AnalysisUsage &AU) const override {
+ AU.addRequired<MachineModuleInfoWrapperPass>();
+ AU.setPreservesAll();
+ }
+
+public:
+ static char ID;
+ MIR2VecVocabLegacyAnalysis() : ImmutablePass(ID) {}
+ mir2vec::MIRVocabulary getMIR2VecVocabulary(const Module &M);
+};
+
+/// This pass prints the embeddings in the MIR2Vec vocabulary
+class MIR2VecVocabPrinterLegacyPass : public MachineFunctionPass {
+ raw_ostream &OS;
+
+public:
+ static char ID;
+ explicit MIR2VecVocabPrinterLegacyPass(raw_ostream &OS)
+ : MachineFunctionPass(ID), OS(OS) {}
+
+ bool runOnMachineFunction(MachineFunction &MF) override;
+ bool doFinalization(Module &M) override;
+ void getAnalysisUsage(AnalysisUsage &AU) const override {
+ AU.addRequired<MIR2VecVocabLegacyAnalysis>();
+ AU.setPreservesAll();
+ MachineFunctionPass::getAnalysisUsage(AU);
+ }
+
+ StringRef getPassName() const override {
+ return "MIR2Vec Vocabulary Printer Pass";
+ }
+};
+
+} // namespace llvm
+
+#endif // LLVM_CODEGEN_MIR2VEC_H \ No newline at end of file
diff --git a/llvm/include/llvm/CodeGen/Passes.h b/llvm/include/llvm/CodeGen/Passes.h
index f17d550..272b4ac 100644
--- a/llvm/include/llvm/CodeGen/Passes.h
+++ b/llvm/include/llvm/CodeGen/Passes.h
@@ -88,6 +88,11 @@ LLVM_ABI MachineFunctionPass *
createMachineFunctionPrinterPass(raw_ostream &OS,
const std::string &Banner = "");
+/// MIR2VecVocabPrinter pass - This pass prints out the MIR2Vec vocabulary
+/// contents to the given stream as a debugging tool.
+LLVM_ABI MachineFunctionPass *
+createMIR2VecVocabPrinterLegacyPass(raw_ostream &OS);
+
/// StackFramePrinter pass - This pass prints out the machine function's
/// stack frame to the given stream as a debugging tool.
LLVM_ABI MachineFunctionPass *createStackFrameLayoutAnalysisPass();
diff --git a/llvm/include/llvm/ExecutionEngine/Orc/EPCGenericDylibManager.h b/llvm/include/llvm/ExecutionEngine/Orc/EPCGenericDylibManager.h
index 68bc54b..7c995a7 100644
--- a/llvm/include/llvm/ExecutionEngine/Orc/EPCGenericDylibManager.h
+++ b/llvm/include/llvm/ExecutionEngine/Orc/EPCGenericDylibManager.h
@@ -34,7 +34,7 @@ public:
struct SymbolAddrs {
ExecutorAddr Instance;
ExecutorAddr Open;
- ExecutorAddr Lookup;
+ ExecutorAddr Resolve;
};
/// Create an EPCGenericMemoryAccess instance from a given set of
@@ -51,25 +51,25 @@ public:
LLVM_ABI Expected<tpctypes::DylibHandle> open(StringRef Path, uint64_t Mode);
/// Looks up symbols within the given dylib.
- Expected<std::vector<ExecutorSymbolDef>>
- lookup(tpctypes::DylibHandle H, const SymbolLookupSet &Lookup) {
- std::promise<MSVCPExpected<std::vector<ExecutorSymbolDef>>> RP;
+ Expected<tpctypes::LookupResult> lookup(tpctypes::DylibHandle H,
+ const SymbolLookupSet &Lookup) {
+ std::promise<MSVCPExpected<tpctypes::LookupResult>> RP;
auto RF = RP.get_future();
lookupAsync(H, Lookup, [&RP](auto R) { RP.set_value(std::move(R)); });
return RF.get();
}
/// Looks up symbols within the given dylib.
- Expected<std::vector<ExecutorSymbolDef>>
- lookup(tpctypes::DylibHandle H, const RemoteSymbolLookupSet &Lookup) {
- std::promise<MSVCPExpected<std::vector<ExecutorSymbolDef>>> RP;
+ Expected<tpctypes::LookupResult> lookup(tpctypes::DylibHandle H,
+ const RemoteSymbolLookupSet &Lookup) {
+ std::promise<MSVCPExpected<tpctypes::LookupResult>> RP;
auto RF = RP.get_future();
lookupAsync(H, Lookup, [&RP](auto R) { RP.set_value(std::move(R)); });
return RF.get();
}
using SymbolLookupCompleteFn =
- unique_function<void(Expected<std::vector<ExecutorSymbolDef>>)>;
+ unique_function<void(Expected<tpctypes::LookupResult>)>;
/// Looks up symbols within the given dylib.
LLVM_ABI void lookupAsync(tpctypes::DylibHandle H,
diff --git a/llvm/include/llvm/ExecutionEngine/Orc/ExecutorResolutionGenerator.h b/llvm/include/llvm/ExecutionEngine/Orc/ExecutorResolutionGenerator.h
new file mode 100644
index 0000000..9b972ed
--- /dev/null
+++ b/llvm/include/llvm/ExecutionEngine/Orc/ExecutorResolutionGenerator.h
@@ -0,0 +1,74 @@
+//===----- ExecutorResolver.h - Resolve symbols in executor -----*- 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
+//
+//===----------------------------------------------------------------------===//
+//
+// Declares ExecutorResolutionGenerator for symbol resolution,
+// dynamic library loading, and lookup in an executor process via
+// ExecutorResolver.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_EXECUTIONENGINE_ORC_EXECUTORRESOLUTIONGENERATOR_H
+#define LLVM_EXECUTIONENGINE_ORC_EXECUTORRESOLUTIONGENERATOR_H
+
+#include "llvm/ADT/FunctionExtras.h"
+#include "llvm/ExecutionEngine/Orc/AbsoluteSymbols.h"
+#include "llvm/ExecutionEngine/Orc/Core.h"
+
+namespace llvm::orc {
+
+class ExecutorResolutionGenerator : public DefinitionGenerator {
+public:
+ using SymbolPredicate = unique_function<bool(const SymbolStringPtr &)>;
+ using AbsoluteSymbolsFn =
+ unique_function<std::unique_ptr<MaterializationUnit>(SymbolMap)>;
+
+ ExecutorResolutionGenerator(
+ ExecutionSession &ES, tpctypes::ResolverHandle H,
+ SymbolPredicate Allow = SymbolPredicate(),
+ AbsoluteSymbolsFn AbsoluteSymbols = absoluteSymbols)
+ : EPC(ES.getExecutorProcessControl()), H(H), Allow(std::move(Allow)),
+ AbsoluteSymbols(std::move(AbsoluteSymbols)) {}
+
+ ExecutorResolutionGenerator(
+ ExecutionSession &ES, SymbolPredicate Allow = SymbolPredicate(),
+ AbsoluteSymbolsFn AbsoluteSymbols = absoluteSymbols)
+ : EPC(ES.getExecutorProcessControl()), Allow(std::move(Allow)),
+ AbsoluteSymbols(std::move(AbsoluteSymbols)) {}
+
+ /// Permanently loads the library at the given path and, on success, returns
+ /// an ExecutorResolutionGenerator that will search it for symbol
+ /// definitions in the library. On failure returns the reason the library
+ /// failed to load.
+ static Expected<std::unique_ptr<ExecutorResolutionGenerator>>
+ Load(ExecutionSession &ES, const char *LibraryPath,
+ SymbolPredicate Allow = SymbolPredicate(),
+ AbsoluteSymbolsFn AbsoluteSymbols = absoluteSymbols);
+
+ /// Creates a ExecutorResolutionGenerator that searches for symbols in
+ /// the target process.
+ static Expected<std::unique_ptr<ExecutorResolutionGenerator>>
+ GetForTargetProcess(ExecutionSession &ES,
+ SymbolPredicate Allow = SymbolPredicate(),
+ AbsoluteSymbolsFn AbsoluteSymbols = absoluteSymbols) {
+ return Load(ES, nullptr, std::move(Allow), std::move(AbsoluteSymbols));
+ }
+
+ Error tryToGenerate(LookupState &LS, LookupKind K, JITDylib &JD,
+ JITDylibLookupFlags JDLookupFlags,
+ const SymbolLookupSet &LookupSet) override;
+
+private:
+ ExecutorProcessControl &EPC;
+ tpctypes::ResolverHandle H;
+ SymbolPredicate Allow;
+ AbsoluteSymbolsFn AbsoluteSymbols;
+};
+
+} // namespace llvm::orc
+
+#endif // LLVM_EXECUTIONENGINE_ORC_EXECUTORRESOLUTIONGENERATOR_H
diff --git a/llvm/include/llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h b/llvm/include/llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h
index 2bc6c12..99ba456 100644
--- a/llvm/include/llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h
+++ b/llvm/include/llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h
@@ -25,7 +25,7 @@ namespace rt {
LLVM_ABI extern const char *SimpleExecutorDylibManagerInstanceName;
LLVM_ABI extern const char *SimpleExecutorDylibManagerOpenWrapperName;
-LLVM_ABI extern const char *SimpleExecutorDylibManagerLookupWrapperName;
+LLVM_ABI extern const char *SimpleExecutorDylibManagerResolveWrapperName;
LLVM_ABI extern const char *SimpleExecutorMemoryManagerInstanceName;
LLVM_ABI extern const char *SimpleExecutorMemoryManagerReserveWrapperName;
@@ -66,10 +66,9 @@ using SPSSimpleExecutorDylibManagerOpenSignature =
shared::SPSExpected<shared::SPSExecutorAddr>(shared::SPSExecutorAddr,
shared::SPSString, uint64_t);
-using SPSSimpleExecutorDylibManagerLookupSignature =
- shared::SPSExpected<shared::SPSSequence<shared::SPSExecutorSymbolDef>>(
- shared::SPSExecutorAddr, shared::SPSExecutorAddr,
- shared::SPSRemoteSymbolLookupSet);
+using SPSSimpleExecutorDylibManagerResolveSignature = shared::SPSExpected<
+ shared::SPSSequence<shared::SPSOptional<shared::SPSExecutorSymbolDef>>>(
+ shared::SPSExecutorAddr, shared::SPSRemoteSymbolLookupSet);
using SPSSimpleExecutorMemoryManagerReserveSignature =
shared::SPSExpected<shared::SPSExecutorAddr>(shared::SPSExecutorAddr,
diff --git a/llvm/include/llvm/ExecutionEngine/Orc/Shared/TargetProcessControlTypes.h b/llvm/include/llvm/ExecutionEngine/Orc/Shared/TargetProcessControlTypes.h
index adb07ba..28ff322 100644
--- a/llvm/include/llvm/ExecutionEngine/Orc/Shared/TargetProcessControlTypes.h
+++ b/llvm/include/llvm/ExecutionEngine/Orc/Shared/TargetProcessControlTypes.h
@@ -114,7 +114,11 @@ struct PointerWrite {
/// A handle used to represent a loaded dylib in the target process.
using DylibHandle = ExecutorAddr;
-using LookupResult = std::vector<ExecutorSymbolDef>;
+/// A handle used to reference the resolver associated with a loaded
+/// dylib in the target process.
+using ResolverHandle = ExecutorAddr;
+
+using LookupResult = std::vector<std::optional<ExecutorSymbolDef>>;
} // end namespace tpctypes
diff --git a/llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/ExecutorResolver.h b/llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/ExecutorResolver.h
new file mode 100644
index 0000000..2c5e98c
--- /dev/null
+++ b/llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/ExecutorResolver.h
@@ -0,0 +1,48 @@
+//===----- ExecutorResolver.h - Symbol resolver -----*- 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
+//
+//===----------------------------------------------------------------------===//
+//
+// Executor Symbol resolver.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_EXECUTIONENGINE_ORC_TARGETPROCESS_EXECUTORRESOLVER_H
+#define LLVM_EXECUTIONENGINE_ORC_TARGETPROCESS_EXECUTORRESOLVER_H
+
+#include "llvm/ADT/FunctionExtras.h"
+
+#include "llvm/ExecutionEngine/Orc/Shared/ExecutorSymbolDef.h"
+#include "llvm/ExecutionEngine/Orc/Shared/SimpleRemoteEPCUtils.h"
+#include "llvm/ExecutionEngine/Orc/Shared/TargetProcessControlTypes.h"
+
+namespace llvm::orc {
+
+class ExecutorResolver {
+public:
+ using ResolveResult = Expected<std::vector<std::optional<ExecutorSymbolDef>>>;
+ using YieldResolveResultFn = unique_function<void(ResolveResult)>;
+
+ virtual ~ExecutorResolver() = default;
+
+ virtual void resolveAsync(const RemoteSymbolLookupSet &L,
+ YieldResolveResultFn &&OnResolve) = 0;
+};
+
+class DylibSymbolResolver : public ExecutorResolver {
+public:
+ DylibSymbolResolver(tpctypes::DylibHandle H) : Handle(H) {}
+
+ void
+ resolveAsync(const RemoteSymbolLookupSet &L,
+ ExecutorResolver::YieldResolveResultFn &&OnResolve) override;
+
+private:
+ tpctypes::DylibHandle Handle;
+};
+
+} // end namespace llvm::orc
+#endif // LLVM_EXECUTIONENGINE_ORC_TARGETPROCESS_EXECUTORRESOLVER_H
diff --git a/llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleExecutorDylibManager.h b/llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleExecutorDylibManager.h
index 36a6f4b..7526a29d 100644
--- a/llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleExecutorDylibManager.h
+++ b/llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleExecutorDylibManager.h
@@ -23,6 +23,7 @@
#include "llvm/ExecutionEngine/Orc/Shared/TargetProcessControlTypes.h"
#include "llvm/ExecutionEngine/Orc/Shared/WrapperFunctionUtils.h"
#include "llvm/ExecutionEngine/Orc/TargetProcess/ExecutorBootstrapService.h"
+#include "llvm/ExecutionEngine/Orc/TargetProcess/ExecutorResolver.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/DynamicLibrary.h"
#include "llvm/Support/Error.h"
@@ -39,8 +40,6 @@ public:
virtual ~SimpleExecutorDylibManager();
Expected<tpctypes::DylibHandle> open(const std::string &Path, uint64_t Mode);
- Expected<std::vector<ExecutorSymbolDef>>
- lookup(tpctypes::DylibHandle H, const RemoteSymbolLookupSet &L);
Error shutdown() override;
void addBootstrapSymbols(StringMap<ExecutorAddr> &M) override;
@@ -52,10 +51,11 @@ private:
openWrapper(const char *ArgData, size_t ArgSize);
static llvm::orc::shared::CWrapperFunctionResult
- lookupWrapper(const char *ArgData, size_t ArgSize);
+ resolveWrapper(const char *ArgData, size_t ArgSize);
std::mutex M;
DylibSet Dylibs;
+ std::vector<std::unique_ptr<ExecutorResolver>> Resolvers;
};
} // end namespace rt_bootstrap
diff --git a/llvm/include/llvm/IR/Attributes.td b/llvm/include/llvm/IR/Attributes.td
index ef816fb..8e7d9dc 100644
--- a/llvm/include/llvm/IR/Attributes.td
+++ b/llvm/include/llvm/IR/Attributes.td
@@ -342,6 +342,9 @@ def SanitizeRealtime : EnumAttr<"sanitize_realtime", IntersectPreserve, [FnAttr]
/// during a real-time sanitized function (see `sanitize_realtime`).
def SanitizeRealtimeBlocking : EnumAttr<"sanitize_realtime_blocking", IntersectPreserve, [FnAttr]>;
+/// Allocation token instrumentation is on.
+def SanitizeAllocToken : EnumAttr<"sanitize_alloc_token", IntersectPreserve, [FnAttr]>;
+
/// Speculative Load Hardening is enabled.
///
/// Note that this uses the default compatibility (always compatible during
diff --git a/llvm/include/llvm/IR/FixedMetadataKinds.def b/llvm/include/llvm/IR/FixedMetadataKinds.def
index 0603abc..74746cc 100644
--- a/llvm/include/llvm/IR/FixedMetadataKinds.def
+++ b/llvm/include/llvm/IR/FixedMetadataKinds.def
@@ -56,3 +56,4 @@ LLVM_FIXED_MD_KIND(MD_noalias_addrspace, "noalias.addrspace", 41)
LLVM_FIXED_MD_KIND(MD_callee_type, "callee_type", 42)
LLVM_FIXED_MD_KIND(MD_nofree, "nofree", 43)
LLVM_FIXED_MD_KIND(MD_captures, "captures", 44)
+LLVM_FIXED_MD_KIND(MD_alloc_token, "alloc_token", 45)
diff --git a/llvm/include/llvm/IR/InstrTypes.h b/llvm/include/llvm/IR/InstrTypes.h
index 14685ab..9f56779 100644
--- a/llvm/include/llvm/IR/InstrTypes.h
+++ b/llvm/include/llvm/IR/InstrTypes.h
@@ -601,11 +601,9 @@ public:
Instruction::CastOps firstOpcode, ///< Opcode of first cast
Instruction::CastOps secondOpcode, ///< Opcode of second cast
Type *SrcTy, ///< SrcTy of 1st cast
- Type *MidTy, ///< DstTy of 1st cast & SrcTy of 2nd cast
- Type *DstTy, ///< DstTy of 2nd cast
- Type *SrcIntPtrTy, ///< Integer type corresponding to Ptr SrcTy, or null
- Type *MidIntPtrTy, ///< Integer type corresponding to Ptr MidTy, or null
- Type *DstIntPtrTy ///< Integer type corresponding to Ptr DstTy, or null
+ Type *MidTy, ///< DstTy of 1st cast & SrcTy of 2nd cast
+ Type *DstTy, ///< DstTy of 2nd cast
+ const DataLayout *DL ///< Optional data layout
);
/// Return the opcode of this CastInst
diff --git a/llvm/include/llvm/InitializePasses.h b/llvm/include/llvm/InitializePasses.h
index 88272f0..cd774e7 100644
--- a/llvm/include/llvm/InitializePasses.h
+++ b/llvm/include/llvm/InitializePasses.h
@@ -220,6 +220,8 @@ LLVM_ABI void initializeMachinePostDominatorTreeWrapperPassPass(PassRegistry &);
LLVM_ABI void initializeMachineRegionInfoPassPass(PassRegistry &);
LLVM_ABI void
initializeMachineSanitizerBinaryMetadataLegacyPass(PassRegistry &);
+LLVM_ABI void initializeMIR2VecVocabLegacyAnalysisPass(PassRegistry &);
+LLVM_ABI void initializeMIR2VecVocabPrinterLegacyPassPass(PassRegistry &);
LLVM_ABI void initializeMachineSchedulerLegacyPass(PassRegistry &);
LLVM_ABI void initializeMachineSinkingLegacyPass(PassRegistry &);
LLVM_ABI void initializeMachineTraceMetricsWrapperPassPass(PassRegistry &);
diff --git a/llvm/include/llvm/Support/CrashRecoveryContext.h b/llvm/include/llvm/Support/CrashRecoveryContext.h
index 773de89..ffee81d 100644
--- a/llvm/include/llvm/Support/CrashRecoveryContext.h
+++ b/llvm/include/llvm/Support/CrashRecoveryContext.h
@@ -80,9 +80,6 @@ public:
/// make as little assumptions as possible about the program state when
/// RunSafely has returned false.
LLVM_ABI bool RunSafely(function_ref<void()> Fn);
- bool RunSafely(void (*Fn)(void*), void *UserData) {
- return RunSafely([&]() { Fn(UserData); });
- }
/// Execute the provide callback function (with the given arguments) in
/// a protected context which is run in another thread (optionally with a
@@ -94,10 +91,6 @@ public:
/// propagated to the new thread as well.
LLVM_ABI bool RunSafelyOnThread(function_ref<void()>,
unsigned RequestedStackSize = 0);
- bool RunSafelyOnThread(void (*Fn)(void*), void *UserData,
- unsigned RequestedStackSize = 0) {
- return RunSafelyOnThread([&]() { Fn(UserData); }, RequestedStackSize);
- }
LLVM_ABI bool RunSafelyOnNewStack(function_ref<void()>,
unsigned RequestedStackSize = 0);
diff --git a/llvm/include/llvm/Support/SpecialCaseList.h b/llvm/include/llvm/Support/SpecialCaseList.h
index 22a62ea..55d3d12 100644
--- a/llvm/include/llvm/Support/SpecialCaseList.h
+++ b/llvm/include/llvm/Support/SpecialCaseList.h
@@ -147,10 +147,17 @@ protected:
Section(StringRef Str, unsigned FileIdx)
: SectionStr(Str), FileIdx(FileIdx) {};
- std::unique_ptr<Matcher> SectionMatcher = std::make_unique<Matcher>();
+ Section(Section &&) = default;
+
+ Matcher SectionMatcher;
SectionEntries Entries;
std::string SectionStr;
unsigned FileIdx;
+
+ // Helper method to search by Prefix, Query, and Category. Returns
+ // 1-based line number on which rule is defined, or 0 if there is no match.
+ LLVM_ABI unsigned getLastMatch(StringRef Prefix, StringRef Query,
+ StringRef Category) const;
};
std::vector<Section> Sections;
@@ -162,12 +169,6 @@ protected:
/// Parses just-constructed SpecialCaseList entries from a memory buffer.
LLVM_ABI bool parse(unsigned FileIdx, const MemoryBuffer *MB,
std::string &Error);
-
- // Helper method for derived classes to search by Prefix, Query, and Category
- // once they have already resolved a section entry.
- LLVM_ABI unsigned inSectionBlame(const SectionEntries &Entries,
- StringRef Prefix, StringRef Query,
- StringRef Category) const;
};
} // namespace llvm
diff --git a/llvm/include/llvm/Transforms/Instrumentation/AllocToken.h b/llvm/include/llvm/Transforms/Instrumentation/AllocToken.h
new file mode 100644
index 0000000..b1391cb0
--- /dev/null
+++ b/llvm/include/llvm/Transforms/Instrumentation/AllocToken.h
@@ -0,0 +1,46 @@
+//===- AllocToken.h - Allocation token instrumentation --------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file declares the AllocTokenPass, an instrumentation pass that
+// replaces allocation calls with ones including an allocation token.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TRANSFORMS_INSTRUMENTATION_ALLOCTOKEN_H
+#define LLVM_TRANSFORMS_INSTRUMENTATION_ALLOCTOKEN_H
+
+#include "llvm/IR/Analysis.h"
+#include "llvm/IR/PassManager.h"
+#include <optional>
+
+namespace llvm {
+
+class Module;
+
+struct AllocTokenOptions {
+ std::optional<uint64_t> MaxTokens;
+ bool FastABI = false;
+ bool Extended = false;
+ AllocTokenOptions() = default;
+};
+
+/// A module pass that rewrites heap allocations to use token-enabled
+/// allocation functions based on various source-level properties.
+class AllocTokenPass : public PassInfoMixin<AllocTokenPass> {
+public:
+ LLVM_ABI explicit AllocTokenPass(AllocTokenOptions Opts = {});
+ LLVM_ABI PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM);
+ static bool isRequired() { return true; }
+
+private:
+ const AllocTokenOptions Options;
+};
+
+} // namespace llvm
+
+#endif // LLVM_TRANSFORMS_INSTRUMENTATION_ALLOCTOKEN_H
diff --git a/llvm/lib/Analysis/ConstantFolding.cpp b/llvm/lib/Analysis/ConstantFolding.cpp
index d52b073..b744537 100755
--- a/llvm/lib/Analysis/ConstantFolding.cpp
+++ b/llvm/lib/Analysis/ConstantFolding.cpp
@@ -1482,6 +1482,15 @@ Constant *llvm::ConstantFoldFPInstOperands(unsigned Opcode, Constant *LHS,
Constant *llvm::ConstantFoldCastOperand(unsigned Opcode, Constant *C,
Type *DestTy, const DataLayout &DL) {
assert(Instruction::isCast(Opcode));
+
+ if (auto *CE = dyn_cast<ConstantExpr>(C))
+ if (CE->isCast())
+ if (unsigned NewOp = CastInst::isEliminableCastPair(
+ Instruction::CastOps(CE->getOpcode()),
+ Instruction::CastOps(Opcode), CE->getOperand(0)->getType(),
+ C->getType(), DestTy, &DL))
+ return ConstantFoldCastOperand(NewOp, CE->getOperand(0), DestTy, DL);
+
switch (Opcode) {
default:
llvm_unreachable("Missing case");
diff --git a/llvm/lib/Analysis/HeatUtils.cpp b/llvm/lib/Analysis/HeatUtils.cpp
index b6a0d58..a1cc707 100644
--- a/llvm/lib/Analysis/HeatUtils.cpp
+++ b/llvm/lib/Analysis/HeatUtils.cpp
@@ -17,10 +17,10 @@
#include <cmath>
-namespace llvm {
+using namespace llvm;
-static const unsigned heatSize = 100;
-static const char heatPalette[heatSize][8] = {
+static constexpr unsigned HeatSize = 100;
+static constexpr char HeatPalette[HeatSize][8] = {
"#3d50c3", "#4055c8", "#4358cb", "#465ecf", "#4961d2", "#4c66d6", "#4f69d9",
"#536edd", "#5572df", "#5977e3", "#5b7ae5", "#5f7fe8", "#6282ea", "#6687ed",
"#6a8bef", "#6c8ff1", "#7093f3", "#7396f5", "#779af7", "#7a9df8", "#7ea1fa",
@@ -37,43 +37,37 @@ static const char heatPalette[heatSize][8] = {
"#d24b40", "#d0473d", "#cc403a", "#ca3b37", "#c53334", "#c32e31", "#be242e",
"#bb1b2c", "#b70d28"};
-uint64_t
-getNumOfCalls(Function &callerFunction, Function &calledFunction) {
- uint64_t counter = 0;
- for (User *U : calledFunction.users()) {
- if (auto CI = dyn_cast<CallInst>(U)) {
- if (CI->getCaller() == (&callerFunction)) {
- counter += 1;
- }
- }
- }
- return counter;
+uint64_t llvm::getNumOfCalls(const Function &CallerFunction,
+ const Function &CalledFunction) {
+ uint64_t Counter = 0;
+ for (const User *U : CalledFunction.users())
+ if (auto CI = dyn_cast<CallInst>(U))
+ Counter += CI->getCaller() == &CallerFunction;
+ return Counter;
}
-uint64_t getMaxFreq(const Function &F, const BlockFrequencyInfo *BFI) {
- uint64_t maxFreq = 0;
+uint64_t llvm::getMaxFreq(const Function &F, const BlockFrequencyInfo *BFI) {
+ uint64_t MaxFreq = 0;
for (const BasicBlock &BB : F) {
- uint64_t freqVal = BFI->getBlockFreq(&BB).getFrequency();
- if (freqVal >= maxFreq)
- maxFreq = freqVal;
+ uint64_t FreqVal = BFI->getBlockFreq(&BB).getFrequency();
+ if (FreqVal >= MaxFreq)
+ MaxFreq = FreqVal;
}
- return maxFreq;
+ return MaxFreq;
}
-std::string getHeatColor(uint64_t freq, uint64_t maxFreq) {
- if (freq > maxFreq)
- freq = maxFreq;
- double percent = (freq > 0) ? log2(double(freq)) / log2(maxFreq) : 0;
- return getHeatColor(percent);
+std::string llvm::getHeatColor(uint64_t Freq, uint64_t MaxFreq) {
+ if (Freq > MaxFreq)
+ Freq = MaxFreq;
+ double Percent = (Freq > 0) ? log2(double(Freq)) / log2(MaxFreq) : 0;
+ return getHeatColor(Percent);
}
-std::string getHeatColor(double percent) {
- if (percent > 1.0)
- percent = 1.0;
- if (percent < 0.0)
- percent = 0.0;
- unsigned colorId = unsigned(round(percent * (heatSize - 1.0)));
- return heatPalette[colorId];
+std::string llvm::getHeatColor(double Percent) {
+ if (Percent > 1.0)
+ Percent = 1.0;
+ if (Percent < 0.0)
+ Percent = 0.0;
+ unsigned ColorID = unsigned(round(Percent * (HeatSize - 1.0)));
+ return HeatPalette[ColorID];
}
-
-} // namespace llvm
diff --git a/llvm/lib/Analysis/InstructionSimplify.cpp b/llvm/lib/Analysis/InstructionSimplify.cpp
index 0d978d4..d1977f0 100644
--- a/llvm/lib/Analysis/InstructionSimplify.cpp
+++ b/llvm/lib/Analysis/InstructionSimplify.cpp
@@ -5425,15 +5425,8 @@ static Value *simplifyCastInst(unsigned CastOpc, Value *Op, Type *Ty,
if (Src->getType() == Ty) {
auto FirstOp = CI->getOpcode();
auto SecondOp = static_cast<Instruction::CastOps>(CastOpc);
- Type *SrcIntPtrTy =
- SrcTy->isPtrOrPtrVectorTy() ? Q.DL.getIntPtrType(SrcTy) : nullptr;
- Type *MidIntPtrTy =
- MidTy->isPtrOrPtrVectorTy() ? Q.DL.getIntPtrType(MidTy) : nullptr;
- Type *DstIntPtrTy =
- DstTy->isPtrOrPtrVectorTy() ? Q.DL.getIntPtrType(DstTy) : nullptr;
if (CastInst::isEliminableCastPair(FirstOp, SecondOp, SrcTy, MidTy, DstTy,
- SrcIntPtrTy, MidIntPtrTy,
- DstIntPtrTy) == Instruction::BitCast)
+ &Q.DL) == Instruction::BitCast)
return Src;
}
}
@@ -6473,7 +6466,8 @@ static Value *foldMinMaxSharedOp(Intrinsic::ID IID, Value *Op0, Value *Op1) {
static Value *foldMinimumMaximumSharedOp(Intrinsic::ID IID, Value *Op0,
Value *Op1) {
assert((IID == Intrinsic::maxnum || IID == Intrinsic::minnum ||
- IID == Intrinsic::maximum || IID == Intrinsic::minimum) &&
+ IID == Intrinsic::maximum || IID == Intrinsic::minimum ||
+ IID == Intrinsic::maximumnum || IID == Intrinsic::minimumnum) &&
"Unsupported intrinsic");
auto *M0 = dyn_cast<IntrinsicInst>(Op0);
@@ -6512,6 +6506,82 @@ static Value *foldMinimumMaximumSharedOp(Intrinsic::ID IID, Value *Op0,
return nullptr;
}
+enum class MinMaxOptResult {
+ CannotOptimize = 0,
+ UseNewConstVal = 1,
+ UseOtherVal = 2,
+ // For undef/poison, we can choose to either propgate undef/poison or
+ // use the LHS value depending on what will allow more optimization.
+ UseEither = 3
+};
+// Get the optimized value for a min/max instruction with a single constant
+// input (either undef or scalar constantFP). The result may indicate to
+// use the non-const LHS value, use a new constant value instead (with NaNs
+// quieted), or to choose either option in the case of undef/poison.
+static MinMaxOptResult OptimizeConstMinMax(const Constant *RHSConst,
+ const Intrinsic::ID IID,
+ const CallBase *Call,
+ Constant **OutNewConstVal) {
+ assert(OutNewConstVal != nullptr);
+
+ bool PropagateNaN = IID == Intrinsic::minimum || IID == Intrinsic::maximum;
+ bool PropagateSNaN = IID == Intrinsic::minnum || IID == Intrinsic::maxnum;
+ bool IsMin = IID == Intrinsic::minimum || IID == Intrinsic::minnum ||
+ IID == Intrinsic::minimumnum;
+
+ // min/max(x, poison) -> either x or poison
+ if (isa<UndefValue>(RHSConst)) {
+ *OutNewConstVal = const_cast<Constant *>(RHSConst);
+ return MinMaxOptResult::UseEither;
+ }
+
+ const ConstantFP *CFP = dyn_cast<ConstantFP>(RHSConst);
+ if (!CFP)
+ return MinMaxOptResult::CannotOptimize;
+ APFloat CAPF = CFP->getValueAPF();
+
+ // minnum(x, qnan) -> x
+ // maxnum(x, qnan) -> x
+ // minnum(x, snan) -> qnan
+ // maxnum(x, snan) -> qnan
+ // minimum(X, nan) -> qnan
+ // maximum(X, nan) -> qnan
+ // minimumnum(X, nan) -> x
+ // maximumnum(X, nan) -> x
+ if (CAPF.isNaN()) {
+ if (PropagateNaN || (PropagateSNaN && CAPF.isSignaling())) {
+ *OutNewConstVal = ConstantFP::get(CFP->getType(), CAPF.makeQuiet());
+ return MinMaxOptResult::UseNewConstVal;
+ }
+ return MinMaxOptResult::UseOtherVal;
+ }
+
+ if (CAPF.isInfinity() || (Call && Call->hasNoInfs() && CAPF.isLargest())) {
+ // minnum(X, -inf) -> -inf (ignoring sNaN -> qNaN propagation)
+ // maxnum(X, +inf) -> +inf (ignoring sNaN -> qNaN propagation)
+ // minimum(X, -inf) -> -inf if nnan
+ // maximum(X, +inf) -> +inf if nnan
+ // minimumnum(X, -inf) -> -inf
+ // maximumnum(X, +inf) -> +inf
+ if (CAPF.isNegative() == IsMin &&
+ (!PropagateNaN || (Call && Call->hasNoNaNs()))) {
+ *OutNewConstVal = const_cast<Constant *>(RHSConst);
+ return MinMaxOptResult::UseNewConstVal;
+ }
+
+ // minnum(X, +inf) -> X if nnan
+ // maxnum(X, -inf) -> X if nnan
+ // minimum(X, +inf) -> X (ignoring quieting of sNaNs)
+ // maximum(X, -inf) -> X (ignoring quieting of sNaNs)
+ // minimumnum(X, +inf) -> X if nnan
+ // maximumnum(X, -inf) -> X if nnan
+ if (CAPF.isNegative() != IsMin &&
+ (PropagateNaN || (Call && Call->hasNoNaNs())))
+ return MinMaxOptResult::UseOtherVal;
+ }
+ return MinMaxOptResult::CannotOptimize;
+}
+
Value *llvm::simplifyBinaryIntrinsic(Intrinsic::ID IID, Type *ReturnType,
Value *Op0, Value *Op1,
const SimplifyQuery &Q,
@@ -6780,8 +6850,17 @@ Value *llvm::simplifyBinaryIntrinsic(Intrinsic::ID IID, Type *ReturnType,
case Intrinsic::maxnum:
case Intrinsic::minnum:
case Intrinsic::maximum:
- case Intrinsic::minimum: {
- // If the arguments are the same, this is a no-op.
+ case Intrinsic::minimum:
+ case Intrinsic::maximumnum:
+ case Intrinsic::minimumnum: {
+ // In several cases here, we deviate from exact IEEE 754 semantics
+ // to enable optimizations (as allowed by the LLVM IR spec).
+ //
+ // For instance, we may return one of the arguments unmodified instead of
+ // inserting an llvm.canonicalize to transform input sNaNs into qNaNs,
+ // or may assume all NaN inputs are qNaNs.
+
+ // If the arguments are the same, this is a no-op (ignoring NaN quieting)
if (Op0 == Op1)
return Op0;
@@ -6789,40 +6868,55 @@ Value *llvm::simplifyBinaryIntrinsic(Intrinsic::ID IID, Type *ReturnType,
if (isa<Constant>(Op0))
std::swap(Op0, Op1);
- // If an argument is undef, return the other argument.
- if (Q.isUndefValue(Op1))
- return Op0;
+ if (Constant *C = dyn_cast<Constant>(Op1)) {
+ MinMaxOptResult OptResult = MinMaxOptResult::CannotOptimize;
+ Constant *NewConst = nullptr;
+
+ if (VectorType *VTy = dyn_cast<VectorType>(C->getType())) {
+ ElementCount ElemCount = VTy->getElementCount();
+
+ if (Constant *SplatVal = C->getSplatValue()) {
+ // Handle splat vectors (including scalable vectors)
+ OptResult = OptimizeConstMinMax(SplatVal, IID, Call, &NewConst);
+ if (OptResult == MinMaxOptResult::UseNewConstVal)
+ NewConst = ConstantVector::getSplat(ElemCount, NewConst);
+
+ } else if (ElemCount.isFixed()) {
+ // Storage to build up new const return value (with NaNs quieted)
+ SmallVector<Constant *, 16> NewC(ElemCount.getFixedValue());
+
+ // Check elementwise whether we can optimize to either a constant
+ // value or return the LHS value. We cannot mix and match LHS +
+ // constant elements, as this would require inserting a new
+ // VectorShuffle instruction, which is not allowed in simplifyBinOp.
+ OptResult = MinMaxOptResult::UseEither;
+ for (unsigned i = 0; i != ElemCount.getFixedValue(); ++i) {
+ auto ElemResult = OptimizeConstMinMax(C->getAggregateElement(i),
+ IID, Call, &NewConst);
+ if (ElemResult == MinMaxOptResult::CannotOptimize ||
+ (ElemResult != OptResult &&
+ OptResult != MinMaxOptResult::UseEither &&
+ ElemResult != MinMaxOptResult::UseEither)) {
+ OptResult = MinMaxOptResult::CannotOptimize;
+ break;
+ }
+ NewC[i] = NewConst;
+ if (ElemResult != MinMaxOptResult::UseEither)
+ OptResult = ElemResult;
+ }
+ if (OptResult == MinMaxOptResult::UseNewConstVal)
+ NewConst = ConstantVector::get(NewC);
+ }
+ } else {
+ // Handle scalar inputs
+ OptResult = OptimizeConstMinMax(C, IID, Call, &NewConst);
+ }
- bool PropagateNaN = IID == Intrinsic::minimum || IID == Intrinsic::maximum;
- bool IsMin = IID == Intrinsic::minimum || IID == Intrinsic::minnum;
-
- // minnum(X, nan) -> X
- // maxnum(X, nan) -> X
- // minimum(X, nan) -> nan
- // maximum(X, nan) -> nan
- if (match(Op1, m_NaN()))
- return PropagateNaN ? propagateNaN(cast<Constant>(Op1)) : Op0;
-
- // In the following folds, inf can be replaced with the largest finite
- // float, if the ninf flag is set.
- const APFloat *C;
- if (match(Op1, m_APFloat(C)) &&
- (C->isInfinity() || (Call && Call->hasNoInfs() && C->isLargest()))) {
- // minnum(X, -inf) -> -inf
- // maxnum(X, +inf) -> +inf
- // minimum(X, -inf) -> -inf if nnan
- // maximum(X, +inf) -> +inf if nnan
- if (C->isNegative() == IsMin &&
- (!PropagateNaN || (Call && Call->hasNoNaNs())))
- return ConstantFP::get(ReturnType, *C);
-
- // minnum(X, +inf) -> X if nnan
- // maxnum(X, -inf) -> X if nnan
- // minimum(X, +inf) -> X
- // maximum(X, -inf) -> X
- if (C->isNegative() != IsMin &&
- (PropagateNaN || (Call && Call->hasNoNaNs())))
- return Op0;
+ if (OptResult == MinMaxOptResult::UseOtherVal ||
+ OptResult == MinMaxOptResult::UseEither)
+ return Op0; // Return the other arg (ignoring NaN quieting)
+ else if (OptResult == MinMaxOptResult::UseNewConstVal)
+ return NewConst;
}
// Min/max of the same operation with common operand:
diff --git a/llvm/lib/Analysis/Loads.cpp b/llvm/lib/Analysis/Loads.cpp
index 0c4e3a2..4c2e1fe 100644
--- a/llvm/lib/Analysis/Loads.cpp
+++ b/llvm/lib/Analysis/Loads.cpp
@@ -37,17 +37,13 @@ static bool isDereferenceableAndAlignedPointerViaAssumption(
function_ref<bool(const RetainedKnowledge &RK)> CheckSize,
const DataLayout &DL, const Instruction *CtxI, AssumptionCache *AC,
const DominatorTree *DT) {
- // Dereferenceable information from assumptions is only valid if the value
- // cannot be freed between the assumption and use. For now just use the
- // information for values that cannot be freed in the function.
- // TODO: More precisely check if the pointer can be freed between assumption
- // and use.
- if (!CtxI || Ptr->canBeFreed())
+ if (!CtxI)
return false;
/// Look through assumes to see if both dereferencability and alignment can
/// be proven by an assume if needed.
RetainedKnowledge AlignRK;
RetainedKnowledge DerefRK;
+ bool PtrCanBeFreed = Ptr->canBeFreed();
bool IsAligned = Ptr->getPointerAlignment(DL) >= Alignment;
return getKnowledgeForValue(
Ptr, {Attribute::Dereferenceable, Attribute::Alignment}, *AC,
@@ -56,7 +52,11 @@ static bool isDereferenceableAndAlignedPointerViaAssumption(
return false;
if (RK.AttrKind == Attribute::Alignment)
AlignRK = std::max(AlignRK, RK);
- if (RK.AttrKind == Attribute::Dereferenceable)
+
+ // Dereferenceable information from assumptions is only valid if the
+ // value cannot be freed between the assumption and use.
+ if ((!PtrCanBeFreed || willNotFreeBetween(Assume, CtxI)) &&
+ RK.AttrKind == Attribute::Dereferenceable)
DerefRK = std::max(DerefRK, RK);
IsAligned |= AlignRK && AlignRK.ArgValue >= Alignment.value();
if (IsAligned && DerefRK && CheckSize(DerefRK))
@@ -390,7 +390,11 @@ bool llvm::isDereferenceableAndAlignedInLoop(
} else
return false;
- Instruction *HeaderFirstNonPHI = &*L->getHeader()->getFirstNonPHIIt();
+ Instruction *CtxI = &*L->getHeader()->getFirstNonPHIIt();
+ if (BasicBlock *LoopPred = L->getLoopPredecessor()) {
+ if (isa<BranchInst>(LoopPred->getTerminator()))
+ CtxI = LoopPred->getTerminator();
+ }
return isDereferenceableAndAlignedPointerViaAssumption(
Base, Alignment,
[&SE, AccessSizeSCEV, &LoopGuards](const RetainedKnowledge &RK) {
@@ -399,9 +403,9 @@ bool llvm::isDereferenceableAndAlignedInLoop(
SE.applyLoopGuards(AccessSizeSCEV, *LoopGuards),
SE.applyLoopGuards(SE.getSCEV(RK.IRArgValue), *LoopGuards));
},
- DL, HeaderFirstNonPHI, AC, &DT) ||
+ DL, CtxI, AC, &DT) ||
isDereferenceableAndAlignedPointer(Base, Alignment, AccessSize, DL,
- HeaderFirstNonPHI, AC, &DT);
+ CtxI, AC, &DT);
}
static bool suppressSpeculativeLoadForSanitizers(const Instruction &CtxI) {
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp
index a42c061..9655c88 100644
--- a/llvm/lib/Analysis/ValueTracking.cpp
+++ b/llvm/lib/Analysis/ValueTracking.cpp
@@ -9095,6 +9095,10 @@ Intrinsic::ID llvm::getInverseMinMaxIntrinsic(Intrinsic::ID MinMaxID) {
case Intrinsic::minimum: return Intrinsic::maximum;
case Intrinsic::maxnum: return Intrinsic::minnum;
case Intrinsic::minnum: return Intrinsic::maxnum;
+ case Intrinsic::maximumnum:
+ return Intrinsic::minimumnum;
+ case Intrinsic::minimumnum:
+ return Intrinsic::maximumnum;
default: llvm_unreachable("Unexpected intrinsic");
}
}
diff --git a/llvm/lib/Analysis/models/x86SeedEmbeddingVocab100D.json b/llvm/lib/Analysis/models/x86SeedEmbeddingVocab100D.json
new file mode 100644
index 0000000..0afe5c7
--- /dev/null
+++ b/llvm/lib/Analysis/models/x86SeedEmbeddingVocab100D.json
@@ -0,0 +1,677 @@
+{
+ "entities" : {
+ "ABS_Fp":[0.07323841750621796, -0.006006906274706125, 0.09751169383525848, -0.011089739389717579, 0.06642112135887146, -0.015824640169739723, -0.021592319011688232, -0.0035401300992816687, 0.06047678738832474, -0.007392085622996092, 0.07134906202554703, -0.019624482840299606, -0.10975595563650131, -0.007685789838433266, 0.07451746612787247, 0.06384266912937164, -0.08230067789554596, 0.050922468304634094, 0.013724055141210556, 0.015687907114624977, -0.018451329320669174, 0.046987198293209076, -0.037734340876340866, -0.07235030829906464, 0.10218106210231781, 0.08037368208169937, -0.029537858441472054, -0.047520823776721954, -0.022125739604234695, -0.03125226870179176, -0.02882847562432289, 0.013811410404741764, 0.0023568253964185715, 0.017958490177989006, -0.05359291657805443, -0.03606243059039116, 0.07840022444725037, -0.016711654141545296, -0.038644544780254364, 0.05886651948094368, -0.011418955400586128, -0.04882095381617546, 0.04027162492275238, 0.001088760793209076, 0.03045983798801899, -0.10998888313770294, -0.0097441291436553, 0.015445191413164139, 0.030951637774705887, -0.06309321522712708, -0.019475746899843216, -0.029662512242794037, 0.05312168970704079, 0.05355998873710632, 0.05060160160064697, -0.053278811275959015, -0.01803833432495594, 0.010853713378310204, -0.053911495953798294, 0.06630647927522659, -0.08671313524246216, 0.0699775293469429, -0.08346731215715408, -0.045348167419433594, 0.06779918074607849, 0.008865933865308762, 0.05460203066468239, 0.007126103155314922, 0.0012282058596611023, 0.06817980855703354, 0.0216530654579401, 0.03552381321787834, 0.015414077788591385, -0.06002715229988098, 0.05233345925807953, 0.0782286673784256, 0.04220856353640556, -0.005762201733887196, 0.004772072657942772, 0.004578332882374525, 0.002619141712784767, 0.024511393159627914, -0.10089710354804993, 0.018322769552469254, 0.020811809226870537, -0.03358744457364082, -0.06896928697824478, -0.007399350870400667, -0.044467780739068985, -0.08094192296266556, -0.09795571863651276, 0.08391229063272476, -0.04749457910656929, 0.0029586481396108866, -5.354872337193228e-05, 0.005788655485957861, 0.015252145007252693, 0.06928747892379761, 0.041780371218919754, 0.016391364857554436],
+ "ADC":[-0.07533542811870575, -0.01729339174926281, 0.04298720881342888, 0.015697332099080086, -0.04403507336974144, -0.059322185814380646, -0.050977922976017, 0.027526788413524628, -0.07009710371494293, -0.025621667504310608, 0.0352291613817215, -0.011538374237716198, 0.03682859241962433, -0.09788215160369873, -0.07216927409172058, -0.03659192472696304, 0.05676230415701866, -0.06369645893573761, -0.04756825789809227, 0.005865555722266436, 0.022270306944847107, -0.042112063616514206, 0.07008901983499527, 0.07748222351074219, -0.1020870953798294, -0.008511601015925407, -0.05725255608558655, -0.07881367206573486, 0.05627593398094177, -0.0005361076910048723, 0.03351512551307678, 0.04348289221525192, -0.08322969079017639, -0.02161242999136448, -0.07805898040533066, 0.04819482937455177, -0.061123576015233994, -0.010114834643900394, -0.04676959663629532, -0.008176938630640507, 0.010575453750789165, -0.04312445595860481, 0.00376943894661963, -0.0691257119178772, 0.03553615137934685, 0.10397598147392273, 0.009375158697366714, 0.001147320494055748, 0.026351911947131157, -0.0194610096514225, -0.05202522128820419, 0.014047946780920029, -0.040036872029304504, 0.06963572651147842, 0.04827437922358513, -0.06908547878265381, 0.024857567623257637, -0.03304143249988556, 0.02291242778301239, 0.07687342166900635, -0.05110599845647812, -0.00873416755348444, 0.026205750182271004, 0.045064594596624374, -0.03565925359725952, 0.09580051153898239, -0.02518773265182972, 0.047807395458221436, -0.03548192232847214, 0.08286304026842117, -0.053511787205934525, 0.02892065793275833, -0.0495525486767292, 0.02590095065534115, -0.006982128601521254, 0.006042638327926397, -0.07269058376550674, 0.02401554025709629, -0.05660006031394005, -0.026029467582702637, 0.05318204686045647, 0.06714116781949997, -0.0023821850772947073, 0.05028798058629036, -0.005811943672597408, -0.003296421840786934, -0.005409242119640112, -0.10150349885225296, -0.06406981498003006, 0.02553202211856842, -0.002790689468383789, 0.0663856491446495, 0.09109167754650116, -0.04678672179579735, 0.022019781172275543, 0.007821275852620602, 0.022490357980132103, -0.058503177016973495, 0.08841150254011154, -0.00892670825123787],
+ "ADD":[-0.037626221776008606, 0.006784931290894747, 0.10051396489143372, -0.0014993306249380112, -0.0323498398065567, -0.03148593008518219, -0.014100957661867142, -0.020252650603652, 0.014126972295343876, -0.1295478343963623, 0.08520576357841492, -0.02513248659670353, 0.03539956361055374, -0.07019674777984619, -0.019069846719503403, 0.016678515821695328, -0.009174983017146587, -0.019034702330827713, -0.024083402007818222, -0.07829779386520386, -0.007908892817795277, -0.07924024760723114, -0.034599609673023224, 0.05271153524518013, 0.0016642026603221893, -0.03938138112425804, 0.0019624519627541304, 0.03562740981578827, 0.07340876758098602, 0.09457183629274368, -0.06507840752601624, 0.00246993126347661, -0.004548616707324982, 0.058226197957992554, -0.021043049171566963, -0.0599520243704319, -0.03138553351163864, 0.03265950828790665, 0.004963710438460112, -0.003248866181820631, -0.04021746292710304, 0.038208190351724625, -0.02256007120013237, 0.10770396143198013, 0.013757425360381603, 0.040707558393478394, -0.00694271270185709, -0.012331271544098854, 0.004992029629647732, -0.032236646860837936, 0.01055158581584692, 0.04604483023285866, 0.09973260760307312, 0.07322807610034943, 0.06853726506233215, 0.004230210557579994, -0.04007832333445549, 0.16341225802898407, -0.01683313027024269, -0.01998194307088852, -0.035919081419706345, -0.055582448840141296, 0.008072910830378532, -0.0054771858267486095, -0.013343624770641327, 0.014230597764253616, -0.06542462855577469, 0.015897123143076897, -0.06011642515659332, 0.07983837276697159, 0.026512078940868378, 0.014883842319250107, -0.015171286650002003, 4.1508101276122034e-05, -0.048078570514917374, -0.052594274282455444, -0.07897629588842392, -0.01334046758711338, -0.06180298700928688, 0.022423526272177696, 0.07393807917833328, 0.022332284599542618, 0.04279463365674019, 0.04075624793767929, 0.007524204906076193, -0.024405587464571, 0.0011822516098618507, -0.0019135301699861884, 0.10789427906274796, -0.040499038994312286, 0.011574117466807365, 0.048836030066013336, 0.0380941741168499, -0.047072283923625946, -0.01285380870103836, -0.038019485771656036, -0.06277137994766235, -0.0034404860343784094, -0.031123748049139977, 0.04279843345284462],
+ "ADDPDrm":[0.07009764760732651, 0.041158806532621384, -0.036697786301374435, 0.027270959690213203, 0.00587842520326376, 0.10284856706857681, 0.020770356059074402, 0.04683441296219826, 0.013060610741376877, -0.07536014169454575, -0.03476418927311897, 0.046423304826021194, -0.009602071717381477, 0.09124074876308441, -0.04236253723502159, -0.01007886603474617, 0.06474286317825317, -0.040204375982284546, -0.0738307535648346, 0.013483431190252304, -0.060805320739746094, -0.09110517799854279, 0.02188364416360855, -0.03692533075809479, -0.05501416698098183, 0.011399473063647747, 0.049646198749542236, 0.0025543177034705877, 0.01628010720014572, -0.00993973296135664, -0.0005734377773478627, 0.04185739532113075, 0.03832574933767319, 0.026964910328388214, -0.04641959071159363, 0.012572194449603558, -0.0395757257938385, -0.003332541324198246, -0.044967666268348694, -0.06571508198976517, 0.038011591881513596, -0.06386805325746536, 0.03714365139603615, -0.1052408367395401, 0.06243559345602989, -0.024645036086440086, -0.010030552744865417, -0.07661470025777817, 0.0865713357925415, 0.046539679169654846, -0.07129287719726562, -0.020563360303640366, 0.0008716392912901938, -0.00762154720723629, -0.003938896581530571, 0.000724273850210011, 0.015505202114582062, -0.05037273094058037, 0.0992860198020935, 0.027910880744457245, 0.06156594306230545, -0.0032640721183270216, -0.07730405777692795, -0.004569621756672859, 0.013419588096439838, 0.007523054257035255, -0.020045889541506767, 0.0850263312458992, 0.026615964248776436, 0.03408721461892128, -0.01791095733642578, 0.026162395253777504, -0.0700850561261177, -0.005922914016991854, -0.02855725958943367, 0.05782944709062576, 0.007173994556069374, 0.021446701139211655, -0.06698255985975266, 0.013824637047946453, -0.029393024742603302, 0.020015599206089973, 0.055331677198410034, -0.10878673195838928, -0.06758837401866913, -0.06176985800266266, 0.09038020670413971, 0.04446821287274361, -0.04775940999388695, -0.058204855769872665, 0.04096760228276253, 0.005533912684768438, -0.06717914342880249, 0.07403464615345001, -0.02268112637102604, -0.051137860864400864, 0.04077434912323952, -0.001353689469397068, 0.02345391921699047, 0.04613517224788666],
+ "ADDPDrr":[-0.04596775770187378, -0.0044471463188529015, 0.04498136043548584, -0.042350467294454575, -0.07428556680679321, -0.04051988199353218, -0.0073368060402572155, 0.027942780405282974, -0.0061906566843390465, 0.0760260671377182, -0.0392841137945652, 0.011466285213828087, -0.08968627452850342, 0.06389017403125763, -0.06505866348743439, 0.0559384860098362, 0.0039897155947983265, 0.06097633019089699, 0.0173311997205019, 0.0037405493203550577, -0.03998756408691406, 0.03335054963827133, 0.02584046497941017, 4.0998056647367775e-05, -0.045657772570848465, -0.057668305933475494, -0.03277750685811043, 0.05691971629858017, -0.013361883349716663, 0.048219770193099976, -0.024713044986128807, 0.005270084831863642, 0.049002911895513535, -0.03642402961850166, -0.03840167447924614, -0.015794308856129646, 0.04913374036550522, -0.03470451757311821, -0.10341121256351471, -0.06965477764606476, -0.059708986431360245, 0.06008850410580635, -0.013509183190762997, -0.017997410148382187, -0.06035573035478592, -0.02037348784506321, -0.05577300116419792, -0.02149888686835766, -0.04989160597324371, -0.0004825244832318276, 0.016648543998599052, -0.02363632805645466, 0.02275926247239113, 0.014475440606474876, -0.02694074623286724, -0.063788041472435, 0.012645134702324867, -0.01092993188649416, -0.015334105119109154, -0.042439185082912445, 0.10461638867855072, 0.04882724583148956, 0.010570053942501545, -0.062007829546928406, 0.012545253150165081, 0.023437704890966415, -0.08218216150999069, -0.06192370131611824, -0.06621129810810089, -0.03691256418824196, 0.060212552547454834, -0.07883796840906143, 0.01970476470887661, 0.031710222363471985, 0.04297247156500816, -0.0298332367092371, 0.019516201689839363, -0.04433576762676239, -0.059274736791849136, -0.0656680166721344, 0.049457188695669174, -0.01118172612041235, -0.030476603657007217, -0.01605592854321003, 0.029538411647081375, 0.0970517173409462, -0.09775900840759277, -0.04262813180685043, 0.03421647101640701, -0.029581470414996147, 0.0009151006815955043, 0.047591544687747955, 0.007551174610853195, -0.053506724536418915, -0.012300712056457996, -0.07691242545843124, 0.020218174904584885, -0.012481145560741425, -0.047607485204935074, 0.07222799956798553],
+ "ADDPSrr":[-0.0010862551862373948, -0.06672956794500351, -0.052157267928123474, -0.03006194904446602, -0.044290442019701004, -0.019964616745710373, 0.03780125081539154, 0.008854486979544163, 0.01808968000113964, 0.02840016782283783, 0.046524811536073685, -0.021772554144263268, -0.0004921152140013874, 0.013121956028044224, -0.014501849189400673, -0.04788592457771301, 0.0745849683880806, 0.033482104539871216, 0.07531317323446274, 0.0076997834257781506, 0.05112716555595398, -0.09583397954702377, 0.03187628462910652, -0.03283628076314926, -0.013693300075829029, -0.07497856765985489, 0.06576468795537949, -0.08162052929401398, -0.09383504837751389, -0.033568717539310455, -0.0505230575799942, 0.03959206864237785, 0.10229994356632233, 0.0076744286343455315, -0.06886667758226395, -0.04421980306506157, -0.04259685054421425, -0.04338780418038368, -0.037219662219285965, -0.05831541866064072, -0.00827114563435316, 0.028740813955664635, -0.06070013344287872, -0.013892228715121746, 0.05894717946648598, -0.020704520866274834, 0.07185368984937668, 0.061317455023527145, -0.07089892029762268, -0.03228383883833885, -0.07486582547426224, -0.0027882945723831654, -0.09122829884290695, 0.008099637925624847, 0.07834281027317047, -0.007376872003078461, 0.001316068577580154, 0.07249294966459274, 0.0824698731303215, -0.027668481692671776, 0.00985609833151102, 0.037949733436107635, -0.06134350597858429, -0.01569969207048416, 0.059803493320941925, 0.021634817123413086, -0.03987382352352142, 0.06079491600394249, -0.06344138085842133, 0.04329366236925125, 0.027230307459831238, 0.05079430714249611, 0.024438906461000443, 0.09220375865697861, -0.053137242794036865, -0.05642762780189514, -0.027342936024069786, 0.05689698085188866, -0.014531319960951805, 0.052742648869752884, -0.04824535921216011, -0.08314007520675659, 0.0942450612783432, -0.06036785617470741, -0.05691229924559593, 0.03234747424721718, -0.02331165410578251, 0.009931708686053753, -0.006341192405670881, 0.04973819479346275, -0.021680478006601334, -0.052248015999794006, -0.018064947798848152, 0.06025249511003494, 0.007636804599314928, -0.11000077426433563, 0.04152590036392212, -0.08637171983718872, -0.06607838720083237, -0.04110601544380188],
+ "ADDSDrm":[0.04892442747950554, -0.06103473901748657, 0.015018487349152565, 0.08166671544313431, -0.033990442752838135, -0.01915758103132248, -0.05139895901083946, -0.007480544503778219, -0.018337570130825043, -0.056839827448129654, 0.0864742174744606, 0.032182060182094574, 0.03867374733090401, -0.05796482786536217, -0.02464335225522518, 0.04538990557193756, 0.0034937551245093346, 0.012464827857911587, -0.09811098873615265, 0.04636799916625023, 0.03733761981129646, 0.005370226688683033, 0.021457510069012642, -0.07153765857219696, 0.038865771144628525, -0.10141989588737488, 0.015244671143591404, -0.06724461168050766, 0.021004347130656242, -0.028265921398997307, 0.04661846533417702, -0.02325291745364666, 0.06644883751869202, -0.04028370976448059, -0.018351133912801743, -0.05087980255484581, 0.04416097700595856, -0.0812181681394577, -0.02160811610519886, 0.024333341047167778, 0.03463061898946762, 0.009553504176437855, 0.08028151839971542, -0.06542277336120605, -0.0014096115482971072, 0.07484633475542068, 0.0023242777679115534, 0.02251303941011429, -0.04338185489177704, 0.015786156058311462, -0.046271912753582, 0.0744636058807373, 0.004949038382619619, 0.051725562661886215, -0.02538277395069599, -0.036673545837402344, 0.028564458712935448, -0.024136632680892944, 0.008598363026976585, -0.05006027966737747, 0.053226761519908905, 0.022265126928687096, -0.02901754528284073, -0.06081598624587059, -0.026122376322746277, -0.07633723318576813, 0.1016741394996643, 0.04742857813835144, 0.05453747138381004, -0.0012545660138130188, -0.08296336233615875, 0.050172578543424606, 0.05066075921058655, 0.0891316831111908, -0.03497900068759918, 0.007347673177719116, -0.030611002817749977, -0.018010027706623077, 0.011938242241740227, 0.05443989112973213, 0.0990014523267746, 0.07246211171150208, 0.000585653877351433, -0.05296506732702255, 0.05634703114628792, 0.04029165208339691, -0.04409696161746979, 0.014432637952268124, -0.0071656242944300175, -0.06512779742479324, -0.007821912877261639, -0.031730517745018005, -0.021899448707699776, 0.1049361377954483, 0.04886802285909653, -0.021396057680249214, 0.0022708140313625336, 0.022672679275274277, -0.03986614942550659, -0.01947598159313202],
+ "ADDSDrr":[-0.009882316924631596, -0.006821667309850454, 0.011082601733505726, -0.0021822743583470583, -0.0975743904709816, 0.025758981704711914, -0.02966463193297386, 0.027963507920503616, 0.000818224623799324, 0.04111432656645775, -0.013163933530449867, -0.04513559117913246, 0.01559582818299532, -0.012839444912970066, -0.04489558935165405, 0.006185058504343033, -0.02676047757267952, 0.02802431769669056, 0.0002424015401629731, -0.03914805129170418, -0.012445250526070595, 0.044973261654376984, 0.038631316274404526, -0.011339085176587105, 0.10280591249465942, -0.03547431528568268, -0.030281851068139076, -0.05858651176095009, 0.04829569160938263, -0.06300415098667145, 0.018506178632378578, -0.010070845484733582, 0.017491133883595467, 0.07129621505737305, 0.01914530247449875, -0.027927489951252937, 0.08480717241764069, -0.0112272584810853, 0.007532689720392227, -0.034439340233802795, 0.06632310152053833, -0.01454569585621357, -0.005235020071268082, -0.015157965943217278, 0.06874823570251465, -0.02620617486536503, -0.08229350298643112, 0.012827768921852112, -0.06695916503667831, -0.050597891211509705, -0.03387238830327988, 0.05510825291275978, -0.006577694788575172, 0.03828307241201401, 0.05089866369962692, -0.07402842491865158, -0.023779401555657387, 0.02178611420094967, -0.07743886113166809, 0.05049272999167442, 0.0037628572899848223, 0.01344207301735878, 0.009425484575331211, 0.056711696088314056, -0.0874699056148529, 0.02820301055908203, 0.03751565143465996, 0.017980076372623444, 0.019689621403813362, 0.032233890146017075, -0.0009720461093820632, 0.02392229065299034, -0.006602674722671509, 0.027384111657738686, -0.040873680263757706, 0.04351453483104706, 0.053075168281793594, 0.10080822557210922, -0.009664399549365044, 0.06123506277799606, -0.057014040648937225, 0.01796627603471279, -0.004365033935755491, 0.030881909653544426, 0.05005770921707153, -0.026803938671946526, -0.047146525233983994, 0.0047181942500174046, -0.03587409481406212, 0.061785295605659485, 0.05636046081781387, 0.03512543812394142, -0.08753497898578644, -0.005682630464434624, -0.0032604255247861147, -0.058390144258737564, 0.030058836564421654, -0.06038999930024147, -0.08351998031139374, 0.062149688601493835],
+ "ADDSSrm":[-0.006379894912242889, -0.07124602794647217, -0.01574990712106228, 0.03920481726527214, -0.029346542432904243, 0.03596850112080574, -0.017237696796655655, -0.05554672330617905, -0.005089383106678724, 0.009248537942767143, -0.017288248986005783, -0.039238087832927704, 0.01488877646625042, 0.036856140941381454, -0.01893826574087143, 0.03333142772316933, -0.06360204517841339, 0.08950237184762955, -0.03853056952357292, -0.038393616676330566, 0.03868701308965683, -0.037263110280036926, -0.05378836765885353, 0.07053365558385849, 0.06828384101390839, -0.005257792305201292, -0.03093857690691948, -0.04982404410839081, -0.0702306479215622, 0.02817978896200657, -0.012759373523294926, 0.03722860664129257, -9.443633462069556e-05, 0.05227737873792648, 0.005053683649748564, -0.00398830883204937, -0.045689914375543594, 0.05097959563136101, -0.0397205613553524, -0.034947123378515244, -0.0338415689766407, -0.09254013746976852, 0.0594429075717926, 0.02125219628214836, -0.09789516776800156, 0.0019188998267054558, -0.0447734072804451, -0.057967670261859894, 0.058396823704242706, 0.06498101353645325, 0.019055591896176338, -0.033116087317466736, 0.008279284462332726, -0.05529768392443657, -0.10040599852800369, 0.015406090766191483, 0.01647253707051277, 0.02234286069869995, 0.03630278632044792, -0.01040616910904646, -0.07652250677347183, -0.04871508851647377, 0.056719664484262466, -0.021639099344611168, -0.09108010679483414, 0.002048226073384285, 0.020200686529278755, 0.032328687608242035, -0.052706897258758545, -0.034058596938848495, 0.011026203632354736, 0.03925648704171181, 0.06147075816988945, -0.00872864667326212, -0.07808088511228561, 0.07659715414047241, 0.025836633518338203, 0.01538875326514244, 0.013475542888045311, -0.05403736233711243, 0.06641091406345367, 0.024242237210273743, 0.04690679907798767, -0.009846131317317486, 0.026121165603399277, -0.06339167058467865, 0.04653789848089218, -0.02066836692392826, 0.0007853852002881467, 0.07002828270196915, 0.027170361950993538, -0.07411734014749527, -0.03881789371371269, 0.07388191670179367, 0.02537384256720543, 0.015267475508153439, -0.023338191211223602, -0.06850817799568176, -0.08762854337692261, -0.04143160581588745],
+ "ADDSSrr":[0.05118250101804733, 0.06812505424022675, 0.04409819096326828, 0.013618097640573978, -0.06679084151983261, 0.056542184203863144, -0.03288234397768974, -0.007693540304899216, -0.07157114893198013, 0.0070834290236234665, 0.08783227205276489, -0.050605691969394684, 0.050727568566799164, 0.05740772932767868, 0.09361714124679565, 0.035497330129146576, 0.041928667575120926, 0.03389079123735428, 0.060963403433561325, 0.059449683874845505, -0.044073667377233505, -0.0030610559042543173, 0.06081173196434975, -0.0721563920378685, -0.040048543363809586, -0.019022991880774498, 0.0003017895214725286, 0.034369125962257385, -0.025157272815704346, 0.055933333933353424, -0.061149757355451584, 0.0570341981947422, -0.0020059440284967422, 0.0077166431583464146, -0.03233756497502327, -0.02186649851500988, -0.024230068549513817, 0.04053255170583725, 0.06146353483200073, 0.019123878329992294, -0.01893535628914833, -0.016858506947755814, -0.029135670512914658, 0.029981302097439766, 0.026486080139875412, 0.055705003440380096, -0.038819603621959686, -0.01249619759619236, 0.09041040390729904, -0.05221758782863617, -0.04027020186185837, 0.09112581610679626, -0.06443708389997482, -0.05193798243999481, -0.03670744225382805, 0.055467016994953156, 0.007845507003366947, 0.04693123325705528, -0.046196356415748596, 0.07667657732963562, -0.01750991679728031, 0.06606461107730865, -0.06512831896543503, 0.07360780984163284, 0.009473718702793121, -0.05143597349524498, 0.05435745790600777, 0.017151860520243645, -0.05280262604355812, 0.005218354985117912, -0.07557115703821182, -0.004178038332611322, 0.08781018108129501, 0.0075971269980072975, -0.043299198150634766, 0.027034811675548553, 0.03489911928772926, -0.04144001007080078, 0.04680674150586128, 0.07817748188972473, 0.04125432297587395, -0.010619630105793476, -0.026392238214612007, -0.007747319992631674, -0.036789420992136, -0.010913040488958359, -0.07547445595264435, 0.04518992081284523, -0.04470328614115715, -0.01915648765861988, 0.01233785878866911, 0.0037424813490360975, 0.0744822770357132, -0.0832425057888031, -0.055857714265584946, 0.07467300444841385, 0.011580430902540684, -0.08265962451696396, 0.02688535861670971, 0.04914490506052971],
+ "ADD_Fp":[0.03440484404563904, -0.010069165378808975, -0.035566747188568115, 0.08364991843700409, -0.09323719888925552, 0.01897444576025009, 0.0437404066324234, -0.06443030387163162, -0.0980336144566536, 0.031757861375808716, 0.007547745946794748, -0.0205911323428154, 0.06681842356920242, -0.07929249852895737, 0.045057665556669235, -0.02655254676938057, -0.006904565263539553, 0.029358647763729095, -0.08163459599018097, 0.00842927023768425, 0.03268185630440712, 0.009115547873079777, 0.09570766985416412, -0.05955146253108978, 0.05212470889091492, 0.021478233858942986, 0.028024135157465935, -0.008601540699601173, -0.003703348571434617, 0.05058622360229492, -0.07991603761911392, 0.02802545763552189, 0.0748947486281395, -0.011422602459788322, -0.0018169247778132558, -0.0068685924634337425, -0.011236225254833698, 0.08264214545488358, 0.04784052446484566, 0.09341181069612503, -0.048928938806056976, 0.07727257162332535, -0.03284668177366257, -0.007112640887498856, -0.014548443257808685, -0.06434344500303268, -0.08399874716997147, 0.056111376732587814, 0.021711841225624084, 0.02273131161928177, -0.07615577429533005, 0.015451139770448208, -0.0635916069149971, 0.006666609086096287, -0.024878453463315964, 0.07802990078926086, 0.006938569247722626, 0.07063411921262741, -0.05685582384467125, 0.0064702583476901054, 0.08222152292728424, -0.07998692989349365, 0.06800881028175354, 0.05285217985510826, 0.007726998068392277, 0.05808853730559349, 0.05606748163700104, 0.07873917371034622, 0.019454902037978172, 0.018994925543665886, -0.09696345776319504, 0.00240366836078465, -0.030852284282445908, 0.070147804915905, 0.07768893986940384, -0.02532685361802578, -0.019146021455526352, -0.06722825020551682, 0.07286105304956436, 0.004785188939422369, 0.06183474883437157, -0.01889476552605629, -0.020028261467814445, 0.0474262535572052, -0.06679774820804596, -0.006517115514725447, 0.03153359144926071, -0.016827203333377838, -0.01842053420841694, 0.042106159031391144, -0.019391769543290138, 0.014194083400070667, -0.03427531570196152, 0.009196585975587368, -0.09456364810466766, -0.040319956839084625, 0.004893564619123936, 0.06661606580018997, 0.046914443373680115, 0.04517778754234314],
+ "ADD_FpI":[-0.06644578278064728, 0.0755898654460907, -0.04799535125494003, 0.03434358537197113, -0.061683375388383865, -0.01275281235575676, -0.010601312853395939, 0.035907208919525146, 0.014648604206740856, -0.002551303245127201, 0.03335817903280258, 0.012294750660657883, 0.06513884663581848, -0.013880685903131962, 0.031004631891846657, 0.05767838656902313, 0.005910205189138651, 0.013458577916026115, 0.02671808749437332, 0.049786653369665146, -0.0486176535487175, 0.0651126429438591, -0.09429919719696045, -0.0050515541806817055, -0.01175987720489502, 0.07766000926494598, -0.012014464475214481, -0.05866161733865738, -0.07700052857398987, -0.022489579394459724, 0.024837417528033257, 0.0589754544198513, -0.03667299821972847, -0.06511276960372925, 0.05122082307934761, -0.007094297092407942, 0.0710843950510025, -0.025709642097353935, -0.031065683811903, -0.0718647688627243, 0.03735661506652832, 0.05705833062529564, 0.05021549016237259, -0.046191319823265076, -0.03219112381339073, -0.013035347685217857, 0.07217980921268463, 0.015425330027937889, 0.001450536074116826, 0.02501547522842884, 0.03260450065135956, -0.09619545191526413, 0.026500817388296127, -0.03882071375846863, -0.05454118549823761, 0.05168943479657173, -0.02096504531800747, 0.009012745693325996, -0.06928461790084839, 0.0341510996222496, -0.010830292478203773, 0.013636517338454723, -0.03519725799560547, 0.09302199631929398, 0.09901111572980881, 0.012556618079543114, 0.04152209311723709, 0.015032120048999786, -0.0059909638948738575, 0.03528469055891037, 0.03618190437555313, -0.009051083587110043, 0.04328802973031998, -0.021704794839024544, -0.08299263566732407, 0.026400217786431313, -0.027146583423018456, 0.06699372082948685, -0.04250946268439293, -0.06260134279727936, 0.00901107955724001, -0.010437898337841034, -0.036660969257354736, -0.04663849249482155, 0.016205377876758575, -0.042342908680438995, -0.052200865000486374, -0.025448836386203766, -0.004494381137192249, -0.005993339233100414, 0.02722255140542984, 0.07599231600761414, 0.0397033654153347, -0.09675166010856628, -0.0025104109663516283, -0.004034798126667738, 0.023232746869325638, -0.05555203557014465, 0.09333592653274536, -0.023641744628548622],
+ "ADJCALLSTACKDOWN":[-0.04709424823522568, -0.020378131419420242, -0.015609691850841045, 0.019142279401421547, -0.06208507716655731, 0.017435526475310326, 0.0814966931939125, -0.11327692121267319, -0.05380191653966904, 0.013094774447381496, 0.005280997604131699, -0.04065922647714615, -0.047995831817388535, -0.08673298358917236, 0.0953010767698288, -0.015101428143680096, 0.003719752887263894, 0.05422709509730339, 0.016227377578616142, -0.10987412184476852, -0.0014040329260751605, -0.07668919861316681, -0.02955026738345623, 0.0727115049958229, -0.03777198866009712, 0.016884857788681984, 0.013544187881052494, 0.019340449944138527, 0.044043853878974915, -0.05204193294048309, -0.02056577429175377, 0.09221111238002777, 0.010027492418885231, -0.08706234395503998, -0.006021123379468918, 0.006081112194806337, -0.09660320729017258, -0.05970266833901405, -0.004673789255321026, -0.09592344611883163, -0.09654125571250916, 0.05531816929578781, 0.002549930941313505, 0.00105489871930331, 0.05400099232792854, 0.08834831416606903, -0.015375079587101936, -0.011847477406263351, -0.0006072644027881324, 0.031711727380752563, -0.013604418374598026, 0.0019170703599229455, -0.006397536490112543, 0.044714342802762985, 0.03859230875968933, -0.002910149283707142, 0.020016271620988846, 0.04339060187339783, 0.017229555174708366, -0.015391204506158829, 0.008757362142205238, 0.1364731788635254, 0.10301723331212997, 0.014719093218445778, -0.011031026020646095, -0.029589533805847168, -0.0798686146736145, 0.01610778458416462, -0.002350755035877228, -0.1160326898097992, 0.016201646998524666, 0.05010976269841194, -0.03592310845851898, -0.027986573055386543, -0.041210297495126724, 0.027758197858929634, -0.11819557100534439, 0.009700660593807697, -0.022141609340906143, -0.051866233348846436, -0.005225947592407465, 0.01853358745574951, -0.009489383548498154, -0.001425821566954255, -0.0032425778917968273, 0.00688852509483695, -0.05192605406045914, 0.05090465396642685, 0.08412957191467285, -0.0708758756518364, 0.03764340654015541, 0.00498728035017848, 0.04427919164299965, 0.017094876617193222, -0.01581535115838051, -0.05034441128373146, -0.007488026283681393, -0.009511294774711132, -0.07769515365362167, 0.006037403829395771],
+ "ADJCALLSTACKUP":[-0.041241809725761414, 0.004141668323427439, -0.06616832315921783, -0.04351722449064255, -0.04923555999994278, 0.11155965179204941, -0.01596240885555744, 0.021169476211071014, -0.07106903195381165, 0.010645078495144844, -0.02022034302353859, -0.063289113342762, -0.008795944042503834, -0.09160243719816208, 0.046717725694179535, 0.1184355691075325, 0.06392344832420349, 0.005003760103136301, -0.0008214542176574469, -0.1044178456068039, -0.0544920414686203, 0.041939131915569305, -0.04609750956296921, 0.09611199051141739, 0.03295130282640457, -0.06880483031272888, 0.057312171906232834, 0.021496593952178955, 0.0013963710516691208, 0.051089536398649216, -0.060482848435640335, 0.06885284185409546, 0.03239080682396889, 0.03443128988146782, -0.06519661843776703, -0.017935780808329582, -0.06323734670877457, 0.02155822515487671, -0.006066259928047657, -0.05568639934062958, 0.04591400548815727, 0.05141925811767578, 0.003075560089200735, 0.1916356086730957, -0.013108255341649055, 0.06753044575452805, 0.07321187853813171, -0.01984579674899578, 0.07346784323453903, -0.050815463066101074, 0.04774338752031326, -0.09761027246713638, -0.10048128664493561, 0.043583761900663376, -0.017339034005999565, 0.054210543632507324, 0.023611055687069893, -0.017847871407866478, 0.012048189528286457, -0.0043100593611598015, 0.002661658450961113, 0.04663235694169998, -0.06902991235256195, 0.01878165639936924, 0.004385469947010279, -0.06811937689781189, -0.026346642524003983, 0.040448643267154694, -0.053168658167123795, -0.006420455873012543, -0.07097376883029938, -0.021866891533136368, -0.04053087532520294, -0.06713280826807022, -0.026760339736938477, -0.008683697320520878, -0.13559001684188843, 0.027119053527712822, -0.07011672854423523, 0.02144872210919857, -0.00423184409737587, 0.03539235517382622, -0.05513273552060127, -0.009736270643770695, -0.008990665897727013, 0.025529177859425545, -0.02847706712782383, 0.00016989160212688148, 0.029215548187494278, -0.09927915036678314, -0.0247118528932333, 0.04383521154522896, 0.053447119891643524, -0.011352486908435822, -0.04113100469112396, -0.06865327805280685, 0.038212139159440994, 0.007804930210113525, 0.07545974105596542, 0.027842026203870773],
+ "AND":[-0.07660706341266632, -0.014095314778387547, 0.01898212358355522, -0.032686471939086914, -0.0321260429918766, 0.06291379034519196, 0.12377285957336426, 0.019704163074493408, -0.06644301116466522, -0.08922102302312851, 0.0465359203517437, -0.0020662446040660143, 0.08219265937805176, -0.0726558268070221, 0.02302318811416626, -0.012708564288914204, 0.04685886949300766, 0.04416051506996155, -0.010087937116622925, -0.12437917292118073, 0.013615368865430355, -0.09546039998531342, -0.03556260094046593, 0.053560178726911545, -0.0477776862680912, 0.015889178961515427, -0.019732963293790817, 0.0312214158475399, 0.010961982421576977, 0.06471067667007446, -0.09822830557823181, 0.04200299456715584, 0.12521442770957947, -0.03547253459692001, -0.02137928269803524, -0.00707221869379282, 0.0448622964322567, -0.03661639243364334, -0.01636088266968727, -0.03901670128107071, -0.013286812230944633, 0.04072348773479462, 0.050280772149562836, 0.10028240084648132, -0.047515708953142166, -0.07067376375198364, 0.01479724794626236, 0.005617485847324133, 0.004546215292066336, -0.046877097338438034, -0.010119595564901829, 0.11842137575149536, 0.0040937550365924835, 0.06491748243570328, 0.05592060834169388, 0.01046587061136961, 0.008832390420138836, -0.052296094596385956, 0.02876841090619564, 0.011290809139609337, -0.01716136373579502, 0.06917624920606613, 0.04566642642021179, 0.013297840021550655, -0.061003703624010086, 0.043212611228227615, -0.05157230794429779, 0.0002416857169009745, -0.07334057241678238, 0.07985012978315353, 0.08791543543338776, -0.02481096237897873, -0.006299411412328482, -0.01893085613846779, -0.07407700270414352, 0.023350834846496582, -0.051764145493507385, -0.04286176711320877, -0.0863436907529831, 0.017530901357531548, -0.007419351022690535, 0.002417869633063674, 0.04334099590778351, 0.04051153361797333, 0.054307546466588974, -0.0011727092787623405, -0.04609203338623047, 0.0369856022298336, 0.010123631916940212, -0.009059127420186996, 0.02320830523967743, 0.04660753160715103, -0.012146967463195324, -0.01678379438817501, -0.0060846456326544285, -0.049806881695985794, -0.06752482801675797, 0.03904225304722786, 0.06557071208953857, 0.013891614973545074],
+ "AVX":[-0.02304701879620552, 0.04133991524577141, 0.009135821834206581, -0.10034530609846115, 0.0233008936047554, -0.01860773377120495, -0.04017479717731476, -0.027308959513902664, 0.015186523087322712, 0.03152255341410637, 0.08454340696334839, 0.033649902790784836, 0.0563698373734951, -0.026124699041247368, -0.0938129872083664, -0.03802703320980072, -0.00031763335573486984, -0.020866595208644867, -0.010897472500801086, -0.001718328334391117, -0.016605477780103683, 0.06144420802593231, 0.052806638181209564, 0.010800193063914776, -0.09052427858114243, 0.08367804437875748, -0.06881104409694672, -0.02609153278172016, 0.049969449639320374, 0.042757272720336914, -0.005428088363260031, -0.017630532383918762, 0.025015341117978096, 0.06567692011594772, -0.0311722494661808, 0.012434330768883228, 0.06757802516222, -0.05856805667281151, -0.0916246846318245, 0.04007991403341293, -0.021801942959427834, 0.020897626876831055, 0.007840248756110668, 0.06941775977611542, -0.08394283801317215, -0.0033973201643675566, 0.09856367111206055, -0.0026807107497006655, 0.07704925537109375, 0.04601014405488968, -0.09511519223451614, 0.0418759323656559, 0.04599742591381073, 0.07245475798845291, 0.005476330406963825, 0.09460671246051788, 0.010276827961206436, 0.0912860855460167, 0.021558811888098717, 0.0451001413166523, 0.0013501043431460857, 0.019345343112945557, 0.011531149037182331, 0.002925372449681163, 0.02068927139043808, 0.021630438044667244, -0.009595715440809727, 0.02181040495634079, 0.02733653597533703, 0.10402065515518188, -0.05948426574468613, 0.019072065129876137, -0.04518042877316475, -0.04231177642941475, 0.04132721573114395, -0.06839127093553543, 0.029064983129501343, -0.04961463063955307, -0.06745841354131699, -0.04447927325963974, 0.05809250846505165, -0.017345452681183815, -0.012996809557080269, 0.0030611492693424225, -0.01946498453617096, -0.03178105130791664, 0.03811722993850708, -0.05446070432662964, 0.03324342891573906, 0.00031253366614691913, 0.0058539798483252525, 0.06200895458459854, 0.1074676439166069, 0.011085999198257923, 0.030144259333610535, 0.03959815204143524, 0.04093164578080177, 0.07463788241147995, -0.11381853371858597, 0.014059256762266159],
+ "AVX_SET":[-0.0556979738175869, -0.019278399646282196, 0.1310562938451767, -0.057649966329336166, -0.041484445333480835, -0.025252029299736023, -0.013555057346820831, 0.015578759834170341, 0.04667499288916588, 0.10333652049303055, -0.03753714635968208, 0.0638882964849472, -0.09031850844621658, -0.04807807877659798, -0.05898260697722435, -0.025386225432157516, -0.06413353234529495, 0.014726264402270317, -0.011728133074939251, 0.01011780183762312, 0.03795083612203598, -0.059279024600982666, -0.04878971725702286, -0.0010356715647503734, -0.06205518916249275, 0.010354308411478996, -0.0629291906952858, 0.009134380146861076, 0.004224794451147318, -0.0037981942296028137, -0.07738027721643448, -0.04807921126484871, 0.06197819113731384, 0.06726941466331482, 0.01150104496628046, -0.08969148993492126, -0.02523788996040821, -0.05349969118833542, 0.004118612967431545, -0.025296781212091446, 0.09162408113479614, 0.007938113994896412, 0.03458557650446892, 0.13888131082057953, 0.007001007907092571, -0.04570794105529785, 0.06339777261018753, 0.017060713842511177, 0.022912651300430298, -0.003190628718584776, 0.036472730338573456, 0.03675931319594383, -0.003983975388109684, -0.023937981575727463, -0.05387129262089729, -0.02444557286798954, 0.08164409548044205, -0.023685770109295845, 0.059537146240472794, 0.01689748279750347, -0.01647753082215786, 0.11245467513799667, -0.0065575591288506985, 0.11958351731300354, -0.053922418504953384, -0.0861806869506836, -0.033479467034339905, -0.033915501087903976, -0.03230970725417137, 0.05611656606197357, -0.01576787792146206, -0.08991491794586182, -0.02923109196126461, -0.02923806756734848, -0.04167250916361809, -0.016264449805021286, -0.05341683328151703, -0.05716549605131149, -0.028879348188638687, 0.037102051079273224, -0.01506786048412323, -0.01555105485022068, 0.09414556622505188, -0.08548007905483246, -0.014996465295553207, -0.036810290068387985, 0.02214841917157173, 0.04007395729422569, 0.041178569197654724, -0.02313056029379368, -0.02371285669505596, 0.16197000443935394, 0.008395076729357243, 0.051124103367328644, -0.06826858222484589, 0.10313111543655396, -0.007314999122172594, -0.01303856447339058, 0.029701199382543564, 0.04262523353099823],
+ "BSF":[-0.033460162580013275, 0.02278013713657856, 0.05247285217046738, 0.06483925133943558, -0.09818870574235916, 0.02051539160311222, 0.0328885056078434, 0.02680143341422081, 0.06463045626878738, 0.02458355575799942, -0.06234769523143768, 0.08270140737295151, -0.017002077773213387, -0.05761869624257088, 0.008920565247535706, 0.09462013840675354, 0.014519860967993736, -0.03620133176445961, 0.037804629653692245, 0.027188993990421295, 0.008003748022019863, -0.004904658999294043, -0.06617757678031921, 0.04032967984676361, 0.0027865502052009106, -0.054713040590286255, 0.023804061114788055, -0.07816998660564423, -0.007577023468911648, -0.0393240787088871, 0.06825120747089386, 0.021206827834248543, 0.09358590096235275, 0.04195939749479294, 0.017892751842737198, 0.07161480188369751, 0.07635241001844406, 0.028491493314504623, 0.029685471206903458, -0.013973773457109928, -0.054839346557855606, -0.06267372518777847, -0.07434621453285217, -0.03870038688182831, -0.02663874626159668, 0.027038197964429855, 0.06065123528242111, 0.05046447739005089, 0.004909124691039324, 0.04072023928165436, -0.004092381335794926, -0.0374101847410202, 0.023449132218956947, 0.04261211305856705, 0.04097557067871094, -0.06689296662807465, -0.030354268848896027, -0.0013279126724228263, -0.046261727809906006, 0.06316304951906204, -0.013342794962227345, 0.05039089918136597, -0.027528204023838043, 0.011497117578983307, -0.00027334564947523177, -0.056016307324171066, 0.004878216423094273, 0.10520296543836594, 0.06753318011760712, 0.058856528252363205, -0.0365348681807518, -0.011944551952183247, -0.03520771488547325, -0.05920815467834473, 0.07135798037052155, -0.01236691139638424, -0.005936746951192617, -0.08464321494102478, 0.05435771495103836, -0.08328162133693695, 0.031315140426158905, 0.04707648605108261, 0.06603395938873291, 0.060985490679740906, -0.03281637281179428, 0.03992681950330734, -0.027871061116456985, -0.025750836357474327, -0.004553878214210272, 0.03168904781341553, -0.028458688408136368, 0.054643403738737106, 0.06433073431253433, -0.03263627365231514, -0.017801295965909958, 0.005025501828640699, -0.043563537299633026, 0.06191108375787735, 0.052907321602106094, -0.06420664489269257],
+ "BSR":[-0.08670967817306519, 0.002661448437720537, 0.06618889421224594, 0.021367480978369713, -0.05797722190618515, -0.005925177130848169, 0.05909201130270958, 0.046282049268484116, -0.007777939084917307, 0.012840516865253448, -0.03237321227788925, -0.07283470779657364, -0.02713705599308014, -0.013159539550542831, 0.047554049640893936, 0.08597766607999802, -0.021235695108771324, -0.016723763197660446, -0.07550642639398575, 0.07630860060453415, 0.050610728561878204, -0.03388696908950806, 0.07293899357318878, -0.026266563683748245, -0.09221946448087692, 0.031453635543584824, 0.03110029362142086, -0.11311748623847961, -0.041877731680870056, -0.0775754451751709, -0.010877255350351334, 0.06434694677591324, -0.03334714472293854, 0.023505937308073044, -0.10368704795837402, -0.0021829891484230757, -0.05342604219913483, 0.0435200035572052, 0.0017082124250009656, 0.08816100656986237, -0.015865763649344444, -0.0006680207443423569, 0.019744882360100746, 0.016600532457232475, 0.019802041351795197, -0.10651810467243195, -0.02785482071340084, 0.10843832790851593, -0.016948578879237175, -0.07341136783361435, -0.02409607172012329, -0.007350653875619173, 0.03339849039912224, 0.08099652081727982, -0.06133023276925087, 0.06317110359668732, 0.056796830147504807, -0.01610868237912655, -0.05196036398410797, 0.05080646276473999, -0.03331517428159714, -0.019978050142526627, 0.07479878515005112, 0.022255366668105125, -0.05082862451672554, -0.05654329061508179, -0.009417254477739334, -0.01632693223655224, 0.08639323711395264, -0.003163290908560157, 0.06633942574262619, 0.022695275023579597, 0.049817364662885666, 0.022897785529494286, -0.08694751560688019, 0.037630416452884674, -0.07057498395442963, -0.04523635655641556, 0.05591520667076111, -0.08140271157026291, -0.06798934936523438, -0.05961593613028526, -0.045096613466739655, 0.06708552688360214, -0.06860668957233429, -0.03272679075598717, -0.11123378574848175, -0.0007860125042498112, 0.05316660553216934, 0.01893094927072525, 0.012717723846435547, 0.07994857430458069, 0.01911560632288456, -0.016889840364456177, -0.033882658928632736, -0.08214546740055084, 0.09236479550600052, -0.03565351665019989, -0.029905475676059723, -0.004000719171017408],
+ "BSWAP":[-0.012194119393825531, 0.00786145031452179, -0.00596941402181983, 0.06515924632549286, 0.04611993953585625, -0.05765484645962715, 0.023194734007120132, 0.01099829189479351, -0.07234053313732147, -0.055671822279691696, 0.032250840216875076, 0.09079699218273163, -0.05654124543070793, -0.07578505575656891, 0.018860818818211555, 0.04262135922908783, -0.025844121351838112, -0.006388732232153416, 0.03726862743496895, -0.030152032151818275, -0.06651932746171951, 0.04972342774271965, -0.006613374222069979, -0.04603808745741844, 0.001062698313035071, 0.07586963474750519, -0.006451513152569532, -0.03200250118970871, 0.02913820929825306, 0.06606800854206085, 0.01492199208587408, 0.04573540389537811, 0.01810840331017971, -0.11071464419364929, 0.02082444168627262, -0.015480040572583675, -0.06367439031600952, 0.049130573868751526, -0.0248545091599226, 0.02533014677464962, -0.025670327246189117, 0.007467934396117926, -0.028700632974505424, -0.07089264690876007, 0.037342775613069534, -0.047402601689100266, -0.029402125626802444, -0.07518322765827179, 0.06763170659542084, -0.005896021146327257, 0.007357973605394363, 0.022968381643295288, 0.019870156422257423, 0.03108416497707367, 0.04915272444486618, -0.10588468611240387, -0.01917572319507599, -0.041739676147699356, 0.07985140383243561, 0.014408898539841175, 0.01158315222710371, -0.05098915472626686, -0.06435996294021606, 0.047172509133815765, -0.04806309938430786, 0.04843173548579216, -0.03220890834927559, -0.08687962591648102, -0.04335090145468712, -0.014394634403288364, -0.04416823759675026, -0.05774230137467384, 0.052461888641119, 0.05233987420797348, 0.05654270946979523, -0.0021850152406841516, 0.04417861998081207, -0.1019606962800026, 0.1115584671497345, 0.0028812778182327747, 0.03474508970975876, -0.00247817300260067, 0.058539945632219315, -0.07894578576087952, -0.09286392480134964, -0.05646712705492973, 0.014513887465000153, 0.0045327371917665005, -0.025690849870443344, 0.03869147226214409, -0.014638423919677734, -0.02495855838060379, -0.04657541960477829, -0.062192026525735855, 0.0421166867017746, 0.04453567788004875, -0.052114371210336685, 0.06510969996452332, -0.01738555170595646, -0.05605604499578476],
+ "BT":[-0.04591531306505203, -0.037841442972421646, 0.013872141018509865, -0.048892173916101456, 0.006998103111982346, -0.06960523128509521, -0.05968877300620079, 0.043679092079401016, -0.08212781697511673, -0.07649233937263489, -0.042615119367837906, 0.014413158409297466, 0.07323018461465836, -0.04753904044628143, 0.024948062375187874, -0.02928808145225048, -0.03326455131173134, 0.04919325187802315, -0.041076768189668655, -0.015955666080117226, 0.06616958975791931, 0.05533803254365921, -0.010575505904853344, -0.11012716591358185, -0.0436478890478611, 0.0009198188199661672, 0.03095451183617115, 0.027936125174164772, 0.038376808166503906, -0.038910478353500366, -0.06306861340999603, 0.04773418605327606, 0.06928686052560806, -0.027674967423081398, 0.004123035818338394, 0.07904831320047379, -0.013598291203379631, 0.04226166754961014, 0.024401264265179634, 0.054373614490032196, -0.001593749737367034, -0.013842363841831684, 0.011662008240818977, 0.08110267668962479, 0.06546836346387863, -0.048401907086372375, -0.018649199977517128, -0.027021436020731926, -0.000884185719769448, 0.10698077827692032, 0.06098296120762825, 0.03885374590754509, -0.0025186261627823114, 0.07242639362812042, 0.05971276015043259, -0.025912292301654816, 0.07804672420024872, -0.024041451513767242, 0.06098299100995064, 0.026860922574996948, -0.008832350373268127, 0.015173322521150112, -0.061899106949567795, 0.02818727120757103, 0.007795393001288176, 0.05647950991988182, -0.04519270360469818, 0.0538976825773716, -0.056445010006427765, 0.10599709302186966, -0.03877042233943939, 0.018739618360996246, -0.008363541215658188, 0.013245810754597187, -0.02797798253595829, 0.06712048500776291, -0.0691896602511406, 0.00764753483235836, -0.011704674921929836, 0.0518639013171196, 0.08248230814933777, 0.1121789962053299, 0.002897721715271473, 0.05707177519798279, 0.034003846347332, 0.006165605038404465, 0.06991048157215118, 0.030966779217123985, 0.08454474061727524, -0.010710285045206547, -0.003713340265676379, 0.011672813445329666, -0.00855187512934208, 0.08631636947393417, -0.025769896805286407, -0.021626846864819527, -0.015880679711699486, -0.007248061243444681, -0.013844930566847324, -0.0636497437953949],
+ "BTC":[0.01894976757466793, 0.062333542853593826, -0.018987981602549553, 0.04399506375193596, 0.05801583454012871, 0.022406674921512604, 0.0033699506893754005, -0.06780137866735458, -0.03158242255449295, 0.02448165789246559, -0.020438728854060173, 0.008421710692346096, 0.026964660733938217, 0.02247925102710724, 0.0006099833408370614, 0.03624730184674263, 0.0638037696480751, 0.03418295830488205, 0.051694583147764206, 0.094569131731987, -0.025131210684776306, -0.09113384038209915, 0.007974743843078613, -0.035075992345809937, 0.0469583123922348, -0.10230240970849991, -0.016315141692757607, -0.07289142906665802, -0.006852243095636368, -0.02817671373486519, 0.001105084433220327, -0.0165187269449234, 0.02352498285472393, 0.05944068729877472, 0.021879248321056366, 0.012790950946509838, 0.029024777933955193, 0.05948030203580856, 0.006154228001832962, -0.09741462022066116, 0.03669632971286774, -0.04951053857803345, 0.07390537858009338, 0.0304058026522398, -0.027671420946717262, -0.056393153965473175, -0.03252594918012619, 0.043677449226379395, -0.00786745734512806, 0.09295652061700821, -0.04596966505050659, -0.06427019834518433, 0.034256692975759506, 0.03470693156123161, -0.06303644925355911, 0.020393000915646553, -0.04004954546689987, 0.025002900511026382, 0.07530561089515686, 0.04849782586097717, 0.03661210089921951, -0.08167419582605362, -0.004149855580180883, -0.06899172067642212, 0.02001507580280304, 0.040616076439619064, 0.017526492476463318, -0.08519023656845093, 0.014737380668520927, -0.07719113677740097, -0.016773821786046028, -0.046358972787857056, 0.03681732341647148, -0.032921452075242996, -0.06730139255523682, -0.022764790803194046, 0.04951002821326256, 0.04075479507446289, -0.005460789892822504, 0.05608825758099556, -0.010067086666822433, -0.08868066221475601, -0.054915234446525574, -0.015084989368915558, 0.0022248667664825916, -0.021639078855514526, 0.03839639946818352, 0.08840279281139374, -0.04950349032878876, -0.06509587168693542, -0.058611176908016205, -0.05661112070083618, 0.03610921651124954, -0.09878899157047272, -0.030196864157915115, -0.08494486659765244, 0.0052030812948942184, 0.005594498012214899, -0.06021267548203468, 0.05226590111851692],
+ "BTR":[0.08434159308671951, -0.04893409088253975, -0.08626316487789154, 0.005943031515926123, -0.011339573189616203, -0.03738965466618538, 0.024086186662316322, 0.05636236071586609, -0.09769107401371002, 0.046410128474235535, -0.010414554737508297, -0.032031718641519547, -0.022725781425833702, 0.0006010655197314918, 0.07435029000043869, -0.05220320075750351, 0.014568982645869255, 0.029983367770910263, 0.050150010734796524, -0.0035024762619286776, -0.005118430592119694, 0.005062367767095566, -0.045134492218494415, 0.0413241870701313, -0.020963402464985847, 0.02166709117591381, -0.007116911932826042, -0.07229852676391602, 0.07901933044195175, -0.0064767212606966496, 0.028168754652142525, -0.06461089104413986, 0.03800468146800995, 0.021184740588068962, -0.03807618096470833, 0.07462473958730698, -0.011218421161174774, -0.00967127364128828, 0.03398675471544266, 0.03251342847943306, 0.041960421949625015, 0.02309028059244156, -0.011558090336620808, -0.005251164548099041, 0.044929686933755875, -0.03746427595615387, 0.019019117578864098, 0.028403475880622864, 0.008233344182372093, -0.03757132217288017, -0.00966864638030529, -0.11261481791734695, 0.093122698366642, -0.03897197172045708, 0.04451174661517143, -0.08996248990297318, 0.043295957148075104, -0.03658279404044151, 0.02620667964220047, -0.007117785979062319, 0.06058288365602493, -0.03709787130355835, -0.015867363661527634, -0.10348089784383774, -0.08302434533834457, 0.10972198843955994, -0.04703333601355553, 0.04619203135371208, -0.02830619178712368, -0.03902895003557205, 0.07104296237230301, 0.024227794259786606, -0.002529567340388894, -0.09722410142421722, -0.11190159618854523, -0.04265917092561722, -0.06758519262075424, 0.026932869106531143, -0.09525955468416214, 0.008355963043868542, 0.03935890272259712, 0.0929194837808609, -0.07025033235549927, 0.05751578137278557, 0.08661442995071411, -0.03797398507595062, -0.07437083125114441, 0.02378818206489086, -0.060987550765275955, -0.005879703443497419, -0.05285143852233887, 0.12300194799900055, 0.09040375798940659, 0.008321749977767467, -0.026780884712934494, 0.004644245840609074, 0.02478267438709736, 0.029876623302698135, 0.00946822389960289, 0.03182847052812576],
+ "BTS":[0.04789197817444801, -0.014174074865877628, 0.09178148955106735, -0.042792417109012604, -0.07841011136770248, 0.04952380433678627, -0.0014283558120951056, -0.08047100156545639, 0.07630656659603119, 0.009114429354667664, 0.046425625681877136, -0.025455141440033913, -0.01017885934561491, -0.11516787111759186, -0.04433269426226616, 0.07517734915018082, -0.038914646953344345, 0.03337589651346207, -0.036836426705121994, 0.03737936541438103, -0.008259663358330727, -0.031238965690135956, -0.01085888035595417, 0.06831149011850357, 0.014712570235133171, -0.03799682483077049, -0.003702856134623289, 0.009565305896103382, 0.07369502633810043, 0.006450802553445101, -0.0647134780883789, 0.035352982580661774, 0.02970808744430542, -0.06471512466669083, 0.011882695369422436, 0.05030134320259094, -0.003683398710563779, -0.026337042450904846, -8.350482676178217e-05, -0.008165402337908745, 0.022488528862595558, -0.018135059624910355, 0.0216924250125885, 0.016140125691890717, 0.024460261687636375, -0.013756045140326023, -0.0745738074183464, -0.05453016236424446, -0.05792215093970299, -0.020204590633511543, -0.10233616828918457, -0.031246574595570564, -0.05441207438707352, 0.0030545173212885857, 0.10615458339452744, 0.0473916195333004, 0.06726528704166412, -0.032322779297828674, 0.031291380524635315, -0.00587399210780859, 0.00847417488694191, -0.06969105452299118, 0.028612446039915085, -0.014263244345784187, -0.09062326699495316, -0.02000150829553604, -0.03334316238760948, -0.011629605665802956, -0.048346951603889465, 0.03212745115160942, 0.026346588507294655, 0.031110022217035294, -0.01068604551255703, 0.029084499925374985, -0.04322265833616257, 0.010213609784841537, 0.07645834237337112, -0.058589790016412735, 0.07527467608451843, 0.009530226700007915, 0.040048498660326004, -0.00994349829852581, -0.006705794483423233, 0.04051188752055168, -0.016334258019924164, -0.02374648116528988, -0.023133425042033195, 0.02464485727250576, -0.0860213041305542, -0.01721813529729843, -0.006843470502644777, -0.023448104038834572, 0.07809436321258545, 0.06741680949926376, -0.025396255776286125, -0.07399820536375046, -0.03410341590642929, -0.08144433796405792, -0.011762282811105251, -0.062049493193626404],
+ "CALL":[0.00037971168057993054, -0.07421011477708817, -0.01729235239326954, 0.011695774272084236, -0.053166713565588, 0.08239025622606277, -0.11408281326293945, 0.03711402416229248, 0.05361348018050194, -0.01214484591037035, -0.061070382595062256, -0.051797524094581604, -0.03584477677941322, -0.09449931979179382, 0.01491580717265606, -0.02822018973529339, 0.10161576420068741, -0.06787128001451492, -0.05484393611550331, -0.08713258057832718, 0.0032380467746406794, -0.04226553440093994, -0.030248990282416344, 0.06615397334098816, -0.0506143644452095, 0.10155709087848663, 0.021705465391278267, -0.07977182418107986, 0.0629020482301712, -0.06137915700674057, 0.009725903160870075, -0.007062803953886032, -0.0030482052825391293, 0.0023366750683635473, 0.004306300543248653, 0.022481795400381088, 0.04862212389707565, 0.06002112105488777, 0.006273094564676285, -0.08220449835062027, 0.02319786138832569, 0.04774801433086395, 0.002270340919494629, 0.08501774072647095, -0.041002679616212845, 0.07199079543352127, 0.03172135353088379, 0.0012739868834614754, -0.002759979572147131, -0.0568406917154789, -0.09846974909305573, -0.04068813472986221, -0.07447221130132675, 0.08098035305738449, 0.02254406176507473, -0.06511933356523514, -0.012789392843842506, -0.03535625338554382, 0.0017258379375562072, -0.009652235545217991, 0.02201743610203266, -0.025587238371372223, 0.036953579634428024, -0.0603083111345768, -0.0041874065063893795, 0.08402331173419952, -0.06168251857161522, 0.008420775644481182, -0.09194248169660568, -0.021274838596582413, 0.03107747994363308, 0.007411952596157789, -0.045730527490377426, -0.04520520567893982, 0.05115954205393791, -0.018998639658093452, -0.021658610552549362, 0.10094150900840759, 0.046384185552597046, 0.00873569492250681, 0.00806367676705122, -0.05088532343506813, -0.025661693885922432, -0.005618552677333355, -0.006098407786339521, 0.040657781064510345, -0.07558230310678482, -0.01247797254472971, 0.05808786675333977, -0.052617885172367096, 0.12200070172548294, 0.04482675716280937, 0.08807746320962906, -0.059993088245391846, -0.05188784375786781, -0.05416577681899071, -0.028840329498052597, -0.06930403411388397, 0.09586896747350693, -0.023295924067497253],
+ "CDQ":[-0.051165416836738586, -0.08628520369529724, -0.04046053811907768, -0.0428159236907959, -5.6468208640581e-05, -0.042180318385362625, -0.03137992322444916, -0.02006579004228115, 0.02661444991827011, -0.03650444373488426, -0.01979847066104412, -0.14374899864196777, -0.07550707459449768, -0.0437767319381237, -0.0155586963519454, -0.03787420690059662, 0.03875201568007469, 0.01635599695146084, 0.058861277997493744, -0.04015038534998894, 0.07257362455129623, -0.004912980366498232, -0.02515636570751667, -0.0031732029747217894, 0.07878347486257553, -0.03484165668487549, 0.1171463206410408, -0.018296463415026665, 0.07136857509613037, 0.01614719070494175, 0.06125947833061218, 0.043406255543231964, 0.0775042176246643, 0.02138427644968033, -0.0031358590349555016, -0.09676934778690338, -0.001658467692323029, -0.010539211332798004, 0.010366122238337994, 0.047017067670822144, 0.013767102733254433, 0.09475782513618469, -0.016683222725987434, 0.04235906898975372, -0.05830338969826698, 0.023957055062055588, 0.05809060111641884, 0.055236563086509705, -0.018737683072686195, 0.02699926309287548, 0.035439688712358475, -0.0608675517141819, -0.0752226710319519, 0.08525943011045456, -0.02675000950694084, -0.03242567926645279, 0.0029007859993726015, 0.0476326122879982, 0.061051394790410995, -0.06854736804962158, 0.004603282082825899, 0.013008985668420792, -0.04764201492071152, -0.0005071215564385056, -0.06932025402784348, 0.012210569344460964, -0.016104593873023987, -0.08676131814718246, 0.03275749459862709, 0.00032025555265136063, 0.004706012550741434, 0.028980642557144165, 0.041709136217832565, 0.033181082457304, -0.05146707966923714, 0.03003688156604767, -0.06025360897183418, -0.03734159097075462, -0.0309093426913023, -0.05291880667209625, 0.01863887533545494, 0.06262204796075821, 0.00415432546287775, -0.08453545719385147, 0.09124428778886795, -0.07508007436990738, -0.023035364225506783, 0.050123125314712524, -0.03947329521179199, -0.0946802869439125, 0.09173542261123657, 0.05709332972764969, 0.05313422530889511, -0.013672038912773132, 0.045327480882406235, -0.10744399577379227, -0.06622365862131119, 0.088716059923172, -0.04648629575967789, 0.037032607942819595],
+ "CHS_Fp":[-0.024257706478238106, 0.01351504772901535, 0.05868898704648018, -0.005504900589585304, 0.028170472010970116, -0.08634237200021744, -0.07839310169219971, -0.04813322424888611, 0.020491644740104675, 0.04999735951423645, -0.05850479006767273, -0.07766890525817871, -0.029562046751379967, 0.06709325313568115, -0.0240568108856678, 0.005345530807971954, -0.05436082184314728, 0.038214072585105896, -0.05876244977116585, 0.0048083034344017506, 0.05366690456867218, 0.0011234001722186804, -0.07231326401233673, 0.0578923374414444, 0.033046938478946686, -0.018603689968585968, 0.088414266705513, 0.021359708160161972, 0.0125762689858675, 0.05606567859649658, 0.03932907432317734, 0.05810055136680603, -0.09728452563285828, 0.08522441983222961, 0.04439447075128555, -0.012973174452781677, 0.057372357696294785, 0.08314277976751328, -0.030460041016340256, -0.09210361540317535, -0.0008571718353778124, -0.06259569525718689, -0.011265886016190052, -0.041507650166749954, -0.0021763532422482967, -0.009089936502277851, 0.09811758995056152, 0.01618276722729206, -0.018428942188620567, -0.012227492406964302, 0.1059645488858223, 0.009142682887613773, -0.09810561686754227, 0.03243255615234375, -0.10551515966653824, -0.010384527035057545, -0.053788408637046814, -0.028149481862783432, 0.06613295525312424, 0.0796031579375267, 0.0776086300611496, 0.009081227704882622, 0.04156986251473427, 0.01086640078574419, 0.0463738851249218, -0.019261058419942856, 0.05337478965520859, -0.024797357618808746, 0.01740768551826477, -0.08963833749294281, 0.033197399228811264, 0.05519041419029236, 0.02174387127161026, -0.049626268446445465, -0.05795807018876076, 0.024602292105555534, -0.05434778332710266, -0.02375159040093422, -0.08771645277738571, 0.04028269276022911, -0.04829053580760956, 0.014814699999988079, -0.05759448930621147, -0.03050694428384304, -0.1006443202495575, 0.073968805372715, 0.09069010615348816, -0.03953343629837036, -0.08563841879367828, -0.017149141058325768, 0.0043631792068481445, 0.012097286060452461, 0.05256321653723717, -0.06915978342294693, -0.06979486346244812, -0.011966098099946976, 0.058037858456373215, 0.019909752532839775, 0.014968288131058216, -0.05590759217739105],
+ "CMOV":[-0.03618401661515236, -0.022735988721251488, -0.046054407954216, -0.009175430051982403, -0.05731913447380066, -0.06326082348823547, -0.024039963260293007, 0.018771033734083176, -0.08611118793487549, -0.1138785257935524, 0.023618537932634354, -0.008811756037175655, -0.03343205153942108, 0.13895496726036072, 0.020886017009615898, 0.004414376337081194, -0.02832207828760147, 0.017812907695770264, -0.0515245757997036, -0.0769583061337471, 0.09119994193315506, -0.08953207731246948, -0.017275383695960045, 0.0598769374191761, -0.06399396806955338, -0.02894434705376625, -0.08314307779073715, -0.0017103609861806035, 0.044976502656936646, 0.07237209379673004, -0.07005361467599869, 0.11363427340984344, 0.017985567450523376, -0.029597647488117218, -0.034337062388658524, 0.041229408234357834, 0.03897175192832947, 0.02162623591721058, 0.008854886516928673, 0.02488042041659355, -0.030026961117982864, 0.013653849251568317, 0.09110367298126221, 0.058615297079086304, 0.036104701459407806, 3.331965854158625e-05, 0.0188332200050354, -0.008128047920763493, -0.056160811334848404, -0.015463954769074917, 0.002718177391216159, 0.10130080580711365, 0.008068729192018509, -0.002537332708016038, 0.08137521147727966, 0.05054239183664322, -0.007920184172689915, 0.0019395818235352635, 0.024083765223622322, 0.010279208421707153, -0.015465418808162212, 0.01912773959338665, 0.00394328311085701, 0.06839971989393234, -0.0680784359574318, 0.017159033566713333, -0.01819799840450287, 0.018930651247501373, -0.09584084153175354, -0.027362115681171417, 0.02655164897441864, -0.032809313386678696, 0.005651210900396109, 0.02579660713672638, -0.08535868674516678, 0.06343807280063629, -0.021896997466683388, -0.0289780143648386, -0.06035110354423523, 0.06102340668439865, 0.0800108090043068, 0.09168146550655365, -0.012490605004131794, 0.05646084249019623, 0.03653339296579361, 0.03531842678785324, 0.07234567403793335, 0.01645089127123356, 0.06928174942731857, -0.06336336582899094, 0.08437168598175049, 0.01697925105690956, 0.08351629227399826, 0.011201171204447746, -0.016631048172712326, 0.0033953397069126368, -0.11070055514574051, 0.03943430632352829, 0.0030192798003554344, -0.00257456349208951],
+ "CMOVB_Fp":[-0.032260626554489136, 0.011765084229409695, 0.07266686856746674, 0.03636925667524338, -0.057735543698072433, 0.009201625362038612, -0.08732679486274719, -0.07011474668979645, 0.0409415140748024, 0.05565953254699707, -0.034438103437423706, 0.05487476661801338, -0.08536195009946823, 0.05628327652812004, 0.006980125792324543, -0.045497894287109375, -0.0070551978424191475, 0.03226194530725479, 0.0023345935624092817, 0.005653859581798315, 0.04538525640964508, 0.09596871584653854, 0.07247383147478104, -0.04402144253253937, -0.07323680818080902, -0.012288142926990986, -0.020339597016572952, 0.05664851516485214, 0.053574688732624054, -0.06831742823123932, 0.02891174703836441, -0.015526535920798779, -0.006144475191831589, -0.04056677594780922, -0.01568702422082424, 0.003060036338865757, 0.04150376841425896, 0.016109971329569817, 0.035102248191833496, 0.06278273463249207, 0.010035115294158459, -0.05422459915280342, -0.038398850709199905, -0.02983449213206768, -0.03046296164393425, 0.03249206766486168, -0.07702110707759857, 0.05156421288847923, 0.04189177602529526, 0.0171150304377079, 0.0284150168299675, 0.03547678142786026, 0.02087688446044922, -0.05686016008257866, -0.01743512973189354, -0.08277784287929535, -0.0128712709993124, 0.012118782848119736, 0.042857471853494644, -0.08726111799478531, 0.03793870285153389, 0.044129833579063416, 0.009792624041438103, -0.03563109040260315, -0.008331292308866978, 0.04090901464223862, -0.023779135197401047, 0.04506562277674675, -0.011400141753256321, -0.08881454169750214, 0.03881778568029404, -0.02054806984961033, -0.006287045311182737, 0.008952154777944088, -0.048345670104026794, -0.009847992099821568, -0.026984119787812233, 0.027487730607390404, 0.027613114565610886, -0.06559622287750244, -0.03037681058049202, 0.015014775097370148, -0.04508991539478302, 0.04529094696044922, 0.015814341604709625, 0.07716046273708344, -0.059328578412532806, -0.01675848662853241, 0.09430982917547226, -0.07023798674345016, -0.009612105786800385, -0.022164644673466682, -0.10318480432033539, 0.011100400239229202, 0.05928068980574608, -0.04710698872804642, 0.03695584461092949, -0.07592257857322693, 0.05972924456000328, -0.047221388667821884],
+ "CMOVE_Fp":[0.046646080911159515, -0.04947304725646973, -0.003217127174139023, 0.0031838612630963326, -0.022542277351021767, 0.04128721356391907, -0.011454897932708263, -0.03173168748617172, 0.0816504955291748, 0.06322430819272995, 0.0035830459091812372, -0.033784169703722, 0.018358809873461723, -0.016461949795484543, 0.06886997818946838, 0.016514290124177933, -0.10416974872350693, -0.07603415101766586, 0.07125496864318848, 0.04042621701955795, -0.07182291895151138, -0.07769785821437836, -0.049825746566057205, 0.06665590405464172, 0.03142675757408142, -0.026244034990668297, -0.002228031400591135, -0.02233092300593853, -0.07031454145908356, 0.048055533319711685, -0.04260053113102913, 0.06688567250967026, -0.023646442219614983, 0.018535086885094643, 0.05235504359006882, 0.062045447528362274, 0.012917972169816494, 0.026283731684088707, 0.029877381399273872, 0.023718038573861122, -0.042058154940605164, -0.06809089332818985, -0.1111406460404396, 0.0019947909750044346, -0.08412628620862961, -0.10807626694440842, 0.07821725308895111, 0.0024279924109578133, -0.021548356860876083, -0.010790690779685974, 0.004516335669904947, -0.032435595989227295, -0.005464643239974976, 0.024749668315052986, 0.06032043322920799, -0.10503937304019928, -0.0323672778904438, 0.09643829613924026, 0.005127665586769581, 0.053911373019218445, -0.007512086536735296, -0.08146356791257858, -0.04565039277076721, -0.011745087802410126, 0.047784797847270966, -0.03169848024845123, 0.0724681168794632, 0.08655275404453278, 0.016445763409137726, 0.026560597121715546, 0.05066366866230965, -0.04124892130494118, 0.012713329866528511, 0.009679315611720085, -0.06917078793048859, -0.08232426643371582, -0.02039244771003723, -0.10644130408763885, 0.03637242689728737, 0.09546053409576416, 0.058054231107234955, -0.04755205661058426, -0.023417120799422264, -0.03258243948221207, 0.02568237856030464, 0.037335630506277084, 0.08828294277191162, -0.04226220026612282, 0.04151807725429535, 0.04213709756731987, -0.08154599368572235, 0.05396507307887077, -0.016046959906816483, 0.04857389256358147, -0.08471690863370895, -0.06928279250860214, -0.07997985184192657, -0.015077928081154823, -0.10025563836097717, -0.009225770831108093],
+ "CMOVNBE_Fp":[-0.05906881019473076, 0.10377451032400131, -0.09078921377658844, 0.03733782097697258, 0.10517772287130356, -0.028561322018504143, -0.02037939988076687, -0.015377453528344631, -0.02149396389722824, -0.019251512363553047, 0.010865840129554272, -0.05183597654104233, 0.002456850837916136, 0.0425325408577919, -0.07766421884298325, -0.006032068748027086, 0.022590234875679016, 0.05983125790953636, 0.06838472187519073, 0.09139598906040192, 0.05670781061053276, -0.043052081018686295, 0.019785964861512184, 0.04919515177607536, -0.03308694809675217, -0.05903496593236923, 0.006865541450679302, -0.03280048817396164, -0.028056200593709946, -0.04386993125081062, -0.06723927706480026, 0.057699110358953476, -0.09080932289361954, -0.04223007708787918, -0.06509632617235184, 0.028981342911720276, 0.005770019721239805, 0.00032206744072027504, -0.07584714889526367, -0.005331343971192837, 0.04000683128833771, -0.05094771832227707, 0.006550776772201061, 0.0048143258318305016, -0.08840488642454147, 0.06938502937555313, -0.030276531353592873, 0.1060580462217331, -0.052084941416978836, -0.04572971165180206, 0.04553452134132385, 0.09494663029909134, 0.03177342936396599, 0.01724095456302166, -0.02410515770316124, -0.026323596015572548, 0.08361489325761795, 0.008191172033548355, 0.01618375815451145, -0.023832499980926514, -0.07000128924846649, -0.019869685173034668, 0.08649997413158417, 0.03162645176053047, -0.06067405268549919, -0.035960886627435684, -0.025028929114341736, -0.05872537940740585, 0.04135506972670555, 0.06428360939025879, -0.05731469392776489, 0.017788462340831757, -0.06022683158516884, 0.05407397449016571, -0.10613199323415756, -0.056202732026576996, 0.0019132402958348393, -0.07382151484489441, -0.058467887341976166, -0.06563805788755417, -0.004069248214364052, -0.02253282442688942, -0.02651687152683735, -0.023784443736076355, -0.09992928057909012, 0.027880793437361717, 0.021031329408288002, 0.016006940975785255, -0.05962872505187988, 0.0644640251994133, -0.01029028370976448, 0.021259091794490814, -0.005594396963715553, 0.02219187282025814, 0.055451489984989166, 0.00023010146105661988, -0.0349474661052227, -0.03245668485760689, 0.004418576136231422, 0.024768894538283348],
+ "CMOVNE_Fp":[0.04296426475048065, -0.018483879044651985, -0.05325263738632202, 0.10602930188179016, -0.050380442291498184, -0.023406516760587692, -0.06754235178232193, 0.04125407710671425, 0.03444043919444084, -0.034972529858350754, -0.046489495784044266, 0.035109974443912506, 0.05653124302625656, 0.06247929111123085, 0.07539786398410797, 0.003954076208174229, -0.02002185396850109, -0.06622487306594849, 0.07902568578720093, -0.0053969090804457664, -0.03331669792532921, 0.04566647857427597, 0.08206909894943237, -0.06756370514631271, 0.044189758598804474, 0.017022905871272087, 0.08897767961025238, 0.10484231263399124, -0.0002652890107128769, 0.03567108139395714, -0.026768917217850685, -0.0453084334731102, 0.06826332211494446, -0.036748256534338, -0.02566440775990486, 0.03445463627576828, 0.004083218984305859, -0.06519944965839386, 0.06415969878435135, -0.03804090619087219, 0.02047230489552021, 0.006055000238120556, 0.07075342535972595, -0.003949184436351061, 0.08398162573575974, -0.0033972670789808035, 0.01826438307762146, 0.026019686833024025, -0.011037362739443779, 0.03779730200767517, 0.014853930100798607, 0.08788510411977768, 0.013790097087621689, 0.06450948864221573, -0.021995779126882553, 0.048267871141433716, 0.08314701914787292, 0.036236271262168884, -0.0787411779165268, -0.030107788741588593, -0.05093607306480408, -0.04987030103802681, -0.039048369973897934, 0.05877692252397537, 0.10309221595525742, 0.021874437108635902, -0.03315780684351921, -0.0033560411538928747, -0.03270484507083893, -0.008537698537111282, 0.03702410310506821, 0.027044374495744705, 0.03733083978295326, 0.07934017479419708, -0.07405310124158859, 0.04340975731611252, -0.005740025080740452, -0.0560482032597065, 0.007071333006024361, -0.0447760634124279, -0.06099819764494896, -0.010904258117079735, -0.042973995208740234, 0.05776190757751465, 0.029949061572551727, -0.06437189877033234, 0.04982209578156471, -0.07204656302928925, -0.011143156327307224, -0.09951914846897125, -0.08020799607038498, 0.0006987981614656746, 0.07299493253231049, 0.06916312128305435, -0.06880141794681549, -0.06257312744855881, 0.01312257256358862, -0.025847816839814186, 0.01896158792078495, 0.017853517085313797],
+ "CMOVP_Fp":[0.024784063920378685, 0.05910884588956833, -0.027297591790556908, 0.028669806197285652, 0.03596333786845207, 0.025975827127695084, -0.007340728305280209, -0.007791555020958185, 0.017245560884475708, 0.029989026486873627, -0.03507952764630318, -0.0682465136051178, -0.03471663221716881, 0.020962722599506378, 0.013180119916796684, 0.02053745836019516, -0.04735537990927696, -0.00810155551880598, -0.027720537036657333, -0.07591608166694641, 0.01681383326649666, 0.03153815492987633, 0.06802259385585785, -0.017978409305214882, 0.07281005382537842, -0.03445957601070404, 0.001339268172159791, 0.058378104120492935, 0.02919137105345726, -0.07280800491571426, -0.024973656982183456, 0.07655008882284164, 0.05132234841585159, -0.03378675505518913, -0.02435462921857834, 0.04906913638114929, 0.002694300841540098, -0.018765030428767204, 0.06008923426270485, 0.05942896381020546, -0.04174261540174484, -0.0006444348255172372, -0.08575745671987534, -0.055066440254449844, 0.0037959767505526543, -0.07635316252708435, 0.05540971830487251, -0.07539130747318268, 0.031701184809207916, 0.003226321889087558, -0.08135958760976791, -0.054742712527513504, 0.03179023042321205, -0.03926270082592964, -0.042298462241888046, -0.02868078462779522, -0.06316840648651123, -0.021480880677700043, 0.0605878010392189, -0.0017877896316349506, 0.04587266966700554, 0.0006218094495125115, -0.005310923792421818, -0.059102173894643784, 0.03532373160123825, -0.05068119987845421, -0.047825682908296585, 0.03548416867852211, -0.09754982590675354, 0.03217814490199089, -0.09558991342782974, -0.03962691128253937, -0.10229641944169998, -0.006953638978302479, 0.05624886229634285, -0.07296451926231384, -0.006872241850942373, 0.057879164814949036, 0.00766746886074543, 0.1093091294169426, 0.06782080233097076, 0.03198230266571045, 0.03117925487458706, -0.05328037589788437, 0.10627453774213791, 0.09684962779283524, 0.016755646094679832, 0.06047789752483368, 0.07646800577640533, 0.032912567257881165, 0.026242133229970932, 0.07698382437229156, -0.006503457669168711, -0.015336190350353718, 0.07591330260038376, -0.004027577117085457, 0.025652142241597176, -0.005117094609886408, 0.06619033217430115, 0.04140137881040573],
+ "CMP":[-0.034974291920661926, -0.017619993537664413, 0.06924759596586227, -0.034648824483156204, -0.017437687143683434, -0.01656661182641983, -0.0732540711760521, -0.013778526335954666, -0.07172038406133652, -0.0664256364107132, 0.07664079964160919, 0.04622352495789528, 0.03626605495810509, -0.042571261525154114, 0.09283317625522614, 0.04871290177106857, 0.008152395486831665, 0.019161606207489967, -0.03420497477054596, -0.04949578270316124, 0.03627047315239906, -0.0671638622879982, -0.022623395547270775, 0.08118706941604614, -0.06802203506231308, 0.0368310771882534, 0.03470419719815254, 0.030420683324337006, 0.07114434242248535, -0.03247484564781189, 0.008375626988708973, 0.008442468009889126, -0.024982791393995285, 0.01900780200958252, -0.03961866348981857, -0.045339372009038925, 0.011830595321953297, 0.020649174228310585, -0.03388562425971031, 0.013460169546306133, -0.009748551994562149, 0.00845640990883112, 0.06418538093566895, 0.09620414674282074, 0.009703489020466805, 0.051477544009685516, 0.04010219871997833, -0.03353811800479889, -0.08647420257329941, -0.04218197986483574, 0.004434844944626093, 0.04981039837002754, -3.094894782407209e-05, 0.04395962506532669, -0.049310218542814255, -0.017014095559716225, -0.035181667655706406, 0.006510070990771055, 0.010456406511366367, 0.016760092228651047, -0.055546171963214874, -0.07708705961704254, -0.018012668937444687, 0.07122489809989929, -0.02424890175461769, 0.040034081786870956, -0.05671427771449089, -0.011792645789682865, -0.07282330840826035, 0.07686266303062439, 0.024865172803401947, 0.09702492505311966, -0.0730511024594307, 0.033543817698955536, -0.055009324103593826, -0.002867872826755047, -0.07810559123754501, 0.0071587334387004375, -0.07151322811841965, 0.029935363680124283, 0.023030510172247887, 0.08191823214292526, 0.007245145738124847, 0.07062037289142609, 0.009404103271663189, 0.07510372251272202, -0.0031126360408961773, 0.06457492709159851, 0.030056502670049667, -0.0702134370803833, 0.05604834854602814, 0.03615367040038109, 0.03869668021798134, -0.0640673041343689, 0.01219338271766901, 0.028298597782850266, -0.05258839577436447, 0.06411535292863846, -0.05773515626788139, 0.0558566078543663],
+ "CMPSDrm":[0.06231166049838066, 0.006089156027883291, -0.02954467013478279, -0.007190017029643059, 0.08989788591861725, -0.0426032654941082, -0.08161266148090363, 0.03484288603067398, 0.08616901934146881, 0.029522914439439774, 0.0408962219953537, 0.004867629148066044, -0.010660253465175629, 0.07154817134141922, 0.07452158629894257, 0.052422069013118744, 0.010626517236232758, -0.007986322045326233, 0.00482134846970439, 0.039142344146966934, 0.055137164890766144, 0.06240174546837807, 0.017179278656840324, -0.09017430990934372, 0.04278412088751793, 0.01060034241527319, 0.08439406752586365, -0.07689320296049118, -0.06154869124293327, 0.06857968121767044, 0.012568023055791855, -0.04987755045294762, -0.012924822978675365, 0.037232544273138046, 0.056145161390304565, 0.012017074041068554, -0.08403954654932022, 0.03437134996056557, 0.017722904682159424, 0.02141714282333851, -0.010596534237265587, -0.01782963238656521, -0.007733372040092945, -0.10412484407424927, 0.034433260560035706, -0.06766296923160553, -0.019131619483232498, -0.01594492606818676, 0.007551452144980431, 0.06021706014871597, 0.016706008464097977, -0.003858885494992137, -0.01102343387901783, -0.04641149193048477, -0.07146845012903214, -0.037213750183582306, -0.012581138871610165, 0.04146715998649597, -0.07663712650537491, 0.08414945006370544, 0.005493526812642813, 0.03180677816271782, 0.04438048228621483, -0.03652283921837807, -0.08653178811073303, -0.03338956832885742, -0.03605213388800621, 0.008650926873087883, -0.017589116469025612, 0.031616002321243286, -0.007683400064706802, 0.046135470271110535, 0.019489072263240814, -0.02671167254447937, -0.05824466049671173, 0.06993565708398819, 0.03686663508415222, 0.09334301948547363, -0.03339062258601189, 0.08149562031030655, 0.010760546661913395, -0.038394682109355927, -0.016130030155181885, 0.06533393263816833, -0.0012016394175589085, -0.006728014908730984, 0.1111256331205368, -0.05981165170669556, -0.07506286352872849, 0.021946173161268234, -0.022991187870502472, -0.07013015449047089, -0.05251467600464821, -0.07494588196277618, 0.06176484748721123, -0.012126723304390907, 8.081266423687339e-05, 0.05294591560959816, -0.006423323880881071, 0.010602637194097042],
+ "CMPSDrr":[0.05187944695353508, 0.08255773782730103, -0.022516468539834023, 0.05532215163111687, 0.04187982529401779, 0.026645343750715256, 0.039494674652814865, -0.006507199257612228, 0.01684960164129734, 0.06960273534059525, 0.004484814126044512, -0.03573443740606308, 0.07757507264614105, 0.07591899484395981, 0.01548318937420845, -0.01679794304072857, -0.02809271588921547, -0.0034359688870608807, 0.03378980606794357, -0.04263307526707649, 0.0037834227550774813, -0.007002662401646376, -0.014342774637043476, -0.05022238567471504, 0.08676867187023163, -0.060834188014268875, 0.01428318489342928, -0.08419127762317657, 0.019350139424204826, 0.017458485439419746, 0.027698714286088943, 0.010363686829805374, -0.0130251320078969, 0.0026362580247223377, -0.036665040999650955, -0.08103696256875992, 0.012456359341740608, 0.08729863166809082, 0.046509142965078354, -0.03180231526494026, 0.09210898727178574, 0.09911417216062546, -0.030741767957806587, 0.04825275391340256, 0.0538053959608078, 0.0020886568818241358, -0.07728002220392227, -0.027193285524845123, -0.028254663571715355, -0.03804510831832886, 0.012966393493115902, -0.05026484653353691, -0.10072523355484009, -0.08971413969993591, -0.09542280435562134, -0.06692036241292953, 0.04457977041602135, -0.01887957565486431, 0.08439968526363373, 0.028054598718881607, 0.037607286125421524, 0.0009138410678133368, -0.0015798440435901284, -0.005460607819259167, 0.037464987486600876, 0.016281230375170708, 0.005865197628736496, -0.09773992002010345, 0.040096502751111984, -0.06030714884400368, -0.08224858343601227, 0.05706987902522087, -0.039849527180194855, 0.059814997017383575, -0.07170921564102173, -0.04897009953856468, -0.08840907365083694, -0.08727128058671951, 0.013612408190965652, -0.07346699386835098, -0.008896508254110813, 0.046950794756412506, 0.0033719956409186125, 0.048370327800512314, -0.03593582659959793, -0.06449397653341293, -0.06318362057209015, 0.04760516434907913, -0.06420452892780304, 0.029596813023090363, 0.01034299936145544, -0.07170658558607101, -0.01591784879565239, 0.004471045918762684, -0.000932146969716996, 0.037956926971673965, 0.005958759691566229, 0.07873423397541046, 0.012963596731424332, -0.042040273547172546],
+ "CMPSSrm":[0.035969462245702744, -0.03514273092150688, -0.002250974765047431, -0.0536913201212883, 0.03879287466406822, 0.021441994234919548, 0.00413869135081768, 0.0839170292019844, 0.01940297521650791, -0.00023836971377022564, -0.042818550020456314, 0.00798958633095026, 0.07798229157924652, 0.019534504041075706, -0.022760050371289253, 0.040819957852363586, -0.01567879691720009, 0.05334741622209549, -0.10233885049819946, -0.08823986351490021, -0.0731867104768753, 0.09207464009523392, 0.020589329302310944, -0.04571172595024109, 0.00725374324247241, -0.03410647436976433, -0.004945018328726292, -0.019060319289565086, 0.07253248989582062, -0.005642787087708712, -0.0932086631655693, 0.05661407858133316, 0.043508339673280716, 0.05163617059588432, -0.08837819844484329, 0.0006705926498398185, 0.0059868451207876205, -0.09893529117107391, -0.084956593811512, 0.055055662989616394, 0.016774026677012444, 0.0308325607329607, 0.013352257199585438, -0.10977278649806976, 0.04452743008732796, -0.01742824912071228, -0.08933360874652863, 0.000960873207077384, -0.032025307416915894, 0.06350701302289963, 0.024855274707078934, 0.020282426849007607, -0.07020938396453857, -0.02063758485019207, 0.035827577114105225, 0.03328108787536621, 0.02565067633986473, -0.029773572459816933, -0.0665012076497078, -0.09142625331878662, 0.04349283501505852, 0.018638769164681435, 0.003535446710884571, -0.08357574045658112, 0.04542571306228638, 0.02275369130074978, -0.055344078689813614, -0.08115939795970917, 0.09141208976507187, -0.013309512287378311, -0.06243946775794029, 0.03358270227909088, -0.030102508142590523, 0.021949127316474915, 0.029494326561689377, 0.04426877945661545, -0.019234847277402878, -0.044500790536403656, 0.0534624345600605, -0.1034160852432251, 0.05367977172136307, -0.06738832592964172, -0.08354155719280243, -0.028118718415498734, 0.014844302088022232, 0.03637544438242912, 0.010046574287116528, 0.004910979885607958, -0.023315470665693283, 0.0002422076213406399, 0.03550717607140541, -0.0018809979083016515, 0.026084572076797485, -0.02474871836602688, 0.014537002891302109, -0.004052824340760708, -0.03351408615708351, 0.08330967277288437, 0.047898031771183014, 0.10262138396501541],
+ "CMPSSrr":[0.0900498703122139, -0.07682426273822784, -0.0023502474650740623, 0.04083815589547157, 0.0314403660595417, -0.08916677534580231, -0.07938915491104126, -0.0176553837954998, -0.05746201053261757, -0.05877167731523514, 0.07232885807752609, -0.052564702928066254, 0.012293405830860138, -0.04348738119006157, -0.04637038707733154, 0.03255736455321312, 0.06241200119256973, -0.006215153262019157, 0.029094772413372993, 0.007074714172631502, 0.008659206330776215, 0.0838761031627655, -0.0693570151925087, 0.01811714842915535, -0.05827789008617401, 0.021423662081360817, -0.05144060030579567, 0.0004060239589307457, 0.06172850728034973, -0.06808912009000778, -0.05555348843336105, 0.050920747220516205, -0.017301904037594795, 0.024674974381923676, -0.020082470029592514, 0.02837209589779377, 0.008837238885462284, -0.017153998836874962, 0.0671829953789711, 0.03715315833687782, -0.060124799609184265, 0.017643284052610397, -0.007536862511187792, 0.008011603727936745, -0.004478856921195984, -0.0379861444234848, -0.03313048928976059, -0.021433813497424126, 0.031380411237478256, -0.022969501093029976, 0.022151866927742958, 0.02629157342016697, 0.0680699571967125, -0.06533528864383698, 0.0642024576663971, 0.026472752913832664, 0.06713178008794785, 0.03483957797288895, 0.07214832305908203, 0.008117076009511948, -0.008569162338972092, 0.024611137807369232, -0.044562701135873795, -0.08377925306558609, -0.020999226719141006, 0.06065881624817848, -0.0011360450880602002, 0.059054501354694366, -0.04128098860383034, 0.09774206578731537, 0.013461083173751831, -0.06754700839519501, 0.04116697236895561, 0.09149205684661865, 0.03153605759143829, 0.02140357717871666, -0.03419087454676628, 0.06890974193811417, 0.05795874074101448, 0.040273379534482956, -0.021383119747042656, -0.014627336524426937, 0.02788124419748783, -0.008852358907461166, -0.026586920022964478, -0.04007960110902786, 0.0247636865824461, -0.030781425535678864, -0.021605459973216057, 0.08306308090686798, 0.0013099249918013811, -0.056630901992321014, -0.03954159840941429, -0.0682617723941803, 0.05315704271197319, -0.09850868582725525, -0.0422259159386158, -0.07294299453496933, 0.045388203114271164, -0.05171143636107445],
+ "COPY":[-0.042671363800764084, 0.01595907285809517, 0.13965560495853424, -0.045459263026714325, -0.015539335086941719, 0.03210514038801193, 0.041020553559064865, -0.1387089639902115, -0.03354734554886818, 0.06318558007478714, 0.08567530661821365, -0.020127203315496445, -0.031007083132863045, -0.021271709352731705, -0.11739633232355118, -0.010745667852461338, 0.026135170832276344, 0.01064840704202652, -0.049497149884700775, -0.059279102832078934, 0.011362121440470219, -0.04988430440425873, -0.018648700788617134, 0.07416040450334549, -0.009564649313688278, 0.003580082906410098, 0.0889173224568367, 0.0455915667116642, 0.047092851251363754, 0.08476178348064423, 0.014804189093410969, 0.07122278213500977, 0.08372388780117035, -0.009033662267029285, -0.04196010157465935, 0.009367545135319233, -0.056074827909469604, 0.03209347277879715, 0.019261786714196205, 0.02386161871254444, 0.059685613960027695, 0.02298870123922825, 0.04247744381427765, 0.0518488883972168, -0.04862799122929573, 0.08457224816083908, 0.03505203127861023, -0.05366065725684166, 0.056499481201171875, -0.04128621146082878, -0.11301367729902267, -0.0482143759727478, -0.0053179142996668816, 0.01231908518821001, 0.02735922858119011, -0.02664649672806263, 0.02421853132545948, -0.1532898247241974, 0.009082503616809845, -0.014033688232302666, -0.00410810811445117, 0.09157740324735641, -0.028354985639452934, 0.041208814829587936, -0.05084237456321716, 0.12172321230173111, -0.01537246722728014, 0.02110414020717144, -0.047176800668239594, -0.04154794290661812, 0.0521908700466156, -0.06186384707689285, -0.030244478955864906, -0.034061502665281296, -0.03763451799750328, 0.0068117910996079445, -0.07705039530992508, -0.026377227157354355, -0.037725795060396194, -0.0065488857217133045, 0.0437496192753315, 0.011650830507278442, 0.014973104931414127, 0.04953351244330406, 0.020750440657138824, -0.02206793799996376, -0.01869516633450985, 0.0549469031393528, 0.05584357678890228, -0.022699978202581406, 0.009187323041260242, 0.062126729637384415, 0.070136658847332, -0.03915858268737793, 0.005068351048976183, -0.01571653224527836, 0.07303586602210999, 0.029747063294053078, -0.0007968538557179272, -0.0069282278418540955],
+ "CQO":[-0.05557331070303917, -0.08981753140687943, -0.05603373050689697, -0.1063181608915329, 0.05037867650389671, 0.05091176554560661, -0.008534617722034454, -0.07292111963033676, 0.00021746393758803606, -0.034737568348646164, 0.0004250310594215989, -0.1034388393163681, -0.03668486326932907, -0.0960969477891922, -0.024585090577602386, 0.06363414227962494, 0.036975275725126266, -0.0012666182592511177, 0.02102496661245823, -0.09548315405845642, -0.012820998206734657, -0.08331067115068436, 0.05366581678390503, -0.025128496810793877, -0.045176517218351364, 0.021681174635887146, -0.03845430910587311, -0.016303617507219315, -0.06139703840017319, 0.03431428223848343, 0.024237046018242836, 0.010242801159620285, -0.05543805658817291, -0.014338705688714981, -0.03172220289707184, 0.017320604994893074, -0.04387042298913002, 0.044565923511981964, 0.008243807591497898, 0.007273328024893999, -0.02624170109629631, 0.009573976509273052, -0.056462518870830536, 0.014459089376032352, -0.05147605761885643, -0.020173264667391777, -0.008586408570408821, -0.05863555893301964, 0.05878432095050812, 0.008589197881519794, -0.09280457347631454, -0.03308621421456337, 0.004003425594419241, -0.008524793200194836, 0.005474436562508345, 0.035568758845329285, 0.06723935157060623, -0.009190957061946392, 0.0626785159111023, -0.028782984241843224, 0.0046159857884049416, 0.04965859279036522, -0.00520186685025692, -0.015518685802817345, 0.04344358667731285, 0.04774133488535881, 0.011416814289987087, -0.09893080592155457, -0.057824064046144485, 0.007386496756225824, 0.0014560187701135874, -0.0053622047416865826, -0.03475133329629898, -0.005121100228279829, -0.04374467954039574, 0.08994609862565994, -0.0032157390378415585, 0.0006755323265679181, 0.023181157186627388, -0.04331016167998314, 0.01734972558915615, 0.09779873490333557, 0.017918186262249947, 0.0681600347161293, -0.021547958254814148, -0.0464029498398304, -0.053766101598739624, 0.038185589015483856, -0.014758181758224964, -0.051311567425727844, 0.026589231565594673, -0.060483917593955994, 0.012885314412415028, -0.04931872710585594, 0.07600359618663788, 0.0687188133597374, -0.003153288271278143, 0.07341896742582321, -0.026792896911501884, -0.06141713261604309],
+ "CVTPD":[-0.003623477416113019, 0.04249686747789383, -0.03187210485339165, -0.05092284455895424, 0.03437024727463722, -0.005607489496469498, -0.026532990857958794, -0.08660539239645004, -0.08186853677034378, 0.09658326953649521, 0.04698765277862549, 0.046117331832647324, 0.0015235812170431018, -0.021789703518152237, 0.05315697193145752, 0.036102861166000366, 0.04690055176615715, 0.03689850494265556, -0.006876138970255852, -0.008768650703132153, -0.014024975709617138, 0.0071887304075062275, -0.07706905901432037, -0.08707840740680695, -0.03556659072637558, -0.07909724116325378, 0.038823459297418594, -0.09571173042058945, -0.08524632453918457, 0.024789858609437943, -0.08669779449701309, -0.027873067185282707, -0.008483482524752617, -0.059635162353515625, 0.026307450607419014, 0.020549099892377853, -0.05356869101524353, -0.05967947468161583, 0.02003062702715397, -0.0682101920247078, -0.06907143443822861, -0.09034920483827591, 0.0053446292877197266, 0.034838996827602386, -0.07746749371290207, 0.047966424375772476, 0.01653672754764557, -0.020453263074159622, -0.02556239254772663, -0.07964049279689789, -0.04275548830628395, 0.06650274991989136, -0.0679846927523613, 0.04783869907259941, 0.045030463486909866, -0.01948622427880764, 0.0660855621099472, 0.025755533948540688, 0.05710652470588684, 0.0025926753878593445, 0.03224550932645798, 0.04486436769366264, 0.0008268503006547689, -0.03425751253962517, 0.05306095629930496, 0.005005387589335442, -0.05208197981119156, 0.04418914020061493, -0.10973372310400009, -0.07014462351799011, 0.014731213450431824, -0.006684263236820698, -0.032075267285108566, 0.07942309975624084, 0.03526383638381958, 0.035151995718479156, 0.08553048223257065, -0.07848596572875977, 0.07484856247901917, -0.015559062361717224, -0.09617321193218231, 0.018179334700107574, 0.04820875823497772, -0.001314148074015975, -0.03706972673535347, -0.05199064314365387, 0.04917392134666443, 0.04518529400229454, -0.016052089631557465, -0.05321147292852402, 0.026887141168117523, -0.06213183328509331, -0.03500746563076973, -0.017766015604138374, 0.07514983415603638, -0.00254953489638865, 0.08150818943977356, -0.05050995200872421, 0.010703777894377708, 0.06483154743909836],
+ "CVTPS":[0.08055976778268814, -0.055582791566848755, -0.04782962426543236, -0.09008775651454926, -0.08991941809654236, -0.022007131949067116, 0.08608832210302353, 0.03331330418586731, -0.03226175531744957, 0.03699440136551857, 0.04067027196288109, 0.042331013828516006, 0.00629380252212286, 0.0349363349378109, -0.036424849182367325, 0.0809054747223854, -0.005569906905293465, 0.012738583609461784, 0.024149786680936813, -0.10715428739786148, 0.017195580527186394, -0.06556336581707001, 0.022954659536480904, 0.00022808450739830732, 0.03841801732778549, -0.008708452805876732, -0.0467907190322876, -0.005555822513997555, 0.01734023168683052, -0.034573543816804886, 0.002723053330555558, 0.027553969994187355, -0.059077855199575424, -0.006686402950435877, -0.02859647199511528, 0.03680312633514404, 0.03543175384402275, 0.06926193088293076, 0.07595764845609665, 0.06983305513858795, 0.007736909668892622, -0.07707242667675018, 0.08502994477748871, 0.02759127877652645, -0.005401154980063438, 0.01821606233716011, 0.03659576177597046, 0.09721942991018295, -0.013499421067535877, -0.022460652515292168, -0.10080159455537796, 0.07768391072750092, 0.08116059005260468, -0.0037537466268986464, -0.01645435392856598, -0.09047619253396988, 1.152132244897075e-05, 0.016720706596970558, -0.11021365970373154, -0.04790567606687546, 0.024181736633181572, 0.07052596658468246, 0.05270400643348694, 0.01951742358505726, 0.04572392627596855, 0.019843414425849915, 0.005615055561065674, -0.041062843054533005, 0.03253493458032608, 0.016538135707378387, -0.055265966802835464, 0.0676170140504837, -0.06035773828625679, 0.022711478173732758, -0.08630573004484177, 0.059192948043346405, -0.07775967568159103, 0.04822233319282532, 0.00953061506152153, -0.05000505596399307, -0.009818154387176037, 0.0806162878870964, 0.016811605542898178, 0.0013743579620495439, 0.013074214570224285, -0.052356377243995667, 0.07689041644334793, -0.011208998039364815, -0.012714088894426823, -0.08301123231649399, -0.002976191695779562, 0.0271308533847332, -0.060268696397542953, 0.030802421271800995, -0.0654296800494194, 0.10176341235637665, -0.010977881960570812, 0.06441760808229446, -0.025269821286201477, 0.016652371734380722],
+ "CVTSD":[-0.0736534595489502, -0.08355717360973358, 0.03174819424748421, -0.01362719014286995, 0.06511353701353073, -0.022155771031975746, -0.008522155694663525, 0.027328770607709885, 0.03873726353049278, -0.04994068294763565, 0.07903783768415451, 0.006331039126962423, 0.007227013818919659, -0.02622283436357975, 0.04644892364740372, 0.03609462082386017, -0.06382724642753601, -0.015847058966755867, -0.051785826683044434, -0.04440620169043541, -0.006990472786128521, 0.028140058740973473, 0.03901662304997444, 0.061419691890478134, 0.061185505241155624, 0.03456506505608559, -0.019499143585562706, -0.018475856631994247, 0.05941884592175484, -0.04806935042142868, 0.09693388640880585, 0.006312292069196701, 0.06193158030509949, 0.0801851749420166, -0.015578855760395527, -0.03231353312730789, 0.10649637132883072, 0.0630016028881073, 0.04018364101648331, -0.0793137177824974, 0.020892247557640076, 0.013725576922297478, 0.03541339561343193, 0.014313754625618458, 0.05238455906510353, -0.012663967907428741, -0.020714182406663895, 0.0829654261469841, -0.04189915210008621, -0.07339876890182495, -0.0016547562554478645, 0.05432716757059097, -0.07718146592378616, -0.031738363206386566, 0.044388074427843094, 0.023256758227944374, -0.00614854646846652, 0.013024188578128815, -0.0009796868544071913, -0.043319135904312134, -0.016037847846746445, 0.04940599203109741, -0.025666046887636185, -0.023476941511034966, 0.0007371596293523908, 0.03613995760679245, -0.005003541707992554, -0.048119038343429565, 0.015097218565642834, -0.03291730210185051, 0.024758869782090187, 0.06021399423480034, 0.04380033537745476, -0.014791784808039665, -0.001978614367544651, 0.05071071907877922, 0.027761833742260933, -0.008214354515075684, -0.04822910204529762, 0.012161452323198318, -0.0352010503411293, -0.061792176216840744, -0.08426310867071152, -0.005492307711392641, -0.08816508203744888, -0.07579164206981659, 0.03685575723648071, 0.018287761136889458, 0.0026563198771327734, 0.009154955856502056, 0.06610990315675735, -0.023711200803518295, -0.01876857876777649, 0.024812500923871994, 0.053937558084726334, 0.05514072999358177, 0.010263919830322266, 0.057987406849861145, -0.01604469306766987, -0.03134280443191528],
+ "CVTSI":[-0.007496717385947704, -0.036970529705286026, -0.007425469346344471, 0.09265446662902832, 0.03221645951271057, 0.04189201444387436, -0.027802247554063797, 0.0029956463258713484, 0.09803663194179535, 0.05782425031065941, -0.010657058097422123, 0.04552155360579491, 0.019563011825084686, 0.01433265209197998, 0.012860889546573162, -0.051656268537044525, 0.06764315068721771, -0.005942686926573515, 0.04445267468690872, 0.029445664957165718, -0.021340152248740196, 0.0332256518304348, 0.08590935915708542, -0.10961830615997314, 0.046173058450222015, 0.11217688769102097, -0.06557616591453552, 0.022546283900737762, 0.07606661319732666, -0.047506120055913925, 0.02081892639398575, 0.08298910409212112, -0.0467311255633831, 0.01958741806447506, -0.02268614061176777, 0.021878523752093315, -0.03042762354016304, 0.0896606296300888, 0.04005175828933716, -0.06682669371366501, 0.03200017288327217, 0.009908808395266533, 0.03544753044843674, -0.031882014125585556, -0.04871172085404396, -0.04424845799803734, 0.07230321317911148, 0.03653363883495331, 0.07045124471187592, -0.03939405828714371, -0.08832795172929764, 0.09791586548089981, 0.012711601331830025, -0.10511736571788788, -0.012634039856493473, -0.012682848609983921, -0.02510770782828331, 0.007082838099449873, 0.08007646352052689, -0.03563624992966652, -0.003232297021895647, 0.04081985726952553, 0.03061584196984768, -0.027362756431102753, 0.04885062202811241, -0.09560871869325638, -0.09001675248146057, 0.05239434540271759, -0.018022211268544197, -0.001349292928352952, -0.06769134849309921, 0.050891902297735214, -0.01925252005457878, -0.04240732640028, 0.056859493255615234, -0.07839202880859375, -0.03480107709765434, 0.03828543424606323, 0.10931836813688278, 0.01944992132484913, 0.0673019289970398, 0.009338751435279846, -0.036939848214387894, -0.05481810122728348, 0.008382408879697323, -0.03812095895409584, -0.05817490443587303, -0.023981517180800438, -0.022380158305168152, 0.031381022185087204, -0.027655035257339478, -0.012078174389898777, 0.06168515235185623, -0.013791770674288273, -0.030002687126398087, -0.07740293443202972, -0.033338822424411774, -0.010257861576974392, 0.03470379859209061, 0.06496946513652802],
+ "CVTSS":[-0.06638028472661972, -0.011326023377478123, 0.008208844810724258, 0.007368308026343584, 0.009791173972189426, -0.03396046161651611, 0.02250068075954914, -0.057750262320041656, -0.04949551820755005, 0.02559898979961872, -0.025012727826833725, -0.05923935025930405, 0.005058884620666504, 0.008716589771211147, -0.017511164769530296, -0.07095059007406235, -0.06573225557804108, -0.028140492737293243, 0.11092227697372437, 0.02664722129702568, -0.01997300609946251, 0.0798712745308876, -0.022800235077738762, 0.09157945215702057, 0.025709187611937523, -0.09037603437900543, -0.07092109322547913, -0.04094154015183449, -0.025702493265271187, 0.015247789211571217, 0.06089004501700401, 0.051023274660110474, -0.04670926183462143, 0.04763137549161911, -0.035940639674663544, 0.002320673782378435, -0.005764417815953493, -0.07975194603204727, -0.0038822791539132595, 0.06728507578372955, 0.020742014050483704, 0.08809743821620941, -0.061493389308452606, -0.0485445000231266, -0.022268671542406082, 0.08475345373153687, -0.0030403153505176306, -0.05737586319446564, -0.07930854707956314, -0.01657176949083805, 0.04658877104520798, 0.005716703832149506, -0.04288295656442642, -0.08686209470033646, -0.07359853386878967, 0.02947128191590309, -0.03684910386800766, -0.03841136023402214, 0.01288131158798933, -0.04918907582759857, -0.05579863488674164, 0.06267702579498291, -0.0034505922812968493, 0.034628838300704956, 0.04280426353216171, 0.042202845215797424, 0.012274117209017277, 0.025021208450198174, -0.07867497205734253, 0.03826712444424629, 0.017088277265429497, 0.037250861525535583, -0.016143174842000008, -0.06754780560731888, -0.013957766816020012, 0.1060054823756218, 0.014829001389443874, 0.06808885931968689, 0.022929415106773376, -0.10870063304901123, -0.002258410444483161, 0.009293666109442711, 0.08529872447252274, -0.018672339618206024, -0.06721168756484985, 0.04180533438920975, -0.0031767592299729586, -0.023869113996624947, -0.00011912015179404989, -0.034519728273153305, 0.0022619885858148336, -0.00573525857180357, -0.033912476152181625, 0.059763263911008835, -0.048703599721193314, -0.07433722168207169, 0.04105979949235916, 0.0022583131212741137, 0.03093089908361435, -0.05187990516424179],
+ "CVTTSD":[-0.08537309616804123, 0.0010597433429211378, 0.07481679320335388, 0.05997887998819351, -0.0376993790268898, 0.10309506952762604, 0.07795511186122894, 0.0833413377404213, 0.056095756590366364, 0.05851535126566887, -0.057075001299381256, 0.020756129175424576, -0.08901876956224442, 0.02559811621904373, -0.016971183940768242, -0.04282280057668686, -0.005386374890804291, -0.06672719866037369, -0.09664622694253922, 0.06042492762207985, -0.042353514581918716, 0.06194235011935234, -0.025712836533784866, -0.029526079073548317, 0.044016264379024506, 0.036507125943899155, -0.038406822830438614, 0.006118632387369871, -0.0495009683072567, -0.07487531006336212, -0.07304015755653381, 0.042621925473213196, -0.06314127147197723, 0.03934277594089508, -0.09373295307159424, -0.05887934938073158, 0.010626542381942272, -0.050934500992298126, -0.037448156625032425, 0.01178495679050684, -0.07045318186283112, 0.10210251808166504, -0.07279546558856964, 0.04947654530405998, -0.039519909769296646, 0.07030976563692093, -0.011039734818041325, 0.01187387015670538, -0.0840335488319397, -0.005615191534161568, -0.06869980692863464, -0.012282256036996841, -0.013054385781288147, -0.0711965560913086, 0.015505223535001278, 0.0693473145365715, 0.012862266041338444, -0.04747828096151352, 0.023439936339855194, 0.03891129791736603, -0.04998844489455223, -0.04673001170158386, 0.02121424488723278, 0.0501207634806633, 0.07420068979263306, -0.014888633042573929, 0.007586659397929907, 0.01340668834745884, -0.09216003119945526, 0.09335170686244965, 0.023272672668099403, 0.030810026451945305, 0.05792044475674629, -0.020374637097120285, -0.02717672660946846, 0.028085753321647644, 0.08691198378801346, 0.061656054109334946, -0.07689087092876434, 0.0407567173242569, 0.010403914377093315, -0.03389676660299301, 0.07075867801904678, 0.002534526167437434, -0.026066122576594353, 0.005012217443436384, 0.08335569500923157, -0.02732011303305626, 0.03854125738143921, 0.03336648270487785, -0.10646265000104904, -0.003997548017650843, 0.09871185570955276, 0.0275016650557518, 0.015653448179364204, 0.07066125422716141, 0.05811227858066559, 0.046357106417417526, 0.047027964144945145, 0.07407277077436447],
+ "CVTTSS":[-0.07762601226568222, 0.051891617476940155, 0.02840222790837288, 0.012996217235922813, -0.04709569737315178, -0.011790127493441105, 0.07787185907363892, 0.07411551475524902, 0.04010153189301491, 0.000911108567379415, -0.09610971063375473, 0.042953960597515106, 0.01613607630133629, -0.07504888623952866, -0.04967263713479042, 0.06148393824696541, -0.018901845440268517, 0.08033818751573563, -0.06893469393253326, -0.036083199083805084, 0.08206851035356522, 0.08462843298912048, 0.06728347390890121, -0.03210798278450966, -0.019102206453680992, 0.0723310112953186, 0.009836986660957336, -0.057902153581380844, 0.007954364642500877, -0.015247606672346592, 0.08317636698484421, -0.030078981071710587, -0.003329804167151451, -0.00047014118172228336, -0.02859017252922058, -0.07635723054409027, -0.008230162784457207, 0.03107159025967121, -0.009525406174361706, 0.06515175849199295, -0.06525594741106033, -0.028639627620577812, -0.0781184732913971, 0.009911812841892242, 0.011008340865373611, -0.04294031485915184, -0.04256690293550491, -1.394751961925067e-05, -0.029347950592637062, -0.031849224120378494, 0.012988862581551075, -0.0009693846222944558, -0.019299298524856567, 0.0045416890643537045, -0.04690401256084442, -0.04800841212272644, 0.0020325451623648405, -0.02004505693912506, 0.04130777344107628, -0.033602941781282425, -0.06956057250499725, -0.008079515770077705, 0.0033002288546413183, 0.03853915259242058, 0.08760882169008255, -0.04805464297533035, 0.02319355681538582, 0.018974801525473595, -0.08521144837141037, -0.05224936082959175, -0.023577861487865448, 0.01627342589199543, 0.024244949221611023, 0.09439363330602646, -0.007235093507915735, 0.055853620171546936, -0.00885567907243967, 0.02217228338122368, 0.05414341762661934, -0.0278383269906044, -0.000764147553127259, 0.045272815972566605, -0.009049531072378159, 0.05590446665883064, -0.05074811726808548, -0.06311893463134766, -0.026139337569475174, 0.01067473366856575, -0.043730076402425766, -0.07134802639484406, -0.11087869852781296, 0.05522335693240166, -0.07894640415906906, -0.06710508465766907, -0.022497203201055527, 0.0777427926659584, -0.07944057136774063, 0.05494234338402748, -0.04788406938314438, -0.032921578735113144],
+ "ConstantPoolIndex":[0.041396364569664, -0.032536957412958145, -0.01450332161039114, -0.006678386591374874, 0.058945223689079285, 0.02544882893562317, -0.03047209233045578, -0.07739393413066864, -0.09328317642211914, -0.01668739691376686, -0.024649402126669884, -0.0379607230424881, -0.11910244077444077, -0.020992999896407127, -0.007654233835637569, -0.005232746247202158, -0.05641235038638115, -0.030478237196803093, -0.11095637828111649, -0.029757868498563766, 0.007831704802811146, -0.06478779017925262, -0.029330771416425705, -0.016729608178138733, 0.016851121559739113, -0.08636923134326935, 0.09819734841585159, -0.06862954050302505, -0.054081980139017105, -0.11573795974254608, 0.025045182555913925, -0.045820001512765884, -0.03937136381864548, -0.0006095073185861111, 0.010480350814759731, 0.04263518005609512, -0.07309181243181229, 0.030367357656359673, 0.05174611508846283, -0.07616177201271057, 0.08458246290683746, -0.05704038590192795, -0.08539492636919022, -0.027642514556646347, -0.01617196388542652, 0.025178344920277596, 0.009598441421985626, -0.02391812391579151, -0.007018273696303368, 0.08220435678958893, 0.019317878410220146, -0.07800780981779099, 0.008812256157398224, -0.08796992152929306, -0.018406951799988747, 0.06285018473863602, 0.0247958917170763, -0.010797450318932533, 0.042904313653707504, 0.04307369515299797, 0.03591239079833031, 0.0318138487637043, -0.052741825580596924, -0.05960077419877052, 0.05289359390735626, -0.07335714250802994, -0.07966916263103485, 0.06509458273649216, -0.014078558422625065, 0.05966315418481827, -0.10191051661968231, 0.038503143936395645, 0.08414285629987717, -0.09167703986167908, -0.03125883638858795, 0.00029595239902846515, -0.05052953213453293, 0.06109768897294998, 0.027757229283452034, 0.07064288854598999, 0.025423981249332428, 0.04430470988154411, 0.006646708585321903, 0.011614424176514149, -0.058028463274240494, -0.026873555034399033, -0.045714568346738815, -0.009242760017514229, -0.08255617320537567, 0.03060135245323181, -0.019932182505726814, -0.07189206779003143, 0.01935136877000332, 0.05297813192009926, 0.004497232846915722, -0.08383949100971222, -0.0008196682319976389, 0.03524069860577583, 0.023135961964726448, 0.00863903108984232],
+ "DEC":[0.0634445771574974, -0.06605149805545807, 0.03212125599384308, 0.030006375163793564, -0.08837386220693588, -0.016591178253293037, -0.03157195448875427, 0.005282422062009573, 0.04301748052239418, -0.035375431180000305, -0.050481121987104416, -0.10733921080827713, -0.03802337497472763, -0.0745977833867073, -0.03943190351128578, -0.014895747415721416, 0.004689200781285763, -0.05872263386845589, -0.02043316885828972, 0.017881838604807854, -0.02151746302843094, 0.049130357801914215, -0.0980888232588768, -0.0012140831677243114, -0.03892286866903305, -0.050167523324489594, -0.06817777454853058, 0.011282221414148808, 0.0848090872168541, -0.04859968274831772, -0.005405630450695753, 0.09327276051044464, -0.031913015991449356, -0.07784294337034225, -0.039762917906045914, -0.0004000961489509791, -0.03763844072818756, -0.024915525689721107, 0.04509890824556351, 0.05546657368540764, -0.055939678102731705, -0.0467451736330986, -0.030023904517292976, -0.010519847273826599, 0.009574057534337044, 0.023444844409823418, 0.007250144146382809, 0.060414351522922516, -0.0011268716771155596, -0.10112253576517105, -0.068567655980587, -0.044332459568977356, 0.0022569731809198856, -0.012019195593893528, 0.0016708170296624303, 0.01029527559876442, -0.024694599211215973, -0.0428738109767437, 0.053816765546798706, 0.09999147802591324, 0.06608963757753372, 0.014324366115033627, 0.022997796535491943, -0.012565241195261478, -0.008212191984057426, -0.012308428063988686, -0.09830988198518753, -0.04177428036928177, 0.03759279474616051, 0.06749766319990158, -0.08330990374088287, -0.06375840306282043, 0.0471678152680397, 0.06524914503097534, 0.09668447077274323, 0.07395336031913757, -0.06081546097993851, 0.0322561152279377, -0.05461571738123894, 0.022349894046783447, 0.0981096625328064, 0.019211066886782646, 0.10566835105419159, 0.004508140496909618, 0.030159158632159233, 0.1076640635728836, -0.004145997576415539, 0.08043811470270157, 0.030684711411595345, 0.07909402251243591, -0.015952520072460175, 0.027102122083306313, 0.017120881006121635, 0.0860346332192421, 0.06145261228084564, -0.01827210932970047, 0.027506740763783455, 0.08201386034488678, -0.09402544051408768, -0.07927247136831284],
+ "DIV":[0.08121486008167267, -0.06398852169513702, -0.007856910116970539, 0.09644383192062378, 0.0013691268395632505, 0.03523438796401024, -0.04342259466648102, -0.011761687695980072, 0.021194210276007652, -0.0386938601732254, -0.004948849324136972, -0.08348845690488815, 0.005121953319758177, -0.06682730466127396, -0.004115825518965721, 0.015023703686892986, 0.042783256620168686, 0.08872916549444199, -0.03392689675092697, -0.014770613051950932, 0.001988545060157776, -0.05145770683884621, -0.029310323297977448, 0.06324473023414612, -0.08066411316394806, 0.006997138261795044, 0.004352204035967588, -0.060964930802583694, 0.02948148362338543, 0.052747759968042374, -0.05635778605937958, -0.014655586332082748, 0.015838103368878365, -0.04539657384157181, 0.031915292143821716, 0.05234432592988014, -0.012030252255499363, 0.06431112438440323, -0.027869969606399536, -0.006431832443922758, 0.025956276804208755, 0.047651831060647964, -0.01758543774485588, 0.07249220460653305, -0.049627624452114105, -0.007435495033860207, 0.0015833197394385934, 2.190603845519945e-05, 0.03457536920905113, 0.03895196691155434, -0.037442032247781754, 0.003120564157143235, -0.0690622553229332, -0.04405339062213898, 0.016464274376630783, -0.05068953335285187, 0.009520933963358402, 0.05033525079488754, 0.030095860362052917, 0.08773164451122284, -0.03623930364847183, -0.0076989103108644485, 0.0133424773812294, 0.025229837745428085, 0.018198521807789803, 0.011319941841065884, -0.005582685582339764, -0.03598775342106819, -0.0565820187330246, 0.08609189838171005, 0.035601116716861725, -0.007436969317495823, -0.018040914088487625, -0.04825054481625557, -0.014956142753362656, 0.03343576192855835, -0.0739198625087738, 0.038971979171037674, -0.03691745549440384, -0.0371851809322834, 0.08137080073356628, 0.03924981504678726, -0.06499960273504257, 0.047913506627082825, -0.0464070662856102, 0.04404731094837189, -0.03972303494811058, 0.03341617435216904, 0.05367732420563698, -0.04457789286971092, -0.07455608248710632, 0.007865827530622482, 0.04562194645404816, -0.03552774339914322, -0.007738951593637466, 0.09388759732246399, -0.015701837837696075, 0.033921483904123306, -0.017276542261242867, 0.04943705350160599],
+ "DIVPDrm":[0.04179735854268074, 0.008989601396024227, 0.0027430830523371696, 0.06804384291172028, -0.06657993793487549, 0.033647675067186356, -0.03707171231508255, 0.08443991839885712, -0.054565757513046265, 0.0765392854809761, -0.08189049363136292, 0.02573087066411972, 0.018917549401521683, 0.079402856528759, -0.011117411777377129, 0.06308865547180176, -0.045432765036821365, -0.05054701492190361, -0.009618235751986504, -0.0594516322016716, 0.07967120409011841, 0.08030137419700623, -0.0768255814909935, -0.061036787927150726, 0.004279104992747307, -0.09737113863229752, 0.07295801490545273, -0.027599459514021873, 0.0045133912935853004, -0.048141367733478546, 0.0003157609316986054, -0.014835191890597343, 0.01462356187403202, -0.03225003555417061, 0.06723359227180481, 0.05244021862745285, 0.07099424302577972, -0.09206876158714294, 0.06154841184616089, -0.022400988265872, 0.034042902290821075, 0.002528816694393754, -0.04578591138124466, -0.023195132613182068, -0.07696253061294556, -0.03475971147418022, 0.03545870631933212, -0.021839862689375877, 0.0036371496971696615, 0.07372148334980011, -0.0596211701631546, -0.06768393516540527, -0.032637521624565125, 0.008432515896856785, 0.007569535635411739, -0.0034237385261803865, 0.05811845883727074, 0.013580343686044216, -0.03924565017223358, -0.025963587686419487, 0.03800642117857933, -0.04651957005262375, -0.033428385853767395, -0.053251899778842926, -0.04647624120116234, -0.034290049225091934, 0.003906013211235404, -0.05534028634428978, 0.04434804245829582, -0.08216925710439682, -0.011801591143012047, -0.006801240611821413, -0.07483590394258499, -0.06332433968782425, -0.005107037723064423, -0.008274846710264683, -0.07277056574821472, 0.03865613043308258, -0.0472225658595562, 0.009775533340871334, 0.055412523448467255, -0.014846398495137691, -0.008565607480704784, -0.018367087468504906, 0.038180120289325714, 0.06085506081581116, -0.02658388763666153, 0.006586031056940556, 0.0761575847864151, -0.007659312803298235, -0.10445686429738998, 0.01846102997660637, 0.02885548584163189, 0.0437043160200119, -0.012576445005834103, 0.04055696353316307, 0.002144219819456339, -0.08052077144384384, 0.03422001749277115, 0.03888843208551407],
+ "DIVPDrr":[0.03734917566180229, 0.028595151379704475, -0.01547225285321474, 0.07718178629875183, 0.009021174162626266, 0.043545350432395935, -0.0070684221573174, -0.036429185420274734, -0.06911031156778336, 0.0071142977103590965, -0.0622992180287838, -0.011881024576723576, 0.013493514619767666, -0.06650365889072418, 0.05036291107535362, -0.08048281073570251, 0.09750465303659439, -0.09920476377010345, 0.07213346660137177, -0.07235691696405411, 0.03332499414682388, -0.020378591492772102, -0.06904714554548264, -0.048844728618860245, 0.05644841864705086, -0.0845029205083847, -0.010213945992290974, 0.025143738836050034, -0.005667433608323336, -0.013957292772829533, -0.038558028638362885, 0.039384376257658005, 0.05261707678437233, 0.009931417182087898, 0.036457668989896774, -0.020661622285842896, 0.0307494904845953, -0.0679025873541832, -0.0895335003733635, -0.08382485806941986, -0.08868276327848434, -0.057697515934705734, 0.03268156945705414, -0.008488967083394527, -0.08664353936910629, 0.04053577780723572, 0.0031477725133299828, -0.04295678809285164, -0.0057869660668075085, 0.01963295042514801, 0.05192311480641365, 0.024751387536525726, -0.037959836423397064, -0.07363177090883255, -0.04098339006304741, 0.03609051555395126, -0.02435746043920517, 0.004507721867412329, 0.1000770851969719, 0.005854227114468813, 0.05782671645283699, 0.0449087917804718, -0.03615757077932358, -0.010936923325061798, -0.019436698406934738, -0.03650704026222229, 0.04192157834768295, -0.08164984732866287, -0.008644814603030682, -0.02146761305630207, -0.07891564071178436, -0.05533790960907936, 0.06231723353266716, -0.06435058265924454, 0.1015794575214386, -0.019753070548176765, 0.02807757817208767, 0.012470212765038013, 0.0797576829791069, 0.040825411677360535, -0.03651896119117737, -0.01245196908712387, 0.05256897583603859, 0.033758264034986496, -0.05128081887960434, 0.07911957055330276, -0.0332430899143219, -0.012436742894351482, -0.08557307720184326, 0.012403402477502823, 0.00810372643172741, 0.08486508578062057, -0.002604415873065591, -0.009829443879425526, 0.09278351068496704, -0.05749935656785965, -0.04180140420794487, 0.09661445021629333, 0.07416312396526337, -0.07562557607889175],
+ "DIVPSrr":[0.07999362796545029, -0.014389853924512863, -0.05996039882302284, -0.08990120142698288, -0.03955979272723198, -0.04755287244915962, 0.06558247655630112, 0.03113272227346897, 0.03835074603557587, 0.01585150510072708, -0.05374465137720108, -0.06738283485174179, 0.041979800909757614, 0.04681699723005295, 0.0020062532275915146, 0.09801103919744492, -0.04431508481502533, 0.009271053597331047, 0.05937379226088524, -0.00013367585779633373, -0.04859280586242676, -0.04198584705591202, 0.10030455142259598, -0.06139003485441208, 0.046722568571567535, -0.06533011049032211, 0.009764148853719234, 0.045603781938552856, -0.019998887553811073, -0.07099422067403793, -0.00234935968182981, 0.0998070240020752, 0.03904492035508156, 0.0828263983130455, 0.028535010293126106, 0.0028210373129695654, -0.08733997493982315, -0.02619018405675888, 0.0011294852010905743, -0.0290329959243536, 0.005060042254626751, 0.035591281950473785, 0.0945710837841034, 0.035077448934316635, 0.02598526142537594, -0.05915304645895958, -0.03932730853557587, 0.043094538152217865, 8.88426584424451e-05, -0.05507063865661621, 0.0379081629216671, -0.014511621557176113, 0.030645791441202164, 0.01586661860346794, 0.012368029914796352, -0.037838369607925415, -0.09528537839651108, -0.019278336316347122, -0.035310935229063034, -0.05663401260972023, -0.08656975626945496, -0.018119435757398605, 0.0016713517252355814, -0.05963413044810295, 0.03335646167397499, 0.05312050133943558, 0.026524849236011505, -0.04233565926551819, -0.035976752638816833, -0.09702737629413605, 0.005062651354819536, -0.02628360502421856, 0.014105311594903469, 0.004487550351768732, 0.08416268974542618, -0.016596846282482147, 0.08000213652849197, -0.05809776857495308, 0.05624547228217125, -0.06571398675441742, 0.011441892944276333, 0.06230577081441879, 0.0635274350643158, -0.041961390525102615, -0.049041904509067535, 0.006436420138925314, 0.02274881675839424, -0.013914565555751324, -0.09141840785741806, -0.04071741923689842, 0.08444313704967499, 0.01223752647638321, 0.025800671428442, -0.02383953519165516, 0.013386750593781471, -0.10107893496751785, -0.07902538031339645, -0.04520753398537636, 0.011773616075515747, 0.10175731778144836],
+ "DIVR_Fp":[-0.08715731650590897, -0.05466415360569954, -0.056614600121974945, 0.03001217730343342, 0.024111606180667877, -0.028325017541646957, -0.02575722150504589, 0.0504477322101593, -0.004585143644362688, -0.04413072392344475, -0.012378773652017117, -0.07772088795900345, -0.02419130876660347, 0.024133415892720222, 0.04214867204427719, 0.013261403888463974, 0.009651416912674904, -0.05621856451034546, 0.0060156891122460365, 0.07784400880336761, -0.07687357813119888, -0.09004710614681244, 0.03254598751664162, 0.0660666972398758, -0.05649007856845856, -0.014902457594871521, -0.006142138037830591, -0.036381497979164124, 0.09232903271913528, -0.05037243291735649, 0.01192146074026823, -0.048498086631298065, -0.010163402184844017, -0.0060166968032717705, -0.0731038823723793, 0.08806609362363815, -0.030002901330590248, 0.07289975136518478, -0.020936183631420135, -0.053810473531484604, 0.028968913480639458, -0.00706036202609539, 0.0631430447101593, -0.021817466244101524, 0.07708487659692764, -0.033614810556173325, 0.07587882876396179, -0.010133728384971619, 0.060545772314071655, 0.06963289529085159, 0.08631119877099991, 0.03409797325730324, 0.03587346151471138, 0.05429153889417648, -0.05935404822230339, 0.03208402916789055, 0.05481377989053726, 0.04790816828608513, -0.0768321231007576, -0.01969468779861927, -0.05834750831127167, 0.03968833386898041, -0.010469716973602772, 0.03426804393529892, 0.014714555814862251, -0.041274599730968475, 0.06996951252222061, -0.07773948460817337, 0.07933167368173599, -0.09767641872167587, -0.1049165427684784, 0.063120998442173, 0.039951954036951065, -0.04295894876122475, -0.026887020096182823, -0.0006085407803766429, -0.025911154225468636, -0.026409758254885674, -0.10755003988742828, -0.0907316729426384, -0.01825394108891487, 0.005401150789111853, 0.0006182149518281221, -0.07519889622926712, -0.03677220642566681, -0.03903091698884964, -0.04459770396351814, -0.0842692032456398, -0.013470306061208248, 0.0026135819498449564, 0.07960952818393707, 0.04553861543536186, 0.014242059551179409, -0.05247439816594124, 0.06503131985664368, -0.0785822793841362, -0.017330830916762352, -0.0798458680510521, -0.024277424439787865, 0.05223614349961281],
+ "DIVR_FpI":[-0.011309053748846054, 0.07412310689687729, 0.03177187591791153, -0.08216355741024017, 0.07443593442440033, 0.006435821298509836, -0.059316448867321014, 0.06297692656517029, 0.04537463188171387, 0.020135192200541496, 0.05636640638113022, -0.05488108471035957, -0.05240778997540474, -0.00415512640029192, -0.030989577993750572, 0.08028862625360489, -0.09987267851829529, 0.07056663185358047, 0.04427888244390488, 0.014084281399846077, -0.0012748879380524158, 0.10142943263053894, 0.037666648626327515, -0.046102944761514664, 0.08211002498865128, 0.03100079670548439, 0.01961361989378929, -0.059079982340335846, 0.00980149582028389, 0.004816997796297073, -0.07403075695037842, -0.025845129042863846, -0.02520638518035412, -0.033016569912433624, 0.01479304675012827, 0.053148917853832245, -0.019847890362143517, 0.08005281537771225, -0.06782933324575424, 0.035011399537324905, -0.008891619741916656, 0.029068564996123314, 0.0878683552145958, 0.02109583653509617, -0.01916487142443657, 0.027811499312520027, 0.06175796315073967, -0.07642330229282379, 0.07608398050069809, -0.0038753142580389977, 0.015107403509318829, -0.030836595222353935, -0.05299044027924538, 0.1061592623591423, 0.010824629105627537, -0.04838545620441437, 0.014390121214091778, -0.08375665545463562, -0.027087155729532242, 0.014012178406119347, 0.05419367551803589, 0.043313127011060715, 0.03107568807899952, -0.10297738760709763, 0.02420603111386299, 0.022728275507688522, 0.004959543701261282, -0.035281743854284286, -0.06093912944197655, -0.03722554072737694, -0.018251949921250343, -0.08563823997974396, 0.06930767744779587, -0.0966804176568985, -0.022856777533888817, 0.0012885347241535783, -0.009600194171071053, -0.05749446526169777, -0.04922565445303917, -0.08864906430244446, -0.04042913764715195, -0.007014817092567682, -0.03960314765572548, -0.011540766805410385, 0.08701612055301666, -0.025067035108804703, -0.04364829510450363, 0.06949689984321594, -0.03707181289792061, -0.01775588095188141, -0.0016218018718063831, 0.009879950433969498, 0.00515845138579607, -0.09137257933616638, -0.03527297452092171, -0.018324654549360275, 0.03754701465368271, -0.07483968138694763, 0.015030883252620697, -0.041592083871364594],
+ "DIVSDrm":[-0.049539078027009964, 0.0011391830630600452, 0.024181924760341644, 0.0038777177687734365, 0.009780130349099636, 0.07356049865484238, 0.07553499937057495, 0.07137732952833176, -0.0032445862889289856, -0.07953974604606628, 0.015588775277137756, 0.06830651313066483, 0.051181528717279434, 0.001360326074063778, 0.022539380937814713, 0.03116670437157154, -0.023281285539269447, 0.038351837545633316, 0.004124519880861044, -0.07388366758823395, 0.0421631745994091, 0.022327600046992302, 0.09188038855791092, -0.07252143323421478, -0.0467403382062912, 0.021270526573061943, -0.02757241390645504, -0.031071769073605537, -0.006750030443072319, 0.06400720030069351, 0.01833239011466503, -0.04222271218895912, -0.03675444796681404, -0.030306657776236534, 0.05444962531328201, 0.062006283551454544, 0.03564699366688728, -0.07391844689846039, 0.0634542852640152, 0.05171129107475281, 0.04801785945892334, 0.07852195203304291, 0.09106048196554184, -0.003062652889639139, -0.04760383442044258, 0.08108703047037125, 0.1024647206068039, 0.029963936656713486, 0.05962127074599266, 0.07741118967533112, 0.07085917145013809, 0.034088149666786194, 0.04820941761136055, -0.04302307963371277, -0.019864892587065697, -0.03930046409368515, -0.03444920852780342, -0.02283407375216484, -0.011132797226309776, 0.06447608768939972, 0.05474456399679184, -0.009980118833482265, 0.009076371788978577, -0.03133132681250572, 0.055523402988910675, -0.01858365163207054, -0.04930802062153816, 0.051019877195358276, -0.05065716803073883, -0.05216405913233757, 0.02364276349544525, 0.04549429938197136, -0.02911674976348877, 0.05186188593506813, 0.059484779834747314, 0.012569267302751541, 0.018468601629137993, -0.029265696182847023, 0.032984428107738495, -0.05415157601237297, -0.0017049746820703149, -0.008406441658735275, -0.10597341507673264, 0.05388253182172775, -0.015113544650375843, 0.05196697264909744, 0.040021881461143494, -0.06563647091388702, -0.03418510779738426, -0.0012349269818514585, 0.01719699427485466, 0.049588751047849655, 0.06276025623083115, 0.06434135884046555, -0.07939596474170685, -0.027434583753347397, 0.03467114269733429, 0.049205150455236435, 0.006712303496897221, 0.06555657833814621],
+ "DIVSDrr":[-0.00608709966763854, -0.05497780442237854, 0.005581242963671684, -0.07894734293222427, -0.019140593707561493, 0.08080931752920151, -0.08687487244606018, -0.049473535269498825, 0.07292696088552475, -0.04375635087490082, 0.007628381717950106, 0.019986869767308235, -0.02029900997877121, 0.038246095180511475, 0.07590805739164352, -0.09699591994285583, -0.026669993996620178, 0.05541124567389488, -0.016806690022349358, 0.021741274744272232, -0.04365740716457367, -0.012579906731843948, -0.009831267409026623, -0.07333213090896606, 0.019620956853032112, 0.0378083661198616, 0.019458135589957237, -0.032154250890016556, 0.08421210199594498, -0.0020721526816487312, 0.055683840066194534, 0.010078205727040768, -0.014082926325500011, -0.08054950833320618, 0.014127662405371666, 0.016841014847159386, -0.07840932905673981, -0.02237090840935707, 0.07527032494544983, 0.025757882744073868, 0.07358530163764954, 0.050490446388721466, 0.04802706837654114, 0.05011526867747307, -0.006761360447853804, 0.09442706406116486, -0.039989642798900604, -0.024790044873952866, -0.014787653461098671, 0.06655210256576538, -0.09503327310085297, 0.08890961110591888, 0.02434946969151497, -0.004888724535703659, -0.049160368740558624, -0.028630491346120834, 0.020501146093010902, 0.02896813489496708, -0.06137671321630478, -0.049722570925951004, -0.021724114194512367, -0.022051047533750534, -0.03857971355319023, 0.058479707688093185, -0.06191828474402428, -0.03276006877422333, 0.025718865916132927, -0.0025699627585709095, -0.033075809478759766, 0.034960631281137466, -0.015514723025262356, 0.005913747474551201, 0.08665915578603745, 0.040622372180223465, 0.08839787542819977, 0.06273672729730606, -0.03206851705908775, 0.020106254145503044, -0.0806054025888443, 0.0225808285176754, -0.017772410064935684, 0.031204136088490486, -0.014913288876414299, -0.024561790749430656, 0.023163730278611183, -0.05877256393432617, 0.021168529987335205, -0.035934314131736755, 0.014181850478053093, 0.04031391441822052, -0.07817228883504868, -0.013657103292644024, -0.0560840405523777, 0.06728781014680862, 0.04599219188094139, 0.06994429975748062, 0.05566691979765892, -0.03427421674132347, 0.086574025452137, 0.08982110023498535],
+ "DIVSSrm":[-0.056880269199609756, 0.048507969826459885, -0.010494961403310299, -0.10727597028017044, 0.09625133872032166, 0.009693830274045467, -0.06220591440796852, 0.06518696993589401, 0.10582951456308365, 0.08131755888462067, -0.03707261011004448, 0.09346707910299301, 0.004845113027840853, 0.05882486328482628, -0.0017007256392389536, 0.016088366508483887, 0.08858063817024231, -0.08233679831027985, -0.012943469919264317, 0.08326984941959381, -0.03324175253510475, -0.021057356148958206, -0.028408648446202278, -0.014472858980298042, -0.011459738947451115, 0.030126363039016724, -0.03269084542989731, -0.02077566646039486, 0.05650756508111954, -0.0878847986459732, -0.0056175729259848595, -0.0350784957408905, 0.046360310167074203, 0.023704111576080322, -0.0011891238391399384, 0.019885092973709106, 0.022205928340554237, 0.028912672773003578, 0.09584499895572662, -0.0060829599387943745, -0.06056534871459007, 0.01750102825462818, 0.0031712132040411234, 0.013577423058450222, 0.059152889996767044, 0.03733418136835098, -0.008994358591735363, 0.008815469220280647, -0.048066675662994385, -0.08145570009946823, 0.011769105680286884, -0.07602948695421219, -0.02265515923500061, -0.023186158388853073, -0.05446719378232956, -0.07119609415531158, -0.03183809667825699, 0.006076065357774496, -0.06308026611804962, -0.029794249683618546, -0.07811194658279419, 0.0783037543296814, 0.05605516582727432, -0.10323350876569748, -0.03328175097703934, -0.0431964248418808, 0.02127307653427124, 0.070633664727211, 0.03883754089474678, 0.02715056575834751, -0.0356241874396801, 0.07871320098638535, -0.008649999275803566, -0.008687424473464489, 0.01695200800895691, 0.05286139249801636, 0.011526694521307945, 0.04513023421168327, -0.03664236143231392, 0.031738102436065674, 0.034588124603033066, -0.0005714949802495539, 0.030565066263079643, -0.022135751321911812, -0.03308924287557602, -0.07238735258579254, -0.09643018245697021, -0.08377031236886978, -0.03295893222093582, 0.015170838683843613, -0.11326810717582703, 0.04807094484567642, -0.024001311510801315, -0.05466243252158165, -0.033896587789058685, -0.05326810106635094, 0.032854802906513214, 0.07264739274978638, 0.08485087752342224, 0.05271114408969879],
+ "DIVSSrr":[-0.10705829411745071, -0.02657221630215645, 0.0037947199307382107, 0.024659663438796997, 0.029404742643237114, -0.039363209158182144, -0.100291907787323, 0.018512548878788948, 0.04101523756980896, 0.07297352701425552, 0.00685048196464777, 0.07481251657009125, -0.024227261543273926, -0.023837503045797348, 0.05737169831991196, -0.02290107123553753, -0.029634550213813782, -0.04506327211856842, 0.0374937504529953, -0.0068298280239105225, -0.08134716004133224, 0.03618418425321579, 0.030404984951019287, 0.09661045670509338, 0.025351617485284805, -0.07608389109373093, -0.0037560248747467995, -0.05423721671104431, 0.045146211981773376, 0.04006965458393097, -0.057324450463056564, 0.019742658361792564, -0.0032844904344528913, 0.006785895675420761, 0.047742001712322235, 0.047659169882535934, 0.11172875016927719, 0.09182483702898026, -0.11232609301805496, -0.0004943675012327731, 0.03029322810471058, 0.027736200019717216, 0.03692846745252609, 0.00836847722530365, -0.08398154377937317, -0.11159618943929672, -0.06849581003189087, 0.05222051590681076, -0.048789460211992264, 0.02271869406104088, 0.03762490674853325, -0.020272133871912956, -0.05763861909508705, 0.05010819807648659, -0.06242437660694122, 0.05507836863398552, 0.005696852225810289, -0.036179639399051666, -0.0656416192650795, 0.03304886445403099, -0.04250912368297577, -0.08954987674951553, 0.04940727353096008, -0.0033525843173265457, 0.04996850714087486, 0.005930913146585226, 0.040942367166280746, -0.019632326439023018, -0.01762988790869713, 0.09332414716482162, 0.06017976254224777, -0.04258190095424652, 0.10861573368310928, -0.024700937792658806, 0.06657897680997849, -0.07328969240188599, -0.05541856959462166, 0.07932978868484497, 0.05197788402438164, 0.05410892516374588, 0.053196001797914505, -0.036361534148454666, -0.019164633005857468, -0.030731750652194023, 0.06078256294131279, -0.0185624361038208, 0.02841481752693653, 0.08563252538442612, 0.03537296876311302, -0.06601919233798981, -0.056440163403749466, 0.001458510523661971, -0.03920110687613487, 0.023808864876627922, -0.06155276671051979, 0.024824874475598335, -0.04435666650533676, 0.02173505909740925, -0.07300855219364166, 0.016820060089230537],
+ "DIV_Fp":[0.0013771128142252564, -0.03939857333898544, 0.06826473772525787, -0.055852942168712616, 0.021110225468873978, -0.07429434359073639, -0.01439732313156128, 0.047745198011398315, 0.03544871136546135, -0.006474921014159918, -0.05228240415453911, 0.00804696511477232, 0.0025021089240908623, 0.049810487776994705, -0.009595588780939579, 0.0507207065820694, -0.040155258029699326, 0.013851179741322994, -0.09630413353443146, -0.012529753148555756, 0.08176414668560028, 0.05994131416082382, 0.0013053410220891237, -0.035347871482372284, -0.06649265438318253, 0.07997933030128479, -0.042037565261125565, -0.06072461977601051, 0.09246786683797836, -0.0072363922372460365, 0.01850724034011364, 0.03905143961310387, -0.07601091265678406, -0.04824458062648773, -0.014410853385925293, -0.06455439329147339, -0.0593516007065773, -0.047922395169734955, -0.07904111593961716, -0.05896637961268425, -0.05629009008407593, -0.08674604445695877, 0.017179397866129875, -0.0020149857737123966, 0.02413070574402809, 0.024688012897968292, 0.027266085147857666, -0.015890855342149734, -0.00813567265868187, 0.024672919884324074, -0.020992467179894447, 0.019298823550343513, 0.022587062790989876, 0.06570186465978622, 0.061541132628917694, -0.07291612029075623, -0.010421186685562134, 0.032753147184848785, -0.06230449676513672, 0.040921296924352646, 0.05855383351445198, -0.035908423364162445, 0.05353318154811859, -0.013773049227893353, 0.0073576089926064014, 0.016397720202803612, 0.03753839433193207, 0.04765179380774498, -0.041083212941884995, -0.013994180597364902, -0.015261827036738396, 0.0982649177312851, 0.05605688691139221, -0.041869863867759705, -0.017181048169732094, 0.03721241280436516, -0.005489564035087824, 0.026647603139281273, -0.07785916328430176, 0.0476430244743824, -0.006558667402714491, 0.06363014876842499, -0.05705825239419937, -0.048359137028455734, -0.09657922387123108, -0.020021332427859306, 0.05151694640517235, 0.0028305412270128727, -0.012787899002432823, -0.09800048917531967, 0.01322718895971775, 0.08181536942720413, -0.04321233555674553, -0.0016350646037608385, -0.03537006303668022, 0.041411954909563065, 0.028577959164977074, 0.01855066418647766, 0.01671769842505455, -0.04467424377799034],
+ "DIV_FpI":[-0.010708109475672245, -0.0732470378279686, -0.033443547785282135, -0.06361733376979828, 0.017653197050094604, -0.030770231038331985, -0.0766882598400116, 0.08713997155427933, -0.0696694403886795, 0.0565333366394043, 0.0079630296677351, 0.009157304652035236, 0.07795052230358124, 0.00863052811473608, 0.009487103670835495, -0.021366223692893982, -0.08859013020992279, -0.052845098078250885, 0.07517100870609283, 0.030445149168372154, -0.031006425619125366, -0.011518558487296104, 0.031634584069252014, 0.006774903275072575, -0.0008412582101300359, 0.05720775946974754, -0.03664165362715721, 0.04671872407197952, -0.04702712222933769, 0.08346223086118698, -0.02042539417743683, 0.005731453187763691, -0.02509506233036518, 0.04370206221938133, -0.06398718804121017, 0.052075039595365524, 0.05920809134840965, 0.0037172543816268444, 0.07034561783075333, -0.018100138753652573, 0.002755390014499426, -0.07121799886226654, 0.03879084065556526, 0.013516174629330635, -0.02845778502523899, 0.019500035792589188, 0.014439111575484276, 0.06561631709337234, -0.10264755040407181, -0.016511712223291397, -0.018063146620988846, 0.08819841593503952, -0.0031949833501130342, -0.07884415239095688, -0.10739012062549591, 0.007700629997998476, 0.049550142139196396, 0.0866587832570076, 0.054501283913850784, 0.10046342760324478, 0.01546743419021368, -0.05334487929940224, -0.02652003802359104, -0.009483176283538342, 0.011785115115344524, 0.04965313896536827, -0.030048802495002747, -0.043639082461595535, -0.004809096921235323, -0.0515226274728775, 0.08381897956132889, 0.003956930246204138, 0.03591177612543106, 0.04015829414129257, -0.03484338894486427, 0.04027436673641205, 0.09792015701532364, 0.013287014327943325, 0.09490979462862015, -0.024792836979031563, 0.04872164502739906, 0.026059577241539955, -0.05917894095182419, -0.011415015906095505, -0.024944854900240898, 0.00499876169487834, -0.06721813976764679, -0.03442658111453056, -0.002175490139052272, 0.0004200722905807197, -0.10891042649745941, 0.021674668416380882, 0.03700282797217369, -0.0014478170778602362, -0.013477527536451817, -0.02742406167089939, -0.01233668439090252, 0.02371596358716488, 0.04435785114765167, -0.03723753243684769],
+ "EH_LABEL":[-0.03541884943842888, 0.012697970494627953, 0.07690317928791046, 0.10800164937973022, -0.033531446009874344, 0.010248170234262943, 0.08690237253904343, -0.018254421651363373, 0.006330807693302631, 0.054908059537410736, 0.05281105265021324, 0.01866377331316471, -0.03986826166510582, 0.012461063452064991, -0.0570770688354969, 0.010465170256793499, -0.0007985670818015933, 0.014928294345736504, -0.08143509179353714, -0.04576095566153526, -0.014382844790816307, 0.09261113405227661, -0.06843073666095734, 0.08642790466547012, 0.010645134374499321, 0.02887858636677265, -0.08228367567062378, 0.06679805368185043, 0.0023300996981561184, 0.02060936950147152, 0.06778941303491592, 0.10305429995059967, 0.06289057433605194, -0.020899023860692978, -0.024045836180448532, 0.0433543361723423, -0.0338776558637619, -0.05156976729631424, -0.02495928853750229, -0.060252029448747635, -0.1022094339132309, 0.014480574987828732, 0.0545940026640892, 0.04824232682585716, 0.06658189743757248, 0.11414545774459839, 0.08304191380739212, -0.03313761577010155, -0.056730128824710846, -0.005165864247828722, -0.00412571569904685, -0.0007486011018045247, -0.03322497382760048, 0.0425163209438324, 0.0785580724477768, 0.015084332786500454, 0.049294766038656235, 0.07518152892589569, -0.008224403485655785, -0.08819448202848434, -0.020814890041947365, 0.054976895451545715, -0.06431052833795547, 0.026952102780342102, -0.02861913852393627, -0.05228573456406593, -0.08044329285621643, 0.02844928950071335, 0.06669115275144577, -0.005387885496020317, 0.05081101134419441, -0.0627083107829094, -0.0785573348402977, -0.042252350598573685, -0.0632990375161171, -0.042457811534404755, -0.07097408920526505, 0.0032806433737277985, 0.039354246109724045, 0.054314617067575455, 0.04231691733002663, 0.00793430395424366, -0.06007056310772896, -0.06129273772239685, -0.008646488189697266, -0.024291129782795906, -0.06316813081502914, 0.02861824445426464, 0.029990797862410545, -0.014714590273797512, 0.005561451427638531, 0.06847269088029861, 0.05630529299378395, -0.015434914268553257, 0.08646618574857712, -0.0025325058959424496, -0.0046173883602023125, -0.04263639822602272, -0.021261105313897133, 0.02382785640656948],
+ "ExternalSymbol":[0.014755810610949993, -0.049842361360788345, -0.06733497977256775, 0.05401315540075302, 0.061938412487506866, 0.02437831088900566, -0.06823863834142685, 0.03685877099633217, 0.02961423434317112, -0.04944299906492233, -0.1271103173494339, 0.030452819541096687, 0.019848955795168877, -0.03185190260410309, 0.06586895883083344, 0.0007315169204957783, 0.010839227586984634, -0.09547370672225952, -0.01799146644771099, -0.02204788289964199, 0.048699937760829926, 0.004187166225165129, 0.004053634125739336, -0.04464051127433777, -0.005158414598554373, -0.0416896678507328, -0.024279240518808365, -0.05358913540840149, -0.04719633609056473, -0.07180647552013397, 0.02559211477637291, 0.04657098650932312, 0.08353757858276367, -0.0023563469294458628, 0.046847302466630936, -0.03508693352341652, 0.0696689784526825, 0.054716791957616806, -0.012037037871778011, 0.019885245710611343, 0.01824580691754818, -0.06719563156366348, -0.05447190999984741, 0.08877509087324142, -0.01375679112970829, -0.014463561587035656, -0.049798283725976944, 0.06304343044757843, -0.007584648672491312, -0.016156170517206192, 0.024602508172392845, 0.004940119571983814, -0.04088609293103218, 0.0026271860115230083, 0.00787595845758915, -0.01889132149517536, -0.041029710322618484, 0.07343143969774246, -0.02505693957209587, -0.04825644940137863, 0.060728199779987335, 0.00460366066545248, 0.020744791254401207, 0.04238201677799225, -0.024090539664030075, -0.05792662873864174, 0.07639332860708237, -0.07511764764785767, -0.08259762078523636, 0.07901840656995773, -0.000285966758383438, 0.021390466019511223, -0.07818973809480667, -0.02385067008435726, -0.0014113716315478086, -0.055170729756355286, 0.00946732610464096, 0.02471417747437954, 0.07941421121358871, 0.006746167317032814, -0.06766024231910706, -0.089698426425457, 0.01933225803077221, -0.06994582712650299, -0.10149082541465759, 0.06007266044616699, -0.14545120298862457, -0.03447172790765762, 0.03258124738931656, 0.04966919496655464, 0.023691890761256218, -0.014501980505883694, 0.05896589905023575, 0.04760534316301346, -0.017742110416293144, 0.0019451226107776165, -0.01854461058974266, -0.04744676500558853, -0.017504630610346794, 0.05197983980178833],
+ "FLDCW":[-0.0138143515214324, 0.021748993545770645, 7.070673746056855e-05, -0.0897645577788353, 0.09824047237634659, -0.07988506555557251, -0.03454058617353439, 0.0019847718067467213, 0.04983500763773918, 0.03934836760163307, -0.01007675752043724, -0.07798215001821518, -0.08095540851354599, 0.002752745756879449, 0.030696945264935493, 0.017224561423063278, 0.00200466881506145, 0.055515315383672714, -0.06178406998515129, -0.07683275640010834, 0.06503588706254959, 0.06047344580292702, 0.017141321673989296, -0.021984437480568886, -0.05550537258386612, -0.10371828079223633, 0.04531969875097275, 0.04299109801650047, 0.008607891388237476, -0.015554985031485558, -0.08462150394916534, 0.01943030022084713, -0.03486369550228119, -0.06457459926605225, -0.0051103211008012295, 0.05992105230689049, 0.0358397401869297, -0.04655934497714043, -0.018018357455730438, -0.057540085166692734, 0.0061888862401247025, -0.013676634058356285, -0.05362136662006378, 0.06076344475150108, 0.014500541612505913, 0.04466172680258751, 0.025775697082281113, 0.034106262028217316, -0.045596618205308914, 0.022729532793164253, 0.0068075573071837425, 0.033541467040777206, 0.04034329950809479, -0.05922241508960724, -0.11147011071443558, 0.10801365971565247, 0.028543133288621902, -0.076783187687397, 0.0018997815204784274, -0.030598029494285583, 0.04199691861867905, -0.09739390015602112, 0.06310229748487473, -0.03830089420080185, -0.03836864233016968, 0.02324736677110195, 0.10289694368839264, -0.08237223327159882, 0.09511970728635788, -0.022883199155330658, 0.07018155604600906, 0.021149639040231705, 0.06003378704190254, 0.020026177167892456, -0.019267164170742035, 0.06961971521377563, -0.004955677315592766, -0.07218261808156967, 0.08104820549488068, -0.0418921560049057, -0.0317075252532959, 0.020996741950511932, -0.009143776260316372, 0.05348548665642738, -0.0625229999423027, -0.06267517060041428, -0.09454416483640671, -0.043331023305654526, -0.06992270052433014, -0.027888890355825424, -0.08271876722574234, -0.05188243091106415, -0.010446823202073574, 0.05846165865659714, -0.010190286673605442, -0.03009830228984356, 0.03426814824342728, -0.03598400205373764, -0.1076725572347641, -0.028831692412495613],
+ "FNSTCW":[-0.08537304401397705, 0.014420966617763042, 0.026950713247060776, -0.008387862704694271, -0.0038766334764659405, 0.026867343112826347, -0.030130255967378616, -0.04617878049612045, -0.007106459699571133, -0.0215947013348341, 0.007403566502034664, 0.032729458063840866, 0.0008728280663490295, -0.017559584230184555, 0.017324298620224, -0.014857987873256207, -0.03798896074295044, -0.05294371768832207, 0.05491216480731964, -0.04219334200024605, -0.024796022102236748, 0.033826109021902084, 0.04021430388092995, 0.015585671178996563, -0.025553781539201736, -0.011536196805536747, 0.021523986011743546, 0.01087264809757471, -0.023965656757354736, 0.021311553195118904, -0.0554395355284214, -9.890173532767221e-05, -0.0012819130206480622, -0.055725399404764175, 0.008443817496299744, 0.014645406976342201, 0.09493250399827957, 0.005851465743035078, -0.0346904918551445, -0.018780557438731194, -0.0024646760430186987, -0.04922417551279068, -0.025316428393125534, -0.047623440623283386, 0.04252983629703522, 0.008884137496352196, 0.024444259703159332, 0.11018849164247513, 0.06603030860424042, 0.10775407403707504, -0.06696148216724396, 0.07046543061733246, 0.03569186478853226, 0.06831049919128418, 0.10069368779659271, -0.07917457073926926, 0.07819988578557968, 0.0325605608522892, 0.028253860771656036, -0.03586380183696747, 0.08094784617424011, -0.08532348275184631, 0.08135068416595459, 0.08752897381782532, 0.07736475020647049, 0.03881741315126419, 0.01930568367242813, 0.01373430248349905, 0.07003094255924225, 0.021482432261109352, 0.0606292188167572, 0.005889599211513996, -0.06958997994661331, 0.04857232794165611, 0.09418252855539322, 0.030624384060502052, -0.05853968486189842, 0.0978643149137497, 0.042890243232250214, -0.06594833731651306, -0.00445757107809186, 0.028062766417860985, 0.04270890727639198, 0.049651019275188446, -0.10246159136295319, -0.04101993143558502, -0.06874924898147583, -0.047776881605386734, 0.060615722090005875, 0.022016024217009544, -0.0476866140961647, -0.09320542216300964, -0.06186588481068611, 0.030679777264595032, -0.01664678566157818, -0.02508559450507164, -0.0495455376803875, 0.02986457757651806, 0.0242463406175375, -0.03076062723994255],
+ "FrameIndex":[0.05219179764389992, -0.01926516741514206, -0.021848104894161224, -0.008528115227818489, 0.02989117242395878, -0.012461756356060505, -0.050973404198884964, 0.026713935658335686, 0.01968700997531414, -0.001058116089552641, 0.009182002395391464, 0.03877940773963928, 0.070717453956604, -0.0028735792730003595, 0.0528000183403492, -0.015265910886228085, 0.007753959856927395, 0.01596899703145027, -0.07933179289102554, -0.02578687109053135, 0.02417992427945137, -0.03462255373597145, 0.04385964199900627, 0.004388607107102871, 0.03716951236128807, 0.04064105078577995, 0.07711678743362427, 0.0068300217390060425, -0.05443308874964714, -0.010809220373630524, -0.03124961629509926, 0.004911563824862242, -0.09201066941022873, 0.051436200737953186, 0.015400445088744164, 0.07804328948259354, -0.02971532940864563, -0.0003241244703531265, -0.02131350338459015, -0.09173687547445297, -0.01707594096660614, 0.0025449323002249002, 0.08701702952384949, 0.10675988346338272, -0.05082142353057861, 0.021581847220659256, -0.04104776680469513, 0.08402986079454422, -0.06109907105565071, 0.015201682224869728, 0.04374992102384567, -0.028573378920555115, -0.07767742872238159, 0.07216905802488327, 0.020538095384836197, -0.01229778677225113, 0.003033912740647793, -0.0007747758063487709, -0.09185474365949631, -0.02851664461195469, -0.009441743604838848, 0.05500328913331032, -0.002983751241117716, -0.09198789298534393, -0.051319632679224014, -0.054626885801553726, -0.020108554512262344, 0.0010591084137558937, -0.009138713590800762, 0.07223176956176758, -0.022099260240793228, 0.016025206074118614, -0.05320229008793831, 0.025131219998002052, 0.06626036763191223, 0.07639450579881668, -0.027084894478321075, 0.06581225991249084, -0.017618829384446144, -0.03859466314315796, -0.03385398909449577, 0.018783841282129288, -0.0730312392115593, 0.06957981735467911, -0.03065340407192707, 0.020685074850916862, -0.05311165004968643, 0.09466810524463654, 0.00955914705991745, -0.013919183053076267, -0.05540250986814499, -0.03087283857166767, -0.009688221849501133, 0.016239993274211884, -0.012926830910146236, -0.027712060138583183, -0.06342892348766327, -0.011996395885944366, 0.05536693334579468, -0.04359230771660805],
+ "FsFLD":[-0.0508677139878273, -0.05399654433131218, -0.07149481028318405, -0.047971777617931366, 0.0019320917781442404, -0.007547610439360142, 0.0815814733505249, -0.12202084064483643, -0.08665104955434799, 0.03356856107711792, -0.15713559091091156, -0.0400867722928524, -0.006232412997633219, 0.044278621673583984, 0.09549921005964279, -0.029399411752820015, 0.01864752173423767, -0.04044967144727707, 0.05652021989226341, -0.09881851822137833, 0.025765251368284225, -0.02329906076192856, -0.06028103083372116, 0.09247462451457977, -0.04210466891527176, 0.03263019770383835, -0.03578515350818634, 0.0314578041434288, 0.003650028258562088, 0.04645871743559837, -0.010650137439370155, 0.015904754400253296, 0.018990037962794304, -0.005266033578664064, 0.038479309529066086, 0.008642041124403477, -0.049301791936159134, 0.09484748542308807, 0.005372038576751947, -0.08711376041173935, 0.07584445923566818, 0.09458201378583908, -0.00032702009775675833, 0.048093944787979126, -0.08043119311332703, 0.049779392778873444, -0.006967591121792793, -0.07319328933954239, 0.01582382619380951, -0.006244257558137178, -0.011940727941691875, -0.0013992231106385589, -0.028953444212675095, 0.010995968244969845, -0.005534093361347914, -0.04907146096229553, -0.0039899349212646484, 0.05501222237944603, 0.041574396193027496, 0.030038336291909218, -0.0402531623840332, 0.07675039023160934, 0.01103806123137474, -0.006072944961488247, -0.025336718186736107, 0.06967771798372269, -0.025075508281588554, 0.0031819106079638004, -0.015812508761882782, -0.12114851176738739, 0.07704214751720428, 0.1273191273212433, -0.014406625181436539, -0.031106390058994293, -0.0602225735783577, 0.016253838315606117, -0.059025105088949203, -0.04163780063390732, 0.01571997068822384, 0.025686416774988174, 0.032261066138744354, -0.016690189018845558, 0.014042876660823822, 0.009416786953806877, -0.012661219574511051, 0.013285082764923573, 0.03095356747508049, 0.008239349350333214, 0.0444798618555069, -0.05153216794133186, -0.010029821656644344, -0.015202880837023258, 0.06329496204853058, -0.0590473897755146, 0.08585292845964432, -0.08594027906656265, 0.06057215481996536, 0.01079416275024414, -0.04006461799144745, 0.029236430302262306],
+ "GlobalAddress":[0.021709734573960304, -0.03253590315580368, -0.04603651538491249, -0.02350226789712906, 0.02841794677078724, 0.01920732669532299, 0.053104616701602936, 0.03941836208105087, -0.01895466446876526, -0.030471740290522575, 0.010719750076532364, 0.020050356164574623, 0.03648754581809044, -0.021573888137936592, -0.02554452419281006, -3.637039117165841e-05, 0.05989491194486618, -0.006903402041643858, -0.08826262503862381, -0.028047384694218636, -0.04230065643787384, -0.05190899223089218, 0.06145390123128891, 0.0005839569494128227, -4.391977927298285e-05, -0.01880771853029728, 0.09660127758979797, 0.04333353415131569, 0.06461602449417114, -0.06010710820555687, -0.0690189078450203, 0.04574553668498993, -0.07640431076288223, 0.01879746839404106, 0.02076675370335579, 0.04869573190808296, 0.025147439911961555, 0.05311164632439613, 0.05711919441819191, 0.049520380795001984, 0.041169121861457825, -0.0603964701294899, -0.04195070639252663, 0.07676130533218384, -0.015161959454417229, 0.02903268299996853, -0.027548301964998245, 0.04705912992358208, -0.11194053292274475, -0.008245207369327545, -0.07792827486991882, -0.019468743354082108, 0.05482499673962593, -0.0028855702839791775, 0.05478052794933319, 0.07484771311283112, -0.011742575094103813, 0.00923923309892416, -0.05074375122785568, 0.06956734508275986, -0.045990440994501114, 0.007280972320586443, 0.040920473635196686, -0.09143709391355515, -0.06105270981788635, -0.0021254979074001312, -0.09519167989492416, 0.06324268877506256, -0.0693386048078537, -0.05100148543715477, 0.010643817484378815, -0.008162467740476131, -0.08811189234256744, -0.08640385419130325, 0.0077143507078289986, 0.030832089483737946, -0.01504515577107668, 0.07277517020702362, 0.02581198327243328, -0.052599068731069565, -0.06478387117385864, 0.01634707674384117, -0.021173706278204918, 0.030482977628707886, -0.09826494008302689, 0.07716016471385956, -0.10845024883747101, 0.04479274898767471, -0.015128640457987785, -0.03491876646876335, 0.05239150673151016, -0.03427724912762642, 0.06768845021724701, -0.04174086079001427, -0.05136744678020477, 0.0037109211552888155, -0.030324269086122513, -0.06928850710391998, -0.0395960658788681, 0.07726000994443893],
+ "IDIV":[-0.03631015121936798, -0.07882149517536163, -0.010781447403132915, -0.025117948651313782, 0.01618420146405697, 0.044446997344493866, 0.011386583559215069, -0.00582836102694273, -0.012903614901006222, 0.006322081200778484, -0.07392880320549011, -0.1300479620695114, -0.05186808854341507, -0.06542935222387314, 0.08297666162252426, 0.03790606930851936, -0.07716395705938339, 0.02288512885570526, -0.038660015910863876, -0.04705967381596565, -0.00015759489906486124, -0.06133948266506195, -0.022438891232013702, -0.012017307803034782, 0.01929904706776142, 0.007114879786968231, 0.00567955756559968, -0.041199274361133575, 0.08304950594902039, 0.044402915984392166, -0.10634922981262207, -0.009510381147265434, 0.009772839024662971, -0.048219580203294754, -0.0321214459836483, 0.008684953674674034, 0.009846106171607971, 0.011280585080385208, 0.0310650784522295, 0.05677618831396103, 0.025418052449822426, -0.022629115730524063, 0.0074129728600382805, 0.1081111952662468, -0.03284893184900284, 0.002745774807408452, 0.05030296742916107, 0.04322626441717148, 0.005321172997355461, 0.03260405734181404, -0.051505692303180695, -0.033541131764650345, -0.03955534100532532, 0.047906432300806046, 0.02181984856724739, -0.0026405092794448137, 0.03350621834397316, -0.10710552334785461, -0.01533215120434761, -0.06872875243425369, -0.015413723886013031, -0.007149300072342157, -0.03660491481423378, -0.003503897227346897, -0.02898445539176464, 0.040071532130241394, 0.019684670493006706, -0.10101661086082458, -0.08199643343687057, 0.05637385696172714, -0.03792939707636833, 0.03106122836470604, -0.0590706542134285, -0.03607700765132904, -0.09597010910511017, -0.005815848242491484, 0.017992950975894928, 0.0007907312246970832, 0.04653536528348923, -0.03997295722365379, 0.006737773306667805, 0.11695551127195358, 0.022216010838747025, 0.041878726333379745, -0.035456813871860504, 0.04327021911740303, -0.03799387812614441, 0.10658515244722366, 0.010188632644712925, 0.09275273978710175, 0.09797771275043488, -0.12400814890861511, 0.03475511074066162, -0.08061601221561432, 0.022533612325787544, -0.11562027782201767, -0.026964085176587105, 0.08614259958267212, -0.025526022538542747, 0.040927182883024216],
+ "ILD_Fp":[0.01509383600205183, -0.044326793402433395, -0.051242612302303314, -0.053859174251556396, -0.013097256422042847, -0.06370041519403458, 0.06120477616786957, 0.050328709185123444, -0.04184471070766449, 0.023432370275259018, -0.06435256451368332, 0.02055867575109005, 0.08239544183015823, 0.012251744978129864, -0.05063817650079727, 0.04293346777558327, -0.05919358506798744, -0.03159564360976219, -0.0037220751401036978, -0.001002405071631074, -0.026786377653479576, -0.07405146211385727, 0.044357798993587494, 0.08067265897989273, -0.05229390412569046, -0.06903751194477081, 0.010448710061609745, 0.006885232869535685, -0.052135784178972244, 0.08535145968198776, 0.041820794343948364, -0.020588336512446404, 0.07256042212247849, -0.017755955457687378, -0.032768987119197845, 0.06633710861206055, -0.03427698463201523, -0.10930930078029633, 0.05371936410665512, -0.06794329732656479, -0.014769122004508972, -0.07577606290578842, 0.07853815704584122, -0.09360899031162262, 0.05865737050771713, -0.034065186977386475, 0.05096115916967392, 0.0888199508190155, -0.03904300555586815, 0.03125728294253349, -0.0634637326002121, 0.03385297581553459, 0.027269205078482628, -0.07597903162240982, 0.008366324007511139, -0.03017764538526535, 0.011727942153811455, -0.04941355064511299, 0.027957690879702568, 0.09743025153875351, 0.004836047999560833, -0.028614182025194168, 0.016423141583800316, 0.0895770713686943, 0.025168858468532562, 0.030979957431554794, 0.016665387898683548, 0.025412173941731453, -0.035893514752388, -0.05403519794344902, 0.02931641787290573, 0.07742571830749512, -0.07045850157737732, -0.03433118015527725, -0.03651195392012596, -0.04036823660135269, -0.08663841336965561, 0.05561026185750961, 0.06927209347486496, -0.010819001123309135, -0.10697789490222931, 0.009881369769573212, 0.055065181106328964, -0.06379911303520203, 0.04137800633907318, 0.030417418107390404, -0.03515362739562988, -0.09139228612184525, 0.029920026659965515, 0.027388064190745354, -0.06739232689142227, 0.07639766484498978, -0.044223885983228683, 0.02472294308245182, -0.052025098353624344, 0.014643780887126923, 7.120784721337259e-05, 0.018760213628411293, -0.002873474732041359, 0.015561423264443874],
+ "IMPLICIT_DEF":[-0.026583483442664146, -0.03995991870760918, 0.03633055090904236, -0.04622741788625717, -0.02326572686433792, 0.02231338992714882, -0.014788332395255566, -0.09906739741563797, 0.022785643115639687, -0.014632754027843475, -0.1041543111205101, 0.05013664439320564, -0.08690599352121353, -0.08063319325447083, 0.030247388407588005, -0.09707676619291306, 0.03499408811330795, 0.012669776566326618, 0.06481463462114334, -0.040453050285577774, -0.0489707849919796, -0.07584276050329208, 0.001047363504767418, 0.08496157824993134, 0.02357148937880993, -0.06866959482431412, 0.09267362207174301, 0.030527250841259956, -0.031355831772089005, 0.02419896423816681, -0.02442512847483158, 0.029297800734639168, 0.10321355611085892, 0.06579483300447464, -0.012722077779471874, 0.10042434185743332, -0.004708406049758196, 0.007217984646558762, 0.0753282904624939, -0.07088368386030197, -0.07383686304092407, 0.06410741060972214, 0.06312107294797897, 0.06989452987909317, 0.03766098991036415, -0.0008440924575552344, -0.023516006767749786, -0.04153933748602867, 0.07342316210269928, 0.05416297912597656, -0.02841850183904171, 0.04128013551235199, -0.001023625023663044, 0.005061942618340254, -0.06027042120695114, 0.025808431208133698, 0.027118714526295662, -0.08965771645307541, 0.012222534976899624, 0.008590211160480976, -0.01785023882985115, 0.03389652445912361, 0.0038459128700196743, 0.021088456735014915, -0.060241442173719406, 0.052924126386642456, -0.03849414363503456, 0.0044007860124111176, 0.05139085650444031, -0.06002991273999214, 0.026294095441699028, 0.06567239761352539, 0.1145782321691513, -0.02774081937968731, -0.07959162443876266, -0.00901349913328886, -0.09212079644203186, -0.016664501279592514, -0.019095804542303085, 0.05008011311292648, -0.016630882397294044, -0.007292845752090216, 0.01243519689887762, 0.011623953469097614, -0.0202464796602726, 0.08120717853307724, 0.04192841053009033, -0.014358888380229473, 0.0402902215719223, -0.05741799250245094, 0.0023748986423015594, -0.0007613254711031914, -0.11052780598402023, -0.08283583074808121, -0.018524790182709694, -0.09601832926273346, 0.037600427865982056, -0.06403559446334839, -0.08838459849357605, 0.01904650405049324],
+ "IMUL":[-0.010535774752497673, -0.05043460801243782, 0.022676505148410797, -0.042374491691589355, -0.04567180946469307, -0.0031189010478556156, -0.014529263600707054, -0.031207986176013947, -0.09211120009422302, -0.02836773358285427, 0.004317191895097494, 0.0663130134344101, 0.004968555644154549, -0.06648526340723038, -0.15765754878520966, -0.006753158289939165, -0.06470218300819397, 0.03983330354094505, -0.005138453096151352, -0.09063230454921722, 0.04077378660440445, -0.03673335909843445, -0.01663915440440178, 0.05073486268520355, -0.06640064716339111, -0.02497418038547039, 0.008780055679380894, 0.05423448979854584, -0.0037840171717107296, 0.01674821972846985, -0.048634953796863556, -0.015244722366333008, -0.03767208755016327, -0.0824664756655693, -0.049036990851163864, -0.013921119272708893, 0.005624192766845226, -0.009013738483190536, -0.008558795787394047, -0.006855058018118143, -0.05045744404196739, 0.036254823207855225, 0.042194437235593796, 0.07469572126865387, -0.02172011509537697, 0.08670775592327118, 0.035702720284461975, 0.028493845835328102, -0.05104183033108711, -0.02750440128147602, -0.05974655970931053, -0.03740637004375458, -0.12455979734659195, 0.07977206259965897, 0.005336480215191841, 0.010991470888257027, -0.005247980356216431, -0.020187167450785637, -0.0038734842091798782, -0.047042082995176315, 0.021638384088873863, -0.03751591593027115, -0.051218874752521515, 0.034568432718515396, -0.058768294751644135, -0.12909403443336487, -0.052070215344429016, 0.02523716911673546, -0.037399355322122574, 0.05267354100942612, -0.013950643129646778, 0.02134321816265583, -0.06339636445045471, 0.07043575495481491, -0.090413399040699, -0.026651713997125626, -0.10355070978403091, -0.0028446821961551905, -0.027254454791545868, 0.06895294785499573, 0.11052796989679337, -0.02953892946243286, -0.015065116807818413, 0.012490814551711082, -0.06179225444793701, -0.02852647751569748, 0.0054924157448112965, -0.0036965033505111933, 0.07704827934503555, -0.009549951180815697, 0.06281441450119019, 0.0735294297337532, 0.030978238210082054, 0.04693556949496269, -0.011379648931324482, -0.0004676558601204306, -0.0002934661752078682, 0.006143094040453434, 0.024292483925819397, 0.024941710755228996],
+ "INC":[-0.04204729199409485, -0.04558457434177399, -0.004308773670345545, 0.08560862392187119, -0.025844622403383255, -0.01385454647243023, -0.06715847551822662, 0.04059276729822159, 0.0008142509614117444, -0.04987747594714165, 0.05252164602279663, -0.07536070048809052, 0.012251293286681175, -0.01428443193435669, 0.028742481023073196, -0.024608345702290535, 0.009724774397909641, -0.024144234135746956, -0.04345421493053436, -0.03454094007611275, -0.03657921776175499, -0.025569358840584755, 0.04140102490782738, -0.02267373353242874, -0.05346262827515602, -0.07470668852329254, -0.03458420932292938, -0.015982985496520996, 0.013558092527091503, -0.029305797070264816, 0.026653757318854332, -0.00041234202217310667, 0.038508299738168716, 0.08509717136621475, 0.0016276738606393337, -0.013578594662249088, 0.05669381096959114, 0.0274334829300642, 0.023921431973576546, -0.02701006643474102, -0.09357035905122757, 0.07844959199428558, -0.03195708245038986, 0.044196177273988724, 0.017355425283312798, -0.04172753170132637, -0.07773707062005997, 0.018204662948846817, -0.07242465019226074, 0.07735569030046463, 0.03859752044081688, 0.08490721136331558, 0.04661087319254875, 0.015468046069145203, 0.02267235703766346, -0.030244702473282814, -0.043930262327194214, -0.015585970133543015, -0.004605699330568314, 0.0052457586862146854, -0.027553195133805275, -0.06406774371862411, 0.008009923622012138, -0.09624558687210083, 0.07006736844778061, 0.052846722304821014, -0.029392898082733154, -0.0659954622387886, -0.10725440829992294, 0.04428407922387123, 0.02606845460832119, 0.018936248496174812, -0.013534934259951115, 0.03338829427957535, -0.06049540638923645, 0.007389454171061516, 0.030835872516036034, -0.026952944695949554, -0.008518273010849953, 0.07688802480697632, 0.03663042560219765, -0.09961165487766266, -0.02765841968357563, 0.06263019144535065, -0.003026304766535759, -0.0023868512362241745, -0.052803706377744675, 0.04688272252678871, 0.08415349572896957, -0.044724639505147934, 0.01759890839457512, 0.022962408140301704, 0.00944716576486826, -0.084384024143219, -0.02845100499689579, -0.05094959959387779, -0.08001884073019028, 0.0449872724711895, -0.05161838233470917, 0.015422065742313862],
+ "INLINEASM":[0.09296883642673492, -0.007579821161925793, 0.05054628103971481, 0.0011402746895328164, -0.02369365282356739, -0.040429845452308655, 0.048763860017061234, -0.012725423090159893, -0.017820369452238083, -0.0700153335928917, -0.00037883210461586714, 0.06301063299179077, 0.0503254272043705, 0.023893356323242188, -0.07308998703956604, 0.058056626468896866, -0.002504807896912098, -0.03528450429439545, -0.0775352418422699, -0.08423604816198349, 0.01841139607131481, 0.07128658145666122, 0.01363592129200697, 0.05391324311494827, 0.04803359508514404, 0.06145099550485611, -0.03153276443481445, 0.019207997247576714, 0.07138897478580475, 0.06972941011190414, 0.06482893973588943, -0.019937975332140923, -0.00694684125483036, 0.0624234639108181, 0.08495642989873886, 0.017590269446372986, -0.0075670769438147545, 0.05114367976784706, 0.031221428886055946, -0.07108655571937561, -0.018287384882569313, 0.035706836730241776, -0.0794610008597374, -0.03627452626824379, -0.06174106150865555, -0.036826081573963165, -0.030408767983317375, 0.008271732367575169, -0.09423738718032837, 0.004248321522027254, 6.044749170541763e-05, 0.011095447465777397, -0.10245273262262344, -0.07278212904930115, -0.00845671258866787, 0.008961541578173637, 0.019341865554451942, 0.010205359198153019, 0.0724569708108902, -0.08050914853811264, -0.057010360062122345, 0.05053231865167618, -0.04844024032354355, 0.057458631694316864, 0.007486356887966394, -0.029497744515538216, 0.009812748059630394, -0.05314056575298309, 0.11012034863233566, -0.0647352784872055, 0.017479702830314636, -0.027027146890759468, -0.015448061749339104, 0.06321517378091812, -0.06948030740022659, 0.030430838465690613, -0.022251488640904427, -0.0358838327229023, 0.020705783739686012, -0.10970951616764069, -0.07724311202764511, 0.03224516287446022, 0.004828427918255329, 0.07738938182592392, -0.0036471053026616573, 0.06867322325706482, -0.07092054188251495, -0.024759342893958092, -0.054835252463817596, 0.019259851425886154, 0.011149682104587555, -0.09652992337942123, 0.050764426589012146, -0.0809553936123848, -0.04605351760983467, 0.0399462915956974, 0.05396333709359169, -0.01706104166805744, -0.031266387552022934, 0.020599452778697014],
+ "IST_Fp":[-0.046584248542785645, -0.07452045381069183, 0.03998621925711632, 0.03091888502240181, 0.016272397711873055, -0.00985297653824091, -0.007199955638498068, -0.03536335751414299, 0.01673988439142704, 0.07562774419784546, 0.023876583203673363, -0.008683494292199612, 0.04009688273072243, -0.03663905709981918, -0.014492983929812908, 0.07349997758865356, 0.028999919071793556, -0.07499339431524277, -0.03727814927697182, -0.046455491334199905, -0.032447993755340576, 0.02374599315226078, -0.044662121683359146, -0.025333719328045845, 0.037562429904937744, 0.0006656686891801655, -0.00804421491920948, 0.06697870045900345, 0.04367857426404953, -0.0583018884062767, 0.03050180710852146, 0.053111929446458817, -0.04168881103396416, -0.027295507490634918, 0.057777389883995056, 0.08833678811788559, -0.026598922908306122, 0.005393106956034899, -0.05517015606164932, -0.0731138065457344, 0.07386088371276855, -0.07228095829486847, 0.023828018456697464, -0.0025013380218297243, -0.012031037360429764, 0.029700662940740585, -0.101964570581913, 0.0899822935461998, 0.013285316526889801, 0.002607472240924835, 0.04784732311964035, -0.044669900089502335, -0.04348702356219292, -0.07007527351379395, -0.016267215833067894, 0.059609103947877884, -0.036534957587718964, 0.013465121388435364, 0.10186120122671127, 0.015473871491849422, -0.08443709462881088, -0.004981503821909428, 0.06996916979551315, 0.011159068904817104, -0.07315052300691605, 0.024891534820199013, 0.0426689088344574, 0.008847315795719624, -0.06540054082870483, -0.09095568209886551, 0.053956128656864166, -0.010535894893109798, 0.035168495029211044, 0.04921877756714821, -0.07781729847192764, 0.006958760786801577, -0.05714801698923111, -0.06458019465208054, -0.055241748690605164, -0.007552466355264187, -0.02490214817225933, -0.014270482584834099, 0.03710750862956047, 0.003406278323382139, -0.044638775289058685, -0.09159127622842789, -0.025353819131851196, -0.07952282577753067, -0.02874225378036499, -0.06654132902622223, 0.0031955954618752003, 0.0602104589343071, -0.09261002391576767, -0.06175351142883301, 0.01194009743630886, -0.0348934531211853, 0.04460763558745384, -0.08773446083068848, 0.04335169121623039, 0.054603610187768936],
+ "Immediate":[-0.039664868265390396, 0.028720445930957794, -0.057207897305488586, 0.04179477319121361, 0.04477043077349663, 0.020050648599863052, -0.056656818836927414, -0.025030966848134995, -0.04394019395112991, 0.04849115386605263, 0.012325904332101345, 0.06731707602739334, 0.04568001255393028, -0.04773757979273796, -0.012142524123191833, -0.03986259177327156, -0.027249159291386604, -0.04930245876312256, -0.10542229562997818, -0.05678592994809151, -0.038303568959236145, -0.07283245027065277, 0.0217409897595644, -0.01139344647526741, 0.006936497986316681, -0.04702157527208328, 0.09977010637521744, -0.035237088799476624, 0.028822069987654686, -0.0691431537270546, -0.0829710066318512, -0.1289154589176178, -0.08470306545495987, -0.06731563061475754, 0.06642980873584747, 0.026025734841823578, -0.04049745202064514, 0.030080674216151237, 0.04203929752111435, 0.06834205985069275, 0.04315062239766121, 0.00788890291005373, 0.03426999971270561, 0.08819636702537537, 0.004112098831683397, 0.03392210975289345, 0.010541473515331745, 0.08045777678489685, -0.02914009988307953, 0.0624285452067852, 0.03299122676253319, -0.05355033650994301, -0.07568570226430893, 0.08106201142072678, 0.0376802459359169, -0.04886564612388611, -0.10992937535047531, -0.00761816743761301, -0.014918084256350994, 0.03816765174269676, -0.04981819912791252, 0.00031993765151128173, 0.011382698081433773, -0.029902901500463486, -0.0117422454059124, -0.057965945452451706, -0.09519924223423004, 0.020727403461933136, -0.04526710882782936, 0.09883677959442139, 0.018033087253570557, -0.003035350237041712, -0.06968960911035538, -0.09893210977315903, -0.01264366414397955, 0.017397744581103325, -0.08519260585308075, 0.09382850676774979, -0.055508699268102646, -0.026548130437731743, -0.013868317008018494, -0.03162496164441109, 0.06089535728096962, -0.01583624631166458, -0.060260944068431854, 0.06709896773099899, -0.09333796799182892, -0.02887417934834957, -0.03424007445573807, -0.01687423326075077, 0.11968979239463806, -0.08361987769603729, 0.09037765115499496, -0.04322688281536102, -0.040831610560417175, -0.061376459896564484, -0.03485504537820816, 0.016033072024583817, 0.004106835462152958, -0.03354674205183983],
+ "Int_MemBarrier":[0.0418969988822937, -0.06285926699638367, -0.018717624247074127, -0.0031687396112829447, 0.04023218899965286, 0.08492552489042282, -0.06942103803157806, 0.005588027182966471, -0.08964942395687103, 0.055396437644958496, -0.06732998788356781, 0.06981600075960159, -0.05258888751268387, -0.06051918491721153, 0.02948639541864395, -0.04473342001438141, 0.01574157550930977, -0.04423875734210014, -0.053338322788476944, 0.008577392436563969, 0.10632415115833282, 0.040030092000961304, 0.02552260458469391, 0.026821544393897057, -0.05510386824607849, 0.05976655334234238, -0.0008300095796585083, 0.06861157715320587, -0.049591872841119766, -0.07650840282440186, -0.004643433261662722, -0.03990425914525986, 0.06366871297359467, -0.014906020835042, -0.06371121108531952, 0.0194997675716877, -0.07784571498632431, 0.029953552410006523, 0.06530797481536865, -0.09173597395420074, 0.021494632586836815, 0.052978403866291046, -0.001283245743252337, -0.05061378329992294, 0.04639996960759163, 0.06478390842676163, -0.015909312292933464, 0.013739313930273056, -0.06675873696804047, -0.0704226866364479, 0.020883914083242416, 0.07323179394006729, -0.0010066484101116657, -0.002373248105868697, -0.07056596130132675, 0.024577656760811806, 0.04880139231681824, -0.038608577102422714, 0.07695038616657257, 0.002806240925565362, 0.006876204162836075, 0.006961337756365538, 0.059363361448049545, 0.021191507577896118, -0.06366844475269318, -0.015020458959043026, -0.0815785601735115, 0.004222068004310131, -0.07691111415624619, 0.02711009606719017, 0.014720573090016842, 0.022912023589015007, 0.05272422730922699, 0.08111070841550827, -0.018083568662405014, -0.0418405644595623, 0.08496879786252975, -0.04420621693134308, 0.090696781873703, -0.02872851863503456, -0.024066468700766563, 0.07789512723684311, -0.012021118775010109, 0.041637614369392395, 0.07615016400814056, -0.042834896594285965, 0.05792360380291939, -0.051077719777822495, -0.05241186544299126, 0.006270663347095251, -0.008865885436534882, -0.09101007878780365, 0.009276151657104492, 0.036050815135240555, -0.06729964166879654, -0.014552133157849312, -0.06943532824516296, -0.023805340752005577, -0.058313168585300446, -0.04949163272976875],
+ "JCC_":[-0.03625413775444031, -0.041811503469944, -0.07486920803785324, -0.05052778869867325, 0.021635157987475395, -0.045879144221544266, 0.014834613539278507, -0.03941917419433594, -0.010327291674911976, -0.08194752782583237, 0.049111511558294296, 0.05970187485218048, 0.03878019377589226, -0.08208157867193222, 0.11816514283418655, -0.0021148237865418196, 0.022616155445575714, 0.02145639806985855, -0.056387223303318024, -0.07890307158231735, 0.049655016511678696, -0.09555239230394363, -0.07599814981222153, 0.04143097624182701, -0.029399001970887184, 0.01379090640693903, 0.04894237220287323, 0.04915700852870941, 0.020924754440784454, 0.11983200162649155, -0.045743830502033234, 0.04826069250702858, 0.06473162770271301, 0.032176557928323746, 0.012342192232608795, 0.03632035106420517, -0.011231182143092155, 0.03319219872355461, 0.012383898720145226, 0.017726020887494087, -0.027707353234291077, 0.052987076342105865, -0.06459034234285355, 0.03180805966258049, 0.038370322436094284, -0.018640436232089996, -0.05121193453669548, -0.052741218358278275, 0.0953487753868103, 0.0914265364408493, 0.08409767597913742, -0.009599939920008183, 0.02045055478811264, 0.009363643825054169, -0.00872961338609457, -0.08178623765707016, -0.008178372867405415, -0.005903102457523346, 0.05836755037307739, 0.011602274142205715, -0.02761419117450714, 0.016957316547632217, 0.04471946507692337, 0.005247261840850115, -0.05416998639702797, 0.00770663283765316, -0.06152857095003128, 0.021657155826687813, -0.04485960677266121, -0.0008541923016309738, 0.053551655262708664, 0.062185727059841156, -0.012641278095543385, -0.020507624372839928, -0.02900690771639347, 0.019629495218396187, 0.05620177462697029, -0.07772354781627655, -0.025509009137749672, 0.01923682540655136, 0.03035508468747139, 0.018665296956896782, 0.013450516387820244, 0.06740278005599976, 0.013274379074573517, 0.011593983508646488, 0.02331095188856125, 0.048694003373384476, 0.05861792340874672, -0.021130137145519257, 0.02437412552535534, 0.059087324887514114, 0.024816056713461876, -0.050772879272699356, -0.01114521361887455, -0.028665395453572273, -0.09630053490400314, 0.0039062038995325565, -0.08236120641231537, 0.019473683089017868],
+ "JMP":[-0.021766331046819687, -0.021576769649982452, -0.03795000538229942, 0.10449998080730438, -0.037742577493190765, -0.009156269021332264, 0.015289359726011753, 0.03519408404827118, -0.034353505820035934, 0.03226960077881813, 0.07340928167104721, 0.06086661294102669, 0.05736850947141647, -0.01725650765001774, -0.06702736765146255, -0.014972181059420109, 0.03435607627034187, 0.012023050338029861, 0.03370668366551399, -0.022338073700666428, -0.08280093967914581, -0.08060947060585022, 0.012210523709654808, -0.08165933936834335, 0.0016056479653343558, 0.015586943365633488, 0.11792927235364914, 0.06917431950569153, 0.02870137430727482, 0.01961304247379303, -0.027661900967359543, 0.10504695773124695, -0.03640349581837654, -0.01896090805530548, -0.011636625044047832, -0.04474593698978424, -0.029941411688923836, -0.058342345058918, 0.05885041877627373, 0.05553867667913437, 0.03953809291124344, 0.06787443161010742, 0.002061075298115611, 0.027305128052830696, 0.05792280659079552, 0.08001891523599625, 0.026575665920972824, -0.0171738862991333, -0.010685772635042667, -0.05422135442495346, 0.03660969436168671, 0.03091355785727501, -0.05900857225060463, 0.08500046283006668, -0.08218419551849365, 0.061078935861587524, 0.018783383071422577, 0.047520000487565994, -0.00014930205361451954, 0.002577823819592595, -0.06816059350967407, 0.041743114590644836, 0.03372296690940857, 0.016127480193972588, -0.07235685735940933, 0.024466760456562042, -0.03468412905931473, 0.037008773535490036, -0.060657840222120285, 0.016427740454673767, 0.08229042589664459, -0.061172664165496826, -0.009794612415134907, -0.024358782917261124, -0.06573519110679626, 0.09360098838806152, -0.07428182661533356, -0.02529928646981716, 0.09198813885450363, 0.025180503726005554, 0.03200048953294754, 0.018081925809383392, 0.0034776402171701193, 0.07848992198705673, -0.00043209362775087357, -0.01768604852259159, -0.043686315417289734, 0.04550321400165558, 0.11878672987222672, -0.008190528489649296, 0.003286525374278426, 0.06845948845148087, 0.04892893135547638, -0.053277406841516495, -0.016919657588005066, 0.032096169888973236, 0.02839065156877041, -0.01713993400335312, -0.15167304873466492, -0.02013365738093853],
+ "JMP_":[-0.014233234338462353, -0.0260892603546381, -0.13750334084033966, -0.050227466970682144, -0.042988359928131104, -0.027947310358285904, 0.08639533072710037, -0.16317786276340485, -0.03907149285078049, -0.05328908935189247, -0.03975899517536163, 0.04182944446802139, -0.010540750809013844, -0.11645861715078354, -0.012753792107105255, 0.002367585664615035, -0.05188040807843208, 0.0033823091071099043, -0.01240340806543827, -0.06099176034331322, -0.0015601427294313908, -0.11171454191207886, -0.04928319901227951, 0.05990544706583023, 0.015553089790046215, 0.04499414563179016, -0.034520961344242096, 0.07318194955587387, 0.013978325761854649, 0.07317976653575897, -0.029100794345140457, -0.09544635564088821, 0.030067358165979385, 0.057544808834791183, 0.005057932808995247, 0.005621553864330053, -0.03627946600317955, -0.0391962006688118, 0.03113878332078457, -0.02958066016435623, 0.012381716631352901, 0.011978821828961372, 0.13839371502399445, 0.010590317659080029, 0.06677765399217606, 0.046147286891937256, -0.05033441260457039, -0.020135121420025826, 0.032657306641340256, -0.05044032260775566, 0.05499301478266716, 0.07406507432460785, -0.0011679750168696046, 0.000989275984466076, 0.029161963611841202, 0.02679276280105114, 0.024040302261710167, 0.0710899606347084, -0.0035478041972965, -0.03730632737278938, -0.014350024051964283, 0.1638166308403015, -0.10163120925426483, 0.02900329977273941, -0.05366139113903046, 0.07186686992645264, -0.041340481489896774, 0.0401119627058506, -0.002295189071446657, -0.07949572801589966, -0.011504769325256348, 0.10675538331270218, -0.012056156061589718, -0.00748586468398571, -0.039624687284231186, -0.03555607795715332, -0.06799864768981934, -0.04550764709711075, -0.03302829712629318, -0.008404256775975227, 0.10563746094703674, -0.026095328852534294, 0.07613116502761841, 0.02101682499051094, 0.018749620765447617, 0.0056787943467497826, 0.005889789201319218, 0.03994893655180931, 0.05512934923171997, -0.004684743471443653, -0.01083239447325468, 0.0003112686099484563, 0.024348445236682892, -0.02665846049785614, 0.0064091463573277, -0.02719639055430889, 0.11076066642999649, -0.0014569570776075125, 0.0050220787525177, 0.032427236437797546],
+ "JumpTableIndex":[-0.007416237145662308, 0.0038157713133841753, 0.05180662125349045, 0.03776901960372925, -0.011749244295060635, -0.02952706068754196, -0.06646136939525604, 0.02088487148284912, -0.001927916775457561, 0.018895410001277924, 0.0509350448846817, 0.057210080325603485, -0.0476078987121582, -0.00016809302906040102, -0.02341553010046482, -0.06734820455312729, 0.02047930844128132, 0.009282611310482025, 0.0038133300840854645, 0.0020261742174625397, -0.09253961592912674, 0.0766557827591896, -0.049570225179195404, -0.11510220915079117, -0.009570423513650894, -0.007274465169757605, 0.07750000059604645, 0.02489926479756832, -0.08297400176525116, 0.048176445066928864, 0.03797437995672226, 0.060842450708150864, 0.020265065133571625, -0.03559373319149017, 0.03493893891572952, -0.0036544676404446363, 0.010211148299276829, -0.06471849977970123, -0.034595828503370285, -0.05245388671755791, -0.0014119939878582954, 0.008752748370170593, -0.020637203007936478, 0.053244929760694504, 0.052053239196538925, 0.014706660993397236, 0.02803724631667137, -0.07983336597681046, 0.03106858767569065, 0.001688914722763002, -0.07647732645273209, -0.028148295357823372, -0.0528123639523983, 0.08006428182125092, -0.06398879736661911, -0.033476538956165314, 0.05217607319355011, -0.03093232959508896, 0.044230975210666656, 0.05123162269592285, -0.05225585401058197, 0.06976816058158875, -0.0014492797199636698, 0.03833283483982086, 0.08385992050170898, -0.04722217097878456, -0.00226160092279315, -0.027254855260252953, -0.09566919505596161, 0.02109321765601635, -0.032354824244976044, 0.08032239973545074, -0.046937450766563416, -0.004326784983277321, -0.026024870574474335, 0.12039119750261307, 0.1016048863530159, 0.06808122247457504, -0.012297546491026878, -0.06450799852609634, 0.015778351575136185, 0.012280710972845554, 0.04002666845917702, 0.04792468994855881, -0.06248988211154938, -0.054222140461206436, 0.018379682675004005, -0.0029111658222973347, 0.016062958166003227, 0.09880068898200989, 0.03846307471394539, 0.04975416138768196, 0.07305088639259338, -0.020941948518157005, -0.020897891372442245, 0.03872328996658325, -0.05682756006717682, 0.09583723545074463, 0.0028475294820964336, -0.05127262324094772],
+ "LCMPXCHG":[0.0649508610367775, -0.04321656376123428, 0.08405561745166779, -0.07786691188812256, -0.05277935788035393, 0.011031142435967922, -0.0015533932019025087, 0.08730415254831314, -0.004414519295096397, 0.04040057212114334, -0.005748671013861895, -0.013907546177506447, 0.1028006374835968, 0.09900037944316864, -0.06475479900836945, 0.024365412071347237, -0.0727076306939125, 0.06610138714313507, -0.026073187589645386, 0.08258920162916183, -0.007938066497445107, 0.07641425728797913, 0.10221290588378906, 0.029036179184913635, -0.024506229907274246, 0.00953623466193676, -0.03283938392996788, -0.07194274663925171, -0.023513879626989365, -0.017550935968756676, -0.037860531359910965, 0.042062658816576004, 0.0501263290643692, 0.02325640618801117, 0.0018605751683935523, 0.012687316164374352, -0.016979143023490906, -0.059858907014131546, -0.07078705728054047, 0.033630695194005966, 0.036799900233745575, -0.03821465000510216, -0.059619177132844925, -0.06309511512517929, 0.0019384543411433697, -0.053095221519470215, 0.00571654736995697, 0.07134073972702026, -0.02115899883210659, 0.021287376061081886, -0.04855392873287201, 0.0103003466501832, -0.008993818424642086, 0.05131004378199577, -0.0734843909740448, 0.017303360626101494, 0.008291462436318398, 0.046435531228780746, -0.055057018995285034, -0.05454597249627113, -0.009126733057200909, -0.0012434959644451737, -0.0846821740269661, -0.017736544832587242, -0.04779898375272751, 0.020568806678056717, -0.061118245124816895, -0.012131555937230587, 0.024907736107707024, -0.0161012914031744, -0.011221951805055141, -0.029136324301362038, 0.04336633160710335, -0.00514700124040246, 0.004810850135982037, 0.014044326730072498, -0.07381691038608551, -0.064864382147789, 0.041784100234508514, 0.06648915261030197, 0.038817185908555984, -0.03421948850154877, 0.019546108320355415, -0.00579161336645484, -0.06579872220754623, -0.01745537295937538, -0.07164284586906433, 0.032588109374046326, 0.009170422330498695, -0.08387100696563721, -0.04743993282318115, 0.05926872417330742, 0.03129392862319946, -0.012995549477636814, 0.007799868006259203, 0.036110181361436844, 0.01603531278669834, -0.09735894203186035, 0.014374110847711563, -0.023844046518206596],
+ "LD_Fp":[0.09850919246673584, 0.022097617387771606, -0.02880568616092205, 0.014175659976899624, -0.03401500731706619, -0.010281442664563656, -0.05501694604754448, -0.041856300085783005, 0.07016798853874207, -0.022585496306419373, -0.007230871357023716, 0.02143889106810093, 0.011802875436842442, -0.011940510012209415, 0.001225354615598917, -0.04420488327741623, 0.058923713862895966, 0.07726655155420303, -0.024950502440333366, -0.005545462481677532, 0.037338823080062866, -0.03718772903084755, 0.08340831100940704, 0.030300375074148178, -0.04332158342003822, -0.10117480903863907, -0.023774733766913414, 0.055412717163562775, 0.07188894599676132, 0.048699796199798584, 0.02051064558327198, -0.05177381634712219, 0.046848755329847336, 0.06421937793493271, 0.014812597073614597, 0.06599052250385284, 0.055128950625658035, 0.057206105440855026, 0.004570540506392717, 0.0006673894240520895, -0.04956628009676933, 0.018173960968852043, 0.009045585989952087, -0.09929032623767853, -0.0734606683254242, 0.009978558868169785, 0.016378602012991905, -0.0809779167175293, 0.028371425345540047, 0.07337132841348648, -0.0712965577840805, -0.07612331956624985, 0.023224541917443275, -0.01886812597513199, 0.049867402762174606, 0.04525093734264374, -0.04347287490963936, 0.04647829011082649, -0.020921878516674042, 0.055911704897880554, 0.0646883100271225, 0.043256886303424835, 0.012135359458625317, 0.06405725330114365, 0.04327752813696861, -0.06879010051488876, -0.02182726003229618, -0.030435195192694664, -0.04794333875179291, 0.03966866061091423, -0.05612926930189133, 0.061092350631952286, -0.047390542924404144, 0.06440525501966476, 0.07119303941726685, 0.036672186106443405, 0.039346762001514435, 0.05825766921043396, -0.05363740026950836, 0.026515239849686623, -0.021117106080055237, -0.061990927904844284, 0.06407181918621063, -0.02918284200131893, 0.06280291080474854, 0.05465791001915932, 0.025043612346053123, -0.015093226917088032, 0.0339696891605854, 0.039516378194093704, -0.005943501368165016, 0.037065502256155014, 0.0036617075093090534, -0.04032375290989876, -0.027956390753388405, -0.028206538408994675, 0.003602939657866955, 0.0015424611046910286, 0.03779160603880882, -0.012583530507981777],
+ "LEA":[-0.07203060388565063, -0.017553633078932762, 0.0402604416012764, -0.03958871215581894, -0.035693515092134476, 0.006020952947437763, 0.06661038845777512, -0.05565638095140457, -0.07512512803077698, 0.015386131592094898, 0.1531272977590561, 0.07126382738351822, -0.018143991008400917, 0.0798688530921936, -0.0836813896894455, -0.005903773941099644, -0.03920849785208702, 0.025672506541013718, -0.017640162259340286, -0.09243063628673553, 0.0272371768951416, 0.04267166927456856, -0.032052017748355865, 0.06952647119760513, -0.03414658084511757, 0.05041181296110153, 0.04035321623086929, 0.04639449715614319, -0.000271787925157696, 0.1057962104678154, -0.031690120697021484, 0.0785541757941246, -0.008634688332676888, 0.035989925265312195, -0.00988205149769783, -0.047323428094387054, -0.018978994339704514, -0.001277003320865333, -0.022872451692819595, -0.034365635365247726, -0.04628191888332367, 0.06221615523099899, 0.01957613043487072, 0.13219280540943146, 0.03662179410457611, 0.046082716435194016, 0.011469600722193718, -0.025702660903334618, -0.08428508788347244, -0.07941769808530807, -0.06742636859416962, 0.0873873308300972, 0.0038614647928625345, 0.02177446149289608, -0.004519546404480934, -0.06213155761361122, -0.011228920891880989, -0.12034870684146881, 0.008946738205850124, 0.009164049290120602, -0.02258075587451458, 0.016061170026659966, 0.0645158663392067, 0.03723616153001785, -0.06451661139726639, -0.005219440441578627, -0.055180057883262634, 0.015841009095311165, -0.01621314138174057, -0.09887613356113434, 0.04894544556736946, -0.07996354252099991, 0.0138346366584301, -0.04036646708846092, -0.07073907554149628, -0.019294722005724907, -0.08181063830852509, -0.002301511587575078, -0.03429428115487099, 0.04098176211118698, 0.0706806555390358, 0.020024126395583153, 0.043529968708753586, 0.060017164796590805, 0.003525135340169072, -0.029752371832728386, -0.021769365295767784, 0.03941021487116814, -0.002250884659588337, -0.08078912645578384, 0.015297000296413898, 0.026888463646173477, 0.048139896243810654, -0.04837239161133766, -0.036249756813049316, -0.027615496888756752, -0.15165935456752777, -0.03756902739405632, 0.015112340450286865, -0.0010633820202201605],
+ "LOCK_ADD":[0.05485829710960388, -0.07155783474445343, 0.007250520866364241, 0.014715385623276234, -0.017739281058311462, -0.10419175028800964, 0.009360804222524166, -0.013345122337341309, 0.010246765799820423, 0.06013721600174904, -0.012122204527258873, 0.00822494737803936, -0.028320983052253723, -0.026936031877994537, -0.028508367016911507, 0.02498099021613598, -0.02789861336350441, 0.02466450445353985, 0.019577763974666595, 0.09203141927719116, 0.03512627258896828, -0.0054083229042589664, 0.1127515435218811, -0.06227867677807808, 0.013724970631301403, -0.1041812151670456, -0.07797347009181976, 0.050421711057424545, -0.09984531253576279, -0.0016429430106654763, 0.020810868591070175, -0.08471371233463287, -0.01807464100420475, -0.02290509082376957, -0.043951161205768585, 0.027834102511405945, -0.04495793953537941, -0.0222152229398489, 0.07233376055955887, -0.049535032361745834, -0.08908581733703613, 0.024532785639166832, -0.07807553559541702, -0.1063879132270813, -0.09427835047245026, -0.0768769234418869, 0.08037655800580978, 0.027113718912005424, 0.023568352684378624, -0.047721803188323975, -0.009451501071453094, 0.026695353910326958, -0.0058484445326030254, 0.053435709327459335, 0.047612059861421585, 0.028578024357557297, -0.023150818422436714, 0.04493146017193794, -0.010261330753564835, -0.008154927752912045, 0.02973025105893612, -0.02002778649330139, 0.019769757986068726, -0.06264006346464157, -0.043866898864507675, 0.0429091602563858, -0.03962546959519386, -0.10645215958356857, -0.04175912216305733, 0.05676844343543053, 0.04008455574512482, -0.01392002496868372, 0.07446999102830887, 0.0025769334752112627, -0.024136429652571678, 0.014877768233418465, -0.03741023689508438, 0.015626762062311172, 0.06782670319080353, 0.038923460990190506, 0.07623042166233063, 0.029562676325440407, -0.054449234157800674, 0.02940249629318714, 0.050540223717689514, 0.018242917954921722, -0.015531829558312893, 0.09416403621435165, 0.028585586696863174, -0.02762646973133087, -0.06774168461561203, 0.0033384484704583883, -0.030020391568541527, 0.04213995859026909, -0.018878402188420296, -0.09445466846227646, 0.04026900604367256, 0.01817353442311287, -0.04505917429924011, 0.048663850873708725],
+ "LOCK_OR":[-0.08616291731595993, -0.005552991759032011, 0.026426151394844055, 0.08868937194347382, -0.0007472773431800306, 0.016182860359549522, -0.08621205389499664, -0.061243604868650436, 0.046649109572172165, -0.024332214146852493, 0.0030255101155489683, -0.00862945057451725, -0.010639523155987263, 0.029879944398999214, 0.06870322674512863, -0.0575544498860836, 0.00653884606435895, 0.09399814158678055, 0.016792142763733864, 0.02080729231238365, 0.03082742728292942, -0.04692181199789047, 0.09646938741207123, -0.03903324529528618, -0.04608675092458725, -0.05033951997756958, -0.013499331660568714, -0.0084052300080657, -0.012796953320503235, 0.01489696279168129, -0.028156423941254616, -0.0012864501914009452, -0.03831296041607857, -0.08387576043605804, 0.029025724157691002, 0.02981729991734028, -0.07560762763023376, 0.05528566241264343, -0.09773910045623779, -0.025552719831466675, 0.013379424810409546, -0.034143880009651184, -0.07366609573364258, -0.11259356886148453, 0.11145978420972824, -0.01459189597517252, -0.04469901695847511, 0.0522642508149147, -0.05380625277757645, -0.01662072353065014, 0.06930916011333466, -0.010641018860042095, 0.08064043521881104, -0.012704535387456417, -0.014580562710762024, 0.012183587066829205, -0.011410484090447426, -0.04784797504544258, 0.04561828821897507, -0.09978868812322617, 0.02991810068488121, 0.015786146745085716, 0.0710240826010704, -0.06941629946231842, 0.029403718188405037, 0.09032148867845535, 0.03219331055879593, -0.04552672058343887, 0.022672154009342194, -0.1010463535785675, 0.08064717799425125, 0.006243994925171137, -0.014110790565609932, 0.05498760566115379, 0.03742741048336029, -0.004073739051818848, -0.023720337077975273, 0.003840866032987833, -0.0017058789962902665, 0.0036768654827028513, -0.03027605451643467, 0.039112649857997894, -0.04855912923812866, -0.050204478204250336, 0.026349911466240883, -0.05769406259059906, -0.008631864562630653, 0.02034030854701996, 0.008542356081306934, 0.09690509736537933, 0.055784691125154495, 0.09990223497152328, -0.021088501438498497, 0.010197323746979237, -0.04616018012166023, 0.07261065393686295, -0.013225968927145004, 0.0029534478671848774, 0.07485251128673553, -0.10868797451257706],
+ "LXADD":[-0.11344388872385025, 0.08068472892045975, -0.041796449571847916, -0.043138183653354645, -0.049067553132772446, -0.005337296053767204, 0.021436110138893127, -0.035862036049366, -0.05354782193899155, 0.007918866351246834, -0.033625587821006775, 0.048349399119615555, 0.07167208194732666, -0.04589017853140831, -0.023661522194743156, 0.03580676391720772, 0.03326055034995079, 0.041535746306180954, -0.008772681467235088, -0.03362834453582764, -0.008885134011507034, -0.005286931060254574, -0.09389151632785797, 0.015108847059309483, -0.020455803722143173, 0.06477829068899155, 0.012845957651734352, -0.03201524540781975, -0.07100234925746918, 0.046879976987838745, -0.06030888110399246, 0.022502053529024124, -0.10942362248897552, -0.06978410482406616, 0.0714743509888649, 0.057766277343034744, 0.038102924823760986, -0.007761931978166103, -0.11331900954246521, -0.07498679310083389, -0.002573479898273945, -0.005142265930771828, -0.04596858471632004, -0.05356051027774811, 0.10633396357297897, -0.07426618784666061, 0.037482988089323044, 0.10527358204126358, 0.08239476382732391, 0.0678592249751091, -0.014271541498601437, -0.010673552751541138, -0.0767236202955246, 0.0329856239259243, -0.02222914807498455, -0.0019944666419178247, -0.0789676085114479, 0.006855306681245565, -0.012843947857618332, -0.10197136551141739, -0.036981865763664246, 0.04500154033303261, 0.0023044694680720568, -0.0031417198479175568, -0.06536462903022766, -0.02773689292371273, 0.06672050058841705, 0.046953968703746796, 0.009028433822095394, -0.008872197940945625, 0.09054717421531677, 0.009121377021074295, 0.09400534629821777, 0.012045130133628845, -0.014854185283184052, 0.030989984050393105, -0.030203191563487053, 0.09275887161493301, -0.009853487834334373, 0.038435857743024826, 0.05689401552081108, -0.06919367611408234, -0.02360834926366806, -0.08338318765163422, 0.01904873177409172, -0.027271559461951256, -0.05529508367180824, 0.09507890790700912, -0.03128642588853836, 0.026687508448958397, -0.05117009952664375, -0.03872146084904671, 0.08641110360622406, -0.027542488649487495, -0.09849996864795685, 0.05740527808666229, -0.02291804924607277, -0.10829142481088638, 0.008436905220150948, 0.027438905090093613],
+ "MAXSDrr":[-0.06119297072291374, -0.04124095290899277, -0.0296846404671669, -0.045824289321899414, 0.02508155070245266, 0.007925539277493954, 0.043926920741796494, -0.03159729018807411, 0.019068658351898193, -0.013711963780224323, -0.028986897319555283, -0.04561398923397064, 0.04851536825299263, -0.03764308616518974, -0.018207892775535583, 0.016173269599676132, -0.004123492166399956, -0.025343073531985283, -0.09777097404003143, 0.0290510356426239, -0.06969164311885834, -0.06684337556362152, 0.04377250373363495, 0.06861237436532974, -0.046966683119535446, 0.0611143596470356, -0.044503044337034225, 0.023559842258691788, -0.029876690357923508, 0.011016200296580791, 0.07286348938941956, 0.00030023325234651566, 0.08359035104513168, 0.017708808183670044, 0.07800529897212982, -0.08712167292833328, 0.002862636698409915, -0.06735634058713913, 0.03052128478884697, 0.04226242005825043, 0.023851098492741585, -0.04562359303236008, -0.013745550066232681, 0.013936172239482403, -0.0647776871919632, -0.0487772636115551, 0.07015536725521088, -0.030445875599980354, -0.043143901973962784, -0.09556057304143906, 0.047779254615306854, 0.046041958034038544, 0.009388554841279984, 0.04671555384993553, -0.059331271797418594, 0.03360891714692116, 0.03569460287690163, 0.004674405790865421, 0.03280949592590332, -0.011293579824268818, -0.05531742051243782, 0.045912306755781174, 0.04241438955068588, -0.07023770362138748, -0.03889290615916252, 0.019566599279642105, 0.06292827427387238, -0.012180106714367867, -0.009482266381382942, 0.0033363515976816416, -0.028241898864507675, 0.04916750639677048, -0.011430651880800724, 0.05025538429617882, 0.02134493552148342, 0.04370661824941635, 0.08801361173391342, -0.04115797579288483, -0.06421534717082977, -0.051845721900463104, -0.041304778307676315, 0.0507316067814827, 0.049301628023386, -0.013558737933635712, -0.004291698802262545, 0.038709867745637894, -0.0636303573846817, -0.047141704708337784, 0.022303685545921326, 0.07054309546947479, 0.009679436683654785, 0.0638614296913147, -0.046838339418172836, 0.01595005951821804, -0.025526082143187523, -0.0818924531340599, 0.016986405476927757, 0.023154381662607193, 0.06338698416948318, 0.07277237623929977],
+ "MAXSSrr":[0.04370328411459923, 0.007435579318553209, 0.05632773041725159, 0.05872607231140137, -0.02179848775267601, -0.02491024136543274, -0.09028499573469162, -0.073136106133461, 0.0038046056870371103, -0.004702121019363403, 0.06376311928033829, 0.025374436751008034, 0.03343794494867325, -0.03841162100434303, 0.04050759971141815, 0.06359805166721344, -0.05459776520729065, -0.013898322358727455, 0.043059010058641434, 0.008913826197385788, -0.08469206839799881, 0.07041019201278687, -0.08591683208942413, 0.001833248999901116, 0.07940677553415298, -0.025694575160741806, -0.07197162508964539, -0.017312491312623024, -0.037606846541166306, -0.024861449375748634, 0.024707462638616562, -0.00026734761195257306, 0.033847302198410034, 0.05927937477827072, 0.04899705946445465, 0.0770091861486435, -0.09790053963661194, 0.057826053351163864, 0.05768071860074997, 0.01531772967427969, 0.0404951311647892, -0.04033346846699715, 0.05936214700341225, -0.029121382161974907, 0.044257547706365585, -0.10413498431444168, 0.09214437007904053, 0.017709942534565926, 0.026122651994228363, -0.08045665174722672, -0.03744427487254143, 0.09111800789833069, 0.0020880592055618763, 0.07745599746704102, 0.04109589755535126, -0.07718705385923386, -0.045550283044576645, 0.06791391223669052, 0.06261736899614334, -0.04795467481017113, 0.016496436670422554, 0.02853775955736637, -0.038986679166555405, 0.012603304348886013, 0.05299075320363045, 0.0022748250048607588, 0.00884503684937954, 0.1081618219614029, 0.05347983166575432, 0.03069908171892166, 0.015294212847948074, 0.0618034303188324, -0.07555301487445831, -0.0897526815533638, -0.07293840497732162, -0.02863491326570511, 0.01548877265304327, 0.09115951508283615, 0.011775748804211617, -0.009436656720936298, -0.07188120484352112, -0.004493236541748047, 0.0661926344037056, -0.04905804619193077, -0.06685564666986465, 0.06110713630914688, 0.018521195277571678, -0.04577818885445595, 0.07256703823804855, 0.0831693485379219, 0.008730655536055565, 0.04827301949262619, 0.0754026547074318, 0.027548737823963165, -0.07210569083690643, -0.004550515208393335, -0.06998797506093979, -0.014580612070858479, -0.04511459916830063, 0.1119980439543724],
+ "MBB":[0.0285621527582407, 0.017540860921144485, -0.08473232388496399, -0.004012782592326403, 0.01284435298293829, -0.05268647149205208, 0.05576688051223755, 0.0021535248961299658, -0.03945871442556381, -0.006189210340380669, -0.015129411593079567, -0.08998296409845352, -0.023543253540992737, -0.03973307088017464, 0.03474939242005348, -0.01602775789797306, -0.07461361587047577, -0.016514597460627556, -0.016366377472877502, 0.004728052299469709, -0.023341577500104904, -0.0914730429649353, 0.030636735260486603, -0.03425632417201996, 0.03614623472094536, -0.007019295822829008, -0.0218521635979414, -0.015808485448360443, -0.05414801836013794, 0.029721688479185104, 0.09407073259353638, 0.029655681923031807, -0.005722714588046074, 0.08653672784566879, 0.01633341796696186, -0.07890991121530533, -0.07574641704559326, 0.013483843766152859, -0.0011275253491476178, -0.05623066797852516, -0.03096684440970421, -0.0019136210903525352, 0.005127475131303072, 0.005057196598500013, -0.008401975966989994, -0.0391613207757473, -0.0026145142037421465, 0.05342942103743553, 0.034099776297807693, 0.028928104788064957, -0.006105952430516481, -0.039190810173749924, 0.026784662157297134, -0.07679374516010284, -0.007475676946341991, -0.036650288850069046, 0.00774755235761404, 0.008984091691672802, -0.059830714017152786, 0.042310964316129684, 0.0681624785065651, -0.018189340829849243, -0.014816401526331902, -0.05541539564728737, -0.09348370134830475, 0.003691869555041194, -0.0010735570685938, -0.010131723247468472, -0.041050590574741364, -0.013792471028864384, -0.024337435141205788, 0.07526508718729019, 0.08163300901651382, -0.03508464992046356, -0.01681988686323166, -0.06734774261713028, -0.07656992971897125, -0.03866373747587204, 0.004544078838080168, 0.0585801787674427, -0.021823249757289886, -0.0610244981944561, -0.04469957575201988, -0.011089849285781384, -0.05069964751601219, -0.025694409385323524, -0.0670132040977478, 0.09616350382566452, 0.06308142840862274, -0.10543308407068253, 0.0023751568514853716, -0.06237253174185753, 0.05771911144256592, -0.06010056659579277, -0.016188565641641617, 0.009142348542809486, -0.014255198650062084, -0.02999819628894329, 0.00473234336823225, 0.03976761922240257],
+ "MCSymbol":[0.05158298835158348, 0.05024643987417221, 0.06704410910606384, 0.0378347709774971, -0.03902719169855118, -0.08626251667737961, 0.03964311257004738, 0.06615762412548065, 0.04361319541931152, 0.03646374121308327, -0.018487416207790375, 0.0024993624538183212, 0.006693041883409023, 0.08311881870031357, 0.021111667156219482, 0.038208797574043274, 0.08689694851636887, -0.03659898787736893, 0.020775076001882553, 0.03553535416722298, 0.06854367256164551, -0.002012243028730154, 0.03658154606819153, 0.03127564862370491, 0.0363621786236763, -0.027205800637602806, -0.05243372917175293, 0.012564878910779953, -0.013430594466626644, -0.04043225944042206, -0.025083716958761215, 0.09665156900882721, 0.005077417939901352, -0.05181048810482025, 0.08925056457519531, 0.0777667909860611, -0.013708796352148056, 0.07754126191139221, 0.08393577486276627, 0.06395212560892105, -0.07428556680679321, -0.052424050867557526, 0.03497577831149101, 0.01964585855603218, -0.0429445318877697, 0.07072066515684128, 0.0017074055504053831, 0.059513408690690994, 0.013262910768389702, -0.07240563631057739, 0.09288764744997025, 0.030620144680142403, -0.046197980642318726, 0.04847298562526703, -0.03942957893013954, -0.0025783153250813484, -0.019526517018675804, 0.038867682218551636, 0.006007499527186155, -0.06366054713726044, 0.004640159662812948, 0.013837787322700024, -0.020015377551317215, -0.010317903012037277, 0.001741019543260336, 0.06261103600263596, -0.03374830260872841, 0.01629183441400528, -0.013137640431523323, 0.026046304032206535, -0.009679407812654972, -0.07085473090410233, 0.03035539574921131, -0.08764562010765076, -0.03820766881108284, -0.04181021824479103, -0.05163294076919556, 0.06666433811187744, -0.08939782530069351, 0.040260378271341324, -0.06847432255744934, 0.09106951206922531, -0.07388591021299362, -0.07479099184274673, -0.001779694459401071, -0.0963745042681694, -0.06515862792730331, -0.08404017239809036, -0.09935544431209564, 0.010541093535721302, -0.04491754248738289, 0.09378639608621597, 0.006655062548816204, 0.06637217849493027, -0.05623293295502663, -0.020134123042225838, 0.005873391404747963, -0.07765494287014008, -0.0008442706312052906, -0.03568055108189583],
+ "MINSDrr":[0.00284420233219862, 0.07673676311969757, 0.08602232486009598, 0.030074521899223328, -0.06255929172039032, -0.10135219246149063, 0.0772649347782135, 0.0045582992024719715, -0.01195931900292635, 0.009085145778954029, -0.04665979743003845, 0.019213048741221428, 0.022454556077718735, -0.05505772680044174, 0.035268958657979965, -0.06431140005588531, -0.001450810581445694, -0.027346337214112282, 0.041191086173057556, -0.0808955729007721, -0.04748200997710228, 0.0653977245092392, 0.042980875819921494, -0.04332194849848747, -0.024661004543304443, 0.09317019581794739, -0.06639514118432999, 0.013383567333221436, 0.051771167665719986, 0.05815904587507248, -0.05226780101656914, 0.079694002866745, -0.017969269305467606, -0.07137028127908707, -0.0011493286583572626, -0.02009846828877926, 0.006549016106873751, 0.0019126685801893473, 0.06168307736515999, -0.025323089212179184, 0.010943768545985222, 0.02157585136592388, -0.012993190437555313, -0.025179127231240273, -0.08958654850721359, -0.04273540899157524, 0.015248515643179417, 0.05456075817346573, 0.05705633386969566, -0.0038763433694839478, 0.08008016645908356, -0.004114328417927027, -0.01975642889738083, -0.014040309935808182, 0.025527596473693848, -0.06883629411458969, 0.06273050606250763, 0.05779215693473816, -0.061573851853609085, 0.01889919489622116, 0.026195447891950607, -0.021544434130191803, -0.0810774490237236, -0.016286203637719154, 0.01799311302602291, -0.08440321683883667, 0.0897485539317131, 0.08083964139223099, -0.006629236973822117, 0.051063962280750275, -0.08597207814455032, 0.029692046344280243, -0.03309508413076401, -0.09422174096107483, 0.0019163102842867374, 0.05546015128493309, -0.05980079993605614, -0.07416199892759323, -0.005134278908371925, 0.07392455637454987, -0.0634748563170433, 0.020546387881040573, -0.019978882744908333, 0.039572179317474365, -0.04754075035452843, -0.06090293824672699, -0.011185224168002605, -0.054661743342876434, 0.027916360646486282, -0.00819246843457222, -0.03119322657585144, 0.019949961453676224, 0.008312772959470749, 0.06788603216409683, 0.041624777019023895, 0.051687415689229965, -0.04819793254137039, -0.0761520192027092, -0.019374510273337364, -0.008435340598225594],
+ "MINSSrr":[-0.06906168162822723, 0.008121289312839508, 0.010413543321192265, 0.052863992750644684, 0.01030051801353693, -0.009280139580368996, 0.016139337792992592, -0.05126945674419403, 0.06733083724975586, -0.01006366591900587, 0.06506948918104172, 0.05012301355600357, -0.07191506028175354, 0.018038516864180565, -0.020798280835151672, 0.08538958430290222, -0.028427604585886, 0.02630189247429371, 0.010489841923117638, 0.10011959075927734, -0.067482590675354, 0.01461686473339796, 0.03908747434616089, -0.015383233316242695, -0.03783239424228668, 0.06359098851680756, -0.052475571632385254, 0.07818790525197983, -0.0030931381043046713, 0.013684416189789772, 0.04222726821899414, 0.04708671569824219, 0.01192860770970583, 0.08628913760185242, -0.06380248814821243, -0.004006511997431517, -0.02817981317639351, -0.11196613311767578, 0.01953534409403801, 0.0034300305414944887, -0.040240559726953506, 0.004963779356330633, -0.06623393297195435, -0.04386508837342262, -0.08431598544120789, -0.023293999955058098, 0.02133636176586151, 0.04054516181349754, 0.04479363188147545, 0.02776535600423813, 0.01497643906623125, 0.026148531585931778, -0.05869835242629051, -0.07451415807008743, -0.009552933275699615, -0.004124804865568876, 0.08342882245779037, 0.05295371264219284, -0.05495591461658478, -0.07350015640258789, -0.05573306977748871, 0.07158630341291428, 0.04162517935037613, 0.0019162269309163094, -0.07742705941200256, -0.05673951655626297, 0.05760834366083145, 0.08143799751996994, 0.09629082679748535, -0.05737840384244919, 0.03762679174542427, 0.022383252158761024, 0.02897579036653042, -0.0929567888379097, 0.04767351970076561, 0.05145186930894852, 0.012956425547599792, 0.04237693175673485, 0.06772835552692413, 0.011290902271866798, -0.06324069201946259, -0.04689439386129379, 0.09521757066249847, 0.05625065788626671, -0.032533977180719376, -0.00987032800912857, -0.08346299827098846, -0.06292857229709625, 0.042861636728048325, 0.08865208923816681, -0.0021774298511445522, 0.010668188333511353, -0.05791740491986275, 0.02240762859582901, -0.022414017468690872, 0.04343479871749878, 0.01852354407310486, -0.004329795949161053, -0.00262851663865149, -0.009029376320540905],
+ "MOV":[-0.03924819082021713, -0.015029003843665123, 0.14121688902378082, -0.05414531007409096, -0.01409768033772707, 0.05467522144317627, -0.0798286497592926, 0.042834796011447906, -0.04328306391835213, -0.12638653814792633, 0.02380293421447277, -0.010002975352108479, -0.03018246777355671, -0.09843093156814575, -0.015159506350755692, -0.03186051547527313, -0.009830419905483723, 0.024049948900938034, -0.028536750003695488, -0.05252794921398163, -0.003984724637120962, -0.09075328707695007, -0.015937313437461853, 0.07316069304943085, 0.002778300317004323, 0.003214895725250244, -0.0832214206457138, 0.012602301314473152, 0.0687694102525711, 0.1425037384033203, -0.04724106192588806, 0.05618143081665039, 0.0028424363117665052, 0.03067261539399624, 0.008477674797177315, -0.002142940880730748, 0.0036045191809535027, -0.02257452718913555, 0.013552851043641567, -0.016065331175923347, 0.03364546224474907, 0.0027604023925960064, -0.013575572520494461, 0.1340155154466629, 0.04859570413827896, 0.07984673976898193, 0.006813493091613054, -0.017625009641051292, -0.0667564794421196, -0.0025298972614109516, -0.06280945241451263, 0.08589767664670944, -0.011751428246498108, 0.04074618220329285, 0.0561428964138031, -0.0068444423377513885, 0.028041694313287735, 0.06258948892354965, 0.02493610419332981, -0.018480388447642326, -0.035079196095466614, 0.14365622401237488, -0.046609606593847275, 0.040164150297641754, -0.049927353858947754, 0.06781942397356033, -0.04828719049692154, 0.03496144339442253, -0.044686879962682724, 0.04254060238599777, 0.024320241063833237, -0.0031205937266349792, -0.049061503261327744, -0.028716804459691048, -0.056192029267549515, 0.022012677043676376, -0.0745186060667038, -0.0008951064082793891, -0.051033493131399155, 0.023357892408967018, 0.06984421610832214, 0.0057564410381019115, -0.005192344542592764, -0.003961252048611641, -0.012275456450879574, -0.018581852316856384, -0.0046620736829936504, 0.02494811825454235, 0.0520334355533123, -0.02435225434601307, 0.0008846594137139618, 0.017687007784843445, 0.07866063714027405, -0.025595100596547127, -0.020679078996181488, -0.027750879526138306, 0.10005537420511246, -0.015581297688186169, -0.08011393249034882, 0.028118811547756195],
+ "MUL":[-0.026987887918949127, 0.06016572564840317, 0.0787728950381279, -0.0803905576467514, 0.005736608523875475, -0.07245960086584091, -0.02662983350455761, 0.012340782210230827, 0.042490337044000626, 0.06399581581354141, -0.009004191495478153, 0.0370473749935627, -0.0605553574860096, -0.09520823508501053, 0.0010566662531346083, -0.028270091861486435, 0.08631408214569092, 0.002891023177653551, -0.051674507558345795, -0.04089691862463951, -0.04444378614425659, -0.061945777386426926, -0.026001833379268646, 0.04689744487404823, -0.07711070775985718, 0.07018855959177017, -0.02606336772441864, 0.054914504289627075, 0.03522270917892456, -0.027317974716424942, 0.02187947928905487, 0.009710998274385929, 0.01340037677437067, 0.016422593966126442, -0.058249425143003464, -0.08377814292907715, -0.04476138949394226, 0.04349169507622719, 0.05062006786465645, 0.01706511154770851, 0.020649245008826256, 0.06287672370672226, -0.03981941193342209, 0.04973218962550163, -0.03353424742817879, -0.016799092292785645, -0.031751759350299835, 0.10430201143026352, -0.04326871410012245, 0.0736854076385498, -0.0768580436706543, -0.03183818608522415, 0.010583195835351944, 0.015541432425379753, 0.03191666305065155, 0.020011236891150475, 0.041239380836486816, -0.0029152908828109503, 0.009499716572463512, -0.011166329495608807, 0.03469998389482498, 0.00607832008972764, 0.030300112441182137, -0.040855471044778824, 0.00988304428756237, 0.050531189888715744, 0.06647889316082001, -0.027519647032022476, -0.06819992512464523, 0.02215251699090004, 0.086424820125103, -0.03395787626504898, -0.020825445652008057, 0.08309803158044815, -0.0256529338657856, 0.005000723991543055, -0.03375622257590294, 0.005569287110120058, -0.028089171275496483, 0.04142652079463005, -0.03232670575380325, 0.025872791185975075, -0.07439207285642624, 0.04975134879350662, 0.049770113080739975, -0.05090470612049103, -0.04476647078990936, 0.09217675030231476, 0.05079415813088417, 0.017867455258965492, -0.04477125406265259, 0.004301204811781645, 0.05066722631454468, -0.08186711370944977, 0.008772231638431549, -0.10532139241695404, 0.004499110858887434, 0.03296274691820145, -0.0020684772171080112, 0.05012065917253494],
+ "Metadata":[-0.07879140228033066, 0.024690961465239525, 0.022790303453803062, 0.01354144886136055, -0.07098772376775742, 0.04053819552063942, -0.04038544371724129, -0.021055836230516434, 0.10361373424530029, 0.04415135458111763, -0.09545262902975082, 0.042553599923849106, -0.021835647523403168, 0.07703430950641632, -0.04880501329898834, -0.04054124280810356, 0.05049756169319153, 0.08986796438694, 0.0705084353685379, -0.0077315340749919415, -0.045390889048576355, 0.053155045956373215, 0.045656319707632065, -0.02663712576031685, -0.01446426473557949, -0.058978915214538574, 0.011314704082906246, 0.03043927252292633, -0.0843580812215805, 0.017854437232017517, -0.08720997720956802, 0.030351335182785988, -0.04896129295229912, 0.04189978539943695, -0.09887325763702393, 0.0015409664483740926, -0.08604399859905243, 0.10654544085264206, 0.1058540865778923, 0.014106648042798042, 0.0640459656715393, -0.05182884633541107, 0.006081609521061182, 0.07624028623104095, 0.02025698497891426, 0.08467324078083038, 0.027136018499732018, 0.026320911943912506, -0.035337720066308975, 0.03864980861544609, -0.019960917532444, -0.029152821749448776, 0.06562864780426025, 0.028298277407884598, -0.07397148013114929, -0.005078969523310661, 0.025909438729286194, -0.01157586183398962, 0.05436081811785698, 0.03408071771264076, -0.07142144441604614, -0.0523630827665329, -0.06302442401647568, -0.019975490868091583, -0.06937523931264877, 0.057667043060064316, -0.08580337464809418, -0.05092239752411842, -0.012613813392817974, 0.025480754673480988, 0.04219530522823334, -0.007300581783056259, 0.05323299020528793, 0.0489904023706913, 0.09260626882314682, -0.04819458723068237, 0.05419271066784859, 0.04558999091386795, 0.012036344967782497, -0.05483977124094963, -0.05181310698390007, -0.02104383148252964, -0.057876624166965485, 0.039601441472768784, 0.025240536779165268, -0.03984035924077034, 0.07654847204685211, -0.07073183357715607, -0.0018080074805766344, -0.016453349962830544, 0.03962434455752373, 0.05717255175113678, 0.01962372660636902, 0.00952839944511652, 0.0013127806596457958, 0.013634574599564075, 0.07692103832960129, 0.06334574520587921, 0.056647684425115585, -0.02965259924530983],
+ "NEG":[-0.0585959330201149, -0.02519698068499565, 0.029133861884474754, -0.003332944354042411, 0.05054186284542084, -0.03572014719247818, -0.012210451066493988, 0.06708117574453354, -0.0712793841958046, -0.01644597202539444, 0.06453811377286911, -0.03662518784403801, 0.0545802004635334, -0.11130833625793457, -0.04544609412550926, 0.012950814329087734, 0.08011337369680405, 0.014672964811325073, 0.0030391360633075237, -0.10994786024093628, 0.004102041013538837, -0.0749390497803688, -0.010000540874898434, 0.062072113156318665, 0.03312767669558525, -0.04764379560947418, -0.033307697623968124, 0.02903047949075699, 0.0319744311273098, 0.027374137192964554, -0.05640692263841629, -0.01572772115468979, 0.019634589552879333, 0.0629790723323822, -0.024743184447288513, -0.09348101913928986, 0.04078087955713272, 0.0002063393039861694, 0.01791796088218689, -0.01174850668758154, 0.0067609078250825405, 0.031922854483127594, 0.045338794589042664, -0.06706424057483673, -0.03090975433588028, 0.035511564463377, 0.0377444289624691, -0.007464382331818342, 0.02387971244752407, -0.023001981899142265, -0.0052301278337836266, 0.08532170951366425, 0.00384823651984334, 0.0689602717757225, -0.05606595426797867, 0.03483026847243309, 0.023350417613983154, -0.06512849777936935, 0.0627395287156105, -0.0203714482486248, -0.009735504165291786, 0.06432165950536728, -0.04546240717172623, 0.0322086475789547, 0.004561635199934244, 0.040702879428863525, -0.0680280476808548, 0.025354159995913506, -0.07624178379774094, 0.06776861846446991, 0.07863514125347137, -0.037652503699064255, -0.023264721035957336, 0.030604641884565353, -0.07419195026159286, 0.014679630286991596, 0.1294829547405243, 0.007591600529849529, -0.06612348556518555, 0.03127516806125641, 0.10645392537117004, -0.018773522228002548, 0.03992835432291031, 0.044048961251974106, 0.00023814172891434282, -0.06797933578491211, -0.08000202476978302, -0.04320430010557175, 0.043590281158685684, -0.05034546181559563, 0.014501169323921204, 0.03329288214445114, 0.03045976720750332, -0.01932660862803459, -0.026188183575868607, -0.1232738122344017, -0.04858024790883064, -0.015570580027997494, 0.013346930965781212, 0.009410912171006203],
+ "NOT":[0.02556992694735527, -0.0005189123330637813, 0.010195978917181492, -0.027382172644138336, -0.0374554842710495, 0.08793098479509354, 0.0024311996530741453, -0.08769379556179047, -0.054654307663440704, -0.08747632801532745, 0.09218847006559372, 0.0972878560423851, 0.044738128781318665, -0.02398994378745556, -0.046165600419044495, -0.0002692296984605491, -0.03797682002186775, 0.05161413550376892, -0.033769138157367706, 0.011279402300715446, 0.08941229432821274, -0.07437314093112946, -0.025249861180782318, 0.1026485413312912, -0.042062994092702866, 0.022835882380604744, 0.05108749121427536, -0.054616689682006836, -0.04208545386791229, 0.10205414891242981, -0.02474227361381054, -0.01605238951742649, -0.011079655028879642, -0.04231556877493858, -0.058844879269599915, 0.0017704797210171819, 0.005396600812673569, -0.058835554867982864, 0.03384264558553696, -0.024245088919997215, 0.03355555981397629, 0.02017929218709469, 0.04421762749552727, 0.09027500450611115, 0.03916880115866661, 0.042518291622400284, 0.024490609765052795, 0.00026937652728520334, -0.010342003777623177, -0.05488119646906853, 0.07418034970760345, 0.0008032438345253468, 0.09190968424081802, 0.07747997343540192, -0.024773627519607544, 0.0496656633913517, -0.038326963782310486, -0.0022213482297956944, 0.02448110282421112, 0.0022990668658167124, 0.052763812243938446, 0.051123637706041336, 0.03795074671506882, 0.06734737008810043, -0.030445149168372154, 0.021410485729575157, -0.044919464737176895, -0.0011586989276111126, -0.0903671532869339, -0.01408425159752369, 0.07342954725027084, -0.04118982329964638, -0.008432484231889248, -0.0008165669860318303, -0.0642886608839035, 0.007230957038700581, -0.0670868456363678, -0.01116579957306385, -0.09545603394508362, -0.03109285980463028, 0.005951744969934225, 0.024672016501426697, -0.04027184471487999, 0.03607063740491867, 0.023179687559604645, 0.0117312828078866, -0.019768331199884415, -0.023262612521648407, 0.04165903106331825, -0.039224691689014435, 0.040571704506874084, 0.08653629571199417, 0.027772698551416397, -0.08196783810853958, -0.013821743428707123, 0.004212009254842997, 0.01664070598781109, -0.008459849283099174, 0.041462354362010956, 0.06886350363492966],
+ "OR":[-0.0010318798013031483, -0.058885037899017334, 0.015562368556857109, -0.03459857404232025, -0.006239954382181168, 0.04347813501954079, -0.043183062225580215, -0.06115246191620827, -0.08097145706415176, -0.040188197046518326, 0.02098822593688965, -0.013338722288608551, -0.01845080405473709, -0.07172099500894547, -0.00026761949993669987, 0.015059647150337696, -0.08275016397237778, 0.10280061513185501, -0.017712965607643127, -0.07511771470308304, 0.007648291997611523, -0.12827979028224945, -0.020353827625513077, 0.08809063583612442, -0.02829514630138874, 0.003038457129150629, -0.04399721696972847, 0.046383049339056015, 0.06416497379541397, -0.0006932668038643897, -0.033501505851745605, -0.012374987825751305, 0.018504725769162178, 0.00529597420245409, -0.040804456919431686, -0.00419827364385128, -0.017476536333560944, -0.04530858248472214, 0.01608600653707981, -0.08898036181926727, -0.015132613480091095, -0.053797122091054916, -0.011825251393020153, 0.09507828205823898, 0.08454664051532745, 0.04075947031378746, 0.020354142412543297, 0.01704799383878708, -0.026439497247338295, -0.04004717990756035, -0.053405825048685074, 0.04079057276248932, 0.026150185614824295, 0.04538597911596298, 0.046778932213783264, 0.057205770164728165, 0.037173718214035034, -0.07114585489034653, 0.03480122983455658, 0.0069038826040923595, -0.056386105716228485, -0.03294815868139267, 0.04636325314640999, -0.05767818167805672, -0.05788124352693558, -0.011048000305891037, -0.04350278526544571, 0.029680529609322548, -0.0512658953666687, 0.04321866109967232, 0.047014784067869186, -0.014913392253220081, -0.007425297982990742, -0.09810416400432587, -0.07316632568836212, 0.05063875392079353, -0.07298189401626587, -0.012434680946171284, -0.09386061877012253, 0.016765601933002472, 0.06658460199832916, 0.0014198448043316603, -0.022241152822971344, 0.05902376398444176, 0.057584285736083984, 0.024565961211919785, -0.02896188013255596, 0.006485136691480875, 0.05981580168008804, -0.015995489433407784, 0.027470067143440247, 0.09679803997278214, 0.0342426523566246, -0.08387557417154312, -0.015599220991134644, -0.0049544889479875565, -0.06524655222892761, 0.02150602824985981, 0.016511479392647743, 0.055177561938762665],
+ "PACKSSDWrr":[-0.10338613390922546, 0.07905454933643341, -0.02456718683242798, 0.054023414850234985, -0.03474816307425499, 0.07371407747268677, -0.009556794539093971, 0.04225126653909683, 0.034104134887456894, -0.031210720539093018, -0.004156691487878561, -0.03670359030365944, 0.008181961253285408, 0.03853708878159523, -0.025419142097234726, 0.06408173590898514, -0.029158825054764748, -0.06869637966156006, -0.03206351026892662, -0.013014044612646103, -0.02844204753637314, -0.017903365194797516, -0.04865800589323044, -0.0665142834186554, 0.0727393701672554, -0.05430391803383827, 0.015321340411901474, 0.019055156037211418, 0.032250262796878815, -0.0486726313829422, 0.017522374168038368, 0.03724540397524834, -0.020807135850191116, -0.005956072825938463, -0.039199408143758774, -0.04767570272088051, -0.005518978461623192, -0.03471054881811142, -0.06986159831285477, -0.04121299460530281, 0.09688618034124374, -0.0626903772354126, 0.05372796952724457, -0.08446859568357468, -0.0366029366850853, 0.011687718331813812, 0.005689750425517559, -0.0198979489505291, -0.0016907923854887486, -0.025426069274544716, -0.0035894345492124557, 0.005143658258020878, 0.006102824117988348, -0.011115973815321922, -0.05805513262748718, 0.05346652492880821, 0.04563877359032631, 0.05009977146983147, -0.012250547297298908, -0.07406982779502869, -0.027712952345609665, 0.03313913196325302, -0.04046580567955971, -0.023852191865444183, 0.010741463862359524, 0.04653104394674301, -0.03590656444430351, -0.016522731631994247, 0.019101394340395927, -0.046836405992507935, -0.06322275847196579, -0.04331924021244049, 0.1050793007016182, 0.02524673007428646, 0.014570284634828568, 0.030756743624806404, -0.0925476998090744, -0.06380509585142136, -0.025416366755962372, 0.019494401291012764, -0.035641975700855255, 0.02393985725939274, -0.01512143388390541, 0.005871197674423456, 0.07563537359237671, -0.049677856266498566, -0.05463995411992073, -0.05864301696419716, -0.06615828722715378, 0.08215471357107162, 0.04235635697841644, -0.034234337508678436, -0.03253383934497833, 0.03764968737959862, 0.09689077734947205, 0.015166254714131355, 0.0078722033649683, 0.003828959073871374, 0.028918689116835594, 0.01707528717815876],
+ "PACKUSWBrr":[-0.08402267098426819, -0.07691377401351929, 0.061447881162166595, -0.032309919595718384, 0.004008358344435692, 0.010248051024973392, -0.04497864842414856, -0.03269060701131821, 0.05444113165140152, -0.02037751115858555, -0.06009303778409958, 0.07359997928142548, -0.053184885531663895, -0.03386913612484932, -0.016508707776665688, 0.004202148877084255, 0.004044483881443739, 0.0008112408104352653, -0.013767591677606106, 0.041202858090400696, -0.06439952552318573, -5.43915739399381e-05, 0.056627314537763596, -0.06404370814561844, -0.0017257746076211333, -0.058927182108163834, 0.028977297246456146, -0.047199755907058716, 0.01396622508764267, 0.002643763553351164, 0.0531834252178669, -0.009522877633571625, 0.011045931838452816, -0.008732386864721775, -0.025132345035672188, 0.045035626739263535, 0.08429025113582611, -0.08254387974739075, 0.021250838413834572, -0.011411167681217194, 0.016551831737160683, 0.08081871271133423, -0.08028791844844818, 0.030165541917085648, 0.010343804024159908, -0.008471731096506119, -0.006685249041765928, -0.01243929285556078, 0.04190674051642418, 0.0005605564801953733, 0.0081774378195405, -0.04291520640254021, -0.09401796013116837, 0.007178076077252626, -0.0010498054325580597, 0.027505220845341682, 0.0007150012534111738, -0.04909383878111839, 0.05522674694657326, -0.06009433791041374, 0.015255756676197052, 0.09004799276590347, -0.03248617425560951, 0.06890107691287994, 0.05129043012857437, -0.0014228407526388764, 0.04525795206427574, -0.030009593814611435, -0.00925520807504654, 0.03957189619541168, 0.01546461321413517, 0.025407282635569572, 0.05670343339443207, 0.008296838030219078, 0.04714902490377426, -0.05580991134047508, 0.02377510443329811, 0.008314101956784725, -0.0775810182094574, -0.018113626167178154, -0.09425266087055206, -0.05698498710989952, -0.03861895948648453, -0.09274401515722275, -0.08462166041135788, -0.059456147253513336, 0.07746347784996033, 0.060297057032585144, 0.005197242368012667, -0.07944068312644958, -0.019142480567097664, 0.061267510056495667, -0.017697982490062714, 0.0283819492906332, -0.09094685316085815, 0.024463390931487083, 0.08362556993961334, 0.04263898730278015, 0.021917356178164482, 0.010248629376292229],
+ "PADDBrr":[0.02981439046561718, -0.060975488275289536, 0.01677623949944973, 0.010380834341049194, 0.10132674127817154, 0.0013510611606761813, 0.02638619765639305, -0.06810411810874939, -0.10903554409742355, 0.018562812358140945, 0.048934582620859146, 0.07930046319961548, 0.06634657829999924, -0.02379530295729637, 0.01693665236234665, -0.059097204357385635, -0.043556567281484604, -0.042491018772125244, 0.0333070382475853, 0.016792049631476402, 0.00795719400048256, 0.027982989326119423, 0.029179826378822327, -0.0642036572098732, 0.03929479420185089, 0.04066077247262001, -0.04066706448793411, 0.009835133329033852, -0.01777590997517109, -0.07940975576639175, -0.05025514215230942, -0.033936839550733566, -0.017217332497239113, 0.008793908171355724, 0.04914163053035736, 0.08231759071350098, 0.08345570415258408, 0.01475647371262312, 0.05869897082448006, -0.0024163417983800173, 0.07210245728492737, -0.08326923847198486, -0.021923668682575226, -0.0024710670113563538, -0.07395737618207932, -0.048473503440618515, -0.10307654738426208, 0.021875929087400436, 0.05511488765478134, -0.06431979686021805, 0.07386145740747452, 0.04208989441394806, -0.05869706720113754, -0.07155489921569824, -0.06121204048395157, -0.04584287479519844, 0.0965891107916832, 0.02252509444952011, 0.07992186397314072, 0.02185838110744953, -0.0027329367585480213, -0.03265351429581642, -0.07143806666135788, -0.054163772612810135, 0.050341445952653885, -0.056367021054029465, 0.000715376459993422, 0.015219409018754959, -0.04712420329451561, 0.0048842360265553, 0.02328530140221119, 0.08649004995822906, -0.05477191135287285, -0.018315957859158516, 0.02559460885822773, -0.011389629915356636, 0.05071564391255379, 0.023483334109187126, -0.04200156778097153, -0.039761412888765335, -0.0676589384675026, 0.025850558653473854, -0.04863988980650902, -0.08187071233987808, -0.031155945733189583, -0.02416379190981388, 0.034726932644844055, 0.06206021085381508, 0.07601665705442429, -0.0005456283688545227, -0.07299412786960602, 0.04846108704805374, 0.003001532983034849, -0.029213080182671547, 0.08861763030290604, -0.03594115376472473, -0.05025646835565567, 0.07438007742166519, -0.03490385413169861, -0.0013659405522048473],
+ "PADDDrm":[0.062187373638153076, -0.09370354562997818, -0.05147713050246239, -0.03637499362230301, 0.028737274929881096, 0.024961208924651146, -0.02877136692404747, -0.0036311789881438017, 0.009366065263748169, -0.0730806365609169, -0.05993500351905823, -0.06944968551397324, -0.045952994376420975, 0.024324802681803703, -0.07886190712451935, 0.06396903842687607, -0.014974967576563358, -0.03494264930486679, 0.019411582499742508, 0.016553981229662895, 0.008192294277250767, -0.042180225253105164, -0.006901576649397612, -0.0906863734126091, 0.0716511532664299, -0.007345270831137896, 0.054359693080186844, -0.017380908131599426, 0.07972685247659683, 0.015308533795177937, 0.055531829595565796, -0.027244195342063904, 0.012107260525226593, 0.03732652589678764, -0.020540552213788033, -0.0689912885427475, 0.04179368540644646, -0.02020133100450039, -0.05558815598487854, -0.06184320151805878, 0.06702668219804764, 0.03655870258808136, -0.05460430681705475, 0.06195399910211563, -0.04128449037671089, -0.04276604577898979, -0.019541554152965546, -0.05803695321083069, 0.027757182717323303, 0.0021002378780394793, -0.005964077543467283, -0.09511440992355347, 0.023625308647751808, -0.03475567698478699, 0.0050547197461128235, -0.055268824100494385, 0.014565442688763142, 0.02816835418343544, 0.04594855755567551, 0.08196661621332169, -0.07399105280637741, -0.008500796742737293, -0.02918262593448162, 0.055547378957271576, 0.0027142222970724106, 0.030469754710793495, -0.08964508771896362, -0.022262120619416237, -0.0020384264644235373, 0.01009704452008009, 0.06565484404563904, 0.018847741186618805, -0.023561228066682816, -0.00807427242398262, 0.0906493291258812, 0.020429866388440132, 0.04808114096522331, 0.06911328434944153, 0.0822533369064331, 0.053969770669937134, 0.05152623727917671, -0.003312299493700266, -0.0403459295630455, -0.004960845224559307, 0.014165482483804226, -0.006706703919917345, 0.07360943406820297, -0.05657380446791649, -0.007584731560200453, -0.026466913521289825, -0.019519759342074394, 0.02709186263382435, -0.07311023026704788, -0.00040324890869669616, -0.019117262214422226, 0.09279376268386841, 0.006547346245497465, -0.10585501044988632, 0.04127736762166023, 0.04449085891246796],
+ "PADDDrr":[0.059652578085660934, 0.01690453290939331, 0.005486444570124149, 0.07724369317293167, -0.07699901610612869, -0.0741991475224495, -0.05271182954311371, 0.031023984774947166, -0.044665299355983734, -0.07288029044866562, -0.01283255685120821, -0.07132074981927872, -0.020330408588051796, 0.003429145086556673, -0.05955389142036438, -0.06337058544158936, -0.07349386066198349, 0.032361023128032684, 0.11074065417051315, -0.03824116289615631, 0.04750978201627731, -0.00637922203168273, 0.035352665930986404, -0.11413518339395523, -0.01917796954512596, -0.001984931528568268, 0.06242367997765541, 0.06430812180042267, -0.004102719482034445, -0.08940742164850235, 0.08992566168308258, 0.05980963632464409, -0.058308348059654236, 0.02375701814889908, -0.052073393017053604, -0.03426099941134453, 0.02447952702641487, -0.023325340822339058, 0.08409498631954193, 0.06171245500445366, 0.04932354390621185, 0.03483571484684944, -0.0600101538002491, 0.03206712007522583, -0.06995416432619095, -0.0369318425655365, -0.05681266635656357, -0.07415430247783661, -0.030872583389282227, -0.0475684329867363, 0.05956122279167175, 0.016390422359108925, 0.02429615892469883, 0.08257727324962616, 0.02449384517967701, 0.082227922976017, 0.08414534479379654, 0.04365077242255211, -0.02982212044298649, 0.024245964363217354, 0.014876304194331169, -0.006925163324922323, 0.06084717810153961, -0.020564856007695198, 0.07056041061878204, -0.036122195422649384, 0.02922292798757553, 0.08957257121801376, 0.10321840643882751, -0.025958912447094917, 0.00452542444691062, -0.007239113096147776, 0.07212918996810913, 0.015593722462654114, -0.07580869644880295, -0.0014544830191880465, -0.050236109644174576, -0.085821732878685, -0.012780925258994102, -0.01643461361527443, -0.01831795461475849, 0.015349563211202621, -0.08482122421264648, -0.07157144695520401, 0.028105497360229492, 0.10503420233726501, -0.08446004986763, 0.07085942476987839, 0.07695086300373077, 0.055350519716739655, -0.043600473552942276, 0.037547629326581955, 0.025627346709370613, -0.0021278809290379286, 0.09560519456863403, -0.022034913301467896, 0.04973606392741203, -0.09694120287895203, -0.026960687711834908, 0.015964532271027565],
+ "PADDQrm":[-0.018846658989787102, 0.06158271059393883, -0.02825530245900154, 0.024622419849038124, 0.07557777315378189, -0.029935544356703758, -0.08729667216539383, -0.013862723484635353, 0.006550075951963663, -0.022527877241373062, 0.036445409059524536, 0.012918050400912762, 0.02673642337322235, -0.015123539604246616, 0.026077942922711372, -0.08431431651115417, -0.02838486060500145, 0.09827567636966705, -0.005979518406093121, -0.0245033111423254, -0.06817919760942459, 0.061224184930324554, 0.028961163014173508, 0.04109184071421623, -0.047859132289886475, 0.06290590763092041, 0.05226413533091545, -0.10720893740653992, -0.02188631147146225, 0.02430274896323681, 0.04572722688317299, -0.08987971395254135, -0.06363078206777573, 0.02285190112888813, -0.08639130741357803, 0.050719477236270905, 0.016129670664668083, -0.06830374896526337, 0.02560318447649479, -0.06416380405426025, -0.016809258610010147, -0.008181803859770298, 0.058379173278808594, -0.020587440580129623, 0.0636301040649414, 0.057221438735723495, -0.010727477259933949, -0.06130151450634003, -0.04626129940152168, 0.029905643314123154, 0.02197975106537342, 0.03507208079099655, 0.002797710709273815, 0.03573763743042946, -0.04847431555390358, -0.006799585185945034, -0.08961901068687439, -0.010795998387038708, 0.06191159039735794, -0.07415394484996796, -0.05725157633423805, 0.0007248111069202423, -0.057824499905109406, 0.0848383903503418, 0.052982550114393234, -0.04776833951473236, 0.10408946871757507, 0.00038791500264778733, -0.02124410681426525, 0.030752263963222504, -0.08177915215492249, 0.044776029884815216, 0.05941810458898544, 0.008668851107358932, 0.05425756052136421, -0.04806810989975929, 0.05807068198919296, 0.06565414369106293, 0.015940984711050987, -0.056721728295087814, -0.01836237497627735, 0.005445401184260845, -0.029438093304634094, 0.080235555768013, 0.05814986675977707, 0.06961169838905334, -0.03628033772110939, 0.048612914979457855, 0.08299894630908966, -0.08826933801174164, -0.021552972495555878, -0.017068734392523766, -0.0894465520977974, 0.07036639004945755, -0.032474443316459656, -0.02765958197414875, 0.022615129128098488, -0.02559274062514305, 0.024834897369146347, 0.00204316689632833],
+ "PADDQrr":[-0.04269342124462128, -0.047668661922216415, -0.0033433223143219948, -0.01188094262033701, 0.027947304770350456, 0.03385375440120697, -0.04029606282711029, -0.029369274154305458, -0.038503583520650864, 0.00010848846432054415, 0.005367161240428686, 0.07658715546131134, 0.03463127836585045, -0.01992899179458618, -0.04108603671193123, -0.0540955625474453, 0.0216979943215847, -0.022373724728822708, 0.03747396171092987, -0.03700972720980644, -0.0533207543194294, 0.06438340991735458, 0.03186490014195442, 0.08749990165233612, -0.038062792271375656, -0.042029548436403275, -0.03864221274852753, 0.016024883836507797, -0.08384747803211212, -0.05093250423669815, 0.018459778279066086, -0.04206366091966629, 0.01675465889275074, -0.03957543149590492, 0.044209714978933334, -0.01528380997478962, -0.04603193700313568, -0.009344306774437428, -0.08247789740562439, 0.08836638182401657, 0.0013560146326199174, -0.07941916584968567, 0.0660674050450325, -0.042510513216257095, -0.08154450356960297, -0.08864472806453705, 0.05434170737862587, -0.058427900075912476, 0.05526566877961159, -0.0020513678900897503, 0.02581997588276863, -0.062716044485569, 0.08681557327508926, 0.010645114816725254, 0.022339627146720886, 0.023675698786973953, 0.04218975827097893, 0.002907808404415846, 0.005912997759878635, 0.06246572732925415, 0.03104882873594761, -0.0009496628190390766, 0.035281918942928314, -0.05087724328041077, -0.01692810282111168, -0.04583277925848961, -0.026867032051086426, -0.015442054718732834, -0.013590612448751926, -0.0059098596684634686, -0.04691039398312569, 0.019391261041164398, 0.04644109681248665, -0.06361880898475647, 0.0609482079744339, 0.006433991249650717, 0.004246108699589968, -0.016914108768105507, 0.029976142570376396, 0.06425019353628159, -0.02953079529106617, -0.003127311123535037, -0.08494070172309875, -0.038892973214387894, 0.02810962125658989, 0.06374753266572952, -0.08530823141336441, -0.0446174219250679, 0.10176365822553635, -0.06472619622945786, -0.07073270529508591, -0.04062749072909355, 0.013817140832543373, 0.02985409088432789, -0.038790713995695114, -0.023809516802430153, 0.03034011833369732, 0.011824829503893852, 0.0751635953783989, 0.0054275281727313995],
+ "PANDNrr":[0.03158809244632721, -0.11429649591445923, 0.06738957017660141, 0.03961874172091484, -0.01611417904496193, 0.0075972904451191425, -0.04925058037042618, 0.027949346229434013, 0.02611265890300274, 0.03588375449180603, -0.03255070745944977, 0.08407082408666611, 0.03491341322660446, -0.05533348023891449, -0.07157836854457855, 0.034566644579172134, -0.019478559494018555, -0.05163373798131943, 0.004349343478679657, -0.04404686763882637, 0.035652659833431244, -0.06032158061861992, -0.02149549312889576, 0.03328382596373558, 0.03855452314019203, -0.11237302422523499, -0.09243814647197723, -0.08547385036945343, 0.04656967520713806, -0.06910695880651474, -0.03943036124110222, -0.016072258353233337, -0.05135510116815567, 0.08162520080804825, -0.0751558393239975, -0.050003185868263245, 0.016996141523122787, -0.03009319305419922, 0.07930246740579605, -0.044452887028455734, -0.004234642256051302, 0.036739252507686615, -0.0130846556276083, -0.028501296415925026, -0.06729865819215775, 0.004663594998419285, 0.10351044684648514, 0.03464728593826294, -0.06679735332727432, 0.0337168425321579, -0.015867190435528755, -0.03311976045370102, 0.03515316918492317, 0.011889479123055935, -0.05108066648244858, 0.05673496052622795, 0.0058584013022482395, 0.04708843305706978, -0.10519534349441528, 0.0839051678776741, 0.009228014387190342, -0.04379929229617119, 0.07259726524353027, -0.018617503345012665, 0.0889187753200531, -0.043088775128126144, -0.005652757827192545, 0.08259256929159164, -0.06616927683353424, -0.0600028932094574, 0.05560735613107681, 0.013597709126770496, -0.07166112959384918, 0.039595503360033035, 0.06180413439869881, 0.0035415091551840305, -0.03603225573897362, -0.07203863561153412, 0.022745713591575623, -0.048220209777355194, 0.09287194162607193, -0.0731758177280426, -0.07602803409099579, -0.04564722999930382, 0.016783379018306732, -0.03696766495704651, 0.06108715757727623, 0.01361741404980421, 0.034549251198768616, -0.02012408711016178, 0.008757920004427433, 0.009633289650082588, 0.10279067605733871, 0.0421283133327961, 0.006721466314047575, -0.01642846316099167, -0.058332864195108414, -0.09087095409631729, -0.02376786805689335, -0.06393252313137054],
+ "PANDrm":[0.05709928274154663, -0.040719177573919296, -0.022127050906419754, 0.017517881467938423, 0.013471930287778378, -0.05348123610019684, 0.07584767043590546, -0.02506292425096035, 0.05721890926361084, 0.05474025383591652, 0.021205490455031395, -0.004495991859585047, 0.07966293394565582, -0.07094768434762955, -0.024655316025018692, -0.040065374225378036, 0.1109217181801796, -0.07701722532510757, 0.07439766079187393, 0.03256182745099068, -0.1134711354970932, -0.0030855450313538313, 0.04869978502392769, 0.0792495533823967, -0.10274110734462738, 0.002392032416537404, 0.04926014691591263, -0.05206969752907753, 0.10432761907577515, -0.10133258253335953, 0.06852535903453827, 0.0069012027233839035, -0.040986865758895874, 0.05456029251217842, 0.07742699980735779, 0.0052223969250917435, -0.01717454381287098, 0.0770777091383934, -0.09370249509811401, -0.0031907150987535715, 0.03803441673517227, -0.012720897793769836, -0.06828600913286209, 0.07622137665748596, 0.08067824691534042, -0.02199200913310051, -0.012665624730288982, -0.008676950819790363, 0.02543814107775688, 0.07944143563508987, -0.07086512446403503, 0.027666715905070305, 0.09762454032897949, -0.0015856855316087604, -0.04279454052448273, 0.008494722656905651, -0.06011556088924408, -0.07114174216985703, 0.013014030642807484, -0.00611421512439847, 0.033488448709249496, -0.08082770556211472, 0.062110885977745056, -0.021271318197250366, 0.02685464359819889, 0.026572853326797485, 0.035003356635570526, 0.058342814445495605, 0.045482032001018524, 0.032287489622831345, -0.03315352648496628, 0.036266956478357315, -0.0006299974047578871, -0.04077351465821266, -0.01486485730856657, 0.06556866317987442, 0.0013878411846235394, -0.008477618917822838, -0.05579187721014023, -0.023318549618124962, -0.04069218412041664, 0.029798205941915512, -0.07670920342206955, -0.013879234902560711, 0.0817861333489418, 0.06516905874013901, 0.08766404539346695, 0.0009167894022539258, -0.07292061299085617, 0.002957758493721485, -0.030549490824341774, 0.036484722048044205, 0.03287791460752487, -0.043452054262161255, -0.08003664016723633, -0.030910804867744446, -0.010253713466227055, -0.03976557031273842, 0.015364984050393105, 0.029948271811008453],
+ "PANDrr":[0.10290882736444473, 0.046789929270744324, 0.048314616084098816, 0.08464454114437103, -0.00803645420819521, 0.014323245733976364, -0.02968805469572544, 0.0520051084458828, -0.03328229859471321, 0.00062880216864869, 0.04835345968604088, -0.054714225232601166, 0.022069312632083893, 0.06378740072250366, -0.03426862508058548, -0.08123593777418137, -0.000786201620940119, 0.007717733737081289, -0.04191955551505089, 0.041316766291856766, -0.03591304272413254, 0.009417746216058731, 0.09857472032308578, -0.0269918292760849, 0.056967537850141525, -0.06550207734107971, -0.062142666429281235, 0.02589487098157406, -0.07500270009040833, -0.004183346405625343, 0.03995250537991524, 0.001200274913571775, 0.054534152150154114, 0.021321963518857956, 0.05896006524562836, -0.002294989302754402, -0.016373002901673317, -0.05471712723374367, 0.07010368257761002, 0.016744887456297874, -0.060772862285375595, 0.04044647142291069, 0.052903253585100174, 0.05372904613614082, -0.02939589135348797, -0.03700671344995499, 0.022029880434274673, 0.03380223736166954, 0.02245987579226494, 0.08828557282686234, 0.04091523215174675, -0.08135021477937698, -0.032205551862716675, 0.04021422192454338, -0.09171751886606216, -0.019887810572981834, 0.01703636348247528, 0.07116185128688812, 0.018114877864718437, 0.013346227817237377, 0.024020720273256302, 0.08266115188598633, 0.057322803884744644, -0.08374029397964478, 0.01893039047718048, -0.04987149313092232, 0.05556793883442879, -0.09149640798568726, 0.0032390684355050325, 0.06263601779937744, -0.048070549964904785, -0.03970489278435707, 0.011952451430261135, 0.038289979100227356, -0.11355514079332352, -0.005723763257265091, -0.05901740491390228, 0.016876237466931343, -0.03433282673358917, -0.10330424457788467, 0.0036515379324555397, 0.03343992307782173, -0.05397287383675575, 0.027071034535765648, -0.08909651637077332, -0.07679293304681778, 0.10089132934808731, 0.0667617917060852, -0.05154351145029068, -0.011648676358163357, -0.0462304949760437, -0.07979465276002884, -0.06608876585960388, -0.005851995665580034, -0.012817964889109135, -0.053957436233758926, 0.05330400541424751, 0.014390792697668076, -0.013382448814809322, -0.03936552256345749],
+ "PCMPEQBrm":[0.021943088620901108, -0.03485614061355591, 0.04815533384680748, -0.025437159463763237, 0.01120745949447155, 0.00671805627644062, 0.0325770229101181, -0.07598704844713211, 0.06913808733224869, 0.026190120726823807, 0.07238754630088806, 0.040627703070640564, 0.01667364500463009, -0.061096470803022385, 0.01200707908719778, 0.048340748995542526, 0.005521839018911123, 0.08576949685811996, -0.009058981202542782, -0.016537928953766823, 0.043570127338171005, 0.004677437711507082, 0.016788525506854057, 0.011159388348460197, 0.08737632632255554, -0.0451776497066021, -0.004084988031536341, -0.04491761699318886, 0.0014493579510599375, -0.07436715811491013, 0.047588691115379333, -0.02785342000424862, 0.03020043857395649, 0.11118077486753464, -0.03927713632583618, -0.05673675984144211, 0.0883030891418457, 0.08966321498155594, -0.061727702617645264, 0.012324802577495575, 0.05228610709309578, 0.027611926198005676, -0.06501059234142303, -0.07671833783388138, -0.08931130915880203, 0.03375178948044777, 0.06545712053775787, 0.041594408452510834, 0.06647691130638123, 0.041161783039569855, -0.0670057088136673, 0.004202495329082012, 0.006829903926700354, 0.01666644588112831, 0.0843941867351532, 0.010679066181182861, -0.06820560991764069, 0.02129034698009491, 0.08753429353237152, 0.08409357070922852, 0.06357303261756897, 0.062298938632011414, -0.047420814633369446, -0.07015671581029892, -0.06223355606198311, -0.052096400409936905, -0.10022752732038498, 0.03654440864920616, 0.04444066807627678, 0.04538895562291145, -0.004663802683353424, -0.07607371360063553, -0.08883129805326462, 0.015058213844895363, -0.01869015395641327, 0.06816243380308151, -0.07635748386383057, -0.05006851255893707, 0.06935779750347137, -0.05750114098191261, 0.06407559663057327, 0.09495070576667786, -0.019833315163850784, 0.0054709636606276035, 0.01400934811681509, 0.03652339056134224, 0.03541703522205353, 0.03357592597603798, -0.062345460057258606, -0.019431097432971, 0.05752967298030853, -0.07368514686822891, -0.07915610820055008, 0.06346933543682098, 0.02232557348906994, 0.027281079441308975, 0.04809926822781563, -0.030090954154729843, -0.0549578033387661, -0.05036044493317604],
+ "PCMPEQBrr":[0.027792004868388176, -0.022094327956438065, -0.056865524500608444, -0.10485685616731644, 0.07743242383003235, 0.008473735302686691, -0.008221655152738094, -0.017875052988529205, 0.010402143932878971, -0.0496952086687088, -0.05326240882277489, 0.07955490052700043, 0.024041010066866875, -0.004054523538798094, 0.015748197212815285, 0.022758783772587776, -0.0015570044051855803, -0.03423798456788063, 0.07365445792675018, 0.05031096190214157, 0.011245183646678925, -0.0039595952257514, 0.012100782245397568, 0.02311093360185623, 0.07053389400243759, 0.05785410478711128, 0.04393753036856651, 0.007937475107610226, 0.00022281445853877813, 0.024370228871703148, 0.0018063446041196585, -0.03792477399110794, -0.030270550400018692, 0.010093692690134048, -0.05469436198472977, 6.22474035480991e-05, -0.0908515527844429, 0.01720355451107025, -0.037593524903059006, -0.07935652136802673, -0.0351620651781559, -0.06598585098981857, -0.07797588407993317, 0.05550467595458031, -0.03367015719413757, 0.01760525442659855, 0.03293305262923241, 0.058195531368255615, -0.05736035108566284, -0.040599703788757324, 0.06612899154424667, -0.0072877611964941025, -0.03676557168364525, 0.033397167921066284, 0.005299961194396019, -0.10589462518692017, 0.0749841034412384, 0.04223250597715378, -0.10698731988668442, -0.028093403205275536, -0.008949306793510914, -0.09516401588916779, -0.0052039409056305885, -0.058787014335393906, 0.025544404983520508, -0.03408662602305412, -0.041449110954999924, 0.07875163108110428, 0.04324910044670105, -0.02318510040640831, 0.08842211961746216, 0.018930386751890182, 0.05847536772489548, -0.009804842062294483, 0.05537649244070053, 0.08340363204479218, 0.08433317393064499, -0.05947326496243477, 0.05257738381624222, -0.07623672485351562, 0.08088205009698868, 0.07646628469228745, -0.09792350977659225, 0.02667279914021492, -0.05133591592311859, -0.0379498228430748, -0.06152855604887009, -0.016215618699789047, -0.06987334787845612, -0.01861196756362915, -0.037985414266586304, 0.0549699142575264, 0.07202199846506119, 0.0879380851984024, -0.02621779777109623, -0.0015639825724065304, 0.008658538572490215, 0.054213736206293106, -0.0044598812237381935, -0.05391258746385574],
+ "PCMPEQDrr":[0.035183243453502655, 0.08217025548219681, 0.012957555241882801, -0.04613356664776802, 0.049330174922943115, 0.07495012134313583, 0.03389301151037216, -0.05611399561166763, -0.004375023767352104, 0.026216933503746986, -0.01823226921260357, -0.057493869215250015, 0.011850247159600258, 0.00126850011292845, 0.005961781367659569, 0.06289994716644287, 0.011136715300381184, -0.002103574341163039, -0.035653188824653625, 0.00753630930557847, 0.05066635459661484, -0.009258248843252659, 0.023764237761497498, 0.09811633080244064, -0.032142315059900284, 0.08357568085193634, -0.058011315762996674, -0.004557338543236256, 0.10169398784637451, -0.031602129340171814, 0.015554644167423248, -0.03789388760924339, -0.022935261949896812, -0.09763393551111221, 0.08808058500289917, 0.0317673422396183, 0.043649934232234955, -0.0481637641787529, -0.06499853730201721, -0.09318177402019501, -0.017078857868909836, -0.0542169027030468, -0.06063833460211754, 0.010618867352604866, 0.07117150723934174, -0.04291679710149765, 0.022294552996754646, 0.03829605504870415, 0.06434167176485062, 0.04791148379445076, -0.017734523862600327, 0.07167994230985641, -0.01931469701230526, 0.10244913399219513, 0.01805911771953106, 0.038003213703632355, -0.04788004606962204, -0.014580599032342434, -0.05973494052886963, -0.07391904294490814, 0.0001747412170516327, -0.04234708845615387, -0.05154608190059662, 0.03642942011356354, 0.011827037669718266, -0.049983203411102295, -0.06602519750595093, -0.053948841989040375, 0.06061650812625885, -0.031980447471141815, 0.06478173285722733, 0.005230790935456753, -0.033797115087509155, 0.008706103079020977, 0.05583501607179642, -0.04627503082156181, 0.05257125571370125, -0.017752040177583694, 0.04195442795753479, -0.09602147340774536, 0.061776500195264816, 0.017831413075327873, -0.0993441641330719, -0.10575783997774124, -0.0639885812997818, -0.03951384499669075, 0.08231160789728165, 0.09104131907224655, 0.06704923510551453, -0.0012803514255210757, 0.042206086218357086, 0.028081098571419716, -0.03392263501882553, -0.09217933565378189, -0.05046875402331352, -0.00239806086756289, -0.0729890987277031, -0.06209616735577583, 0.0380944088101387, 0.017125898972153664],
+ "PCMPGTBrr":[-0.04665364325046539, -0.03588206693530083, 0.05219453573226929, 0.08376432955265045, 0.05562759190797806, -0.0034289404284209013, 0.08200010657310486, 0.023898538202047348, -0.002851601457223296, -0.08778133243322372, 0.017107484862208366, 0.08448091894388199, 0.020043527707457542, 0.038858626037836075, 0.036468397825956345, -0.0069902255199849606, -0.09442859143018723, 0.0018075992120429873, 0.05577728524804115, -0.0005804274696856737, 0.029588190838694572, -0.050955869257450104, 0.016604335978627205, -0.054141607135534286, -0.030936168506741524, 0.004688458051532507, -0.02321118488907814, -0.009524177759885788, 0.030161075294017792, -0.0557246096432209, 0.017830688506364822, 0.04058525711297989, 0.023080267012119293, 0.04536818340420723, 0.09658516198396683, 0.004083207808434963, 0.053284309804439545, 0.07114734500646591, 0.03272407501935959, -0.06646303087472916, 0.08200454711914062, -0.06558514386415482, 0.0745493471622467, -0.0010506648104637861, -0.02250707894563675, 0.015057512558996677, -5.047186277806759e-06, 0.04663649946451187, 0.06489380449056625, -0.0477377213537693, -0.08882559835910797, 0.08948437124490738, -0.052260447293519974, 0.06798093020915985, -0.06404604762792587, 0.0005905702710151672, 0.014312930405139923, 0.0370929092168808, 0.03622571751475334, 0.06601805984973907, 0.04077596217393875, -0.0019877473823726177, -0.02357509359717369, 0.04524341970682144, 0.024309739470481873, -0.05969798564910889, -0.015872884541749954, -0.055400021374225616, 0.04820183292031288, 0.024034500122070312, -0.05125486105680466, 0.020366262644529343, 0.03310052305459976, 0.1036759540438652, 0.049202825874090195, -0.010945710353553295, -0.030628688633441925, 0.048871662467718124, 0.07457619905471802, 0.017111260443925858, 0.028184816241264343, -0.09065181016921997, -0.017116032540798187, -0.06233282387256622, -0.011385255493223667, -0.06190027296543121, -0.01189250499010086, -0.03632708638906479, 0.04705822467803955, 0.0022293981164693832, 0.06782552599906921, -0.0490303635597229, -0.08690774440765381, -0.08311695605516434, 0.04079030826687813, 0.022971853613853455, -0.019726071506738663, -0.032829709351062775, -0.05147984251379967, -0.06768873333930969],
+ "PCMPGTDrr":[0.026095403358340263, 0.009877854026854038, -0.022390423342585564, -0.06749505549669266, 0.03866114094853401, 0.07523459941148758, -0.02331429533660412, -0.013958744704723358, -0.05151516944169998, -0.033018071204423904, -0.017118683084845543, 0.06611985713243484, 0.024562569335103035, 0.027193237096071243, -0.04081164300441742, -0.0557839497923851, 0.07676059752702713, -0.017435213550925255, -0.0696197971701622, 0.04529204219579697, 0.015718640759587288, -0.0868423655629158, -0.025476763024926186, 0.1075882539153099, 0.08407340198755264, 0.03219793736934662, -0.029079284518957138, -0.10067792236804962, -0.01665782555937767, -0.002518820110708475, 0.06302576512098312, -0.042360853403806686, -0.014688530936837196, -0.04797102138400078, -0.05708448588848114, 0.05345156416296959, -0.03360274061560631, -0.006362707354128361, 0.045909661799669266, -0.0034944594372063875, -0.04771789163351059, -0.015326191671192646, -0.017800530418753624, 0.009678518399596214, -0.01412744726985693, 0.09620117396116257, 0.0705861821770668, -0.0663042888045311, 0.07589521259069443, -0.08846025168895721, 0.008178732357919216, -0.023293234407901764, 0.049390021711587906, 0.00771696399897337, -0.026583032682538033, 0.012981866486370564, -0.06098538264632225, -0.04784953594207764, -0.001411060569807887, -0.0646580159664154, 0.07771933078765869, 0.012061100453138351, 0.026251494884490967, 0.024035189300775528, 0.00368816708214581, 0.019370727241039276, 0.0473535880446434, 0.0688827782869339, -0.0656280517578125, 0.0001225982268806547, -0.04765431582927704, 0.08570858836174011, 0.06544618308544159, 0.02309294231235981, -0.07891835272312164, 0.05969972908496857, 0.04259306937456131, -0.0388357900083065, 0.10700955986976624, -0.03643207252025604, -0.014097973704338074, 0.018475063145160675, -0.008959461003541946, -0.04132810980081558, -0.01586003415286541, -0.013873838819563389, 0.07354859262704849, 0.003967848140746355, -0.023853322491049767, -0.013099947944283485, 0.06407736241817474, 0.03060499019920826, -0.08859552443027496, 0.009045977145433426, -0.09939071536064148, -0.022137949243187904, -0.03951180726289749, -0.0316530205309391, 0.05501912534236908, -0.06330689787864685],
+ "PEXTRWrr":[-0.05698293820023537, -0.02332535944879055, -0.01313185878098011, 0.08844685554504395, -0.030702419579029083, -0.042257267981767654, -0.06976033002138138, 0.08907881379127502, 0.040486857295036316, 0.01966431364417076, 0.011261478997766972, 0.011022844351828098, -0.0069642444141209126, -0.016230706125497818, -0.009695738554000854, -0.04666578397154808, 0.016855308786034584, -0.03308985382318497, 0.01504850760102272, 0.09940154105424881, -0.07109691947698593, 0.043378811329603195, -0.06964893639087677, -0.05999808758497238, 0.008651218377053738, 0.04237857088446617, 0.04557272046804428, 0.04033806174993515, -0.005760873202234507, 0.008976156823337078, 0.05276636406779289, -0.06584233790636063, -0.011512805707752705, -0.01598522625863552, -0.044132646173238754, -0.020889364182949066, -0.09435509145259857, -0.02823605202138424, 0.0820322185754776, -0.0391690619289875, 0.03367430716753006, -0.029474111273884773, -0.07719384133815765, 0.003098628716543317, 0.05822441354393959, -0.09175454080104828, 0.02256210707128048, -0.004901964217424393, -0.008566503413021564, 0.040359016507864, -0.04049991816282272, 0.010366388596594334, -0.05293237417936325, -0.0956558957695961, -0.01418458204716444, 0.05464276298880577, -0.014091472141444683, 0.023551519960165024, -0.042662639170885086, -0.07025191932916641, -0.0017952515045180917, 0.07680258899927139, -0.10743812471628189, -0.08435508608818054, -0.00337960640899837, -0.03381747379899025, 0.027066459879279137, -0.009784750640392303, 0.04265652969479561, 0.02066781371831894, -0.03692338988184929, 0.0029027678538113832, 0.06893923878669739, 0.03784753382205963, -0.04037536308169365, -0.09532847255468369, 0.03193795308470726, 0.0387917198240757, 0.03887058049440384, -0.0002478501701261848, -0.0671166405081749, 0.06754262745380402, 0.01643708348274231, 0.012460017576813698, 0.03147564455866814, 0.05646798014640808, 0.014081758446991444, 0.07141963392496109, 0.016428180038928986, 0.0443485863506794, 0.06492826342582703, 0.09964785724878311, 0.026795320212841034, 0.0271765124052763, -0.015695465728640556, -0.08133535832166672, -0.05439477041363716, 0.04913243651390076, 0.024485180154442787, -0.04072758927941322],
+ "PHY_REG":[-0.008169060572981834, -0.017023155465722084, -0.04927198588848114, 0.0014261528849601746, 0.012259463779628277, -0.02794509381055832, -0.024857040494680405, 0.029203711077570915, 0.0433109886944294, 0.009679347276687622, -0.05811547115445137, -0.09075025469064713, -0.08525611460208893, -0.10545054078102112, 0.06474080681800842, 0.056396666914224625, 0.06781823933124542, 0.09059076011180878, -0.10420752316713333, -0.08284831047058105, 0.02349182404577732, -0.0354253351688385, -0.004627702757716179, 0.0068538435734808445, -0.053724177181720734, -0.02113335393369198, 0.05254676192998886, -0.050769440829753876, 0.061386119574308395, -0.07541731745004654, -0.024204161018133163, -0.0009893826209008694, -0.007493770215660334, -0.017051052302122116, 0.015025814063847065, -0.020427946001291275, -0.0844966471195221, 0.04589429497718811, 0.025571472942829132, -0.05280151963233948, 0.06895384937524796, 0.03960262984037399, 0.0068003153428435326, 0.09397424012422562, -0.0523529127240181, 0.03780638054013252, -0.015423302538692951, 0.029167350381612778, 0.01019437238574028, 0.023989612236618996, -0.03344425559043884, -0.07926471531391144, -0.09238854795694351, 0.04794330149888992, 0.01872367039322853, -0.029179377481341362, -0.05339968949556351, -0.04575541242957115, -0.004491546656936407, -0.009650425054132938, 0.026945313438773155, -0.02115861512720585, 0.06488905847072601, -0.06647083908319473, 0.008904196321964264, 0.010536684654653072, -0.06012551859021187, -0.00022655133216176182, -0.10175421833992004, 0.062001921236515045, -0.054452817887067795, 0.01785552129149437, -0.06749527156352997, -0.04883178323507309, -0.023449009284377098, 0.040745027363300323, 0.002448269398882985, 0.07842953503131866, -0.019806355237960815, -0.08275315910577774, 0.01131721492856741, 0.0482926219701767, 0.01892486959695816, 0.005685009527951479, -0.0055344682186841965, -0.0034555341117084026, -0.07923021167516708, 0.06387833505868912, 0.05978211387991905, -0.001252106623724103, 0.07216084003448486, -0.01223798282444477, 0.09716741740703583, 0.009659498929977417, -0.09404221922159195, -0.10122949630022049, -0.003581057768315077, 0.07885389029979706, 0.05305042862892151, -0.04988719895482063],
+ "PMOVMSKBrr":[0.07294902205467224, -0.00040799094131216407, -0.01483855675905943, -0.02571418508887291, 0.08466307818889618, -0.03447218984365463, -0.05685977265238762, -0.019133185967803, 0.06332023441791534, -0.061352625489234924, -0.023195402696728706, -0.05378473922610283, -0.05650350823998451, 0.06583224982023239, -0.012845925986766815, -0.052972156554460526, 0.049470845609903336, -0.04565730318427086, 0.09717552363872528, -0.014171762391924858, 0.013508875854313374, 0.004057068843394518, -0.020556267350912094, -0.10475417971611023, 0.018426941707730293, -0.07273723930120468, 0.01702595315873623, -0.013097747229039669, -0.07530277967453003, 0.05442536994814873, -0.0601920410990715, -0.05255919322371483, -0.07305102050304413, 0.02758030779659748, 0.06180129200220108, 0.10606050491333008, 0.046477098017930984, -0.024062691256403923, 0.07360008358955383, -0.011283098720014095, -0.03712400794029236, -0.09973011910915375, 0.018314119428396225, 0.009135990403592587, -0.01891133189201355, 0.00915572326630354, 0.006080301944166422, -0.02368554100394249, -0.019582828506827354, 0.051494162529706955, -0.010953089222311974, 0.011621126905083656, 0.010515356436371803, 0.011188569478690624, -0.0202876515686512, 0.038686931133270264, -0.066365085542202, 0.014182188548147678, 0.00445093447342515, 0.05712618678808212, -0.04463819041848183, -0.10292281210422516, -0.011173201724886894, 0.0029098563827574253, 0.06890314072370529, 0.06398330628871918, 0.03248615562915802, -0.05457807704806328, -0.006898659747093916, 0.038892313838005066, -0.09130232781171799, 0.013324378058314323, -0.033766016364097595, -0.043404608964920044, 0.018701359629631042, -0.03784232959151268, -0.05014420300722122, 0.04404780641198158, 0.09254389256238937, 0.09839074313640594, -0.028214668855071068, 0.03262662887573242, 0.04281335324048996, 0.07356158643960953, -0.0773080587387085, 0.026536725461483, -0.06819723546504974, 0.03335537016391754, 0.09355103969573975, -0.052649617195129395, -0.08467497676610947, -0.06516479700803757, -0.07499512284994125, 0.023276200518012047, -0.06063856557011604, -0.044472258538007736, 0.03155883774161339, -0.011262890882790089, 0.04045895114541054, 0.012343645095825195],
+ "PMULUDQrr":[-0.018331514671444893, 0.04249238595366478, 0.0718526765704155, 0.03221653401851654, -0.04829120263457298, -0.02055567130446434, 0.05200991779565811, -0.04337913170456886, -0.02698952704668045, 0.05037892237305641, 0.014545431360602379, 0.09035851061344147, 0.0777752548456192, -0.06762461364269257, 0.032133519649505615, 0.048851024359464645, 0.01295433659106493, 0.054136257618665695, 0.09599477052688599, 0.024489495903253555, 0.05683024227619171, -0.05242127552628517, -0.043476004153490067, 0.004586773458868265, 0.024281315505504608, 0.03402777388691902, 0.0033939755521714687, 0.049474406987428665, 0.0011405921541154385, 0.06828528642654419, 0.08426304161548615, -0.029339993372559547, -0.04173621907830238, -0.03966334089636803, -0.03011258877813816, -0.07684683799743652, 0.040944185107946396, -0.04709877818822861, 0.07968004047870636, 0.07534269988536835, -0.006957313045859337, -0.0016522067598998547, -0.017229178920388222, 0.030470186844468117, 0.05390452966094017, 0.05233803763985634, 0.045554302632808685, -0.03710555285215378, 0.05699322372674942, 0.019888387992978096, 0.10152119398117065, 0.026563912630081177, -0.0018862299621105194, -0.02453959546983242, -0.06107368320226669, -0.04910692200064659, -0.06316373497247696, 0.04648333042860031, -0.00939352996647358, 0.030374331399798393, 0.0027768383733928204, 0.07302171736955643, -0.0035402378998696804, 0.054474033415317535, -0.0739617869257927, 0.01190911140292883, -0.019428657367825508, -0.006644500885158777, -0.04998863860964775, 0.03215506672859192, 0.054085105657577515, 0.047874726355075836, 0.10735851526260376, 0.030255280435085297, 0.029996531084179878, 0.006218941882252693, 0.04892734810709953, 0.06425125896930695, -0.017792150378227234, 0.041398752480745316, -0.017293022945523262, -0.011015499010682106, -0.02933122031390667, -0.005825115367770195, -0.07212502509355545, 0.10469445586204529, 0.009840304031968117, 0.026172513142228127, 0.002459621522575617, -0.02771947532892227, -0.006639100145548582, -0.04062161594629288, -0.0746249407529831, 0.04523816704750061, -0.07439430058002472, 0.06977812945842743, 0.008738852106034756, 0.06937781721353531, 0.07391723990440369, -0.09542208909988403],
+ "POPCNT":[0.032459065318107605, 0.11127372831106186, -0.004006756469607353, 0.06373029947280884, 0.07161973416805267, -0.07966824620962143, -0.014274416491389275, 0.02168503776192665, -0.060636017471551895, -0.051414258778095245, 0.003268218832090497, 0.05552225932478905, 0.01940925046801567, -0.05398592725396156, 0.09021458029747009, -0.060922130942344666, -0.0407782681286335, -0.027882883325219154, 0.012706448324024677, -0.02730434015393257, 0.05854162946343422, -0.0798129290342331, -0.00179530237801373, 0.04958317428827286, -0.04621487483382225, 0.0524308979511261, -0.03889109939336777, 0.07240460813045502, 0.06366933137178421, 0.029314585030078888, -0.014743340201675892, -0.021233027800917625, 0.06803205609321594, -0.01269250176846981, -0.033408213406801224, 0.09638478606939316, -0.02009841799736023, -0.014619074761867523, 0.022498659789562225, 0.006679723970592022, -0.016163295134902, 0.09717728197574615, -0.010882971808314323, -0.09489153325557709, 0.046623144298791885, -0.04596618935465813, -0.026864662766456604, 0.01605546846985817, 0.05979238823056221, -0.024411896243691444, 0.039511535316705704, -0.0108433086425066, -0.05629622936248779, 0.02339898608624935, -0.025785285979509354, 0.011886742897331715, 0.08834438771009445, -0.08506806194782257, 0.021776534616947174, 0.01446699257940054, -0.009117010980844498, -0.022380229085683823, -0.0541100800037384, -0.040569182485342026, -0.02888612262904644, 0.07774273306131363, -0.052350424230098724, -0.039240963757038116, 0.004771160893142223, 0.014987779781222343, -0.05511622130870819, 0.019763313233852386, -0.0920683741569519, 0.021821241825819016, 0.10812623798847198, -0.06422155350446701, -0.07388156652450562, 0.00949418731033802, -0.06905169039964676, 0.006180475000292063, -0.02844754233956337, 0.11084792017936707, -0.03348945826292038, 0.06860767304897308, -0.0214154664427042, -0.0008655296987853944, -0.020698973909020424, 0.03369581326842308, 0.019848104566335678, 0.013533092103898525, 0.03423681482672691, 0.014547858387231827, 0.02418140508234501, -0.013769546523690224, -0.09633788466453552, 0.01689709909260273, -0.01452709175646305, 0.047873757779598236, -0.0012036423431709409, 0.03720762953162193],
+ "PORrr":[0.013287629932165146, -0.07419643551111221, -0.07563737779855728, -0.04673279449343681, -0.014556661248207092, 0.012816892005503178, -0.004275694489479065, 0.026705779135227203, -0.01521439291536808, 0.011231394484639168, 0.04148810729384422, -0.06955977529287338, 0.03838326781988144, 0.03174414858222008, -0.028135936707258224, -0.049792636185884476, -0.10925675928592682, -0.024800818413496017, 0.048644475638866425, -2.1631421986967325e-05, -0.0954168513417244, 0.03411703184247017, 0.03051091730594635, -0.0647701844573021, 0.07446406781673431, -0.05785350501537323, -0.02290833368897438, -0.05470609292387962, -0.053046368062496185, 0.06280791014432907, 0.00021303683752194047, -0.004461210686713457, 0.03639639914035797, 0.08960475772619247, -0.009616266004741192, 0.04383566230535507, 0.10386556386947632, -0.006216402165591717, -0.05320163443684578, 0.018522324040532112, -0.015465791337192059, 0.04746931046247482, -0.06116799637675285, 0.05892029404640198, -0.10403282940387726, -0.07555884122848511, -0.0409059152007103, 0.08114378899335861, -0.06282482296228409, -0.0061430372297763824, -0.04366912692785263, 0.04928108677268028, 0.10402899235486984, -0.07951053231954575, 0.027152203023433685, -0.07290944457054138, 0.06899191439151764, 0.003212996292859316, 0.10297896713018417, 0.043246231973171234, 0.096260204911232, -0.06070451810956001, 0.10791319608688354, -0.002538471482694149, -0.054205138236284256, -0.03588609769940376, 0.03883792832493782, 0.02822684682905674, -0.07813071459531784, 0.0334264412522316, 0.07522565126419067, 0.04451250657439232, 0.002771272324025631, -0.026901178061962128, -0.08427772670984268, 0.05112769082188606, -0.002301004948094487, -0.05371199920773506, 0.07268114387989044, 0.10428363084793091, -0.07267038524150848, 0.10280045121908188, 0.013920939527451992, -0.0063179610297083855, 0.10665898770093918, 0.02365981973707676, -0.028032416477799416, 0.06388229131698608, 0.029560497030615807, -0.03740405663847923, 0.04580940678715706, 0.03818145766854286, 0.10749059915542603, -0.018444353714585304, 0.06485310196876526, -0.05369368940591812, -0.04781297594308853, 0.02100997418165207, 0.05573980137705803, 0.05485910922288895],
+ "PREFETCHT":[0.06266244500875473, -0.08651245385408401, 0.01386247668415308, 0.06899096816778183, 0.10456889867782593, 0.0254489965736866, 0.022997276857495308, -0.052071377635002136, 0.029308103024959564, 0.06874623894691467, 0.03265761584043503, 0.09522407501935959, 0.037009578198194504, -0.025293288752436638, 0.01619075983762741, -0.037872739136219025, 0.0053333803080022335, 0.021171675994992256, -0.05084632709622383, -0.016299469396471977, -0.08423011004924774, 0.0008700755424797535, 0.04232696443796158, -0.07934901118278503, 0.0355096161365509, 0.02117762342095375, 0.0386466458439827, 0.06520410627126694, 0.018146293237805367, -0.04491185396909714, 0.01958817057311535, -0.04191975295543671, -0.021085815504193306, 0.009822769090533257, 0.05018160492181778, 0.019983021542429924, 0.04605020582675934, -0.020031051710247993, 0.01994471624493599, 0.06699877232313156, 0.0037005608901381493, 0.038006801158189774, -0.021179113537073135, 0.011568237096071243, 0.011661672033369541, 0.013243450783193111, -0.06496317684650421, -0.03396502137184143, -0.10372886061668396, 0.10670660436153412, 0.04015554487705231, -0.056414395570755005, -0.0048237754963338375, 0.0055715166963636875, -0.0002773202722892165, 0.0430339016020298, -0.007398460526019335, -0.05391748994588852, -0.018540170043706894, 0.031089967116713524, 0.009029267355799675, 0.014948884956538677, 0.08344083279371262, 0.04186894744634628, -0.024650827050209045, -0.04666506499052048, 0.01835850439965725, -0.0553136020898819, 0.008206150494515896, 0.027830924838781357, 0.03711032494902611, -0.03493340313434601, -0.024719921872019768, -0.06896809488534927, 0.015215486288070679, -0.04559868946671486, -0.05461551994085312, 0.019663065671920776, 0.02691870927810669, -0.10851462930440903, 0.09773515164852142, 0.08311446756124496, 0.016083722934126854, 0.10600735247135162, 0.04507412761449814, -0.08980298042297363, 0.07415670901536942, -0.07496260851621628, 0.031880538910627365, 0.02539217099547386, -0.04505890607833862, -0.01442048791795969, 0.03652526065707207, -0.060975756496191025, 0.015691539272665977, 0.04411415010690689, 0.03385011851787567, -0.051069457083940506, 0.05449385941028595, -0.06721463799476624],
+ "PSHUFDri":[0.005532850045710802, -0.05238369479775429, -0.07280861586332321, -0.07989807426929474, 0.07888741046190262, -0.01490328274667263, -0.0149567611515522, -0.009287639521062374, 0.00342811131849885, -0.07819768786430359, -0.003761916421353817, 0.012991704978048801, 0.005901975557208061, 0.024620676413178444, -0.05321492999792099, 0.00917349848896265, 0.012471253983676434, 0.0329999215900898, -0.020984124392271042, 0.0029256653506308794, 0.0459040142595768, 0.06486758589744568, -0.020235052332282066, 0.013759925030171871, -0.018266623839735985, 0.06043709069490433, 0.034815818071365356, 0.03178821876645088, -0.080614373087883, 0.0475483275949955, -0.01662507839500904, 0.029957374557852745, 0.07745099067687988, 0.08236077427864075, -0.06324467808008194, -0.05937281623482704, 0.036143720149993896, -0.04366558790206909, -0.0034548542462289333, -0.0518978014588356, 0.046908460557460785, 0.08043240755796432, 0.007312464993447065, -0.015235555358231068, 0.03777892515063286, 0.02542685531079769, 0.002376663265749812, -0.058003250509500504, -0.04861772432923317, -0.01604449562728405, 0.03163330629467964, -0.0363377183675766, -0.013085548765957355, 0.014966288581490517, -0.018824394792318344, 0.059329889714717865, -0.035442907363176346, -0.008054889738559723, 0.003642117604613304, -0.023651551455259323, 0.07089689373970032, 0.03931780532002449, -0.018003834411501884, -0.017803872004151344, -0.08193809539079666, 0.012365549802780151, 0.035743679851293564, -0.07248389720916748, -0.02080422081053257, -0.036521803587675095, 0.03582918643951416, 0.020148754119873047, 0.021978503093123436, 0.05098720267415047, 0.040140293538570404, -0.09811262041330338, 0.01818995550274849, 0.03622553497552872, 0.060666199773550034, 0.04886018484830856, 0.053643543273210526, -0.05239856243133545, -0.04306575283408165, -0.012877771630883217, 0.004836655221879482, 0.018738148733973503, -0.03797309473156929, -0.09870781749486923, 0.02520057000219822, -0.05144456773996353, -0.035111475735902786, -0.023288937285542488, -0.05573100224137306, 0.07770835608243942, -0.0591263547539711, 0.04211015999317169, -0.09456241130828857, 0.06829202175140381, -0.06141325458884239, -0.02547028474509716],
+ "PSHUFHWri":[0.11020902544260025, 0.008782396093010902, 0.10153699666261673, 0.05353786051273346, -0.031677547842264175, -0.02212713100016117, 0.0006544854259118438, 0.03468479588627815, -0.07586058229207993, -0.04542655870318413, 0.013592023402452469, 0.03030853532254696, 0.08659251034259796, 0.02775174379348755, -0.09345123171806335, 0.03867693245410919, -0.04065019264817238, -0.07577789574861526, 0.025527967140078545, 0.10544994473457336, 0.04665636271238327, 0.045609842985868454, -0.06546619534492493, -0.06512976437807083, 0.0335114449262619, -0.02181228995323181, -0.00764469662681222, -0.08432260155677795, -0.004671803209930658, 0.007340457756072283, -0.060605306178331375, 0.058804839849472046, -0.015250957570970058, 0.029781857505440712, -0.041044559329748154, 0.04151099920272827, -0.05384153127670288, -0.021052975207567215, -0.08153427392244339, -0.08734260499477386, -0.006825791206210852, 0.09764362126588821, 0.04189826175570488, -0.013380640186369419, -0.022070933133363724, -0.04031756520271301, -0.09517135471105576, 0.0101185766980052, 0.06645606458187103, 0.0413675494492054, -0.02117997407913208, 0.08231896907091141, -0.04019004851579666, -0.042048461735248566, -0.06072979047894478, -0.0210157111287117, -0.0007054525194689631, -0.022618599236011505, 0.055465374141931534, -0.05493228882551193, -0.05181591212749481, -0.011164659634232521, 0.08116650581359863, 0.07464688271284103, -0.07092111557722092, -0.06385290622711182, 0.0157210323959589, -0.05348380282521248, 0.028996365144848824, -0.00159734848421067, -0.0002441864926367998, -0.0622234046459198, -0.05488216504454613, -0.09290780872106552, -0.01438633631914854, 0.0013885223306715488, -0.02728387899696827, -0.07772492617368698, -0.04847069829702377, -0.026948342099785805, 0.05635086074471474, 0.07322969287633896, -0.05890396609902382, 0.013550665229558945, -0.06997914612293243, 0.05509018152952194, 0.015844663605093956, -0.055341921746730804, -0.038501955568790436, -0.08848515152931213, 0.06273624300956726, 0.08637747168540955, -0.04030599072575569, -0.039096564054489136, -0.056630924344062805, 0.02502797171473503, -0.03949162736535072, 0.04260125756263733, 0.03861930966377258, -0.044171042740345],
+ "PSHUFLWri":[-0.048973459750413895, 0.0332413874566555, -0.05286714434623718, -0.07058518379926682, -0.09958643466234207, -0.010460077784955502, 0.028736239299178123, 0.06909917294979095, -0.028394535183906555, 0.05004686489701271, 0.08589737117290497, 0.005936514586210251, -0.02724473923444748, 0.03502696752548218, 0.0317721962928772, 0.013139314018189907, -0.012641910463571548, -0.0027381458785384893, 0.05762966349720955, 0.009405359625816345, 0.009103155694901943, 0.0608891136944294, 0.028798608109354973, -0.03174182400107384, 0.05480194091796875, -0.00804658979177475, 0.06671208888292313, -0.046567730605602264, 0.07210909575223923, 0.040721431374549866, 0.03447087109088898, 0.02802908793091774, 0.09580913186073303, -0.07016601413488388, -0.02705381065607071, -0.02354084514081478, 0.06871280074119568, -0.010005210526287556, -0.027109647169709206, 0.0554153174161911, -0.0055982498452067375, -0.06706049293279648, -0.07453615963459015, -0.013738768175244331, 0.04459196701645851, -0.07668546587228775, -0.026366237550973892, 0.014940908178687096, 0.007874752394855022, 0.03282856568694115, -0.06158824637532234, -0.021423503756523132, -0.05336740240454674, 0.06208302825689316, -0.058698270469903946, 0.027037033811211586, -0.006733316462486982, 0.014437124133110046, 0.049146994948387146, 0.06651581823825836, -0.10097505152225494, 0.03924223780632019, -0.02701619267463684, -0.021888045594096184, 0.024091780185699463, 0.07165060937404633, -0.01636817865073681, 0.07162344455718994, -0.025229116901755333, -0.09012729674577713, -0.013583419844508171, -0.05905112996697426, 0.08198477327823639, 0.018985388800501823, -0.1017618253827095, -0.10150711238384247, 0.03311005234718323, -0.06443957984447479, -0.025928953662514687, -0.04008326306939125, -0.06374595314264297, 0.05518169328570366, 0.008837619796395302, -0.00367143377661705, 0.03619106858968735, 0.018588071689009666, 0.08112863451242447, 0.08481622487306595, 0.05693958327174187, -0.032225292176008224, 0.05009511858224869, 0.08315092325210571, 0.0684652030467987, 0.029837345704436302, 0.07584580034017563, 0.019667861983180046, 0.020756971091032028, 0.009600753895938396, -0.0525808148086071, -0.061853766441345215],
+ "PSLLDri":[-0.01071570347994566, -0.10989008098840714, -0.048811428248882294, 0.036995597183704376, -0.0608416348695755, 0.06362807005643845, 0.0805627852678299, -0.019620373845100403, -0.0993913784623146, -0.018315641209483147, -0.04678860306739807, 0.0060227843932807446, 0.011020024307072163, 0.07958773523569107, 0.0006064845947548747, 0.02646106481552124, 0.007319242227822542, -0.015297910198569298, -0.030644135549664497, -0.05834297835826874, -0.024455580860376358, -0.0045844693668186665, 0.061104122549295425, -0.039603620767593384, -0.1065816581249237, -0.00045447851880453527, 0.009943150915205479, 0.11343620717525482, 0.00929670874029398, 0.033933576196432114, 0.02495659328997135, 0.007939638569951057, -0.017990058287978172, 0.025086354464292526, -0.03380809351801872, -0.006674544420093298, -0.0411725714802742, 0.044357459992170334, 0.09170477837324142, 0.07541689276695251, 0.1047932356595993, 0.0036328781861811876, -0.08095592260360718, -0.0721648633480072, -0.0160544291138649, -0.06270197778940201, -0.016776669770479202, -0.0075500886887311935, 0.03221726045012474, -0.01393803209066391, 0.051355037838220596, 0.06602949649095535, -0.05532512068748474, 0.059500448405742645, -0.06366325914859772, 0.008692503906786442, -0.04159771651029587, 0.036275479942560196, -0.01383476797491312, -0.0002724278892856091, -0.026119336485862732, 0.008151013404130936, 0.008436841890215874, -0.008467400446534157, -0.011032212525606155, 0.02757827751338482, -0.06500983983278275, 0.033029988408088684, 0.08844506740570068, -0.02394505962729454, -0.003277215640991926, -0.06482354551553726, 0.02414962649345398, 0.02544473111629486, 0.09161108732223511, -0.06465919315814972, -0.0746973305940628, 0.001124971080571413, -0.02781892567873001, -0.06456626951694489, 0.06313007324934006, 0.03513883426785469, -0.05500388517975807, 0.06737934052944183, -0.08768913149833679, -0.04604854807257652, -0.0872897356748581, -0.10001532733440399, -0.0757346823811531, -0.020451122894883156, -0.07969167828559875, 0.09365380555391312, -0.05682879313826561, 0.08262436091899872, 0.07417508959770203, 0.02602854184806347, -0.07122445106506348, -0.016188427805900574, 0.027732396498322487, -0.028741618618369102],
+ "PSLLQri":[-0.028904715552926064, 0.08764330297708511, -0.0012035445543006063, 0.06965107470750809, 0.008913476951420307, -0.03328715264797211, 0.05367162451148033, -0.04848628118634224, 0.037871140986680984, -0.016964631155133247, 0.009287623688578606, 0.003863908816128969, 0.039262689650058746, 0.07217369973659515, -0.012269017286598682, 0.024323584511876106, -0.016530996188521385, 0.08210045099258423, -0.05075090378522873, 0.023017212748527527, 0.037616223096847534, 0.06713896244764328, 0.04727460443973541, -0.012942928820848465, 0.022220978513360023, -0.01136922836303711, -0.011840740218758583, -0.023534074425697327, 0.0468963161110878, -0.0009377800743095577, -0.04858682304620743, 0.011918710544705391, 0.005668336525559425, 0.10327748209238052, 0.02530602551996708, -0.03773438557982445, 0.026000747457146645, 0.008958741091191769, -0.10984376817941666, 0.07257016748189926, -0.012014697305858135, -0.026694754138588905, -0.09996803104877472, 0.034842703491449356, 0.04572143405675888, 0.016088277101516724, -0.0674053430557251, 0.08119150251150131, -0.0008894084021449089, 0.05664680525660515, 0.033419523388147354, -0.011920741759240627, -0.05225123465061188, 0.0691404864192009, 0.10373691469430923, 0.015068198554217815, -0.007513871416449547, 0.03616584837436676, -0.02430662512779236, -0.07449288666248322, 0.000622472376562655, 0.009661718271672726, -0.010506209917366505, 0.0658714696764946, -0.06152646616101265, 0.004230594728142023, -0.05615265294909477, 0.008304608054459095, -0.002217754488810897, 0.02344433218240738, -0.026435058563947678, -0.03964515030384064, -0.024226093664765358, 0.028128214180469513, -0.009673185646533966, 0.008774940855801105, -0.024521250277757645, 0.05546623468399048, 0.06965665519237518, -0.04476298391819, 0.05429454147815704, -0.11068283021450043, -0.07035369426012039, 0.057739078998565674, 0.004972477909177542, -0.00786838959902525, -0.05664540454745293, 0.03047834150493145, 0.05497382581233978, 0.07644020020961761, 0.056065745651721954, 0.06870456039905548, -0.07784044742584229, -0.06194448843598366, 0.04924599453806877, 0.056759580969810486, 0.023112215101718903, 0.05056716129183769, -0.004877072758972645, 0.09906600415706635],
+ "PSRADri":[-0.06111080199480057, 0.05069536343216896, -0.002643157495185733, -0.04551217705011368, 0.07833505421876907, 0.054127421230077744, 0.059867966920137405, 0.004482671618461609, 0.027271321043372154, 0.013797925785183907, -0.05385464429855347, -0.0196481142193079, 0.05271298438310623, 0.05257382243871689, -0.06437887251377106, -0.010013426654040813, -0.005858918651938438, 0.05021669343113899, 0.018001066520810127, 0.003059703391045332, -0.023575544357299805, 0.006910314783453941, 0.09377983957529068, -0.06249462068080902, 0.042962610721588135, -0.08296368271112442, -0.08904842287302017, 0.03714665398001671, 0.04801767319440842, -0.026021605357527733, 0.0360930934548378, 0.046556442975997925, -0.03932418301701546, 0.002217464381828904, -0.039144180715084076, 0.015444830060005188, 0.008382792584598064, 0.045649848878383636, -0.028507282957434654, 0.013411878608167171, 0.09657319635152817, 0.07522574067115784, -0.03561670705676079, 0.055140987038612366, 0.053479455411434174, -0.11170031130313873, -0.013792408630251884, 0.08417479693889618, 0.08692038059234619, -0.022689370438456535, 0.06729894876480103, 0.09389055520296097, -0.09749626368284225, -0.03432423621416092, -0.04570553079247475, -0.08780025690793991, 0.05954112857580185, -0.033341217786073685, 0.01872180588543415, -0.059397004544734955, 0.00791068747639656, 0.04304282367229462, 0.10907433182001114, 0.0048844157718122005, 0.020763572305440903, 0.012573258019983768, -0.0024322140961885452, -0.03120485134422779, -0.09662137180566788, 0.05173075199127197, -0.04064846411347389, 0.039944011718034744, 0.0747869461774826, -0.017590582370758057, 0.03182971477508545, 0.033829160034656525, 0.03684825077652931, 0.10210711508989334, 0.012569586746394634, -0.0819263756275177, 0.014026384800672531, -0.04245789721608162, 0.09746585786342621, -0.022679563611745834, -0.04013508930802345, 0.08396076411008835, -0.03480237349867821, 0.00022093273582868278, 0.08679520338773727, 0.04769265279173851, -0.014813968911767006, 0.055129967629909515, -0.026699639856815338, 0.0036157614085823298, 0.0391974002122879, -0.0635283887386322, 0.07770708203315735, -0.03485984727740288, 0.030350247398018837, 0.0851653590798378],
+ "PSRLDri":[-0.09701550006866455, -0.04642222821712494, 0.03168433532118797, -0.0820927694439888, -0.034342940896749496, 0.03958243876695633, -0.06644904613494873, 0.02913002111017704, 0.025034088641405106, 0.03997695818543434, -0.08076230436563492, 0.06420225650072098, -0.061943601816892624, 0.033157095313072205, -0.06456103175878525, 0.020127123221755028, -0.09549177438020706, 0.05027206242084503, 0.07828987389802933, -0.04391445592045784, 0.002809459576383233, 0.053757429122924805, -0.0007574833580292761, -0.0385858453810215, 0.00938463769853115, 0.0272869560867548, 0.03398779034614563, 0.079644575715065, 0.041203394532203674, -0.052716538310050964, -0.04627979174256325, -0.06049266457557678, 0.029893601313233376, 3.639298665802926e-05, 0.04802899807691574, 0.014219080097973347, 0.04121169075369835, 0.05257685109972954, -0.00807190127670765, 0.004186101257801056, -0.0567501075565815, 0.013541693799197674, -0.024406764656305313, 0.021578434854745865, 0.04196127876639366, -0.014769801869988441, 0.03624792769551277, 0.03895324841141701, -0.02024749107658863, 0.06769376993179321, -0.036330513656139374, 0.03344738483428955, 0.01569867692887783, -0.06408285349607468, 0.0029288737569004297, 0.042806658893823624, 0.021047016605734825, -0.014806144870817661, 0.022801782935857773, 0.0647229328751564, 0.07369423657655716, 0.031101591885089874, -0.04690011590719223, -0.03924806788563728, 0.019474223256111145, 0.021380022168159485, -0.019034001976251602, 0.0885927677154541, 0.09685839712619781, -0.025511067360639572, -0.03898005560040474, 0.04239828139543533, 0.05239104852080345, 0.03487386181950569, 0.09203962236642838, 0.08644890040159225, 0.10406144708395004, 0.05260220915079117, 0.0858033075928688, 0.001589704887010157, 0.0006063967593945563, -0.10470570623874664, -0.06627374142408371, 0.021361513063311577, 0.033384740352630615, 0.07714181393384933, -0.08920611441135406, 0.013232072815299034, 0.014230016618967056, -0.07700349390506744, -0.0023716397117823362, 0.020945949479937553, -0.005731233861297369, 0.04150764271616936, 0.09067262709140778, 0.04426099359989166, -0.031573738902807236, 0.03197246417403221, 0.07919908314943314, -0.07318589091300964],
+ "PSRLQri":[-0.04770725592970848, -0.034204769879579544, -0.017810901626944542, -0.0020552631467580795, -0.021835314109921455, -0.021093249320983887, 0.07864232361316681, -0.011805612593889236, -0.10487201064825058, 0.028623497113585472, -0.04873282089829445, -0.037818022072315216, -0.007449599914252758, -0.05128362402319908, -0.03815554082393646, -0.03956328332424164, -0.009413323365151882, 0.025001704692840576, 0.07076582312583923, 0.0001922714727697894, -0.008249403908848763, 0.07396723330020905, 0.04172841086983681, -0.06364326179027557, 0.029924072325229645, 0.004180449061095715, -0.06089618057012558, -0.06253425776958466, -0.04197070747613907, -0.007847387343645096, 0.07120639085769653, -0.018208647146821022, 0.076168954372406, 0.04035889357328415, -0.06216061860322952, 0.05735217407345772, -0.07657529413700104, 0.021647458896040916, -0.03631609305739403, -0.013079589232802391, -0.07921291887760162, -0.04572884365916252, 0.08728978782892227, -0.08131890743970871, -0.043263062834739685, -0.09249851107597351, 0.04900648072361946, -0.08517517149448395, 0.0872824490070343, 0.03623134270310402, -0.015600410290062428, 0.048252131789922714, 0.07892382144927979, -0.006881421897560358, 0.012762565165758133, -0.010364589281380177, -0.04524186626076698, -0.009171631187200546, -0.062406063079833984, 0.039935268461704254, 0.07789385318756104, 0.05489662289619446, 0.02793337032198906, -0.008486011065542698, -0.023999305441975594, -0.007294949144124985, -0.10886146873235703, -0.060426220297813416, -0.03325675427913666, -0.058439675718545914, -0.06330427527427673, 0.04587985575199127, -0.047673583030700684, -0.07346516847610474, 0.06598462909460068, -0.05651652440428734, 0.024772223085165024, -0.061748091131448746, 0.003817614633589983, -0.01980646885931492, -0.006535878870636225, 0.10114572197198868, -0.033401813358068466, -0.025300554931163788, -0.017913291230797768, 0.07708217948675156, -0.006553079001605511, 0.05449948087334633, -0.025400767102837563, -0.007374083157628775, 0.09328432381153107, 0.04274500906467438, 0.05197741091251373, 0.11001764237880707, 0.04395235702395439, 0.02008347027003765, 0.03080548718571663, 0.04562309756875038, 0.01635988987982273, -0.08156710118055344],
+ "PSRLWri":[0.09044098109006882, -0.08715692162513733, -0.00703100860118866, -0.009798802435398102, 0.04166090488433838, -0.08762278407812119, -0.029315998777747154, -0.025368234142661095, -0.04113447293639183, 0.029952118173241615, -0.003176808590069413, -0.08742436021566391, 0.01601530611515045, -0.0446116104722023, 0.02403465285897255, -0.03265628218650818, -0.0036490485072135925, 0.04539055377244949, 0.09263353794813156, -0.014068649150431156, -0.014912502840161324, -0.005724174436181784, -0.09660080075263977, -0.04560885205864906, -0.029501497745513916, -0.07513530552387238, 0.032792169600725174, -0.04722622036933899, 0.002344198990613222, 0.0005616662092506886, 0.002616549376398325, 0.03687642514705658, -0.023176075890660286, 0.04877377301454544, -0.039633799344301224, 0.015406368300318718, -0.05990523099899292, -0.030745066702365875, -0.03939824923872948, -0.03156299516558647, 0.0434611551463604, 0.03307940065860748, 0.0027815878856927156, -0.03511674702167511, -0.06931356340646744, -0.03580000624060631, 0.012247752398252487, 0.004163464996963739, -0.036542344838380814, -0.05640599504113197, 0.07892944663763046, 0.005767157766968012, 0.015261363238096237, 0.07457606494426727, 0.012130103074014187, -0.053930677473545074, -0.0041893464513123035, 0.061489105224609375, -0.022672928869724274, -0.014939057640731335, -0.07677845656871796, -0.06273975223302841, 0.012125685811042786, -0.03332076594233513, 0.0580504946410656, 0.007439987733960152, 0.013750881887972355, 0.04717869684100151, 0.08239481598138809, 0.020804379135370255, 0.03964582830667496, 0.04556663706898689, 0.017417140305042267, -0.008090891875326633, -0.015374592505395412, -0.03005288913846016, -0.011047990061342716, 0.03840106353163719, 0.024623721837997437, 0.06524910032749176, 0.035483695566654205, -0.036742664873600006, 0.07781253010034561, -0.03185538575053215, -0.023133410140872, 0.0333380326628685, -0.03680151700973511, -0.027542440220713615, -0.04200883209705353, 0.021497022360563278, -0.06009111925959587, 0.010855531319975853, -0.07530515640974045, -0.05083025246858597, -0.06577810645103455, 0.045179855078458786, -0.008146410807967186, 0.09883058071136475, -0.01404991652816534, -0.022075297310948372],
+ "PSUBDrr":[0.0497874990105629, -0.024005835875868797, 0.04249505698680878, -0.0001977484644157812, -0.058882035315036774, 0.008521324023604393, -0.06511044502258301, 0.023605450987815857, -0.03874586522579193, -0.0021710016299039125, -0.08917849510908127, -0.016866534948349, 0.045625846832990646, 0.033503271639347076, 0.02607976831495762, 0.08881331980228424, 0.06984575092792511, 0.03903514891862869, 0.0025831020902842283, -0.03821851313114166, 0.03582309931516647, 0.09544799476861954, 0.022963181138038635, 0.05952616035938263, -0.016627425327897072, -0.05806853994727135, -0.023548509925603867, -0.052160561084747314, -0.004330569878220558, 0.034157972782850266, 0.05355748161673546, 0.005126115400344133, -0.04082847386598587, -0.01986517384648323, 0.07769274711608887, -0.0857728123664856, -0.01623212918639183, -0.084348663687706, 0.0014716278528794646, 0.0556630901992321, 0.00021327834110707045, 0.027949469164013863, 0.0027713195886462927, -0.08175075799226761, -0.015100851655006409, -0.05543486773967743, -0.07552405446767807, -0.03980587422847748, -0.014780041761696339, -0.04142867773771286, 0.047537561506032944, -0.004203748423606157, 0.04156520217657089, -0.052603479474782944, -0.05088425800204277, -0.032153014093637466, -0.0029677427373826504, 0.026093101128935814, 0.04473108798265457, -0.02791735716164112, 0.04175364598631859, -0.04626688361167908, -0.039822958409786224, 0.011621289886534214, 0.051498353481292725, -0.021269166842103004, -0.0239290539175272, 0.00869885552674532, 0.09535054117441177, -0.047056443989276886, 0.006942782551050186, 0.0746176689863205, -0.02601260505616665, 0.011871898546814919, 0.0439860038459301, 0.021306384354829788, 0.061314165592193604, 0.07532338798046112, 0.08246095478534698, -0.058228444308042526, -0.010167274624109268, -0.040789004415273666, -0.042861104011535645, 0.0003344247816130519, 0.00387742486782372, 0.04110964760184288, -0.0014589132042601705, 0.10233473032712936, -0.05155947431921959, 0.013359659351408482, -0.023750916123390198, -0.06330657750368118, -0.10042000561952591, -0.026218976825475693, -0.08529558777809143, 0.09276869893074036, -0.06253557652235031, -0.025330515578389168, -0.07563655823469162, -0.06077997758984566],
+ "PUNPCKHBWrr":[0.020475871860980988, 0.031259965151548386, -0.050402238965034485, 0.013659562915563583, -0.018948953598737717, -0.05047003924846649, 0.06100138649344444, -0.08739221841096878, 0.03943466767668724, 0.027562227100133896, 0.01838289014995098, -0.017379363998770714, 0.00316716474480927, -0.03268963098526001, 0.04545098915696144, 0.023297134786844254, -0.02139860950410366, -0.04003870114684105, -0.0018343719420954585, 0.017379112541675568, 0.05840596556663513, -0.09750960022211075, -0.10285505652427673, 0.03097989410161972, -0.015860985964536667, 0.056861817836761475, 0.02810639515519142, 0.005009181331843138, -0.06400614231824875, -0.04762988165020943, 0.04554830119013786, -0.04176824539899826, -0.020137958228588104, -0.01027906034141779, -0.04677383229136467, 0.044481612741947174, 0.040894731879234314, 0.07550636678934097, -0.07413098216056824, -0.026579739525914192, 0.005259971134364605, -0.016607021912932396, 0.015101173892617226, -0.04612472653388977, -0.05508081614971161, -0.034943047910928726, 0.04259735718369484, 0.05370114743709564, 0.02188807912170887, 0.0035640173591673374, 0.023306548595428467, 0.022530170157551765, -0.023028437048196793, 0.017473649233579636, 0.01046956516802311, -0.04743421822786331, -0.0599357895553112, -0.010609057731926441, 0.06085602939128876, 0.035022053867578506, -0.003009411972016096, 0.0023348666727542877, -0.01185610331594944, 0.05413668975234032, 0.04993463680148125, -0.06270311027765274, 0.08766660839319229, -0.008280531503260136, -0.008546385914087296, 0.05170571431517601, 0.010980174876749516, -0.019556444138288498, -0.0732179582118988, 0.10478414595127106, 0.03405999392271042, -0.008409667760133743, 0.005844055209308863, 0.06371083110570908, -0.09677578508853912, -0.03651493787765503, 0.026122581213712692, 0.04351221024990082, -0.05295374616980553, -0.001911470084451139, 0.013742213137447834, -0.083803191781044, -0.05179464817047119, -0.002515890635550022, -0.011646019294857979, 0.051050782203674316, 0.05020074173808098, -0.01281764917075634, -0.002700276207178831, 0.07894787192344666, -0.016123466193675995, -0.09460464119911194, 0.01471821591258049, -0.09070194512605667, 0.0583350695669651, -0.07188363373279572],
+ "PUNPCKHWDrr":[0.03780735656619072, 0.014870859682559967, 0.028493065387010574, -0.07115945219993591, -0.012915878556668758, -0.009411334991455078, 0.008693515323102474, 0.0214622151106596, 0.021939922124147415, -0.04285550117492676, 0.01111874170601368, 0.019056696444749832, 0.047431692481040955, 0.07542422413825989, -0.06819790601730347, -0.07284178584814072, -0.02725978009402752, 0.02201886661350727, -0.03221897780895233, -0.022113746032118797, 0.05292944610118866, 0.05778629332780838, 0.02018434926867485, -0.0009447034681215882, 0.06807544082403183, -0.052152812480926514, -0.051683295518159866, 0.01650221273303032, -0.06206328049302101, 0.024181369692087173, 0.010016849264502525, 0.02083684876561165, -0.029532160609960556, -0.0917644053697586, 0.022500457242131233, -0.051003970205783844, 0.06409952789545059, 0.06658380478620529, 0.04480811953544617, -0.011314823292195797, 0.016536714509129524, 0.012906855903565884, -0.010723152197897434, 0.08501029759645462, -0.07317376881837845, -0.034567348659038544, 0.06844063848257065, 0.02235318161547184, 0.04015379399061203, -0.022029418498277664, -0.06615426391363144, -0.029077187180519104, -0.06931150704622269, -0.0739646777510643, -0.03423183411359787, 0.06143873184919357, 0.07215090095996857, -0.022756658494472504, 0.02660926803946495, -0.03270702809095383, -0.0321161225438118, 0.09277486801147461, -0.0343625470995903, 0.00938365701586008, 0.03566776588559151, 0.0324980765581131, 0.0544767901301384, -0.06241953745484352, 0.040897198021411896, -0.03693750500679016, 0.002375658368691802, -0.04733691364526749, -0.06986235082149506, -0.06827616691589355, 0.05522962659597397, 0.0669182762503624, 0.013933361507952213, 0.008343442343175411, -0.06412235647439957, 0.0010451748967170715, -0.0654425099492073, 0.10282520204782486, -0.02295902743935585, -0.00666448287665844, 0.06222229450941086, -0.019253786653280258, 0.030009973794221878, -0.057346370071172714, -0.056177981197834015, 0.0362870916724205, 0.06963071972131729, -0.03123081475496292, 0.019468924030661583, 0.06059689819812775, 0.06053292006254196, -0.028497418388724327, -0.05502110719680786, 0.05593989044427872, 0.0010856972075998783, 0.03457110747694969],
+ "PUNPCKLBWrr":[-0.05877998471260071, 0.029580218717455864, 0.04452212154865265, 0.08605779707431793, -0.02657870203256607, -0.0005799299106001854, -0.022848885506391525, -0.024929599836468697, -0.01965113915503025, 0.03769731521606445, -0.0684744194149971, 0.08046209067106247, -0.03085111267864704, 0.012351282872259617, -0.008631610311567783, 0.005241554230451584, -0.07755061239004135, 0.06509195268154144, 0.014316785149276257, -0.008109881542623043, -0.008207050152122974, 0.005896322429180145, 0.014156682416796684, 0.01610434614121914, 0.03622645139694214, 0.03750089555978775, 0.008669375441968441, -0.016808386892080307, 0.09572794288396835, -0.04520682990550995, 0.010491976514458656, -0.038924865424633026, 0.007077852264046669, 0.02738173119723797, -0.07436526566743851, 0.03321697562932968, -0.05508868768811226, 0.1021094098687172, 0.04566039890050888, -0.07563126087188721, -0.03494802862405777, -0.07308263331651688, 0.022378604859113693, 0.06300081312656403, -0.020921623334288597, 0.0017196198459714651, 0.0326739177107811, 0.02682783454656601, -0.04251733422279358, 0.05830856412649155, 0.04160067066550255, -0.0515001155436039, 0.018955042585730553, 0.018856579437851906, -0.00622604601085186, -0.06630910933017731, -0.03474011272192001, 0.007643545512109995, 0.008623551577329636, -0.027037812396883965, -0.032127898186445236, 0.038707371801137924, 0.004848171956837177, -0.058315735310316086, -0.009421288967132568, 0.0027007590979337692, -0.07897988706827164, 0.0031022776383906603, -0.08176383376121521, -0.046500205993652344, 0.0374426394701004, -0.06745724380016327, -0.06399886310100555, 0.045655179768800735, -0.005688726436346769, -0.05782628431916237, 0.04530375078320503, 0.025175759568810463, -0.057991307228803635, 0.006244922988116741, -0.05898410826921463, -0.011543495580554008, -0.059070393443107605, -0.0498855859041214, 0.03753568232059479, -0.06221737712621689, 0.10334673523902893, -0.02068541757762432, 0.054024357348680496, -0.02360427938401699, 0.012381443753838539, -0.08253495395183563, -0.029672639444470406, 0.061651550233364105, 0.03564874455332756, 0.014976262114942074, 0.05928528308868408, 0.10548202693462372, 0.0674235001206398, 0.07377847284078598],
+ "PUNPCKLDQrm":[-0.0328093096613884, -0.030003881081938744, 0.025610551238059998, 0.07016321271657944, -0.004897914826869965, 0.003011218039318919, 0.03576413169503212, 0.005342076998203993, -0.020081276074051857, 0.057744499295949936, 0.019532926380634308, -0.037916868925094604, 0.015703372657299042, 0.0062576704658567905, -0.03131166845560074, -0.05845080688595772, -0.05370119959115982, -0.08909150213003159, 0.09207741171121597, -0.02426547184586525, 0.021529581397771835, 0.04886765778064728, -0.023454220965504646, -0.0751703679561615, 0.05638228356838226, 0.04353823512792587, -0.06452642381191254, -0.00962095707654953, -0.03713804855942726, -0.04863768070936203, -0.0873870924115181, 0.011754022911190987, 0.06296562403440475, -0.04884056746959686, -0.023466525599360466, 0.02206426113843918, 0.029297979548573494, 0.06467415392398834, -0.018725253641605377, -0.10391461849212646, 0.0013357227435335517, 0.02628943882882595, 0.0923716276884079, -0.040552686899900436, -0.09186261147260666, -0.02270391769707203, 0.07154529541730881, -0.09986330568790436, -0.015256599523127079, 0.0938575267791748, 0.0686546117067337, -0.025056805461645126, -0.03143744543194771, 0.022365648299455643, 0.0877685397863388, -0.012293903157114983, 0.012406711466610432, -0.05478358641266823, 0.048504624515771866, 0.012019765563309193, -0.010931122116744518, -0.012170301750302315, 0.002482080366462469, -0.05878647044301033, 0.02722844108939171, 0.08307517319917679, 0.05316334590315819, 0.04162760078907013, 0.018950022757053375, 0.05163973197340965, 0.05341225117444992, 0.0829835757613182, 0.03871529549360275, -0.08142262697219849, 0.07722941040992737, -0.05988436937332153, -0.1012931540608406, 0.05802326649427414, 0.025840284302830696, 0.079409159719944, -0.03203568235039711, -0.06397098302841187, -0.11108116060495377, 0.038711268454790115, 0.01764962635934353, 0.04852031543850899, 0.017546555027365685, -0.0003531697147991508, 0.009683196432888508, -0.02720116823911667, -0.0026235845871269703, 0.05265098065137863, -0.10638720542192459, 0.060915105044841766, 0.006102759391069412, -0.025914153084158897, 0.013530117459595203, -0.028328686952590942, -0.03501330688595772, 0.03071322850883007],
+ "PUNPCKLDQrr":[-0.01104284729808569, 0.06030244752764702, -0.044604215770959854, -0.0756630226969719, -0.050569433718919754, -0.02574179135262966, -0.0594894103705883, -0.03224096819758415, 0.04045814648270607, 0.07541978359222412, -0.020351411774754524, -0.016175612807273865, 0.022439638152718544, -0.04687701165676117, -0.08836878836154938, 0.061992526054382324, -0.0891488566994667, 0.008119666948914528, -0.09287527203559875, 0.02439058944582939, -0.063977912068367, 0.06757116317749023, 0.009974506683647633, 0.07030849903821945, 0.0017977217212319374, 0.04346800222992897, 0.07580386102199554, -0.10304788500070572, -0.021106259897351265, -0.04869598150253296, 0.06340337544679642, -0.09210186451673508, 0.018809260800480843, -0.0383492149412632, -0.07045100629329681, 0.022610560059547424, -0.058085210621356964, -0.026401352137327194, -0.02312559075653553, 0.06859654933214188, -0.06154921278357506, -0.05348341539502144, 0.017743967473506927, 0.04163966700434685, 0.004088727291673422, 0.023079819977283478, -0.018266240134835243, -0.039878204464912415, 0.003502880223095417, 0.047893889248371124, -0.04862489923834801, 0.012060007080435753, -0.09367524087429047, -0.04136418551206589, 0.0018122914480045438, -0.002684821840375662, -0.021728117018938065, -0.019614918157458305, 0.06473395973443985, -0.1066511869430542, 0.04026906564831734, 0.06904993206262589, -0.014823326840996742, 0.07278621196746826, 0.03235379606485367, -0.061082616448402405, 0.0030156411230564117, -0.052994079887866974, 0.023431669920682907, -0.02474944107234478, 0.007793893106281757, 0.061132561415433884, 0.004432764835655689, -0.07384510338306427, 0.012461120262742043, 0.054387547075748444, 0.07893943786621094, -0.001033156062476337, 0.026330983266234398, 0.06637270003557205, 0.0908561423420906, 0.09272924810647964, 0.012210327200591564, -0.044175200164318085, -0.012207566760480404, -0.07351205497980118, 0.043183282017707825, -0.05638182535767555, -0.08124324679374695, -0.06825702637434006, -0.08870343118906021, -0.08342525362968445, -0.001270653330720961, -0.037213969975709915, -0.08026199042797089, 0.037931524217128754, 0.012888923287391663, -0.09547509253025055, 0.045212794095277786, -0.09557049721479416],
+ "PUNPCKLQDQrr":[7.339678995776922e-05, -0.09068112075328827, -0.03634767234325409, 0.003214205615222454, 0.021440304815769196, 0.001383814960718155, 0.002995086368173361, 0.03012780286371708, -0.00644954526796937, 0.006823464762419462, 0.09063203632831573, 0.02487116865813732, 0.03128080070018768, -0.05890178307890892, 0.06438044458627701, -0.01109782513231039, -0.006490328349173069, -0.03141386806964874, 0.052244313061237335, 0.0032331955153495073, 0.0008648311486467719, 0.017541004344820976, 0.06227211654186249, -0.044958122074604034, -0.041429366916418076, 0.09252269566059113, 0.035206712782382965, 0.015544177033007145, -0.02767982892692089, 0.02188682183623314, -0.05558064207434654, 0.005913909059017897, -0.0031150542199611664, -0.04451235383749008, -0.024928882718086243, 0.001774849253706634, -0.06468645483255386, 0.024008365347981453, -0.0977882593870163, -0.017903421074151993, 0.08210276067256927, -0.041168052703142166, -0.024472346529364586, -0.043643802404403687, 0.041005901992321014, -0.09690383076667786, 0.08062929660081863, -0.07479458302259445, -0.0020565518643707037, -0.0910751223564148, 0.03481214493513107, -0.07567954808473587, -0.0017484119161963463, 0.05829770490527153, -0.009974840097129345, -0.06987331807613373, -0.01165371760725975, -0.012766863219439983, -0.0034300226252526045, -0.06281395256519318, -0.03542063757777214, 0.0025500161573290825, -0.02658754587173462, 0.011472953483462334, -0.03852931037545204, -0.019510503858327866, 0.003927958197891712, 0.0183733943849802, -0.08593037724494934, -0.052508022636175156, -0.0775255411863327, -0.0539543554186821, -0.028839336708188057, 0.009733714163303375, -0.06214484944939613, 0.0407799668610096, 0.017192892730236053, 0.04606469348073006, 0.07988312095403671, 0.04525631293654442, 0.03216210752725601, 0.05551595985889435, -0.05029883235692978, 0.045789625495672226, -0.013055351562798023, 0.03179563209414482, -0.060172490775585175, -0.014854852110147476, 0.022649098187685013, 0.05271314084529877, -0.06819821894168854, -0.049927614629268646, -0.04159395769238472, -0.06379634141921997, -0.05052613839507103, -0.01881091296672821, -0.005779472179710865, -0.02236287109553814, -0.05855574086308479, 0.03070342168211937],
+ "PUNPCKLWDrr":[-0.02149834670126438, 0.018786968663334846, 0.020817000418901443, -0.09780515730381012, 0.05156987905502319, 0.011484187096357346, 0.08830813318490982, -0.03969864919781685, -0.01406258437782526, -0.00603879801928997, -0.038923148065805435, -0.06371112912893295, -0.011740856803953648, 0.019334668293595314, -0.03615514934062958, 0.07734157890081406, -0.06185758486390114, 0.075243279337883, 0.07743969559669495, 0.05368507280945778, 0.08032400161027908, -0.005185918416827917, -0.036490295082330704, 0.04250229895114899, -0.07030308246612549, 0.05526948720216751, -0.051686931401491165, 0.04544603079557419, -0.05106480419635773, 0.0858117938041687, -0.024325374513864517, 0.02944500558078289, -0.003106048097833991, 0.002438928699120879, 0.07123817503452301, -0.06564190238714218, -0.053109828382730484, 0.09771765023469925, -0.0010008190292865038, -0.054579660296440125, -0.05333524942398071, 0.05632849410176277, -0.011689783073961735, 0.030480312183499336, 0.07741352915763855, -0.051399532705545425, 0.03565594181418419, 0.050423767417669296, 0.01759626902639866, 0.042494602501392365, -0.030216455459594727, -0.05120578780770302, -0.04481182619929314, -0.10254541039466858, -0.058247651904821396, 0.04365549609065056, 0.013876042328774929, -0.0074911704286932945, 0.02605338580906391, 0.07200199365615845, 0.0073366109281778336, -0.04873471334576607, 0.001660199137404561, 0.09075059741735458, 0.09265422075986862, -0.06417135149240494, -0.057034932076931, -0.0943719744682312, 0.005321217700839043, 0.033926356583833694, 0.04783215746283531, -0.02065473608672619, -0.09331855922937393, 0.0017114486545324326, 0.04219674691557884, -0.018156085163354874, -0.08252657949924469, 0.03853235021233559, 0.014304603450000286, 0.03317655995488167, 0.03658028319478035, -0.03338739648461342, -0.05687740817666054, -0.09719938784837723, 0.04694928601384163, -0.008055409416556358, -0.027267038822174072, 0.044923581182956696, -0.045784782618284225, -0.04635251685976982, 0.002212842693552375, -0.040518760681152344, -0.00442230049520731, -0.014843171462416649, 0.00943452026695013, -0.015791019424796104, 0.026491453871130943, -0.028240501880645752, -0.05418042093515396, 0.04408472403883934],
+ "PUSH":[-0.04485726356506348, -0.07403343170881271, -0.036288727074861526, -0.0257871076464653, -0.06134591996669769, 0.08078262954950333, -0.051503464579582214, -0.020140573382377625, 0.002124155405908823, -0.016396451741456985, -0.0007496422040276229, -0.021587777882814407, 0.04722437635064125, 0.02993825264275074, -0.0794827863574028, 0.008995444513857365, 0.058189719915390015, 0.004193087574094534, -0.03835691884160042, -0.02901798114180565, 0.018349967896938324, -0.07358559966087341, -0.016924703493714333, 0.06380083411931992, -0.030796483159065247, 0.07733727246522903, 0.005028730258345604, -0.018503472208976746, 0.07328172773122787, -0.0005204023327678442, -0.06800434738397598, 0.013791056349873543, -0.04239565506577492, -0.03975206986069679, -0.027172060683369637, 0.01689058542251587, 0.009667705744504929, 0.01315741054713726, 0.006081560160964727, -0.02581816352903843, 0.04239622503519058, 0.053688228130340576, -0.06871052086353302, 0.05751491338014603, 0.005127571057528257, -0.044301703572273254, 0.03612379729747772, -0.0349225178360939, -0.04770943149924278, 0.08485424518585205, -0.05050046369433403, 0.010268304497003555, -0.06746476143598557, -0.05460323020815849, 0.0009465350303798914, -0.07083629071712494, 0.0662117674946785, -0.020931581035256386, -0.0036692058201879263, -0.01573270931839943, 0.059350062161684036, 0.013596726581454277, 0.03055540658533573, -0.042769160121679306, 0.022048749029636383, 0.035767365247011185, -0.04228740558028221, 0.06683427095413208, -0.062022749334573746, 0.013553737662732601, 0.039275430142879486, 0.0008702658815309405, -0.05324092134833336, -0.05022934079170227, 0.081187903881073, 0.02465537004172802, -0.027554946020245552, 0.0009572241106070578, -0.028423119336366653, 0.0021496452391147614, 0.029278190806508064, 0.08023171871900558, -0.02454937808215618, 0.07896585762500763, -0.06088310852646828, -0.010028093121945858, -0.006514062639325857, -0.019604675471782684, 0.019244946539402008, 0.10120322555303574, 0.12150681018829346, 0.02514718472957611, -0.005782920867204666, -0.07103331387042999, -0.015955781564116478, -0.05355723947286606, -0.013419121503829956, 0.07667842507362366, 0.07452838867902756, -0.06307560205459595],
+ "PXORrm":[-0.05323067680001259, -0.06763799488544464, 0.05426298454403877, 0.022842461243271828, 0.01346486248075962, 0.09932892769575119, 0.05459846556186676, 0.041338399052619934, -0.05367037653923035, -0.07613649219274521, 0.06138103827834129, 0.024690231308341026, 0.06438805162906647, 0.08856642991304398, 0.0349559560418129, 0.061871640384197235, 0.015443126671016216, 0.008424104191362858, -0.07970523834228516, 0.02522367797791958, -0.05186617746949196, -0.03603462874889374, 0.09102442115545273, 0.05153663828969002, 0.012426666915416718, 0.07064465433359146, -0.039188530296087265, -0.0356743223965168, 0.040652986615896225, -0.012913462705910206, 0.07355543971061707, 0.010325907729566097, -0.022693196311593056, 0.00603231368586421, -0.00102347566280514, 0.07869765162467957, 0.06434649974107742, -0.03210769221186638, 0.0024716202169656754, -0.028679972514510155, 0.023266131058335304, -0.05134626850485802, 0.010097581893205643, 0.005647382233291864, 0.07839854061603546, 0.02762029692530632, 0.07559522986412048, -0.04660225659608841, 0.10185718536376953, -0.01778506115078926, -0.025044187903404236, 0.05803968384861946, 0.061774980276823044, 0.016959618777036667, 0.082776740193367, 0.03500673547387123, -0.000302036089124158, -0.001655957312323153, -0.03346606343984604, 0.023806331679224968, 0.022821685299277306, 0.016750430688261986, 0.06704530864953995, -0.04383851960301399, -0.0911068245768547, -0.05547935143113136, -0.053794559091329575, 0.020410411059856415, 0.025972643867135048, -0.009746387600898743, 0.01607399992644787, -0.020800994709134102, 0.04340038448572159, -0.011011594906449318, 0.1018851175904274, -0.031080523505806923, -0.06607545912265778, -0.009230367839336395, -0.0391569621860981, -0.08776570111513138, -0.02649001032114029, -0.029677962884306908, -0.06335186958312988, 0.04672741889953613, -0.07841356843709946, 0.022145811468362808, 0.06651216000318527, -0.04238519445061684, -0.06527990847826004, -0.023330455645918846, -0.0851544439792633, 0.008248874917626381, -0.06299363821744919, 0.05826076120138168, -0.019964830949902534, -0.08219488710165024, -0.005871145986020565, -0.02156996913254261, 0.062448062002658844, 0.010613249614834785],
+ "PXORrr":[0.057316917926073074, 0.03523905947804451, 0.06858674436807632, 0.06907195597887039, 0.04648854583501816, 0.055726587772369385, 0.022123951464891434, 0.011726157739758492, -0.017445487901568413, -0.09485862404108047, 0.10155944526195526, -0.08587368577718735, 0.01058987807482481, -0.03245093673467636, -0.09284922480583191, -0.06611942499876022, 0.03027874417603016, 0.09158749133348465, 0.004877742845565081, 0.016327189281582832, 0.06115741655230522, 0.014588230289518833, 0.04900704324245453, -0.05100627988576889, 0.1035110205411911, 0.08624476194381714, 0.06158676743507385, -0.03459843993186951, 0.03171277046203613, 0.018581124022603035, -0.031561218202114105, -0.022180212661623955, 0.07772443443536758, -0.005957706831395626, -0.007033803965896368, -0.08901821076869965, -0.06561559438705444, -0.10610763728618622, -0.028695935383439064, 0.07335620373487473, -0.06328382343053818, -0.05150480940937996, 0.06317371875047684, -0.036360740661621094, 0.017025740817189217, -0.07338529825210571, 0.07264014333486557, 0.0545499324798584, -0.03694755956530571, -0.04429130628705025, 0.008431283757090569, -0.08402026444673538, -0.10142827033996582, 0.011885546147823334, -0.07360894232988358, 0.006690422538667917, 0.032520294189453125, -0.06401662528514862, -0.0011703959899023175, 0.0081312395632267, 0.01726917177438736, -0.07123176008462906, 0.04131219908595085, 0.017535243183374405, -0.0030830129981040955, -0.052564505487680435, 0.09678588062524796, 0.06722261011600494, 0.007181389722973108, -0.08079361915588379, 0.03097369335591793, 0.06709537655115128, 0.04535623639822006, -0.058781836181879044, -0.04653092846274376, 0.00024204161309171468, 0.060982272028923035, -0.015483456663787365, 0.014716996811330318, -0.010530035011470318, -0.03743389621376991, -0.11109477281570435, -0.08851886540651321, -0.07111582159996033, 0.04273878410458565, -0.01625840552151203, 0.07596635818481445, -0.041339486837387085, -0.07756044715642929, -0.0015703510725870728, -0.008985688909888268, -0.04662873595952988, -0.009476585313677788, 0.009991752915084362, -0.06334494054317474, 0.029432551935315132, 0.09833990782499313, -0.022020796313881874, -0.07271560281515121, 0.0026220884174108505],
+ "REP_MOVSQ_":[-0.06910225749015808, -0.02984001860022545, -0.056726496666669846, 0.07071476429700851, 0.08804673701524734, -0.019965754821896553, 0.019354181364178658, 0.04046117514371872, 0.003781369188800454, -0.022267742082476616, 0.0559278279542923, -0.009073304943740368, 0.02889355830848217, 0.09955119341611862, 0.019125189632177353, -0.004186777397990227, -0.0114171477034688, -0.03382622450590134, -0.07591655850410461, 0.01570257730782032, -0.03741905465722084, -0.028633473441004753, -0.05282991752028465, 0.06521689891815186, -0.006882731337100267, -0.02224673330783844, -0.09459692239761353, -0.04215653985738754, -0.04301326349377632, -0.004956062883138657, 0.0845525860786438, 0.022223932668566704, 0.0021574681159108877, 0.06277813017368317, 0.024915073066949844, 0.008854890242218971, 0.0807814821600914, 0.061990104615688324, -0.01906636543571949, 0.05477990582585335, 0.06169202923774719, -0.013268627226352692, 0.006920844316482544, 0.027162250131368637, -0.04018514230847359, -0.05630520358681679, -0.006683081388473511, -0.03360641002655029, -0.052880752831697464, -0.07638388127088547, -0.023187197744846344, 0.07005282491445541, 0.034892063587903976, 0.06879143416881561, -0.06898979097604752, -0.0343136265873909, 0.019135376438498497, -0.01649615168571472, -0.04352192208170891, -0.01081488560885191, 0.03772999346256256, -0.041322365403175354, 0.06803515553474426, -0.017350152134895325, 0.03419561684131622, -0.09041143953800201, -0.059400130063295364, -0.025747226551175117, 0.046644095331430435, 0.058856505900621414, -0.04724932461977005, -0.050696346908807755, -0.04546399787068367, 0.028491297736763954, -0.004268607124686241, 0.014610566198825836, -0.08117906004190445, -0.07139299064874649, 0.058033522218465805, -2.85873502434697e-05, -0.016104616224765778, -0.014433193020522594, 0.048776544630527496, -0.0062706368044018745, 0.006979520432651043, 0.0017700358293950558, 0.06620221585035324, -0.001805800711736083, -0.0251054335385561, 0.0061413440853357315, -0.002798221306875348, 0.036738909780979156, -0.08066616207361221, -0.0001454153680242598, -0.09107529371976852, 0.0019104394596070051, 0.01425923127681017, -0.07042928785085678, -0.03596775606274605, 0.035458315163850784],
+ "RET":[-0.09685279428958893, 0.0101965656504035, -0.04206235706806183, -0.05282443389296532, 0.050776951014995575, -0.006812752690166235, 0.09618920832872391, 0.04637071117758751, -0.018928129225969315, -0.04118828848004341, -0.06039129197597504, -0.018619466572999954, -0.07845143973827362, -0.14034120738506317, -0.03397035226225853, -0.028233898803591728, -0.08162513375282288, 0.048710327595472336, -0.04177732393145561, -0.08455172181129456, 0.00312337395735085, 0.03531079366803169, -0.057201240211725235, 0.09391707926988602, -0.02847883477807045, 0.01840023323893547, -0.04936904460191727, 0.027487540617585182, 0.08041024953126907, -0.08714525401592255, 0.11963017284870148, -0.0762581005692482, -0.06482874602079391, 0.038007382303476334, -0.003661463735625148, 0.0064629544503986835, -0.08281382918357849, -0.053177930414676666, 0.01966426707804203, -0.04822755232453346, -0.0474051795899868, 0.026990806683897972, -0.057971399277448654, 0.12347304075956345, -0.02745792828500271, 0.0832793116569519, 0.03029884397983551, -0.032751865684986115, -0.022912420332431793, -0.030569355934858322, 0.0971289873123169, 0.07298070192337036, 0.0306894201785326, 0.05817654728889465, 0.005174126010388136, 0.042281877249479294, 0.01975836046040058, -0.11205509305000305, 0.05081645026803017, 0.0034761943388730288, -0.03858469799160957, 0.007316718343645334, 0.07441510260105133, 0.004579664673656225, -0.021868426352739334, 0.01116174180060625, 0.061042461544275284, 0.029598504304885864, -0.06691239774227142, 0.03223221376538277, 0.0867755264043808, 0.05488765984773636, -0.019738517701625824, -0.030367519706487656, -0.06396497040987015, -0.0022451707627624273, -0.06131305173039436, -0.03129804506897926, -0.05657076835632324, 0.009733426384627819, -0.08145039528608322, -0.09049411863088608, 0.004821183159947395, 0.038612931966781616, -0.019062234088778496, -0.021097682416439056, -0.06061801686882973, 0.019766775891184807, 0.0276743546128273, -0.057942990213632584, -0.033430278301239014, 0.0043391571380198, 0.05848158895969391, 0.0826464518904686, 0.09988056123256683, -0.05677378550171852, -0.11326800286769867, 0.051275406032800674, 0.01158174965530634, 0.04368240013718605],
+ "ROL":[0.026423713192343712, 0.08523924648761749, 0.005345864687114954, 0.027778491377830505, 0.06572498381137848, 0.056946828961372375, -0.03009108640253544, -0.05564097315073013, 0.07753216475248337, -0.07402804493904114, -0.05589171126484871, -0.050976503640413284, 0.041095346212387085, -0.06708681583404541, 0.08517566323280334, 0.02110634744167328, -0.027871981263160706, 0.0005450723110698164, 0.07511565834283829, 0.0016275837551802397, 0.04902505874633789, 0.024746844545006752, 0.08780711144208908, -0.06167766824364662, 0.06365402787923813, 0.06462119519710541, -0.04920244216918945, 0.056112516671419144, 0.10561680048704147, 0.07879003882408142, 0.03879575803875923, -0.03582729026675224, 0.004805437754839659, 0.030719229951500893, 0.0558336041867733, 0.04387545958161354, 0.020841658115386963, 0.015068157576024532, -0.008266274817287922, 0.05914990231394768, -0.01581275276839733, 0.060716625303030014, -0.02257946878671646, 0.00995479617267847, 0.002104438142850995, 0.03806104138493538, 0.010437156073749065, 0.039603881537914276, -0.02074524573981762, 0.024094516411423683, 0.031944990158081055, -0.07122939079999924, -0.023190783336758614, 0.006518832873553038, -0.04528677463531494, -0.02354210615158081, -0.03518632799386978, -0.07059651613235474, -0.017474880442023277, 0.06688393652439117, -0.07900173962116241, -0.05843310430645943, 0.05351021885871887, -0.05724814161658287, -0.02697751857340336, -0.031128596514463425, 0.03040527179837227, -0.009157841093838215, -0.07642515003681183, -0.042137425392866135, -0.031383614987134933, -0.07586777210235596, 0.0489036925137043, 0.0657171905040741, 0.027123138308525085, 0.034842655062675476, -0.035231154412031174, 0.009778738021850586, -0.06150955334305763, 0.042132262140512466, 0.08945925533771515, -0.07213590294122696, -0.0518047958612442, -0.07094760239124298, 0.07041053473949432, 0.1046413779258728, 0.02394813485443592, -0.014966128394007683, -0.04967860132455826, -0.03941388055682182, -0.10642798990011215, -0.03915626183152199, -0.10921923071146011, -0.035421375185251236, 0.039855729788541794, 0.04145469889044762, -0.025123557075858116, 0.06743432581424713, -0.02060243859887123, 0.02994687482714653],
+ "ROR":[-0.03797177970409393, -0.03406170755624771, -0.014866529032588005, -0.002243943279609084, 0.024476991966366768, -0.08789698034524918, 0.02924288995563984, -0.03145875036716461, -0.0030907171312719584, 0.013303312472999096, 0.05823688209056854, 0.06085257977247238, 0.0682583823800087, 0.06680850684642792, -0.0008473473135381937, 0.056926507502794266, 0.05309343710541725, 0.017690004780888557, -0.028605103492736816, 0.02303914539515972, -0.07054196298122406, -0.011117611080408096, -0.0012138717574998736, -0.0877937376499176, -0.005339651368558407, -0.029197875410318375, -0.06283852458000183, 0.00677055399864912, 0.07529082894325256, -0.005144342314451933, -0.03930655121803284, -0.0469868965446949, 0.06799482554197311, -0.013870766386389732, -0.07353825122117996, -0.10425472259521484, 8.023920236155391e-05, 0.05196760594844818, -0.024758316576480865, -0.03249195218086243, -0.0037688545417040586, -0.0033505349420011044, 0.04382188990712166, 0.035679250955581665, -0.04743441194295883, 0.031142324209213257, -0.04255860671401024, -0.02310662344098091, -0.04199622571468353, -0.034439221024513245, -0.06397263705730438, -0.011049525812268257, -0.055776823312044144, 0.039233505725860596, 0.016644736751914024, -0.08737850934267044, 0.0151174021884799, 0.10728199779987335, -0.0006503594922833145, -0.060365013778209686, -0.05337308719754219, -0.021152105182409286, 0.06532585620880127, -0.00926337018609047, -0.08149554580450058, 0.0485830195248127, 0.034749776124954224, -0.05045035108923912, -0.06366241723299026, 0.0544571727514267, 0.07594002038240433, 0.027496861293911934, -0.047294747084379196, 0.017491186037659645, -0.034639474004507065, 0.006060798652470112, -0.07335491478443146, -0.054728057235479355, -0.0018357941880822182, -0.07110298424959183, 0.09072742611169815, 0.03083305060863495, 0.054598040878772736, -0.028097454458475113, -0.012821618467569351, 0.008708478882908821, -0.06561881303787231, -0.04448843002319336, 0.08860815316438675, -0.050312310457229614, 0.09012935310602188, -0.004711236339062452, -0.020932462066411972, -0.10615857690572739, -0.005630030296742916, 0.03976801037788391, 0.040199730545282364, 0.07235082983970642, -7.448523683706298e-05, 0.076942078769207],
+ "RegisterMask":[0.009287647902965546, 0.029691029340028763, -0.03465871885418892, 0.032606374472379684, -0.007339544594287872, 0.03367740660905838, -0.0661492720246315, 0.0436118021607399, -0.002896533813327551, 0.028440887108445168, -0.06791415065526962, 0.004055356606841087, -0.01596181094646454, -0.003846745239570737, 0.06762582808732986, -0.025632556527853012, 0.08132420480251312, 0.025554664433002472, -0.08994632959365845, 0.02521730400621891, 0.023826507851481438, 0.0004487193073146045, 0.01047397032380104, 0.03246957063674927, -0.033482909202575684, 0.05051224306225777, 0.005778896156698465, -0.0006257061613723636, 0.00522293895483017, -0.04666636884212494, 0.022335125133395195, -0.022150320932269096, 0.04510439187288284, -0.02769547514617443, 0.026804683730006218, 0.0710473507642746, -0.014513042755424976, 0.0695318952202797, 0.048469461500644684, -0.008654370903968811, -0.028613079339265823, -0.02918054349720478, -0.022721733897924423, -0.0004791628452949226, 0.011470172554254532, 0.08561886101961136, 0.07125027477741241, -0.05847848951816559, 0.011811288073658943, -0.025244031101465225, -0.03665035218000412, -0.03482883796095848, 0.04196881502866745, 0.06909161061048508, 0.02365143597126007, -0.0689089447259903, -0.0707414448261261, -0.03962424397468567, -0.025703679770231247, 0.06502455472946167, 0.057676125317811966, 0.026916807517409325, 0.024921152740716934, 0.009799988009035587, -0.018656229600310326, 0.009880480356514454, -0.06516153365373611, 0.019290866330266, 0.02236226759850979, -0.02598695270717144, -0.00299705658107996, 0.019448822364211082, -0.014883329160511494, 0.06645222008228302, -0.028751512989401817, -0.01589173451066017, 0.026225939393043518, 0.07285763323307037, -0.06037987396121025, -0.027615630999207497, -0.039930179715156555, -0.07122864574193954, 0.029825787991285324, 0.026364129036664963, -0.04438399150967598, 0.07015394419431686, -0.013950555585324764, 0.004367176443338394, 0.020521124824881554, 0.02030497044324875, 0.011951270513236523, 0.06765977293252945, -0.015042259357869625, 0.005189584568142891, -0.07532864063978195, -0.010886142030358315, 0.006792030762881041, -0.06348442286252975, 0.031859394162893295, -0.052482619881629944],
+ "SAR":[-0.058561697602272034, -0.014889497309923172, -0.009758144617080688, 0.00019282882567495108, -0.040600407868623734, -0.05907759070396423, 0.033052023500204086, -0.04672614857554436, -0.050173744559288025, -0.06619776040315628, 0.005385559983551502, 0.05449973791837692, -0.0035163976717740297, -0.12835650146007538, 0.06576846539974213, 0.030572880059480667, -0.014856431633234024, 0.011252024210989475, 0.018954169005155563, -0.10070347040891647, -0.032273050397634506, 0.007221086882054806, -0.020879192277789116, 0.0691007450222969, 0.01286559458822012, -0.020694725215435028, -0.07545264810323715, -0.07742343097925186, -0.005103116389364004, 0.10223732143640518, -0.08521754294633865, 0.07459715753793716, 0.006563629489392042, -0.059839747846126556, -0.023294325917959213, 0.04265525937080383, -0.011012998409569263, -0.02257128618657589, -0.033783379942178726, 0.0368407666683197, -0.048024341464042664, -0.037417128682136536, 0.09010431170463562, 0.09016482532024384, -0.07939734309911728, 0.03274676203727722, 0.0388714037835598, -0.03253694251179695, 0.020820122212171555, -0.0039061333518475294, 0.025425976142287254, -0.01847209222614765, 0.013026821427047253, 0.08873090147972107, -0.010358930565416813, -0.026935681700706482, 0.04795868322253227, -0.06173045188188553, -0.02299962192773819, -0.09966729581356049, 0.008027775213122368, 0.03202224150300026, -0.08922284096479416, 0.03263246268033981, 0.0702379047870636, 0.08681228011846542, -0.053993936628103256, 0.0009890834335237741, -0.060423459857702255, 0.08636976033449173, 0.04784319922327995, 0.05135124549269676, -0.023515762761235237, 0.015414481982588768, -0.06941155344247818, 0.004289102740585804, -0.10909571498632431, 0.014149827882647514, -0.025285568088293076, 0.06270574778318405, 0.0669349953532219, 0.03599094599485397, 0.0436582937836647, 0.06281902641057968, -0.04479018226265907, -0.04126136004924774, -0.026938045397400856, -0.0349077507853508, 0.002964549232274294, -0.04247729107737541, 0.009402072057127953, 0.10574454814195633, 0.03262042999267578, 0.08030910044908524, -0.031244831159710884, 0.010621835477650166, -0.02628093585371971, 0.046942535787820816, -0.022998474538326263, 0.009223603643476963],
+ "SBB":[-0.040700677782297134, -0.01474229246377945, 0.09491399675607681, 0.015464535914361477, -0.05408482998609543, -0.09618491679430008, -0.014700816012918949, -0.06255258619785309, 0.09308589994907379, 0.01991264335811138, 0.04899228736758232, -0.03322140499949455, -0.03979090601205826, -0.161369189620018, 0.0957769826054573, -0.045866891741752625, -0.03776619955897331, 0.09559016674757004, -0.0063005415722727776, 0.07086999714374542, -0.004713557660579681, 0.10066409409046173, -0.053719762712717056, 0.07039386034011841, 0.01788068749010563, 0.01069885678589344, -0.003849055850878358, 0.07810717821121216, 0.10748977214097977, -0.09462521225214005, -0.06140149384737015, -0.028434589505195618, 0.0395897701382637, 0.05396975204348564, 0.009982907213270664, -0.014297235757112503, 0.018435295671224594, -0.04264533147215843, -0.0471954308450222, -0.008587008342146873, 0.010918513871729374, -0.03147284686565399, 0.08885594457387924, 0.05178891867399216, 0.05807363614439964, 0.028190992772579193, 0.04205470532178879, 0.00935433991253376, 0.027427801862359047, -0.02180725708603859, -0.06614664196968079, 0.021269382908940315, 0.0585390068590641, 0.12827278673648834, 0.0420454666018486, 0.06753493845462799, -0.05479112267494202, -0.06480395793914795, 0.02621031180024147, -0.07586188614368439, -0.04831313341856003, 0.016674980521202087, -0.006851759273558855, 0.04103298485279083, 0.005965645890682936, -0.02317493036389351, -0.03966135531663895, -0.02576862834393978, -0.0916895642876625, 0.029451601207256317, 0.044677067548036575, 0.026928072795271873, -0.10388721525669098, 0.021140936762094498, -0.06990157812833786, 0.048356350511312485, -0.08890967816114426, -0.0003503488842397928, -0.10245566070079803, -0.0582563653588295, 0.04677841439843178, 0.04697449132800102, -0.04022470489144325, 0.02759086713194847, -0.02867579087615013, 0.013355317525565624, 0.011504339054226875, -0.04230086877942085, -0.045500747859478, -0.03741880878806114, 0.022458063438534737, 0.05192841589450836, 0.008104681968688965, -0.08284809440374374, 0.059996478259563446, 0.07762005180120468, -0.0031316280364990234, 0.06990513950586319, -0.020328091457486153, -0.0027387691661715508],
+ "SETB_C":[-0.007473401725292206, -0.06315194815397263, 0.0693482831120491, 0.05207814276218414, -0.08006429672241211, -0.005448522046208382, -0.007457572966814041, 0.011581258848309517, -0.05411145091056824, -0.06738752871751785, 0.013233165256679058, -0.0677611380815506, 0.01846255734562874, -0.09321920573711395, -0.03116961196064949, 0.05861300230026245, -0.001519175828434527, 0.08354826271533966, 0.023905213922262192, 0.0124649154022336, 0.08983863890171051, 0.055941760540008545, 0.07229111343622208, 0.09052376449108124, -0.013718990609049797, 0.06642850488424301, 0.0822976604104042, 0.010060268454253674, 0.04116540774703026, -0.03301406651735306, 0.07296404242515564, -0.03534134477376938, 0.012426529079675674, -0.005412430968135595, 0.06087784096598625, 0.03547677770256996, -0.007232111878693104, 0.06580550968647003, -0.0037480974569916725, 0.02971699647605419, -0.06937503069639206, 0.08572175353765488, -0.02138090692460537, -0.0053040217608213425, -0.029469722881913185, -0.05332958698272705, 0.10073655843734741, -0.03199373558163643, -0.01775289885699749, -0.09716105461120605, 0.06483447551727295, 0.028643250465393066, -0.029914388433098793, 0.007070464547723532, 0.006640028208494186, -0.0033612342085689306, 0.005682659335434437, 0.011877131648361683, -0.038144148886203766, 0.03381858021020889, 0.02083616890013218, 0.029199717566370964, 0.07813020050525665, -0.006173993926495314, -0.016444502398371696, -0.08474857360124588, 0.03877300024032593, -0.046462398022413254, 0.02460806630551815, 0.053950369358062744, 0.01389766950160265, 0.03323421627283096, 0.04349416866898537, 0.04381947219371796, 0.10320119559764862, -0.1117740124464035, 0.03045269101858139, -0.03870442137122154, -0.07607249915599823, -0.00020808610133826733, -0.09519094228744507, 0.06727365404367447, -0.04469249024987221, 0.07144048810005188, -0.08811240643262863, 0.001203814405016601, 0.06901863217353821, 0.05462682247161865, -0.03902207687497139, -0.05885632708668709, -0.028275305405259132, -0.07151838392019272, -0.059166230261325836, -0.015570566058158875, 0.06314826756715775, -0.040293656289577484, 0.021595094352960587, -0.04083842411637306, -0.09180022031068802, -0.0309903621673584],
+ "SETCCm":[0.012410052120685577, 0.10192811489105225, -0.010156919248402119, -0.040729179978370667, -0.09208346158266068, 0.022728366777300835, 0.0028070344123989344, -0.0022785947658121586, -0.1042659729719162, 0.0584903210401535, 0.026399115100502968, -0.0955737754702568, -0.056689806282520294, -0.08160416781902313, -0.07043533027172089, 0.04237815737724304, -0.06360335648059845, 0.021772200241684914, -0.07099809497594833, -0.046700142323970795, -0.013614950701594353, -0.052466973662376404, -0.018188484013080597, 0.08409947156906128, -0.10885011404752731, 0.09523627161979675, 0.027448745444417, 0.08788382261991501, 0.03658059611916542, -0.08378397673368454, 0.03156605362892151, -0.004581777844578028, -0.021106725558638573, -0.0008369186543859541, 0.009129583835601807, -0.022573083639144897, 0.025179829448461533, 0.03644886612892151, -0.054622795432806015, -0.04909893125295639, -0.051849380135536194, 0.028663290664553642, -0.03158695995807648, 0.03650674596428871, 0.03926338255405426, 0.06067715957760811, 0.029062747955322266, -0.008612008765339851, -0.010887561365962029, 0.09070581197738647, 0.08956489711999893, 0.1424182802438736, -0.062182508409023285, 0.03514242544770241, 0.03589564561843872, -0.011097815819084644, -0.03604912757873535, -0.04548978433012962, -0.07089310139417648, 0.048025231808423996, 0.01929735578596592, -0.005904140882194042, 0.040048521012067795, 0.04834164306521416, -0.01112880278378725, 0.01009534951299429, -0.017776988446712494, -0.09597253799438477, -0.03116193786263466, 0.04774121940135956, 0.043805304914712906, -0.005214926321059465, -0.051151473075151443, -0.0036262867506593466, -0.03170490264892578, -0.002574418904259801, 0.08896621316671371, -0.03220953792333603, -0.06000925600528717, -0.09268168359994888, 0.003635731292888522, 0.07605667412281036, 0.08512385189533234, 0.09767527133226395, -0.00512688048183918, 0.030877966433763504, -0.02936401218175888, 0.025679007172584534, 0.040264301002025604, -0.06903041154146194, 0.0366058386862278, 0.02774754725396633, 0.062248531728982925, -0.06269688904285431, -0.004232304636389017, -0.0006969496025703847, -0.007352911401540041, -0.01611900143325329, -0.019930323585867882, 0.07426757365465164],
+ "SETCCr":[-0.03200821951031685, 0.07213275134563446, -0.06648221611976624, -0.055957719683647156, 0.010928042232990265, 0.008733934722840786, 0.03448265790939331, 0.04388530179858208, -0.08916065841913223, -0.028914574533700943, -0.04063703492283821, -0.014436752535402775, 0.07214143872261047, 0.10951928794384003, -0.08412694931030273, 0.028349200263619423, -0.014577215537428856, 0.03305432200431824, -0.055920038372278214, -0.06501175463199615, 0.0831339955329895, -0.1163751482963562, -0.030482489615678787, 0.05794990435242653, 0.029536154121160507, 0.013897211290895939, 0.039953432977199554, -0.011610681191086769, -0.006611527409404516, -0.11092232167720795, 0.011680899187922478, -0.052467506378889084, 0.07030898332595825, -0.02637961506843567, -0.02407209947705269, 0.037057168781757355, -0.0066026668064296246, 0.07180412113666534, 0.023777250200510025, -0.06758376955986023, -0.02661341056227684, 0.04018370807170868, 0.025960691273212433, 0.03516004979610443, 0.05885535106062889, 0.04051307588815689, 0.051981791853904724, -0.02230263315141201, -0.04205796867609024, -0.03477685526013374, 0.057511262595653534, 0.059276778250932693, -0.02507461979985237, 0.060552820563316345, 0.0393192283809185, 0.041400231420993805, -0.012349587865173817, -0.08847017586231232, 0.041247595101594925, 0.004335650708526373, -0.0030691204592585564, 0.017269350588321686, 0.04652225598692894, 0.02628750540316105, -0.06933490186929703, 0.1153295487165451, -0.06652313470840454, 0.04398607835173607, -0.06001497060060501, -0.04501037299633026, 0.06694231927394867, 0.04475410282611847, -0.04103543609380722, 0.00741948839277029, -0.022460808977484703, 0.002264102455228567, -0.054327450692653656, -0.07310207933187485, -0.026622287929058075, 0.06987904757261276, 0.05435728281736374, 0.1003006249666214, 0.06954845786094666, 0.04580097645521164, 0.030598653480410576, 0.0915742740035057, -0.017259756103157997, 0.04138251766562462, 0.030992556363344193, -0.019938485696911812, -0.050699230283498764, 0.021127138286828995, 0.02828686498105526, -0.048558417707681656, -0.01749669760465622, 0.005726661067456007, 0.0025819563306868076, 0.06065456569194794, 0.0012648927513509989, 0.05828741937875748],
+ "SHL":[-0.046314775943756104, -0.02037091925740242, -0.021235093474388123, -0.04431849345564842, -0.02049594558775425, 0.06918707489967346, -0.047204744070768356, -0.02015627734363079, -0.06929188966751099, -0.12707753479480743, 0.0021978027652949095, -0.05928831920027733, -0.028791211545467377, -0.09592632949352264, -0.004223491996526718, -0.018153714016079903, -0.03697914630174637, 0.015080277808010578, -0.019626861438155174, -0.09787625819444656, 0.018768204376101494, -0.08484961092472076, -0.0010916044702753425, 0.0728631243109703, -0.00848543830215931, 0.018288031220436096, -0.14944250881671906, 0.04246833547949791, -0.05711958557367325, -0.0362381674349308, -0.029148433357477188, -0.07910779863595963, 0.046472836285829544, -0.03254816681146622, 0.08810119330883026, -0.05457653850317001, -0.02989278733730316, -0.0016557177295908332, 0.018352899700403214, -0.004811711143702269, -0.08978300541639328, 0.008621932938694954, -0.004293458070605993, 0.1296614706516266, 0.06087031587958336, -0.05924370512366295, 0.0058679766952991486, -0.0161577295511961, 0.023172033950686455, -0.024694446474313736, -0.010776275768876076, 0.0812506228685379, -0.017229486256837845, 0.0585525743663311, -0.04419545829296112, 0.02598869986832142, 0.04889720678329468, -0.07079402357339859, 0.028214169666171074, 0.02364923618733883, -0.006783639080822468, 0.06880583614110947, -0.09086552262306213, 0.03000715747475624, -0.013563689775764942, -0.03045429103076458, -0.02971874177455902, 0.014353077858686447, -0.09396255761384964, 0.03824174031615257, 0.027861744165420532, -0.035609886050224304, -0.02608788199722767, 0.003465028014034033, -0.06031154468655586, 0.005557734984904528, 0.05743107572197914, 0.02466157265007496, -0.06272897869348526, -0.07022212445735931, 0.08343570679426193, 0.044147755950689316, 0.03645200654864311, 0.040796101093292236, 0.06834353506565094, 0.01723015122115612, -0.027554504573345184, 0.02501562610268593, 0.08903829008340836, -0.032690756022930145, -0.005258437246084213, 0.0642404556274414, 0.035099927335977554, 0.02136968821287155, -0.02966288849711418, -0.006225690245628357, -0.0265758465975523, -0.05667216703295708, -0.04683062061667442, 0.05193712189793587],
+ "SHLD":[-0.10468170791864395, -0.05577820539474487, 0.017450420185923576, -0.10457294434309006, -0.03477144613862038, 0.04523104056715965, -0.0059622423723340034, 0.06297118216753006, 0.05928468331694603, 0.044665634632110596, 0.04401073977351189, -0.050459522753953934, 0.05461646616458893, 0.04829385504126549, -0.034302521497011185, 0.023348454385995865, -0.04634371027350426, 0.06581493467092514, 0.02810823917388916, -0.05490071699023247, -0.028080396354198456, 0.03704703599214554, 0.020562689751386642, -0.05904995650053024, 0.008411305956542492, 0.0064066625200212, 0.02252858132123947, -0.09979507327079773, -0.055231038480997086, -0.06329444795846939, 0.03825122490525246, -0.031918976455926895, 0.04608461260795593, -0.01581684686243534, -0.03960791230201721, 0.03364868089556694, -0.005486318375915289, -0.013799128122627735, -0.07019742578268051, 0.008085526525974274, 0.0759025514125824, -0.013086682185530663, 0.02769794873893261, 0.05350489914417267, 0.09606298804283142, -0.05493388697504997, -0.019883133471012115, 0.001439628074876964, -0.01495987270027399, 0.056310344487428665, -0.005360152572393417, -0.02198069728910923, -0.016148369759321213, -0.10512016713619232, -0.06898875534534454, -0.015228195115923882, -0.040471263229846954, -0.005953793413937092, -0.07914131879806519, 0.0678357183933258, -0.07124064117670059, -0.10298788547515869, -0.08651091903448105, -0.000668313296046108, -0.012722352519631386, -0.01402292586863041, -0.02545744553208351, -0.009746674448251724, 0.01787976361811161, 0.002964213490486145, -0.02357105165719986, -0.0690988153219223, 0.004314161837100983, 0.046304430812597275, 0.024747423827648163, -0.024936238303780556, -0.005543637089431286, 0.0365053191781044, 0.04471152275800705, 0.046438489109277725, 0.10186243802309036, 0.061256472021341324, 0.02145138569176197, -0.08442489802837372, 0.03426071256399155, 0.017059093341231346, -0.004583625588566065, -0.04464277997612953, -0.025855427607893944, 0.017359619960188866, -0.021591413766145706, 0.018520796671509743, 0.005620792508125305, -0.06484021246433258, 0.05143885686993599, 0.08716651797294617, 0.041059061884880066, 0.017295556142926216, -0.01687248982489109, -0.0424678809940815],
+ "SHR":[-0.07465562969446182, -0.008238847367465496, 0.07396852225065231, -0.03730768710374832, -0.07070398330688477, 0.08544209599494934, -0.0613938644528389, -0.022875698283314705, -0.03944734111428261, -0.02805914357304573, 0.09307552129030228, 0.055643003433942795, 0.016574492678046227, -0.13264985382556915, -0.09679346531629562, -0.02181294932961464, -0.008364318870007992, 0.056426532566547394, -0.10978066921234131, -0.08437930792570114, 0.035618677735328674, 0.003406055737286806, -0.0059831696562469006, 0.06085207685828209, -0.009114337153732777, 0.06990702450275421, 0.05078596994280815, -0.07818687707185745, -0.007134293206036091, 0.029182100668549538, -0.05624372884631157, 0.016369545832276344, 0.08941470086574554, -0.0013144961558282375, -0.030885467305779457, -0.00670551648363471, -0.04170510917901993, 0.08442428708076477, -0.034426115453243256, 0.0432242825627327, 0.011324187740683556, 0.013058505952358246, 0.03543531522154808, 0.04059138894081116, 0.06403470039367676, 0.013054772280156612, 0.00908039603382349, -0.034561458975076675, -0.04533197730779648, -0.048127371817827225, -0.04282991588115692, 0.0543452650308609, 0.044880304485559464, 0.05498961731791496, 0.02820129133760929, -0.037330497056245804, 0.04122643172740936, 0.09746166318655014, 0.05421382561326027, -0.03868604078888893, 0.008586594834923744, -0.012875721789896488, -0.05694333091378212, 0.033327292650938034, -0.06112062558531761, -0.05167289450764656, -0.03247157484292984, 0.07528305053710938, -0.03271055966615677, 0.09485310316085815, 0.05566411837935448, -0.027748236432671547, -0.05886472016572952, 0.005183794070035219, -0.028757214546203613, 0.012832936830818653, -0.10771352797746658, 0.011894045397639275, -0.016413915902376175, 0.0432337261736393, -0.045145973563194275, 0.07398385554552078, -0.009678157046437263, 0.026615722104907036, 0.07559071481227875, -0.038199689239263535, -0.027286523953080177, -0.019278675317764282, 0.1099771037697792, -0.03793218359351158, 0.01761619932949543, 0.050640083849430084, 0.011586466804146767, -0.009819865226745605, -0.028388680890202522, -0.014374272897839546, -0.005239894613623619, 0.028709718957543373, -0.013794760219752789, 0.05542958527803421],
+ "SHRD":[-0.02725072205066681, 0.0796184316277504, 0.0834956020116806, -0.0871054083108902, -0.09704029560089111, 0.05278884619474411, 0.044222548604011536, 0.02711034193634987, 0.017904557287693024, 0.03900390863418579, 0.033971790224313736, -0.09465556591749191, 0.04171745106577873, -0.07621306926012039, 0.03210526704788208, -0.005729807075113058, 0.07520545274019241, 0.001276418101042509, 0.04505179077386856, -0.06551375240087509, 0.04575352370738983, 0.053544506430625916, 0.016746336594223976, -0.011856499128043652, 0.07102099061012268, -0.025452710688114166, 0.02431803196668625, 0.0693369209766388, -0.03186899796128273, 0.011546891182661057, -0.04842397943139076, 0.03768831118941307, -0.055445779114961624, 0.11059770733118057, 0.0017184190219268203, -0.06021609529852867, 0.0637894868850708, 0.001988943899050355, -0.025021640583872795, -0.004182325676083565, 0.015420773066580296, 0.01031752023845911, 0.03027467057108879, 0.04965481907129288, -0.01788952760398388, -0.08061636239290237, -0.01789368875324726, 0.06151909381151199, -0.01025371253490448, -0.020543869584798813, 0.0416182205080986, -0.014308599755167961, -0.0011325536761432886, 0.08690941333770752, 0.054499220103025436, 0.06528099626302719, 0.04797248914837837, -0.04906618595123291, -0.09145615249872208, 0.03533126041293144, -0.08079324662685394, 0.04821045696735382, -0.030616985633969307, -0.08933498710393906, -0.06434797495603561, -0.006894760765135288, -0.07358631491661072, -0.07201935350894928, -0.06222901493310928, -0.03412826731801033, 0.028917454183101654, -0.013140378519892693, 0.02498188056051731, 0.057807330042123795, 0.043688323348760605, -0.02526552975177765, 0.03476899489760399, 0.016554931178689003, 0.04617748782038689, 0.008197523653507233, 0.011503704823553562, -0.04461536929011345, 0.09000151604413986, -0.05261934548616409, -0.07115381956100464, -0.049063604325056076, -0.011107346042990685, -0.02644113264977932, -0.04334935173392296, 0.06575852632522583, 0.09155094623565674, -0.041892580687999725, -0.01838541403412819, -0.027780810371041298, -0.06731141358613968, -0.06787928938865662, 0.02779911272227764, -0.03941886126995087, -0.08932551741600037, 0.03490431606769562],
+ "SHUFPDrmi":[-0.03180503845214844, -0.04729404300451279, -0.033180832862854004, -0.06581001728773117, 0.06355305761098862, 0.023034535348415375, 0.04221887141466141, 0.08070401102304459, 0.06454822421073914, 0.08376231789588928, 0.053950607776641846, -0.0875685065984726, -0.005051037762314081, -0.06477866321802139, -0.043196264654397964, 0.008895844221115112, -0.10499310493469238, -0.003522353945299983, -0.08388328552246094, -0.0049409144558012486, -0.011633319780230522, -0.0060858894139528275, 0.03641575574874878, 0.09852229058742523, 0.049810610711574554, 0.01111678034067154, 0.023834848776459694, -0.014169566333293915, -0.006443048361688852, -0.04393146559596062, -0.005067949183285236, 0.007953749969601631, -0.03473077341914177, 0.002832290017977357, -0.044412463903427124, -0.015468170866370201, -0.033192966133356094, -0.00550351245328784, -0.029070008546113968, 0.05006349831819534, -0.054274823516607285, -0.030464209616184235, -0.07034143805503845, -0.03490973636507988, -0.03915314003825188, 0.05762014165520668, -0.06254396587610245, -0.036079153418540955, -0.050581786781549454, -0.010091051459312439, -0.09166122227907181, -0.013582929968833923, -0.015788445249199867, -0.0979306623339653, -0.05225319042801857, 0.0320792980492115, -0.05289490520954132, 0.06639362871646881, -0.02329525351524353, -0.03969656303524971, -0.053919415920972824, 0.044513851404190063, -0.0055487630888819695, -0.037936657667160034, 0.011708525009453297, 0.08090699464082718, 0.06853575259447098, -0.05284298583865166, 0.00286057498306036, -0.026530304923653603, 0.041783418506383896, 0.029914535582065582, -0.030158862471580505, -0.008002209477126598, 0.005328860133886337, 0.0217397753149271, 0.06025838479399681, -0.017870347946882248, -0.04129308462142944, -0.06495606154203415, -0.05957168713212013, -0.0041923788376152515, -0.048572979867458344, 0.038310300558805466, 0.028204869478940964, 2.708350439206697e-05, 0.07140064239501953, -0.05494127795100212, -0.029198620468378067, -0.006850676145404577, 0.02953721210360527, 0.04600858688354492, -0.004060251172631979, 0.06876397877931595, -0.0332300029695034, -0.043151162564754486, 0.036942508071660995, -0.020158890634775162, -0.00599459046497941, 0.045378029346466064],
+ "SHUFPDrri":[0.07346651703119278, -0.03931749612092972, 0.052429214119911194, 0.0625992938876152, 0.05501599237322807, 0.08974055200815201, 0.005126145668327808, 0.0912528932094574, 0.012775005772709846, 0.005562623031437397, 0.02989032492041588, -0.006728481035679579, 0.0708581954240799, -0.02787051722407341, -0.0195477195084095, -0.0864996686577797, 0.03142699599266052, 0.06749232858419418, 0.01926603727042675, -0.018532315269112587, 0.000797057175077498, -0.005980386398732662, 0.063962422311306, -0.00036661449121311307, 0.08748847246170044, 0.05389520525932312, 0.0649864599108696, 0.04764988645911217, 0.021016638725996017, 0.07403180748224258, 0.03696545958518982, -0.016136696562170982, -0.019022250548005104, -0.05484236404299736, 0.0924350917339325, 0.06821024417877197, 0.061834800988435745, 0.03474971652030945, 0.07364960014820099, -0.054808907210826874, -0.07798067480325699, 0.004824399948120117, -0.02720271609723568, 0.06394700706005096, -0.028662443161010742, 0.02446030266582966, 0.06761696934700012, 0.02129899524152279, -0.041766028851270676, -0.05605834722518921, 0.09518163651227951, -0.02510077878832817, 0.04349491000175476, 0.06212666258215904, 0.02704501897096634, 0.05059307813644409, -0.011061985045671463, 0.034749262034893036, -0.006774274166673422, 0.05667081102728844, 0.09495342522859573, 0.010143113322556019, 0.011078283190727234, -0.028249073773622513, -0.004933330230414867, -0.0195806622505188, -0.006050474941730499, 0.06980231404304504, -0.035985443741083145, 0.05654739961028099, -0.027656586840748787, -0.04757991433143616, -0.006656619254499674, 0.030808281153440475, -0.05401715636253357, -0.018884627148509026, -0.023616518825292587, -0.03981960937380791, -0.017257077619433403, -0.012866610661149025, -0.042160991579294205, 0.03406806290149689, -0.037218786776065826, -0.045224878937006, 0.03391215577721596, -0.05703123286366463, -0.07036294043064117, 0.037002261728048325, 0.08883785456418991, 0.09099549800157547, -0.014911268837749958, -0.04530877619981766, -0.01926310919225216, 0.02106751874089241, -0.06889639049768448, 0.04501435533165932, -0.03139925003051758, 0.09168078750371933, 0.002558524254709482, 0.03001195751130581],
+ "SHUFPSrri":[-0.0746569037437439, 0.08073826134204865, -0.030892081558704376, -0.08820202201604843, 0.001963317859917879, 0.03908536955714226, 0.024499909952282906, -0.07218483090400696, -0.05744718387722969, 0.07048308849334717, -0.07802704721689224, 0.03152831643819809, -0.04835323244333267, 0.07957299053668976, -0.01241763960570097, 0.010315941646695137, -0.04456229880452156, 0.04336265102028847, 0.04724852368235588, 0.02829345129430294, 0.10806611180305481, -0.031798455864191055, 0.048666104674339294, 0.04407370835542679, -0.06229577958583832, 0.046693261712789536, -0.032547421753406525, -0.0038563068956136703, -0.02032427117228508, 0.03879964351654053, -0.07924295216798782, -0.03575504198670387, 0.0234051626175642, -0.05732406675815582, 0.011996735818684101, 0.0158257856965065, -0.07313530892133713, -0.06494557857513428, -0.08932262659072876, -0.07014904916286469, 0.04937782511115074, -0.03303784877061844, -0.038941532373428345, -0.07360652089118958, -0.023598086088895798, -0.03407922759652138, 0.005223470740020275, -0.06987562030553818, -0.04239274561405182, -0.07288961857557297, -0.08219528943300247, -0.04466249421238899, 0.03489945828914642, 0.0681321993470192, -0.030060485005378723, 0.055435314774513245, 3.9386508433381096e-05, -0.034685466438531876, 0.033761702477931976, -0.05016911029815674, 0.054784126579761505, 0.0357968844473362, -0.03102928213775158, -0.012823624536395073, 0.015445712022483349, -0.023636674508452415, -0.08389600366353989, -0.01979481428861618, -0.0042264750227332115, -0.06927846372127533, -0.01827561855316162, 0.0018719558138400316, 0.03106633573770523, 0.007771118078380823, -0.08255420625209808, -0.07734845578670502, 0.018876105546951294, 0.01774674281477928, -0.031473927199840546, 0.09156402200460434, -0.05601957440376282, -0.02428029477596283, -0.05188671126961708, -0.05944708734750748, 0.06178565323352814, 0.04258185252547264, -0.054078392684459686, 0.03745732456445694, -0.050130512565374374, -0.001837829826399684, 0.026438230648636818, 0.0717247948050499, -0.012637753039598465, -0.0223530363291502, 0.07365426421165466, 0.019618595018982887, -0.035536788403987885, 0.002819665474817157, 0.06240128353238106, 0.021576475352048874],
+ "SQRTSDr":[-0.0038956468924880028, -0.004267755895853043, 0.05376962199807167, 0.0725497230887413, -0.058156274259090424, -0.10609684139490128, -0.015947289764881134, -0.05476769432425499, 0.06717483699321747, -0.030281510204076767, -0.028157109394669533, -0.07318053394556046, 0.05006418749690056, 0.012790494598448277, -0.026108618825674057, 0.02238772250711918, 0.040860217064619064, -0.09801828116178513, -0.108396977186203, 0.029996298253536224, 0.0010230588959529996, -0.0027344662230461836, 0.08012023568153381, -0.10046318173408508, 0.051115088164806366, -0.015292104333639145, -0.005403736140578985, 0.02556612715125084, 0.07518485188484192, 0.0007336364360526204, -0.0670592188835144, -0.07945375889539719, 0.0014759153127670288, 0.01648769900202751, -0.02350866049528122, 0.045004311949014664, 0.031929075717926025, -0.05389789119362831, 0.039831340312957764, 0.0747813954949379, 0.05289163812994957, -0.037404343485832214, 0.04882374405860901, 0.00507128331810236, -0.0020927360747009516, 0.021733839064836502, 0.05038757249712944, 0.1096685379743576, -0.032432377338409424, 0.0823482945561409, 0.014692666940391064, 0.009086833335459232, 0.1041090115904808, -0.04007705673575401, -0.0035115601494908333, -0.019933395087718964, -0.03167486563324928, 0.048767149448394775, 0.021323276683688164, 0.09626414626836777, 0.01934705674648285, -0.04173002392053604, 0.05567333847284317, -0.07308147102594376, -0.03004506044089794, -0.021319042891263962, 0.09208963811397552, -0.04644760489463806, -0.009985359385609627, 0.02740083448588848, 0.0068857199512422085, 0.07061893492937088, -0.0005319208139553666, 0.0046543460339307785, -0.0007228992762975395, -0.0028086260426789522, -0.07807062566280365, 0.02333012968301773, -0.00639364356175065, -0.10573523491621017, 0.0071388655342161655, -0.02509060688316822, -0.023793132975697517, 0.07945479452610016, -0.04415805637836456, 0.08484090119600296, 0.009943789802491665, -0.08757314831018448, -0.08657024800777435, 0.09826809912919998, 0.019530558958649635, -0.04707290977239609, -0.045934807509183884, -0.04224364459514618, 0.07049871236085892, -0.015564827248454094, -0.046337757259607315, 0.055992890149354935, -0.04552772268652916, 0.015036390163004398],
+ "SQRTSSr":[-0.027935704216361046, 0.07764153182506561, -0.021699370816349983, -0.03247835859656334, 0.011959819123148918, 0.09350641071796417, -0.038839053362607956, -0.04485733434557915, 0.0710715502500534, -0.07070089131593704, 0.03646699711680412, 0.05280934274196625, 0.019929569214582443, -0.031104832887649536, 0.06959507614374161, 0.03940463066101074, -0.008077822625637054, -0.047499291598796844, 0.0945124626159668, 0.04256870970129967, -0.07232879847288132, -0.0488852933049202, 0.02392515167593956, 0.05586971715092659, 0.00019356403208803385, -0.06760792434215546, -0.0948534831404686, -0.005049642641097307, -0.08299138396978378, -0.05761001631617546, -0.0020355733577162027, 0.11098175495862961, -0.005271520931273699, 0.0298514012247324, 0.048253364861011505, -0.026503151282668114, -0.010133909992873669, 0.006827943958342075, -0.07468035072088242, -0.031040001660585403, -0.022959420457482338, -0.04984169080853462, -0.07052693516016006, 0.00920216366648674, 0.046518098562955856, -0.08821524679660797, 0.09973828494548798, 0.06066305562853813, -0.1023530587553978, -0.01841597445309162, -0.033757857978343964, -0.02538694441318512, 0.017116950824856758, 0.05492088943719864, 0.07790126651525497, -0.01481515821069479, 0.0260296780616045, 0.0007641006377525628, 0.05578254908323288, -0.05120276287198067, 0.053455132991075516, -0.05127139762043953, 0.06642886251211166, 0.006757473107427359, 0.03833981230854988, 0.07871358841657639, -0.08582723140716553, -0.0909925326704979, -0.10710892081260681, 0.01187436655163765, -0.018791839480400085, 0.048367690294981, 0.027703523635864258, 0.0004613108467310667, 0.0695141926407814, 0.02964252233505249, -0.048105593770742416, 0.1039152666926384, 0.012233138084411621, -0.050469402223825455, -0.03035871684551239, -0.08839312195777893, 0.08445040136575699, 0.05611366033554077, 0.08283744752407074, -0.06252670288085938, 0.09997256100177765, 0.0005551028880290687, 0.02240462228655815, 0.0338272824883461, 0.02925611287355423, 0.05242892727255821, -0.012378263287246227, -0.04396267980337143, 0.04602109268307686, -0.06165194883942604, 0.03884377330541611, -0.029894454404711723, -0.029816048219799995, 0.07450374960899353],
+ "STMXCSR":[0.04345126077532768, 0.048806797713041306, 0.07032915949821472, 0.05450800061225891, -0.01711912266910076, -0.10012694448232651, -0.005401256959885359, 0.01346925925463438, -0.0034776488319039345, -0.0597408264875412, 0.08091314136981964, -0.002354583004489541, -0.03841376677155495, 0.04909069836139679, -0.012217377312481403, -0.08155648410320282, 0.07872279733419418, -0.07013433426618576, -0.08780572563409805, 0.012119963765144348, -0.04774464666843414, 0.04299924150109291, 0.0548284612596035, -0.04911012202501297, 0.05126287415623665, -0.0645575076341629, -0.035140033811330795, -0.01925642415881157, -0.014375817961990833, 0.044869426637887955, -0.008693739771842957, -0.07577722519636154, -0.07333073019981384, 0.07001221179962158, 0.027348896488547325, -0.1020137295126915, -0.032351698726415634, 0.045031119138002396, 0.05878966301679611, -0.042286939918994904, -0.05464955419301987, -0.03436695784330368, 0.0035446190740913153, 0.04187360033392906, -0.06922318041324615, 0.07310077548027039, -0.0004492957377806306, 0.07272385060787201, 0.03987371549010277, -0.035652097314596176, 0.008849075995385647, -0.007577185053378344, 0.025760190561413765, 0.047741640359163284, -0.03509270399808884, 0.03985411301255226, -0.04475817084312439, 0.013186249881982803, -0.021784663200378418, -0.05051450431346893, 0.030945859849452972, 0.029672274366021156, -0.00491722347214818, -0.05152944102883339, 0.03780687227845192, -0.024561895057559013, -0.007461441680788994, -0.08376061171293259, 0.06957346946001053, 0.09346373379230499, 0.04705595225095749, 0.09999697655439377, 0.03412434086203575, -0.07771198451519012, 0.041409626603126526, -0.024912742897868156, -0.048480380326509476, -0.01321761030703783, 0.1009635478258133, -0.009369222447276115, -0.022008439525961876, 0.013248084113001823, -0.059306975454092026, 0.05075826123356819, 0.06297989934682846, 0.03858567029237747, 0.027364686131477356, -0.05953831225633621, -0.009705265052616596, 0.05366335064172745, 0.046949926763772964, 0.021641883999109268, -0.04961757734417915, -0.06279141455888748, 0.012277561239898205, -0.0562099888920784, -0.04829031974077225, -0.053959380835294724, 0.08358491212129593, 0.041189853101968765],
+ "ST_Fp":[0.008694701828062534, 0.02199636586010456, -0.0009860448772087693, -0.016916614025831223, -0.06402551382780075, 0.016836535185575485, 0.056544333696365356, 0.027990929782390594, 0.007201232947409153, -0.004933470394462347, 0.05500323697924614, 0.062484148889780045, 0.048331230878829956, 0.05823170393705368, 0.009038376621901989, -0.025853566825389862, -0.023582525551319122, -0.000808199227321893, 0.021626580506563187, -0.015887534245848656, -0.0668933242559433, 0.0348377451300621, 0.02818496897816658, 0.01815902069211006, 0.03419717401266098, -0.08095834404230118, 0.027558624744415283, -0.10784853249788284, -0.048131607472896576, 0.01427275687456131, 0.08198689669370651, -0.00042200583266094327, 0.05193912237882614, 0.07781454920768738, -0.02004867047071457, -0.07222739607095718, 0.0399053581058979, -0.06257957965135574, -0.054730597883462906, 0.01784108579158783, -0.07338230311870575, 0.054703984409570694, 0.05877286568284035, -0.05558575689792633, 0.055667679756879807, 0.0815272331237793, -0.04043987765908241, -0.04109374061226845, -0.0069926041178405285, -0.023383527994155884, -0.019488319754600525, -0.02326839603483677, -0.04199570044875145, 0.008253561332821846, 0.08184510469436646, 0.02549048885703087, -0.01670624315738678, 0.043914902955293655, 0.04359862953424454, 0.05422665551304817, -0.05058252066373825, 0.02322089672088623, 0.008189365267753601, -0.019726775586605072, -0.03832518309354782, -0.0611812025308609, -0.054692719131708145, -0.010987364687025547, -0.08558718860149384, 0.005345641169697046, 0.07726868987083435, 0.04311104118824005, 0.046418000012636185, 0.05999137833714485, 0.028162285685539246, 0.009646113030612469, 0.016949616372585297, 0.05429545044898987, -0.06697217375040054, -0.010291092097759247, 0.022313939407467842, 0.033108554780483246, 0.041179146617650986, 0.06898629665374756, -0.09499860554933548, 0.044072091579437256, -0.047924503684043884, -0.0349201038479805, -0.03766786679625511, 0.09925884753465652, -0.05694299936294556, 0.06297983974218369, -0.01230515819042921, 0.05289984866976738, 0.04149284586310387, 0.011523756198585033, 0.03842391073703766, -0.02630430832505226, 0.008043975569307804, 0.023976080119609833],
+ "ST_FpP":[0.02978583797812462, -0.021928193047642708, 0.04284801706671715, 0.08830684423446655, -0.0560009628534317, -0.04966012015938759, -0.06427745521068573, -0.027875646948814392, 0.05840923637151718, -0.05806698650121689, 0.022853998467326164, 0.02618962898850441, -0.03161166235804558, -0.0913238599896431, 0.052419524639844894, -0.042066674679517746, -0.04749717935919762, -0.05493339151144028, 0.05175191909074783, -0.01775418221950531, -0.05944724380970001, 0.01842893660068512, -0.03144119679927826, -0.051530495285987854, -0.04201420769095421, -0.031131617724895477, -0.0465569868683815, -0.03761626034975052, 0.014266468584537506, -0.006503271404653788, 0.05518026277422905, -0.041623204946517944, 0.020012833178043365, -0.03270775452256203, -0.029307439923286438, 0.026473429054021835, 0.048895757645368576, -0.023990146815776825, 0.04146857559680939, -0.046416234225034714, 0.06670645624399185, -0.015029438771307468, 0.09548648446798325, 0.07886790484189987, 0.011918716132640839, -0.0549444854259491, -0.08186840265989304, -0.010331949219107628, -0.0683961734175682, 0.054803334176540375, 0.02178831212222576, 0.04231657460331917, 0.03587239235639572, -0.05363106727600098, 0.03122585453093052, -0.05023632571101189, 0.02407941035926342, -0.007976188324391842, -0.012142829596996307, -0.08755439519882202, -0.05216287449002266, -0.028155436739325523, -0.003536050673574209, -0.10503823310136795, 0.03987662494182587, 0.0258694589138031, -0.0194985494017601, -0.05242113023996353, 0.032434847205877304, -0.0870976522564888, -0.006446333602070808, 0.022883441299200058, -0.06539064645767212, -0.07062196731567383, -0.07431342452764511, 0.06837371736764908, 0.05873996764421463, 0.04112454503774643, 0.01916578784584999, -0.07417135685682297, -0.0439196415245533, -0.040531255304813385, 0.02851908467710018, -0.09949711710214615, -0.0419313907623291, -0.030748018994927406, -0.05592259019613266, 0.04489065334200859, -0.06144815310835838, -0.055500175803899765, -0.053125057369470596, 0.014621900394558907, -0.03199004381895065, -0.012551870197057724, 0.03882480785250664, 0.05592164397239685, -0.07381150871515274, 0.0194026418030262, 0.0023129174951463938, 0.06212944537401199],
+ "SUB":[-0.0409553237259388, -0.029310308396816254, 0.01490329671651125, -0.045930348336696625, -0.03286251798272133, -0.045688748359680176, -0.020436206832528114, -0.08068825304508209, -0.08095689862966537, -0.07854274660348892, 0.05023178085684776, -0.03631094843149185, 0.127378448843956, -0.06976428627967834, 0.02310427650809288, -0.013272405602037907, -0.03767959401011467, -0.0021712861489504576, -0.03327992931008339, -0.08810850977897644, 0.02026883326470852, -0.08081665635108948, -0.021247923374176025, 0.06033550575375557, -0.025329744443297386, 0.01672476716339588, -0.13992103934288025, 0.03807712346315384, 0.00753889000043273, 0.03356786444783211, -0.08110074698925018, -0.02138848975300789, -0.003165633650496602, -0.10909534245729446, 0.11196761578321457, -0.0444466657936573, -0.0030342722311615944, 0.06261206418275833, 0.0041012149304151535, 0.002335979603230953, -0.013959617353975773, 0.03170846030116081, -0.005779881030321121, 0.10088866204023361, -0.02290481887757778, 0.031136007979512215, 0.006371392402797937, -0.00040964738582260907, 0.0013967705890536308, -0.016098765656352043, -0.047130029648542404, 0.04365961253643036, 0.007011955603957176, 0.02463374100625515, 0.011295259930193424, 0.010799124836921692, -0.002219521440565586, 0.03363423049449921, 0.0031755194067955017, -0.040483538061380386, -0.022059664130210876, -0.04733043164014816, -0.06086168810725212, -0.03909703716635704, -0.054864585399627686, -0.014365045353770256, -0.07014457136392593, -0.04728340357542038, -0.057502008974552155, 0.047272779047489166, 0.04279676824808121, -0.03878743201494217, -0.023753950372338295, 0.017700927332043648, -0.04282432794570923, 0.003082778537645936, -0.04562755301594734, 0.01806732267141342, -0.032573577016592026, 0.07732617855072021, 0.042124927043914795, 0.0021099154837429523, 0.03913125395774841, 0.05744485184550285, 0.03729072958230972, 0.09477493911981583, -0.00039411886245943606, 0.03527684882283211, 0.07722505182027817, -0.027498802170157433, -0.013855398632586002, 0.007022116333246231, -0.035630617290735245, -0.0017228451324626803, -0.03796998783946037, -0.036354999989271164, -0.062316615134477615, 0.015830308198928833, 0.0024066127371042967, 0.026885749772191048],
+ "SUBPDrm":[0.08925081789493561, 0.07635579258203506, 0.028688574209809303, 0.024255702272057533, 0.03825817257165909, -0.01096199732273817, 0.06673680245876312, 0.016778646036982536, -0.08670837432146072, -0.03141689673066139, 0.010142695158720016, -0.03760563209652901, -0.004694721195846796, -0.010841351002454758, 0.02333398535847664, 0.11189720779657364, -0.05084702745079994, 0.09726428985595703, -0.007706334348767996, -0.001504510990343988, -0.09417939186096191, -0.013956149108707905, 0.0059331865049898624, -0.012947320006787777, 0.05488798767328262, 0.08158377557992935, -0.03212987259030342, -0.003381013171747327, -0.016277140006422997, 0.005485948175191879, -0.02023250237107277, 0.07362130284309387, -0.057432033121585846, 0.06642485409975052, 0.07798098772764206, 0.006522192619740963, -0.03228740021586418, 0.06259974092245102, 0.024004191160202026, 0.036039941012859344, 0.05308942124247551, -0.09229450672864914, 0.015633108094334602, -0.015544038265943527, -0.01972798816859722, 0.024282220751047134, 0.01727888733148575, 0.07148534804582596, -0.07646150887012482, -0.054856106638908386, 0.0007555431220680475, 0.04079991951584816, 0.11135581880807877, 0.06789535284042358, -0.06305982172489166, 0.05206559598445892, -0.05628034099936485, -0.02130833826959133, -0.016937382519245148, 0.06939417123794556, 0.08840783685445786, 0.04267791286110878, 0.039649076759815216, -0.027119230479002, 0.014057990163564682, -0.06652014702558517, -0.0237588994204998, -0.01969669945538044, -0.009222852066159248, 0.008278124034404755, -0.03677414357662201, 0.04217046871781349, -0.04775494709610939, 0.05651301518082619, 0.10199978947639465, -0.08607780933380127, 0.040881767868995667, 0.07486564666032791, 0.02317710593342781, 0.05267714709043503, 0.06740488857030869, 0.08442311733961105, 0.021585915237665176, 0.016962537541985512, -0.04030294716358185, 0.016368471086025238, 0.0027946208138018847, -0.06186638027429581, -0.00021529787045437843, 0.046486735343933105, 0.03616613149642944, 0.020586391910910606, -0.11151442676782608, 0.05514461174607277, -0.04872509464621544, 0.03387345373630524, -0.001996975392103195, 0.03219589963555336, 0.09483650326728821, -0.08004993945360184],
+ "SUBPDrr":[-0.043615661561489105, -0.006782587617635727, -0.0342605896294117, -0.022554868832230568, 0.07651479542255402, 0.06528393924236298, -0.06326435506343842, -0.020529823377728462, -0.05641857162117958, -0.01486562192440033, 0.0550776943564415, -0.0010610880563035607, 0.03373382240533829, 0.06355684250593185, 0.03049056977033615, -0.05007201060652733, 0.042342230677604675, 0.07504989206790924, 0.05507859215140343, 0.04219190403819084, -0.033846665173769, -0.003967879340052605, 0.024973109364509583, -0.006894741673022509, 0.03174729645252228, 0.018271422013640404, 0.06414750963449478, 0.0913899764418602, -0.0444018580019474, 0.0802001878619194, -0.02751365676522255, 0.011138329282402992, 0.0764167457818985, 0.047134630382061005, 0.024402134120464325, 0.030184421688318253, -0.03301013261079788, 0.09629951417446136, -0.05295930430293083, -0.03718940168619156, 0.04042655602097511, -0.07149654626846313, 0.02288426272571087, -0.0213213749229908, 0.08966901898384094, -0.015143987722694874, 0.011376790702342987, -0.014871216379106045, -0.02234978787600994, 0.014194239862263203, 0.047630637884140015, -0.030033130198717117, 0.09268826991319656, 0.07145347446203232, -0.05710763856768608, 0.05043945461511612, -0.011722723953425884, 0.0023385065142065287, 0.06873300671577454, -0.04870317876338959, 0.05811891332268715, -0.0639195591211319, 0.07502007484436035, 0.042658742517232895, -0.019032200798392296, -0.02673080377280712, 0.035979725420475006, 0.04761052876710892, 0.007309444714337587, 0.033588994294404984, 0.003492092015221715, -0.03873051702976227, 0.029913440346717834, -0.08537588268518448, -0.08912745118141174, -0.011242966167628765, 0.02387458272278309, -0.04704941436648369, 0.10629556328058243, 0.014512492343783379, 0.008361932821571827, 0.09928252547979355, -0.003748510731384158, -0.09976524859666824, 0.04387794807553291, -0.009145674295723438, 0.010108130984008312, -0.02737361751496792, 0.011287073604762554, -0.0103309853002429, -0.09386003017425537, 0.0010633469792082906, 0.08425284177064896, -0.07785873115062714, 0.05278497189283371, -0.002473871223628521, -0.029172629117965698, -0.0544096902012825, -0.012448078952729702, 0.02439299412071705],
+ "SUBPSrr":[-0.04580387473106384, 0.048284005373716354, 0.04447450488805771, -0.0038608682807534933, -0.02856490947306156, 0.10048484802246094, -0.06691175699234009, 0.013203739188611507, 0.04572733864188194, -0.057204343378543854, -0.008804484270513058, -0.03461216390132904, -0.06761409342288971, 0.0023680981248617172, -0.04392487555742264, -0.101038359105587, 0.09569098800420761, -0.07153765857219696, -0.07791545987129211, 0.004658523481339216, -0.07281738519668579, -0.030478565022349358, 0.028910139575600624, 0.07187073677778244, 0.03782616928219795, 0.08275061845779419, -0.025358494371175766, 0.0724569782614708, 0.008606539107859135, 0.06623318046331406, 0.017356891185045242, 0.01793809048831463, 0.027423616498708725, 0.019390374422073364, 0.01291257981210947, 0.01966414973139763, 0.02305186167359352, -0.0005892546032555401, -0.09727545082569122, 0.01276717521250248, -0.07896959036588669, -0.045557983219623566, 0.01887946017086506, 0.00927511602640152, 0.04583672806620598, -0.03311298415064812, 0.0710364356637001, -0.052080657333135605, -0.053432926535606384, 0.05009649693965912, 0.03212980926036835, -0.021054962649941444, -0.005608755629509687, 0.05465474724769592, -0.03733114153146744, -0.014583761803805828, -0.021968722343444824, -0.007587396074086428, 0.04272778704762459, -0.06381974369287491, 0.03844109922647476, -0.007979038171470165, 0.03666410967707634, 0.008437016047537327, 0.05864400044083595, -0.024337073788046837, 0.04506569355726242, 0.0019566481932997704, 0.07716124504804611, 0.007974023930728436, -0.014292643405497074, 0.06426118314266205, -0.05651199817657471, 0.052482929080724716, -0.022042984142899513, 0.012800240889191628, 0.07701575011014938, 0.044090766459703445, 0.045833706855773926, 0.030767196789383888, -0.020938361063599586, -0.02605637162923813, -0.0555381178855896, -0.015360254794359207, 0.06545872241258621, 0.08373753726482391, -0.00013098260387778282, -0.04747065156698227, 0.08905774354934692, 0.09719410538673401, -0.09054631739854813, 0.031111152842640877, -0.08397622406482697, 0.001993963262066245, 0.015225936658680439, 0.06164289638400078, 0.03282970190048218, 0.00031719551770947874, -0.005919741466641426, 0.012435962446033955],
+ "SUBREG_TO_REG":[0.06561315059661865, 0.0692770704627037, -0.011423248797655106, 0.06047643721103668, 0.04345991462469101, 0.04709193482995033, 0.01047387346625328, 0.059420906007289886, 0.02203384041786194, 0.013334404677152634, 0.0207894928753376, -0.07409291714429855, 0.04958643019199371, 0.03721325099468231, 0.06874371320009232, -0.07692453265190125, -0.06501761078834534, 0.0800645723938942, -0.01735314354300499, 0.021658973768353462, 0.053902123123407364, -0.016356319189071655, 0.021534191444516182, 0.007653417531400919, -0.03942963480949402, 0.03137832507491112, -0.05750972777605057, 0.05480685085058212, -0.012259596958756447, 0.002133642788976431, -0.043486323207616806, -0.01765739545226097, 0.02813793532550335, -0.010738145560026169, 0.009970972314476967, 0.08099718391895294, -0.014054600149393082, -0.04024966433644295, -0.07909796386957169, -0.016174305230379105, 0.008874794468283653, -0.011754640378057957, -0.021244201809167862, 0.015294666402041912, -0.07176730781793594, 0.05324665084481239, 0.056569624692201614, 0.04688495397567749, 0.017879214137792587, 0.040909312665462494, -0.029399564489722252, -0.01859895884990692, -0.028277743607759476, -0.03290833160281181, 0.07410464435815811, -0.08658792823553085, 0.08093713223934174, 0.03502201288938522, -0.03253070265054703, 0.05081195384263992, -0.018452633172273636, 0.06297459453344345, -0.05107720568776131, 0.035384681075811386, -0.02315893955528736, -0.0022591478191316128, -0.011552492156624794, 0.05234641954302788, -0.07140490412712097, -0.0693531408905983, 0.06611628830432892, -0.03776014596223831, -0.004675850737839937, -0.031431496143341064, -0.07371862232685089, -0.0649285763502121, -0.03200344368815422, -0.0707002729177475, 0.03548060357570648, 0.007550409063696861, 0.03312114253640175, 0.024478569626808167, 0.01566815935075283, -0.015480219386518002, 0.007289683446288109, 0.014588446356356144, 0.00630231061950326, -0.09979595243930817, -0.002385872881859541, 0.02725794166326523, -0.040453821420669556, -0.03777584433555603, -0.013747308403253555, 0.05053641274571419, -0.013761390931904316, 0.0033066035248339176, 0.03567478805780411, -0.005715793464332819, 0.012628876604139805, -0.032478656619787216],
+ "SUBR_Fp":[0.04014516621828079, 0.08476793020963669, -0.039514463394880295, 0.0031252603512257338, -0.039459358900785446, 0.016299478709697723, -0.026255007833242416, -0.04409419372677803, -0.04751227796077728, 0.018762758001685143, 0.00409714924171567, -0.022216934710741043, -0.004018240608274937, 0.04699292778968811, 0.006338982842862606, -0.01784246228635311, 0.048936162143945694, 0.013066409155726433, 0.01021649781614542, -0.02285180799663067, -0.03425136208534241, 0.07486490160226822, -0.0064161596819758415, -0.04805798456072807, 0.002329670824110508, 0.09877318143844604, -0.023119239136576653, -0.0105407340452075, -0.01735900528728962, 0.012628981843590736, 0.043012287467718124, 0.006455849856138229, 0.08255967497825623, -0.07485014200210571, -0.02406533621251583, -0.08335856348276138, -0.04272977635264397, 0.03978664055466652, 0.044483598321676254, 0.05518858879804611, 0.0899173691868782, 0.010466701351106167, 0.016680995002388954, -0.09263040125370026, -0.0757501944899559, -0.058189719915390015, 0.05242527276277542, 0.03510826453566551, 0.018700899556279182, -0.07073021680116653, -0.051946286112070084, 0.0719510018825531, -0.03187191113829613, 0.07498811930418015, 0.10402293503284454, -0.051457479596138, 0.06456048786640167, 0.07301759719848633, -0.008476318791508675, 0.018968423828482628, 0.024428049102425575, 0.06073674559593201, -0.08880621194839478, -0.07764868438243866, -0.026757683604955673, 0.014776741154491901, 0.015257938764989376, -0.006446511950343847, -0.025363439694046974, 0.030250543728470802, 0.0012707564746960998, 0.057396840304136276, 0.0046165757812559605, 0.02045257017016411, 0.0728590339422226, -0.07654460519552231, -0.0019137677736580372, 0.021817762404680252, -0.04555770009756088, 0.06221548095345497, 0.09494403749704361, -0.03940271958708763, -0.007562009617686272, -0.020067287608981133, -0.00014774299052078277, 0.06478466093540192, -0.047321345657110214, -0.08498342335224152, -0.012630049139261246, 0.016833195462822914, 0.07959496974945068, 0.08234844356775284, -0.020082857459783554, -0.06917266547679901, 0.04443387687206268, -0.05499476566910744, -0.09368392080068588, 0.09032423794269562, 0.036785006523132324, -0.004267119336873293],
+ "SUBR_FpI":[0.04616459459066391, 0.039090316742658615, 0.03841466084122658, 0.02655022405087948, -0.03562658652663231, -0.029209502041339874, 0.05086609348654747, 0.016039017587900162, 0.0664394348859787, -0.032215651124715805, 0.08822143822908401, -0.08278830349445343, -0.028551463037729263, 0.051350079476833344, -0.03635944053530693, -0.003147896844893694, -0.08404763042926788, 0.04777198284864426, 0.057956624776124954, -0.015821952372789383, 0.045618169009685516, -0.07394984364509583, 0.039277736097574234, -0.05048505961894989, 0.062012650072574615, -0.044340766966342926, 0.02660965546965599, -0.016398387029767036, -0.015638506039977074, 0.09048686921596527, 0.0038862957153469324, -0.014566701836884022, 0.017149053514003754, 0.008247071877121925, 0.08778494596481323, 0.008319332264363766, 0.053643278777599335, -0.0656208023428917, 0.07824258506298065, 0.048726215958595276, -0.022704942151904106, 0.015253369696438313, -0.00245643500238657, 0.08345486968755722, 0.03879111260175705, -0.0040562036447227, 0.03397039696574211, -0.11003483086824417, 0.06584636121988297, -0.009197236970067024, -0.029089530929923058, -0.004831695929169655, -0.03320612758398056, -0.029942942783236504, 0.032277777791023254, -0.0043462123721838, -0.06794892996549606, 0.05621436983346939, 0.021454041823744774, 0.07247529178857803, 0.016395926475524902, -0.0025767392944544554, 0.05567770078778267, 0.08729250729084015, 0.05092701315879822, 0.06088491156697273, 0.03083610348403454, 0.09079228341579437, -0.005584388505667448, 0.04510094225406647, -0.03416905179619789, 0.04861551150679588, 0.07563967257738113, -0.07038051635026932, 0.07608163356781006, 0.017928676679730415, -0.08591616898775101, -0.016242152079939842, -0.03458160161972046, 0.025612162426114082, 0.08654292672872543, -0.06663293391466141, -0.09977709501981735, -0.006344332359731197, -0.0635278970003128, -0.002474339446052909, -0.07598761469125748, 0.07858508825302124, -0.05067635700106621, -0.035271309316158295, -0.06343457847833633, -0.060057803988456726, 0.011987955309450626, -0.003621339797973633, -0.09423112124204636, -0.10197965800762177, -0.06784939765930176, -0.049246884882450104, -0.05950966849923134, 0.0368017703294754],
+ "SUBSDrm":[0.05110657960176468, -0.10914777964353561, 0.09607260674238205, 0.031154830008745193, -0.07224208116531372, -0.05338117480278015, 0.023995598778128624, -0.019415341317653656, -0.057011447846889496, 0.085905060172081, -0.07296226918697357, -0.04069420322775841, 0.05896349623799324, 0.08844230324029922, -0.002286833943799138, 0.09597148001194, -0.057927317917346954, 0.06556212157011032, 0.07834293693304062, -0.006535705178976059, -0.029368368908762932, -0.061385657638311386, -0.06594650447368622, -0.0818404108285904, -0.02214914560317993, 0.056091394275426865, -0.01222157385200262, -0.01487799733877182, -0.029815854504704475, 0.036326609551906586, 0.045367512851953506, 0.015934359282255173, -0.05807264521718025, -0.010637004859745502, 0.015952983871102333, -0.03305814042687416, -0.043100740760564804, 0.006470680236816406, -0.004257726017385721, -0.10179774463176727, -0.024014152586460114, 0.06355230510234833, 0.004388272296637297, -0.009358946233987808, -0.0959348976612091, -0.014145479537546635, -0.005931882653385401, 0.02710464783012867, 0.037620361894369125, -0.036782439798116684, -0.026765430346131325, -0.07348693907260895, 0.03872431442141533, 0.02048495225608349, -0.07798600196838379, 0.022510813549160957, 0.02365081012248993, -0.014892247505486012, -0.029969923198223114, -0.00046300841495394707, 0.045817021280527115, -0.017782030627131462, -0.06991151720285416, -0.009818185120821, 0.007358897943049669, -0.09226357936859131, 0.05003705248236656, 0.06901750713586807, -0.03667835518717766, -0.07064211368560791, -0.04835781827569008, -0.043352264910936356, 0.06676784157752991, -0.043633438646793365, -0.03163550794124603, -0.07583293318748474, -0.003836315590888262, -0.004234760534018278, 0.01229368057101965, 0.05994395166635513, 0.04630056396126747, -0.01372563187032938, 0.0888589397072792, -0.0705433040857315, -0.04492460936307907, -0.0049524507485330105, -0.048450954258441925, -0.012483220547437668, 0.018639344722032547, -0.06563596427440643, -0.06666523218154907, -0.03402146324515343, -0.06674571335315704, -0.007998445071280003, -0.027976728975772858, 0.04282431676983833, -0.028664173558354378, 0.06397220492362976, -0.011934180743992329, -0.016454460099339485],
+ "SUBSDrr":[-0.0075022378005087376, 0.04080792888998985, -0.0212845578789711, 0.04779491573572159, -0.007907706312835217, 0.027424508705735207, 0.06414297223091125, -0.05254216492176056, 0.002304362365975976, 0.09150942414999008, -0.037542834877967834, 0.07982775568962097, -0.07013902068138123, 0.07135985046625137, -0.017102301120758057, -0.048899225890636444, 0.02287573553621769, 0.07319921255111694, 0.05698159709572792, 0.009291710332036018, 0.07969974726438522, 0.02021205425262451, 0.07860670983791351, 0.10775367170572281, -0.05169999599456787, -0.08819474279880524, 0.012343589216470718, -0.048585597425699234, 0.009351802989840508, 0.011622922495007515, -0.016139276325702667, 0.008447143249213696, 0.014725261367857456, 0.003716204082593322, -0.022930890321731567, 0.02340403012931347, 0.006659934297204018, -0.05621117353439331, -0.001338758273050189, 0.070649154484272, 0.021199310198426247, 0.03777560219168663, -0.002001045038923621, 0.0767911821603775, 0.01658731885254383, -0.06774631887674332, 0.06313740462064743, -0.05388486012816429, 0.004589911084622145, -0.0307123064994812, -0.015346836298704147, -0.02232622541487217, -0.07555684447288513, -0.021774960681796074, 0.015782460570335388, -0.038722191005945206, -0.07617213577032089, 0.06185111775994301, -0.03351759910583496, -0.06637845933437347, 0.05685910955071449, 0.007157262414693832, -0.014767490327358246, 0.03324340656399727, 0.05564774200320244, -0.02210095524787903, 0.03777572512626648, -0.09898921847343445, -0.06079014018177986, -0.037800099700689316, 0.056959476321935654, 0.04117912799119949, -0.08666686713695526, -0.03850017860531807, 0.056997425854206085, 0.007549368776381016, -0.0681871548295021, 0.01978732831776142, -0.07384432852268219, -0.013101829215884209, 0.002102529862895608, 0.010128281079232693, -0.0515904501080513, -0.0863124430179596, -0.0006599869811907411, 0.013677292503416538, 0.030065597966313362, -0.0935891643166542, -0.0449557825922966, 0.02477750927209854, 0.061128418892621994, 0.004574707709252834, -0.024878524243831635, -0.00417002709582448, 0.028526274487376213, 0.0005658230511471629, 0.026126021519303322, 0.02635328471660614, -0.10327786952257156, -0.028842275962233543],
+ "SUBSSrm":[0.08045309036970139, -0.04323893412947655, 0.03147958964109421, -0.05560615286231041, 0.07445260882377625, -0.07288792729377747, -0.0008423511171713471, 0.015413832850754261, -0.06882281601428986, 0.09442552924156189, -0.06410524249076843, 0.04903692379593849, 0.054747115820646286, -0.05378304794430733, 0.033249810338020325, 0.01337460521608591, -0.03142393380403519, -0.011717730201780796, 0.07209576666355133, 0.07322277873754501, -0.04262514039874077, 0.03954370692372322, 0.07789751887321472, 0.05511927977204323, -0.0005983900045976043, 0.036665093153715134, -0.01117388904094696, 0.09673145413398743, 0.021417858079075813, 0.04028163105249405, 0.05931759253144264, -0.004909476265311241, 0.01099796500056982, 0.03817369043827057, 0.0386827252805233, -0.012626112438738346, 0.02220825105905533, 0.0922904759645462, -0.0171322263777256, 0.032250162214040756, -0.08261676132678986, -0.038342464715242386, 0.024828704074025154, 0.03673412278294563, 0.045548781752586365, -0.044406551867723465, 0.10132002830505371, 0.1070161908864975, 0.0713319182395935, 0.020956965163350105, 0.04183647036552429, 0.08917400985956192, 0.043008558452129364, -0.04365198686718941, 0.02797776274383068, -0.08583199977874756, 0.0511753149330616, -0.0020556843373924494, -0.04234379529953003, -0.02706894278526306, -0.09315532445907593, 0.05765789747238159, 0.07175514101982117, 0.03575920686125755, 0.049399591982364655, -0.031399477273225784, -0.0636659488081932, -0.038648780435323715, 0.05808458849787712, 0.008373602293431759, -0.0020472893957048655, 0.0029524234123528004, 0.05044642090797424, -0.029547424986958504, -0.015182076953351498, 0.0018870615167543292, 0.05664796754717827, 0.055714815855026245, -0.0878090113401413, -0.07426240295171738, -0.10875803232192993, -0.0038126115687191486, -0.007256288081407547, -0.013762868009507656, -0.039004724472761154, 0.08417601883411407, 0.0005881187389604747, 0.01132382545620203, -0.07991012185811996, -0.035520557314157486, 0.028481563553214073, -0.06669425964355469, 0.016212098300457, 0.06942453235387802, 0.0025890821125358343, -0.024166034534573555, -0.04860218986868858, 0.004753459244966507, -0.02300277352333069, 0.043759386986494064],
+ "SUBSSrr":[0.05479227006435394, 0.024105247110128403, 0.024610789492726326, -0.016450105234980583, 0.10771623253822327, 0.09112036973237991, 0.07681645452976227, 0.047806255519390106, -0.09582904726266861, 0.055374905467033386, 0.01279753353446722, 0.03699484467506409, -0.019817829132080078, -0.07068919390439987, -0.04698239639401436, -0.03161180764436722, -0.011303357779979706, -0.038598060607910156, 0.028462186455726624, 0.04319864138960838, 0.03994015231728554, 0.06155243515968323, 0.04190313071012497, -0.050375357270240784, -0.030741669237613678, -0.003290669061243534, -0.011411847546696663, -0.08657657355070114, 0.0421801395714283, -0.0700424313545227, -0.006370847579091787, 0.023198643699288368, -0.006221206858754158, -0.021019425243139267, -0.08470878005027771, -0.016027657315135002, -0.025106260553002357, 0.0875532478094101, -0.035374462604522705, 0.022369055077433586, -0.00648578442633152, -0.05427854508161545, -0.02713675983250141, 0.05028439313173294, 0.038049548864364624, 0.0031649393495172262, 0.007275638170540333, -0.05127333849668503, 0.07090405374765396, 0.08096250146627426, -0.10904370993375778, -0.005406262818723917, 0.006267028395086527, -0.06783299893140793, -0.026936698704957962, 0.05896979570388794, 0.04480688273906708, 0.04495877027511597, -0.04068625345826149, 0.07031095027923584, -0.06196089833974838, -0.07115346938371658, 0.09234710037708282, 0.07728385925292969, -0.03338436782360077, -0.06888081133365631, -0.0004830573161598295, -0.042541779577732086, 0.05166452005505562, -0.08484293520450592, -0.047666821628808975, -0.007938554510474205, -0.10103371739387512, -0.027224726974964142, 0.05569605156779289, 0.02671479620039463, 0.02543690986931324, 0.0439259372651577, -0.06120139732956886, 0.061154890805482864, -0.04406236857175827, 0.0008597781416028738, -0.06327546387910843, 0.04097258299589157, 0.10321842133998871, -0.09618956595659256, -0.0013557544443756342, -0.055321864783763885, -0.012181784957647324, -0.01840481162071228, 0.06566348671913147, 0.0494401752948761, -0.010580274276435375, 0.0008206625934690237, 0.02064107172191143, 0.06710590422153473, 0.07133108377456665, -0.024461109191179276, 0.05005812272429466, -0.09965044260025024],
+ "SUB_Fp":[-0.06535209715366364, -0.019333675503730774, 0.00045895177754573524, 0.06189699470996857, -0.004607848357409239, -0.029064591974020004, 0.008595799095928669, 0.04648766294121742, 0.028103943914175034, 0.02969309128820896, 0.03974162042140961, 0.10971956700086594, -0.05392315983772278, -0.0498325377702713, 0.0005231177783571184, 0.005414771381765604, 0.047576699405908585, -0.06961376965045929, -0.06712035834789276, 0.018022794276475906, -0.019082432612776756, 0.025096509605646133, -0.08417217433452606, -0.03687996789813042, -0.00037042214535176754, 0.06816249340772629, -0.09335337579250336, 0.08655578643083572, 0.01859474740922451, -0.07121933251619339, -0.015447902493178844, -0.012439778074622154, 0.001180795137770474, 0.039758309721946716, 0.007929498329758644, -0.034867119044065475, -0.04846477136015892, -0.05538325756788254, -0.036122020334005356, -0.049115441739559174, 0.015532100573182106, -0.022712409496307373, 0.0443609356880188, 0.023409025743603706, 0.05139428749680519, 0.005189192947000265, -0.016476096585392952, 0.021457422524690628, -0.08268702030181885, 0.06020848825573921, -0.007569381967186928, -0.09246113896369934, 0.09752066433429718, 0.01307051070034504, -0.05548590421676636, -0.0006430849898606539, -0.0067365774884819984, 0.06493259966373444, -0.033524662256240845, 0.04525605961680412, -0.04592057317495346, -0.07051052898168564, 0.012181431986391544, 0.08618869632482529, 0.049636565148830414, -0.02838118001818657, 0.0534137561917305, -0.08886492997407913, -0.049277413636446, -0.05653766170144081, 0.07826941460371017, -0.08279671519994736, 0.10461152344942093, 0.011094856075942516, -0.061301089823246, -0.08834301680326462, -0.08642115443944931, -0.001294778543524444, 0.01708555966615677, -0.02736852318048477, 0.019635561853647232, 0.018949653953313828, -0.02751462161540985, -0.011999034322798252, 0.01944546028971672, 0.009213953278958797, 0.04544544219970703, -0.025773724541068077, -0.01578015647828579, 0.08934204280376434, 0.03268682211637497, 0.06658919900655746, 0.025081630796194077, 0.04730582609772682, -0.0035615679807960987, 0.09278663992881775, 0.051893845200538635, 0.05197897180914879, 0.02978385239839554, 0.04224952310323715],
+ "SUB_FpI":[0.10024038702249527, 0.04564737528562546, -0.030989544466137886, -0.017534354701638222, 0.03355234116315842, -0.021660471335053444, -0.06337688118219376, -0.06971760094165802, 0.006172602530568838, 0.021165741607546806, 0.07747776061296463, -0.01263618003576994, -0.02893477864563465, -0.07998492568731308, 0.08961547166109085, -0.0718551054596901, 0.02007116749882698, -0.031748972833156586, -0.02943093329668045, -0.024836666882038116, -0.0697193592786789, -0.081885427236557, 0.005476835183799267, -0.07738290727138519, 0.09254404902458191, -0.03705989196896553, -0.060241203755140305, 0.009861617349088192, -0.06355080008506775, -0.1073419600725174, -0.061703916639089584, -0.01597294770181179, -0.011833291500806808, 0.09757548570632935, 0.000997384893707931, 0.04324178397655487, -0.04818495362997055, 0.05502297729253769, -0.02057071216404438, 0.03409801051020622, -0.03298418968915939, -0.061187658458948135, 0.004495861008763313, -0.01397479698061943, 0.06850254535675049, 0.06293413788080215, -0.0025419993326067924, -0.10556308180093765, 0.0013481284258887172, -0.10091066360473633, 0.016073673963546753, -0.007905310951173306, -0.027791937813162804, 0.023367132991552353, 0.004285873845219612, 0.027747908607125282, 0.05463048070669174, 0.014400635845959187, 0.06133830547332764, 0.007775433361530304, -0.010977182537317276, 0.04312293976545334, 0.05193806439638138, -0.05559876188635826, -0.06016004830598831, -0.046317145228385925, 0.05045414716005325, -0.027742300182580948, 0.10429156571626663, -0.001974456710740924, 0.05695677548646927, -0.05652488395571709, -0.009646552614867687, 0.04199406877160072, 0.08792194724082947, 0.003923158161342144, -0.042205050587654114, 0.009238604456186295, -0.06978720426559448, 0.019447458907961845, -0.013946537859737873, 0.02586296945810318, -0.02947438694536686, 0.057203590869903564, -0.006601700559258461, 0.0290297232568264, 0.08509742468595505, -0.08851033449172974, -0.0627930760383606, 0.07147359102964401, 0.06592661887407303, 0.027346063405275345, 0.023278769105672836, 0.0945018008351326, -0.07643792778253555, -0.011534078046679497, 0.04287607967853546, 0.08244950324296951, -0.021957779303193092, 0.008684279397130013],
+ "TCRETURNdi":[-0.04971799626946449, 0.006305203773081303, -0.035415709018707275, -0.05086583271622658, -0.031976088881492615, 0.10724108666181564, 0.005654812324792147, 0.02655794657766819, -0.04396625608205795, 0.12434941530227661, -0.10418611019849777, -0.02930423431098461, -0.04238605499267578, -0.09912699460983276, 0.06630881130695343, 0.022558268159627914, 0.03664041683077812, 0.05273904651403427, -0.09567688405513763, -0.0666625052690506, 0.013357116840779781, 0.044412508606910706, 0.0392591655254364, 0.07101661711931229, -0.031145432963967323, 0.01554455142468214, 0.021295679733157158, 0.05641794204711914, 0.06984324008226395, -0.07508205622434616, -0.02724745310842991, 0.08087775856256485, -0.0038602747954428196, -0.03128707781434059, -0.013331227004528046, 0.003564538201317191, -0.06413405388593674, 0.05458110570907593, 0.005928017199039459, -0.04847036674618721, 0.014685604721307755, -0.05594278499484062, -0.020804859697818756, 0.11551841348409653, 0.03299592807888985, 0.06662148237228394, 0.007532132789492607, -0.025871016085147858, -0.002873114077374339, -0.020153770223259926, -0.033758386969566345, 0.07640472799539566, 0.058815814554691315, 0.02668924815952778, -0.0002921850245911628, 0.0014833280583843589, -0.04475446417927742, -0.007021617144346237, 0.009030520915985107, 0.0076754470355808735, -0.003919785842299461, 0.04354642704129219, 0.029960453510284424, -0.046543341130018234, -0.02858738973736763, 0.006021188572049141, -0.048004284501075745, -0.008211337961256504, -0.008354585617780685, -0.008735823445022106, 0.062073081731796265, 0.0526895672082901, -0.0743589848279953, 0.007774927653372288, -0.04398847371339798, -0.06317926198244095, -0.04774477332830429, -0.034979306161403656, -0.07183229923248291, 0.01107071153819561, 0.002591773634776473, -0.04542750120162964, 0.006556553300470114, -0.08525209873914719, 0.008356014266610146, 0.03660009056329727, -0.05744921788573265, 0.007698935456573963, 0.06404823809862137, 0.08356517553329468, -0.02263215370476246, 0.03307386860251427, 0.12101807445287704, -0.011445630341768265, -0.028536619618535042, -0.051181815564632416, -0.015772858634591103, 0.04466196149587631, -0.010618846863508224, -0.018623078241944313],
+ "TCRETURNmi":[-0.08656137436628342, 0.03822790086269379, -0.013574144802987576, 0.021959103643894196, 0.03681681305170059, 0.05175470933318138, 0.013557336293160915, 0.0009487003553658724, 0.07659146934747696, 0.006387396715581417, 0.003568294458091259, -0.009463843889534473, -0.041781969368457794, -0.061884555965662, -0.03038974106311798, -0.033166009932756424, 0.016835803166031837, 0.05039070174098015, 0.026548005640506744, -0.01653604581952095, -0.010230648331344128, 0.010449488647282124, -0.0144575797021389, 0.09376231580972672, -0.06274311989545822, 0.004792054183781147, 0.01111480500549078, -0.06960226595401764, 0.05698581412434578, 0.001127832685597241, -0.061946917325258255, -0.01975374110043049, 0.005681528244167566, -0.039879463613033295, -0.03321743756532669, 0.06903569400310516, -0.04946364462375641, 0.05900449678301811, 0.023387931287288666, 0.07023177295923233, -0.008349308744072914, 0.06223536655306816, -0.012833861634135246, 0.024371111765503883, -0.03906792774796486, 0.11015447229146957, -0.025606753304600716, -0.059021417051553726, 0.014185617677867413, -0.00770530803129077, -0.031555648893117905, -0.0443529412150383, 0.014497574418783188, 0.07965368777513504, 0.051672082394361496, 0.0819920152425766, -0.03432786837220192, 0.01998445950448513, 0.05447302758693695, 0.01627884991466999, -0.05415477603673935, 0.0015539369778707623, 0.028226057067513466, 0.009170006029307842, -0.01341466698795557, 0.03097589500248432, -0.04089049622416496, 0.09829258173704147, -0.020682476460933685, -0.047312378883361816, 0.047677360475063324, -0.0739738866686821, -0.038187943398952484, -0.019655290991067886, -0.019070535898208618, 0.06093737855553627, -0.0034767542965710163, 0.01975513994693756, -0.10771653056144714, -0.010347439907491207, -0.019477274268865585, -0.05822193622589111, 0.012048513628542423, 0.02132856473326683, -0.010412462055683136, 0.02884138748049736, -0.06543587148189545, 0.06207885593175888, 0.04445846006274223, -0.017621178179979324, 0.04442876949906349, -0.02770475670695305, 0.06791884452104568, -0.053644489496946335, -0.13634617626667023, -0.028495952486991882, 0.006632520817220211, -0.0886819064617157, -0.011595909483730793, -0.007433926220983267],
+ "TCRETURNri":[-0.03594371676445007, 0.01647087186574936, -0.021507088094949722, -0.07527527958154678, -0.039186228066682816, -0.013898078352212906, -0.008716744370758533, 0.09820100665092468, -0.0346626453101635, -0.012918500229716301, 0.0037938745226711035, -0.006755399517714977, 0.05485786870121956, -0.07991699874401093, -0.013380509801208973, 0.012410517781972885, -0.0007587788859382272, 0.06923805922269821, -0.0679951161146164, -0.020409151911735535, -0.04650609567761421, -0.013417904265224934, -0.05945995822548866, 0.0896654948592186, -0.028301507234573364, 0.011695519089698792, -0.07380368560552597, 0.034030646085739136, 0.07674384862184525, 0.007901799865067005, 0.047335654497146606, 0.006961603183299303, -0.026933951303362846, -0.030573371797800064, -0.0034712711349129677, -0.006062318570911884, -0.07910860329866409, 0.03504018485546112, 0.0036922527942806482, -0.12569975852966309, 0.014201890677213669, 0.015476712025702, -0.006326565984636545, 0.018446071073412895, 0.0224766843020916, 0.11808603256940842, 0.06039098650217056, -0.006002068053930998, 0.060606230050325394, 0.017316697165369987, -0.034975387156009674, -0.013453363440930843, 0.012658328749239445, 0.001023199176415801, 0.05601302161812782, -0.1013784185051918, 0.03749987110495567, -0.03634567931294441, -0.0055584073998034, -0.08326631039381027, 0.04026272892951965, 0.012807853519916534, 0.01183957327157259, 0.07501313090324402, -0.027440091595053673, 0.03326798975467682, -0.04340182989835739, -0.010411209426820278, -0.03610425442457199, 0.08614882081747055, 0.03419187292456627, 0.05441831052303314, -0.07059603929519653, -0.03111969493329525, -0.04796084016561508, 0.08061695098876953, 0.015570989809930325, 0.040096379816532135, 0.009730649180710316, -0.012208514846861362, 0.02643972635269165, -0.02468012273311615, 0.009893407113850117, -0.01643497869372368, -0.007883105427026749, 0.05534227564930916, 0.007113403640687466, 0.025815023109316826, 0.05121346190571785, 0.047807104885578156, 0.06789636611938477, 0.08912072330713272, 0.10474339872598648, 0.07961563766002655, -0.10679170489311218, 0.013511833734810352, 0.013999546878039837, 0.10446566343307495, -0.006825637072324753, 0.005398167297244072],
+ "TEST":[0.021558187901973724, -0.051598288118839264, 0.07670954614877701, -0.0508764423429966, -0.06320448219776154, -0.015165618620812893, -0.06281086057424545, -0.09782399982213974, -0.08785062283277512, -0.07652387768030167, 0.09334906935691833, 0.07700145244598389, 0.026330092921853065, -0.05730042606592178, -0.08584664016962051, 0.0781935602426529, -0.0015920166624709964, 0.020918847993016243, -0.03577553480863571, -0.11341985315084457, -0.024087613448500633, -0.08080831170082092, -0.01154435146600008, 0.06765753775835037, -0.02686881832778454, 0.04198119416832924, -0.0640924721956253, -0.0003894323599524796, 0.021936319768428802, 0.008684054017066956, -0.0018789478344842792, 0.0013622526312246919, 0.04036598652601242, -0.02005513198673725, 0.0034140408970415592, 0.02862340770661831, 0.02334153838455677, -0.06197643652558327, 0.05127175524830818, -0.07394934445619583, -0.008066111244261265, 0.023259282112121582, 0.019556188955903053, 0.10314411669969559, 0.01053143385797739, 0.10926472395658493, 0.028822297230362892, -0.012925161980092525, -0.0589185431599617, 0.019647372886538506, -0.0856805145740509, 0.036502592265605927, 0.009357383474707603, 0.017446471378207207, 0.04259096086025238, -0.08035209774971008, 0.06512689590454102, -0.06563331931829453, 0.051605161279439926, 0.007477360311895609, -0.015319745987653732, -0.05032648146152496, 0.12218518555164337, 0.01330158393830061, -0.09360647946596146, 0.04676274582743645, -0.0522327683866024, 0.03202574700117111, -0.018727894872426987, 0.013311135582625866, 0.025456108152866364, -0.056283675134181976, -0.026241233572363853, 0.006117040757089853, -0.023398907855153084, 0.05306249111890793, -0.043327558785676956, -0.02783172018826008, -0.06386378407478333, 0.03934379294514656, -0.04344921559095383, 0.0065658800303936005, 0.04039039835333824, 0.05008099600672722, -0.046192467212677, 0.034984808415174484, -0.024693958461284637, 0.008242235518991947, 0.022948933765292168, -0.028714794665575027, -0.0157247893512249, -0.018049543723464012, 0.06610266864299774, -0.04585465043783188, -0.009346081875264645, -0.10186070203781128, -0.06219444051384926, -0.006177897099405527, -0.11076324433088303, -0.016509944573044777],
+ "TRAP":[0.014274099841713905, -0.020498458296060562, -7.254503725562245e-05, 0.01842576451599598, -0.06604819744825363, 0.1251516193151474, -0.022514402866363525, -0.05594994127750397, -0.05037267133593559, 0.03956100717186928, 0.08917682617902756, -0.07182087004184723, -0.058549944311380386, -0.06794173270463943, -0.023411212489008904, -0.006654005963355303, -0.02770286425948143, -0.05899776518344879, -0.008382419124245644, -0.004369968548417091, -0.010478721000254154, 0.0583626963198185, -0.05283674597740173, -0.006286121904850006, 0.03255552798509598, 0.029548147693276405, -0.02095882222056389, 0.050295665860176086, 0.08499705046415329, -0.0409734770655632, 0.09105507284402847, 0.08680717647075653, -0.005679781548678875, -0.044616054743528366, 0.0007946228142827749, 0.0040604909881949425, -0.10648741573095322, 0.015105838887393475, 0.025175075978040695, 0.010891887359321117, -0.0943080484867096, -0.0667765885591507, -0.10661999881267548, 0.04506191983819008, -0.05532558262348175, 0.07536052167415619, 0.012597769498825073, -0.07652989029884338, 0.013398521579802036, -0.05399063602089882, -0.024408143013715744, 0.0570225715637207, -0.055543456226587296, 0.03625839576125145, -0.08582644164562225, 0.08813446015119553, 0.00938455667346716, 0.05742872133851051, 0.015259740874171257, -0.021235575899481773, 0.003788122907280922, 0.044802308082580566, 0.0642673447728157, 0.0001238849654328078, -0.05795922875404358, 0.06237408518791199, 0.049284305423498154, 0.03841239959001541, -0.051280152052640915, 0.08288299292325974, 0.014888937585055828, 0.09080076962709427, 0.0789988711476326, -0.008473783731460571, -0.08521212637424469, -0.0382082536816597, -0.032874513417482376, -0.03390294685959816, 0.04534957930445671, -0.0032181430142372847, -0.08601401001214981, -0.09827930480241776, -0.0017653005197644234, -0.054946232587099075, 0.025542577728629112, -0.04647393524646759, -0.052295371890068054, 0.015484603121876717, 0.03574363514780998, -0.025004567578434944, 0.02562507428228855, -0.026096094399690628, 0.06288604438304901, -0.017133034765720367, -0.02932364121079445, 0.03366189822554588, 0.02021278254687786, 0.05309411510825157, 0.010576938278973103, -0.009117609821259975],
+ "UCOMISDrm":[0.027480948716402054, -0.06906867027282715, -0.028566887602210045, 0.07132382690906525, -0.04967934638261795, 0.039942555129528046, 0.06876615434885025, 0.06133624538779259, 0.056569140404462814, -0.012627877295017242, -0.0147861922159791, 0.03232912719249725, -0.022590473294258118, 0.09069740027189255, -0.06645545363426208, -0.0653386190533638, -0.021022014319896698, -0.03129272535443306, 0.05949629843235016, 0.055705104023218155, -0.07217314094305038, 0.08580069243907928, 0.06581208854913712, 0.08135650306940079, -0.011492222547531128, -0.02206283248960972, 0.053986869752407074, -0.08216746151447296, 0.03865760192275047, -0.03576091304421425, 0.0350300595164299, -0.05239938944578171, -0.011481900699436665, -0.04533184692263603, 0.1098184660077095, -0.0732162818312645, -0.05530213564634323, 0.0695345550775528, -0.020010273903608322, -0.011692238040268421, -0.05694189667701721, -0.037257757037878036, 0.02295094169676304, 0.028974557295441628, 0.05992819741368294, 0.0322691984474659, 0.007226652931421995, 0.028811926022171974, 0.06525159627199173, -0.03890489786863327, 0.07731226086616516, -0.0904795378446579, 0.017173733562231064, 0.018983792513608932, 0.0002824615512508899, -0.04051484912633896, -0.04782995209097862, -0.06529999524354935, 0.071381576359272, -0.02299836277961731, 0.0423978827893734, 0.09369246661663055, 0.05988244712352753, 0.05347064509987831, -0.09727764874696732, -0.07897592335939407, -0.06632062047719955, -0.0764283612370491, -0.019295165315270424, 0.05706149712204933, 0.04769996926188469, -0.026040248572826385, 0.06662635505199432, -0.0038446018006652594, -0.04232512041926384, 0.010000518523156643, 0.04157025367021561, 0.01888529397547245, 0.023295320570468903, -0.007258046884089708, 0.03148804232478142, -0.016093801707029343, 0.08982066065073013, -0.053112324327230453, 0.009680081158876419, 0.09944726526737213, 0.02236367203295231, 0.04868599399924278, 0.03671357035636902, 0.007288207765668631, 0.02430151216685772, -0.06556344777345657, 0.07372480630874634, -0.05285387113690376, -0.050119414925575256, 0.03955594450235367, 0.03149211034178734, 0.10244882106781006, 0.02021276392042637, 0.02756236307322979],
+ "UCOMISDrr":[0.011566052213311195, 0.07091140002012253, -0.03215370699763298, 0.07522628456354141, -0.07664810121059418, -0.015991074964404106, 0.018086610361933708, 0.029052121564745903, 0.011517626233398914, 0.03003661520779133, -0.009327736683189869, -0.029406031593680382, 0.06884484738111496, -0.01988663710653782, -0.0450889989733696, 0.0722556784749031, 0.06762133538722992, -0.024980198591947556, 0.04447037726640701, 0.02139383740723133, 0.03260907530784607, -0.06524799019098282, 0.049945373088121414, 0.007900857366621494, -0.05513658747076988, 0.02700478583574295, 0.09206382930278778, -0.0077806576155126095, -0.03747890517115593, 0.03961070254445076, 0.05815676227211952, 0.028799230232834816, -0.04628617689013481, -0.01632619835436344, 0.07041066139936447, 0.06850425153970718, -0.08088485896587372, 0.01812870427966118, -0.047650549560785294, 0.032645538449287415, 0.01133181992918253, -0.0013637597439810634, 0.06555858999490738, 0.000553146586753428, -0.019036073237657547, -0.062484487891197205, -0.03464127331972122, 0.005484892055392265, -0.04845946654677391, 0.03727918863296509, -0.05142495781183243, -0.03885720297694206, 0.02606050856411457, 0.03883444890379906, 0.028462624177336693, -0.020025284960865974, -0.05207865312695503, 0.00598416430875659, -0.012147876434028149, 0.04561229422688484, 0.06452076882123947, 0.050300925970077515, -0.026306383311748505, -0.09255266189575195, 0.03906892612576485, -0.014485050924122334, 0.025031814351677895, -0.07815354317426682, 0.028258809819817543, 0.06111769750714302, -0.08278743922710419, 0.02751707285642624, 0.048446230590343475, 0.04455319046974182, -0.04702466353774071, -0.0800512358546257, -0.01801070012152195, -0.024034811183810234, -0.07654350996017456, 0.03725508227944374, 0.0022965979296714067, 0.021335456520318985, 0.006468148436397314, 0.035527706146240234, 0.07860954105854034, 0.0233515202999115, 0.03216354548931122, 0.0003388201294001192, -0.030308295041322708, 0.027240827679634094, 0.0037411004304885864, -0.04009666293859482, -0.001272158115170896, 0.0039008844178169966, -0.013387724757194519, 0.009738996624946594, 0.05089898407459259, 0.05648735165596008, -0.05393053591251373, 0.0034634738694876432],
+ "UCOMISSrm":[0.05206209048628807, 0.1056339293718338, 0.08353354036808014, -0.04844635725021362, -0.0045241196639835835, 0.010234711691737175, 0.027069564908742905, 0.014272002503275871, -0.05684741213917732, -0.05629202350974083, 0.0011135594686493278, 0.0433838851749897, -0.017531264573335648, -0.09096678346395493, -0.03354392200708389, 0.017577487975358963, -0.05486142262816429, 0.03180376812815666, 0.0317116305232048, -0.038777925074100494, 0.024413401260972023, 0.04549919068813324, -0.00858903769403696, 0.00853076670318842, -0.05278622359037399, -0.009256204590201378, 0.07207811623811722, 0.05376799404621124, 0.04313820227980614, -0.02342792972922325, -0.00024272252630908042, 0.011951245367527008, -0.06920500099658966, 0.018963973969221115, -0.027747776359319687, 0.07170376926660538, -0.036936745047569275, 0.047454409301280975, 0.053948305547237396, 0.05679040774703026, 0.047907400876283646, 0.0033061811700463295, -0.07700470834970474, -0.064398854970932, 0.010621566325426102, -0.09985153377056122, -0.07541216164827347, 0.06276098638772964, -0.0065646045841276646, 0.04630684107542038, -0.07271122932434082, 0.05600094050168991, 0.006031657103449106, 0.00591778289526701, 0.011313775554299355, -0.012509984895586967, -0.02760983258485794, 0.045526184141635895, 0.0772852748632431, -0.04170296713709831, 0.011254792101681232, -0.07431059330701828, 0.007490567397326231, -0.0416007898747921, 0.024974828585982323, -0.015520971268415451, 0.022769754752516747, 0.013110288418829441, 0.045288167893886566, -0.040384143590927124, 0.03478306531906128, -0.03670378401875496, -0.05358360707759857, 0.02397436462342739, 0.06181089207530022, 0.05514797568321228, 0.0423593707382679, -0.02142934501171112, -0.054851844906806946, -0.07768166810274124, 0.04147423058748245, -0.10587228089570999, 0.04382626712322235, 0.08696379512548447, 0.0338161364197731, 0.01869458705186844, -0.09109178930521011, 0.00447871396318078, -0.04333276301622391, 0.01979958824813366, -0.01748746819794178, -0.07147563248872757, 0.029927227646112442, -0.057867344468832016, 0.06786982715129852, 0.060720574110746384, 0.02955210581421852, -0.008872637525200844, 0.025124620646238327, 0.056129924952983856],
+ "UCOMISSrr":[0.03867076337337494, -0.02437383122742176, 0.00998431071639061, 0.0907578393816948, -0.0037200076039880514, 0.0032894357573240995, -0.050749748945236206, 0.04645093157887459, 0.02831091918051243, 0.024469155818223953, -0.0541192963719368, 0.10603872686624527, 0.04978426173329353, 0.0285955760627985, -0.09068624675273895, 0.031963735818862915, 0.08943840861320496, -0.016564007848501205, 0.030628131702542305, -0.0036854210775345564, -0.05283455178141594, 0.01784394308924675, -0.02610763907432556, 0.10289222002029419, 0.022817276418209076, -0.00249692564830184, 0.08833581954240799, -0.007592492736876011, 0.0026991881895810366, 0.09132880717515945, -0.035294823348522186, -0.00817790161818266, -0.010929154232144356, -0.018726002424955368, 0.006846325006335974, -0.09952346980571747, 0.0050193979404866695, 0.10895927250385284, -0.08377352356910706, 0.02124151401221752, -0.016105396673083305, -0.0769253671169281, -0.044410813599824905, 0.019931573420763016, 0.08113264292478561, -0.06337649375200272, 0.004369887989014387, -0.04540987312793732, -0.007239894475787878, 0.023724300786852837, 0.018080608919262886, 0.05167301744222641, -0.0042064799927175045, 0.05166153237223625, -0.02114718221127987, -0.08223418146371841, 0.016681114211678505, -0.009340104646980762, -0.005131136160343885, -0.05535592511296272, 0.031333960592746735, 0.06403748691082001, 0.0008265413925983012, 0.08404650539159775, 0.04859980568289757, -0.05075288191437721, 0.01816517487168312, -0.009536413475871086, -0.10464364290237427, -0.0737648755311966, -0.08084823936223984, 0.009648173116147518, -0.01598283462226391, -0.0432032085955143, -0.08660170435905457, -0.11164701730012894, 0.0458088256418705, -0.0873047262430191, 0.04141165316104889, -0.030931171029806137, 0.047875139862298965, 0.09486517310142517, -0.014484868384897709, -0.06038786098361015, -0.060648564249277115, -0.03802386298775673, -0.01660243421792984, -0.049378763884305954, -0.0798083245754242, -0.07966991513967514, 0.00738912308588624, 0.021544985473155975, -0.0649002194404602, 0.0960453674197197, 0.008294681087136269, -0.05181772634387016, -0.09636811912059784, 0.11372120678424835, 0.06167417764663696, 0.0029421085491776466],
+ "UCOM_FpIr":[0.033047523349523544, -0.05307452380657196, 0.025440363213419914, 0.07733459025621414, -0.037263285368680954, 0.041031256318092346, 0.019602254033088684, 0.029223449528217316, 0.0342242568731308, 0.018548591062426567, -0.10600626468658447, 0.08709019422531128, 0.026838598772883415, 0.10877169668674469, -0.03086339682340622, -0.04213641211390495, 0.0599537193775177, 0.038954731076955795, 0.06839273124933243, 0.04969640448689461, 0.04796728119254112, 0.022443657740950584, 0.05521858111023903, 0.06395577639341354, -0.028384072706103325, -0.032829925417900085, -0.06579362601041794, -0.020565735176205635, -0.01146822888404131, -0.008447939530014992, 0.005998861510306597, 0.07397054135799408, -0.07213097810745239, -0.024707594886422157, 0.04803451895713806, -0.01797393336892128, -0.09569339454174042, -0.0726972222328186, 0.02649652399122715, 0.020872820168733597, -0.069088876247406, 0.007119972724467516, 0.0015045133186504245, -0.04048743098974228, -0.01776844449341297, -0.05047902464866638, 0.03269914165139198, -0.04082443192601204, 0.008146632462739944, -0.07606248557567596, 0.0358230359852314, 0.07266371697187424, -0.05483722686767578, 0.0008084179717116058, 0.011990778148174286, 0.05201609060168266, -0.06793858855962753, 0.034805309027433395, -0.06917398422956467, 0.011594141833484173, -0.029957547783851624, 0.015615574084222317, -0.017137937247753143, -0.06452885270118713, -0.043240197002887726, -0.020533550530672073, 0.054699625819921494, -0.019756030291318893, -0.044191014021635056, -0.006932452321052551, -0.09099338203668594, 0.05506281927227974, 0.03752000629901886, 0.011109511367976665, 0.03014986217021942, 0.11122649163007736, 0.02220991812646389, 0.04000028222799301, 0.016489649191498756, 0.1087089404463768, -0.008770504035055637, 0.02064463309943676, -0.06301867961883545, 0.005820769350975752, -0.05199440196156502, 0.000965238839853555, -0.02911527082324028, 0.03993724659085274, -0.02641802467405796, -0.06408198922872543, 0.028588805347681046, -0.07021839171648026, -0.11223821341991425, 0.09215877950191498, -0.013912441208958626, 0.017100470140576363, 0.010465956293046474, -0.08573345094919205, -0.06886832416057587, 0.017057854682207108],
+ "UNPCKHPDrr":[-0.06851755827665329, -0.08000325411558151, -0.018175866454839706, -0.004192085471004248, 0.00011797048500739038, 0.0019512524595484138, -0.02764204330742359, -0.06270565092563629, -0.02614031545817852, -0.05971423164010048, 0.10509191453456879, 0.04547755792737007, -0.016855183988809586, 0.026654204353690147, -0.060009103268384933, -0.06968124210834503, -0.05743863433599472, -0.09365354478359222, 0.03367944061756134, -0.07444527745246887, 0.08098535984754562, 0.022020727396011353, 0.052665721625089645, 0.007418773137032986, 0.026682119816541672, -0.039797551929950714, 0.02794782817363739, -0.03220764175057411, 0.015092123299837112, 0.07100850343704224, 0.04108110070228577, 0.07068156450986862, 0.0933845192193985, 0.03285055235028267, 0.023187942802906036, -0.017145851626992226, -0.00731899356469512, -0.07767230272293091, 0.05755426362156868, -0.06625151634216309, 0.0323355458676815, -0.09856058657169342, 0.06467940658330917, 0.07377861440181732, -0.03611098974943161, -0.09853322058916092, 0.050612907856702805, 0.05131218954920769, -0.05375068262219429, -0.047651730477809906, 0.04780743271112442, -0.05522695183753967, 0.018018780276179314, -0.03034394420683384, -0.005778036080300808, -0.023022035136818886, 0.0217316672205925, 0.007793786004185677, 0.0281969103962183, 0.04741501435637474, 0.01029874850064516, -0.03582265228033066, 0.049755290150642395, 0.07023464888334274, 0.030378632247447968, 0.001892547239549458, 0.021236836910247803, -0.07940535992383957, -0.10489029437303543, -0.047485269606113434, -0.03351544588804245, -0.04659786447882652, 0.11272074282169342, -0.03868072107434273, 0.060833193361759186, 0.08481549471616745, -0.057681385427713394, 0.06547759473323822, 0.050865862518548965, 0.04844629764556885, -0.008924021385610104, 0.02842959389090538, 0.04202716425061226, -0.10211218148469925, 0.04458257183432579, 0.027511732652783394, 0.006267417687922716, -0.04950340837240219, 0.057825393974781036, 0.08698529005050659, -0.06400296092033386, -0.047408901154994965, -0.030777940526604652, -0.006521879695355892, -0.020311227068305016, -0.01370953768491745, 0.08576492220163345, -0.07129718363285065, 0.05393374338746071, 0.05323171243071556],
+ "UNPCKLPDrr":[-0.11125165969133377, -0.010357936844229698, 0.04378852620720863, -0.02773253433406353, 0.031235698610544205, 0.04474805295467377, 0.04752597212791443, 0.02102174609899521, -0.009165238589048386, -0.05543319508433342, -0.08568105846643448, 0.012911579571664333, -0.012318595312535763, 0.046587228775024414, 0.06832238286733627, 0.04069051146507263, -0.05305430665612221, 0.017384888604283333, 0.004431725945323706, -0.09496700763702393, -0.005718826316297054, 0.05235991254448891, -0.0031468502711504698, -0.03544486314058304, -0.010490523651242256, 0.034877922385931015, -0.06536189466714859, 0.043176259845495224, -0.05127019062638283, -0.05721420794725418, -0.09155864268541336, 0.06621874123811722, 0.0375419445335865, -0.054487597197294235, -0.07055514305830002, 0.0180940181016922, -0.024022812023758888, -0.05689045041799545, 0.08905570954084396, -0.10847952216863632, 0.013067319057881832, -0.020602326840162277, 0.07028737664222717, 0.0021096852142363787, -0.04930003359913826, -0.005281652789562941, -0.08545489609241486, -0.06189236044883728, 0.01622670702636242, 0.09378504008054733, 0.006546009331941605, -0.06017320975661278, 0.01602688431739807, -0.01865226775407791, 0.04276162385940552, -0.026264673098921776, -0.01130406279116869, -0.053596191108226776, 0.04326782003045082, 0.05339927598834038, -0.00787857361137867, 0.015095359645783901, -0.0020456132479012012, -0.024692535400390625, 0.05367768555879593, -0.08022938668727875, -0.010184536688029766, 0.010698842816054821, -0.07000448554754257, -0.057760875672101974, -0.011442066170275211, 0.0715365782380104, 0.03338565304875374, 0.003325584577396512, 0.013430975377559662, 0.07866712659597397, 0.022221418097615242, 0.012290401384234428, 0.05334973707795143, 0.00928066112101078, -0.0734652429819107, -0.03668435662984848, 0.08836837857961655, -0.019468752667307854, -0.03007279708981514, 0.02564046159386635, 0.04436550661921501, -0.0019539417698979378, 0.08084987848997116, -0.02657538466155529, -0.04583518207073212, -0.03180471435189247, -0.041202183812856674, 0.049852319061756134, 0.0697808787226677, 0.026637937873601913, -0.01842665486037731, -0.07159899175167084, 0.059917908161878586, -0.03332488238811493],
+ "UNPCKLPSrr":[0.02181267738342285, 0.03087025322020054, 0.060395997017621994, 0.11055820435285568, 0.07299695163965225, -0.1010269969701767, -0.06371703743934631, -0.0011806697584688663, -0.030650660395622253, 0.034938275814056396, -0.09127166867256165, 0.03249894082546234, -0.042392224073410034, -0.020189709961414337, 0.04571761563420296, 0.00880171824246645, 0.025068001821637154, 0.050083134323358536, 0.01030392199754715, -0.01825954206287861, 0.03728504106402397, 0.05506378039717674, -0.04301720857620239, -0.07202531397342682, 0.043367739766836166, 0.10485296696424484, -0.05499078333377838, -0.047327570617198944, -0.05195587873458862, -0.05064743384718895, 0.012828025966882706, -0.0367390401661396, -0.023109909147024155, -0.009158935397863388, -0.014906221069395542, 0.06318914890289307, 0.0629376471042633, 0.022287696599960327, 0.09791360795497894, 0.05745699629187584, 0.038649413734674454, 0.02163086272776127, 0.08348874002695084, 0.03731018677353859, -0.019427606835961342, -0.0868438333272934, -0.08666074275970459, -0.08086829632520676, 0.02774558775126934, 0.004933083429932594, -0.02942661941051483, 0.05779285728931427, -0.07981101423501968, -0.026967903599143028, -0.0004984255065210164, -0.04470764100551605, 0.07043373584747314, -0.002683303551748395, -0.05209661275148392, 0.10299797356128693, -0.10404742509126663, 0.04904048517346382, -0.04770706593990326, -0.08902641385793686, -0.05204537883400917, -0.10600963979959488, -0.04130696505308151, -0.05177624896168709, 0.04993557184934616, 0.06502114981412888, 0.0001340494491159916, 0.05264536663889885, 0.04536722972989082, 0.011493764817714691, 0.055313095450401306, 0.0006728894077241421, 0.04317335784435272, 0.02052779495716095, 0.046232689172029495, 0.006941415369510651, 0.05474270135164261, 0.06588293612003326, -0.033459655940532684, 0.011031503789126873, -0.003907876554876566, 0.11166631430387497, 0.040732238441705704, -0.004426048137247562, -0.06008406728506088, -0.09534664452075958, -0.0829068273305893, 0.011804651468992233, 0.03640827536582947, -0.013923208229243755, -0.03450522944331169, 0.03748657926917076, 0.051329564303159714, 0.05670655891299248, 0.034273359924554825, -0.04886398836970329],
+ "VADDPDYrm":[-0.03006698563694954, -0.012702000327408314, 0.023519620299339294, -0.01087396964430809, -0.03607836738228798, -0.0694042518734932, -0.014299833215773106, -0.0044886646792292595, -0.0052551687695086, 0.002125806175172329, -0.01774044707417488, 0.05568300187587738, -0.06031109020113945, -0.05273107811808586, -0.11647464334964752, -0.03488853573799133, -0.031734466552734375, -0.001997132319957018, -0.02520911768078804, -0.009747309610247612, -0.03475778549909592, 0.004751957952976227, -0.011617207899689674, -0.009461231529712677, -0.039171360433101654, -0.007124023512005806, -0.06095408648252487, -0.008833758533000946, 0.024444732815027237, 0.014582003466784954, -0.10317054390907288, -0.10876914858818054, 0.008828597143292427, 0.057608265429735184, -0.053611040115356445, 0.03666071221232414, -0.039658352732658386, 0.03997201845049858, 0.01752486824989319, 0.0880938470363617, -0.025419294834136963, -0.02803051844239235, -0.00062085926765576, 0.10504385083913803, -0.05704375356435776, -0.04303787276148796, -0.029912814497947693, 0.020375464111566544, -0.032468799501657486, -0.01217883825302124, 0.07437301427125931, -0.016925903037190437, -0.08649574965238571, -0.10857166349887848, -0.10259026288986206, -0.04691021889448166, -0.1027601808309555, 0.026633748784661293, -0.036238666623830795, -0.03668951243162155, -0.00023695088748354465, -0.01232727151364088, 0.03713551163673401, -0.06089082732796669, -0.006800991483032703, 0.026506628841161728, -0.08441987633705139, 0.03804633393883705, -0.01238329615443945, -0.036330047994852066, -0.07303720712661743, 0.058865759521722794, -0.012170946225523949, 0.008508844301104546, 0.06210724636912346, -0.016900137066841125, 0.011201662942767143, -0.04658997431397438, 0.024936618283391, 0.07303480803966522, 0.08839774876832962, -0.03569130226969719, 0.08931028842926025, 0.02911241538822651, -0.005961750168353319, -0.06414636224508286, 0.0016024346696212888, -0.119613416492939, 0.07434762269258499, -0.030676845461130142, -0.009630118496716022, 0.006921377032995224, 0.07601822167634964, -0.02727857232093811, -0.1027701273560524, -0.025661425665020943, -0.06294818222522736, -0.06188144162297249, 0.012472735717892647, 0.03175573796033859],
+ "VADDPDYrr":[-0.001294779358431697, 0.009014812298119068, 0.014752840623259544, -0.0003718770167324692, -0.03919162228703499, -0.05253247171640396, 0.060036323964595795, -0.06081876531243324, 0.012812663801014423, -0.025784919038414955, -0.09705705940723419, -0.02308516390621662, 0.0005577230476774275, -0.09348076581954956, -0.018029307946562767, -0.004828521516174078, -0.0015098063740879297, -0.011442187242209911, 0.01628139615058899, 0.037510067224502563, -0.03838774934411049, -0.05615556612610817, -0.002298684325069189, -0.01626342348754406, 0.048325907438993454, 0.031533271074295044, 0.002379107754677534, -0.05613306537270546, -0.016186540946364403, -0.011147383600473404, -0.07720641791820526, 0.06148264557123184, -0.01843106560409069, 0.037910573184490204, 0.03289049491286278, 0.060790497809648514, -0.026820294559001923, 0.015111424960196018, -0.0065955533646047115, -0.01836540363729, -0.032956015318632126, -0.04499909654259682, -0.06435016542673111, 0.015963243320584297, 0.09333578497171402, 0.0029869957361370325, 0.07186337560415268, -0.027804458513855934, -0.07071572542190552, 0.033913690596818924, -0.03781495988368988, 0.013656877912580967, 0.08710505068302155, -0.04780304431915283, -0.022351963445544243, 0.059730056673288345, -0.05676213279366493, -0.037742797285318375, 0.016708556562662125, -0.03538849577307701, -0.020655468106269836, -0.09464367479085922, 0.03170163184404373, -0.057634785771369934, -0.01582338847219944, 0.0007366938516497612, -0.04999701306223869, 0.02475709654390812, 0.046358950436115265, -0.07676553726196289, 0.034213948994874954, -0.02370338886976242, -0.01763036847114563, 0.0036419457755982876, 0.06280792504549026, 0.0039499979466199875, 0.04878803715109825, 0.009498080238699913, -0.08190174400806427, -0.0244249626994133, 0.07816600054502487, 0.0341208316385746, 0.06148507818579674, 0.03699750080704689, 0.04137466102838516, -0.0974312275648117, 0.06070220097899437, -0.04424821957945824, 0.09197136014699936, -0.008742724545300007, -0.0019775046966969967, 0.004944440443068743, 0.08510112017393112, -0.06612241268157959, 0.08785799145698547, -0.02493489347398281, 0.06328897178173065, -0.04281953349709511, -0.03369986638426781, 0.004891979042440653],
+ "VADDPDrm":[-0.00473943492397666, 0.0772557333111763, 0.022056560963392258, -0.010096542537212372, -0.0329141803085804, 0.016066303476691246, 0.04121268168091774, 0.045199375599622726, 0.02242308109998703, 0.05324723199009895, -0.009539286606013775, 0.09069986641407013, 0.04987407475709915, -0.006629507523030043, -0.03716716542840004, -0.05099403113126755, 0.05343883857131004, -0.04610106348991394, -0.11016936600208282, -0.05901138111948967, 0.027116402983665466, -0.048064231872558594, 0.0015456026885658503, -0.045419465750455856, -0.05335051193833351, -0.009414013475179672, -0.07156314700841904, 0.005774264689534903, -0.03668219596147537, 0.01656915806233883, 0.015130358748137951, -0.036404602229595184, 0.053960490971803665, -0.006082388572394848, 0.09929975867271423, -0.06835915893316269, 0.07225190848112106, 0.04248795658349991, -0.07895930856466293, -0.016453512012958527, 0.024954775348305702, 0.07972753047943115, 0.049692198634147644, 0.11329073458909988, 0.047971632331609726, 0.06486459076404572, 0.01600930653512478, 0.03798476979136467, 0.017944343388080597, 0.07157833129167557, -0.07869181036949158, -0.07105964422225952, -0.029169438406825066, 0.04080267623066902, -0.05867214873433113, -0.004407591186463833, -0.015612928196787834, 0.06917324662208557, -0.038609057664871216, -0.05034715682268143, 0.013691047206521034, -0.050360389053821564, -0.019149260595440865, 0.08453449606895447, -0.02456948161125183, 0.02123500220477581, -0.07531742751598358, -0.0030247417744249105, 0.013213783502578735, -0.07065050303936005, -0.06997217983007431, 0.012214463204145432, 0.011310254223644733, -0.08225549757480621, -0.08598332852125168, -0.04275713115930557, -0.030534988269209862, -0.025623789057135582, 0.05813434347510338, 0.10322839766740799, 0.05896306037902832, -0.004248814191669226, 0.0897245779633522, -0.07160502672195435, 0.08192650228738785, 0.0201874952763319, -0.03934575989842415, 0.09098979830741882, 0.10592477023601532, -0.03996121883392334, 0.12618207931518555, 0.006769073661416769, -0.007538183126598597, 0.01669243350625038, 0.027719931676983833, -0.04773230850696564, 0.09195218235254288, -0.020679280161857605, 0.005297458730638027, 0.023989852517843246],
+ "VADDPDrr":[0.03683951869606972, 0.004237845074385405, 0.044935207813978195, -0.02458817884325981, -0.06089446693658829, -0.08408290892839432, 0.038113389164209366, 0.08216019719839096, 0.04398788884282112, -0.012925825081765652, -0.03120271861553192, 0.021876569837331772, 0.10266351699829102, 0.02525302954018116, -0.13004256784915924, 0.006024080328643322, -0.09685341268777847, 0.13151253759860992, 0.005262278486043215, 0.051388200372457504, 0.07294673472642899, 0.013567582704126835, 0.04995657131075859, -0.01447305642068386, 0.0033712226431816816, 0.03940265253186226, -0.0009681012015789747, 0.013172353617846966, 0.030152160674333572, -0.129119411110878, -0.04346316307783127, 0.04203861951828003, 0.09520195424556732, 0.010196592658758163, 0.07486820220947266, -0.09772757440805435, -0.019073307514190674, 0.05140971764922142, -0.04001402109861374, -0.04515497013926506, 0.013928794302046299, 0.04392474889755249, -0.04799764230847359, -0.046421464532613754, 0.012037445791065693, 0.12842126190662384, -0.032479461282491684, -0.019062526524066925, 0.021930238232016563, -0.021515823900699615, -0.05521201714873314, -0.051437947899103165, 0.06227249279618263, -0.037235695868730545, 0.0393046997487545, -0.009853539988398552, 0.0007918836199678481, -0.01554588321596384, 0.0407327376306057, 0.004231290891766548, 0.03382331505417824, -0.09093841910362244, 0.0647401437163353, -0.034096866846084595, 0.07348919659852982, 0.10874155163764954, 0.010708311572670937, 0.04764768108725548, 0.0008865240961313248, 0.03115232102572918, 0.08284974098205566, -0.05795511603355408, 0.07640182971954346, -0.08823241293430328, -0.011149248108267784, 0.037094056606292725, -0.026440907269716263, -0.023958783596754074, -0.018458545207977295, -0.029046710580587387, -0.09478125721216202, 0.012017695233225822, 0.05502116307616234, 0.03161065652966499, 0.05473313853144646, -0.03626803681254387, -0.022461485117673874, 0.03294442221522331, -0.019116589799523354, -0.05637991428375244, 0.010194736532866955, -0.134169340133667, 0.060059722512960434, 0.005209956783801317, -0.02855192869901657, -0.013204481452703476, 0.10459141433238983, 0.03077266924083233, -0.053214479237794876, -0.019928188994526863],
+ "VADDPSYrm":[0.02330448105931282, 0.043136898428201675, 0.0020730074029415846, 0.011905862018465996, -0.028076104819774628, -0.032898563891649246, -0.07798802107572556, 0.11477910727262497, -0.030936110764741898, -0.06882251799106598, -0.06256161630153656, -0.0934305489063263, -0.0697554275393486, -0.019536733627319336, -0.01468763779848814, 0.05567995458841324, -0.050165701657533646, 0.0657472163438797, -0.05695316940546036, -0.11259978264570236, -0.03134791553020477, -0.10456562787294388, -0.03615216538310051, -0.03806879743933678, -0.027913400903344154, -0.01433450449258089, 0.0723484605550766, -0.029148440808057785, 0.06953306496143341, 0.019842492416501045, 0.058852821588516235, -0.07009918242692947, 0.03205922618508339, 0.015614894218742847, -0.10013379156589508, -0.016695838421583176, 0.07228401303291321, -0.001216333475895226, 0.011867846362292767, 0.08669602870941162, 0.042833808809518814, -0.05349152535200119, 0.021140163764357567, 0.036222949624061584, -0.09502629190683365, 0.045094288885593414, 0.07522847503423691, 0.03826546669006348, 0.051402099430561066, 0.021532656624913216, 0.00753876892849803, 0.047661203891038895, 0.06276196986436844, -0.0282719936221838, 0.06092521920800209, 0.011220115236938, 0.039217326790094376, -0.015228010714054108, 0.013525206595659256, 0.003184438217431307, -0.0854802280664444, -0.005715274717658758, -0.01712300069630146, -0.024619488045573235, 0.052518121898174286, 0.022180521860718727, -0.011429764330387115, -0.03602415323257446, -0.016102656722068787, 0.07302947342395782, -0.04617766663432121, -0.03258904442191124, -0.034794796258211136, -0.01217673346400261, -0.0747719332575798, 0.06655300408601761, 0.00035137630766257644, 0.09289785474538803, 0.018609652295708656, 0.016228990629315376, -0.020180873572826385, -0.005194776691496372, 0.07862717658281326, -0.09472057968378067, 0.02275681309401989, -0.0006885750335641205, -0.0006485682097263634, -0.0012651324504986405, -0.01733657531440258, -0.011686955578625202, 0.05649130418896675, 0.0080142542719841, 0.0800769254565239, -0.03869284316897392, 0.04535595327615738, 0.0387762151658535, 0.009287966415286064, -0.06396039575338364, 0.027284089475870132, 0.014427034184336662],
+ "VADDPSYrr":[-0.05222799628973007, 0.13423952460289001, 0.07037167996168137, 0.05074409022927284, -0.07141032069921494, -0.058900825679302216, -0.012180984020233154, 0.10184399783611298, 0.021969804540276527, 0.017565809190273285, 0.0031455105636268854, -0.0411444753408432, -0.049697067588567734, -0.03989114612340927, 0.016707800328731537, 0.0001470412826165557, 0.008366069756448269, 0.041817426681518555, -0.03713085874915123, 0.027556059882044792, 0.01263338327407837, -0.0001407097006449476, 0.024942409247159958, 0.013310272246599197, 0.08424630761146545, 0.05572282522916794, 0.05999411642551422, 0.04487956687808037, -0.00384044018574059, -0.008703034371137619, -0.027632391080260277, -0.11887671053409576, 0.03613310307264328, 0.041203007102012634, 0.02559397742152214, -0.08036617934703827, 0.0177711620926857, 0.014920088462531567, 0.03022547997534275, -0.0072152805514633656, 0.01195063628256321, 0.020815541967749596, 0.021341944113373756, -0.024431291967630386, -0.09384246170520782, 0.03397814929485321, 0.061505027115345, -0.05832771211862564, 0.0046850997023284435, -0.048030201345682144, -0.04760322347283363, 0.002917882986366749, -0.0036091343499720097, -0.05453520268201828, 0.0378301627933979, 0.0131086939945817, 0.0428042933344841, -0.07121294736862183, 0.006643461529165506, -0.031847674399614334, 0.05123542994260788, -0.0009471467928960919, 0.034417521208524704, -0.031955499202013016, 0.02694377675652504, 0.009949199855327606, -0.0573715902864933, -0.07026320695877075, 0.046201497316360474, -0.09872154146432877, -0.08038119226694107, 0.03340380638837814, -0.1139746829867363, -0.04297666624188423, 0.010182496160268784, 0.002586816670373082, 0.05478030815720558, 0.010307101532816887, 0.005611958913505077, 0.004761882591992617, 0.017117299139499664, 0.03914801776409149, 0.0408327691257, -0.02120581828057766, -0.04145902022719383, -0.0648231953382492, -0.0031887555960565805, -0.07097429037094116, 0.04331212118268013, -0.04662968963384628, -0.09165415167808533, 0.008829917758703232, -0.04402809217572212, -0.010429665446281433, -0.03952656686306, 0.007029647007584572, 0.05481109768152237, -0.04085983335971832, 0.02564280480146408, 0.053751010447740555],
+ "VADDPSrm":[-0.002246689051389694, 0.015252677723765373, 0.030196864157915115, 0.0036966423504054546, 0.05533870309591293, -0.003761091735213995, -0.07124516367912292, -0.026084981858730316, 0.03603334352374077, -0.029325932264328003, 0.03944181650876999, -0.018395839259028435, 0.015846913680434227, 0.08503202348947525, 0.02398589625954628, -0.08358193933963776, 0.048614226281642914, -0.0502278171479702, -0.02807179093360901, -0.015744641423225403, -0.03042832762002945, -0.030202357098460197, 0.005211684852838516, -0.020097829401493073, -0.014050081372261047, 0.007834671065211296, -0.02142932265996933, 0.031608134508132935, 0.037835221737623215, 0.013357949443161488, 0.05039873346686363, 0.07624143362045288, 0.04370579123497009, 0.005867436528205872, -0.025960471481084824, -0.05811929330229759, -0.10047021508216858, -0.0044791181571781635, 0.00044912745943292975, -0.023109454661607742, -0.05714249610900879, 0.016682658344507217, 0.041658684611320496, 0.04188734292984009, 0.04696303978562355, 0.03992446884512901, 0.05756600201129913, 0.018138717859983444, 0.010465460829436779, -0.010290190577507019, 0.06204281002283096, -0.02653566561639309, 0.05758208408951759, 0.06766750663518906, 0.05005721375346184, 2.0900242816423997e-05, 0.0053877499885857105, 0.049867622554302216, -0.009510421194136143, 0.07801792770624161, -0.09965063631534576, -0.06090027093887329, -0.009280025959014893, -0.04635820910334587, 0.00984340999275446, -0.09520351141691208, -0.06680091470479965, 0.028169753029942513, -0.05127352848649025, 0.06430228799581528, -0.019588086754083633, -0.028934070840477943, 0.03466246277093887, -0.11422788351774216, 0.006555100437253714, -0.0767374113202095, -0.00014419415674638003, 0.003965224605053663, -0.07396094501018524, -0.0535384938120842, 0.06930265575647354, 0.047300852835178375, 0.07976427674293518, 0.022287605330348015, 0.029138345271348953, 0.037688396871089935, 0.0010634741047397256, -0.037590108811855316, 0.042072005569934845, 0.02031300589442253, 0.08467084169387817, 0.01207030937075615, 0.050372373312711716, 0.058520395308732986, 0.03560047224164009, -0.02509004808962345, -0.11030469089746475, -0.03722602501511574, 0.014028151519596577, 2.6857338525587693e-05],
+ "VADDPSrr":[0.01619022898375988, 0.011992187239229679, 0.06657019257545471, 0.10575258731842041, -0.03769571706652641, 0.004021130967885256, -0.01331084594130516, -0.06655754894018173, -0.006381283979862928, -0.032004326581954956, -0.023201914504170418, -0.03893384337425232, 0.06775758415460587, -0.041250042617321014, -0.09097103029489517, -0.007310862187296152, -0.028895054012537003, -0.06537146121263504, 0.01982615701854229, -0.041372548788785934, 0.011894911527633667, -0.05400728061795235, -0.06681249290704727, 0.06312785297632217, 0.029995949938893318, -0.04932225123047829, -0.09814349561929703, -0.07205385714769363, -0.06015099212527275, -0.005791252013295889, -0.00708191841840744, -0.04619787260890007, 0.08827996999025345, 0.041040755808353424, 0.0005680808098986745, -0.09236843883991241, -0.011934546753764153, 0.11262831836938858, -0.03265714645385742, -0.006992464419454336, 0.01459311880171299, 0.058210816234350204, 0.037606798112392426, -0.07729321718215942, -0.012522557750344276, 0.01609552837908268, 0.14766736328601837, 0.005461583379656076, 0.013561304658651352, 0.011265710927546024, -0.052877720445394516, -0.0884624570608139, -0.039317186921834946, -0.07200739532709122, 0.06462553143501282, 0.008130093105137348, 0.04774380847811699, 0.049112848937511444, -0.027146238833665848, -0.0181872695684433, -0.10099774599075317, -0.0880037322640419, -0.01593334972858429, -0.03467092290520668, 0.011077363975346088, -0.053511518985033035, 0.022574037313461304, -0.007474233396351337, -0.04527803882956505, 0.03797608241438866, 0.06063564866781235, 0.015579646453261375, -0.003401626367121935, -0.0013170982711017132, -0.026501791551709175, -0.0811416506767273, -0.02804839238524437, -0.022039616480469704, 0.04119649529457092, -0.0414307527244091, -0.04388576000928879, 0.08958682417869568, 0.053914058953523636, 0.07243428379297256, 0.10975083708763123, 0.06457822024822235, 0.018659580498933792, -0.0034730287734419107, -0.01826591044664383, -0.04135581851005554, -0.0423404760658741, 0.008495941758155823, 0.1212802603840828, 0.030108369886875153, -0.012071941047906876, -0.01314852386713028, 0.04184313863515854, 0.02836831472814083, -0.01436531450599432, -0.008884701877832413],
+ "VADDSDrm":[0.003723714966326952, 0.020402180030941963, 0.021479293704032898, -0.08351307362318039, -0.03688440099358559, 0.017515970394015312, -0.05395493283867836, -0.011572275310754776, 0.011216913349926472, 0.016213752329349518, 0.03400115668773651, -0.08711105585098267, 0.012469515204429626, -0.02982957474887371, 0.017738260328769684, -0.03859090432524681, 0.040969349443912506, 0.06903030723333359, -0.02626262605190277, -0.04358169063925743, 0.03592744842171669, -0.09861571341753006, 0.012036663480103016, 0.05609909072518349, -0.04048164561390877, -0.000953115988522768, -0.0068348124623298645, 0.037070147693157196, 0.02874886244535446, 0.019617458805441856, -0.014201231300830841, -0.0408022366464138, -0.033331453800201416, -0.011160839349031448, -0.07908350229263306, -0.017444228753447533, 0.020900188013911247, 0.0570092611014843, 0.018717406317591667, -0.04726802557706833, -0.014850479550659657, 0.033971115946769714, -0.09455441683530807, -0.07590564340353012, -0.03207893669605255, -0.044720567762851715, -0.05480990186333656, -0.048898424953222275, -0.10038093477487564, -0.04425259307026863, 0.08542066812515259, 0.03972773998975754, -0.037328362464904785, -0.03288889303803444, 0.13321226835250854, -0.0017218865687027574, -0.023462731391191483, 0.0060089388862252235, -0.03405699133872986, -0.04113312065601349, -0.029385937377810478, 0.1612330973148346, 0.04244795814156532, 0.08515258133411407, 0.007802502252161503, 0.01603761501610279, -0.05295110493898392, 0.06283913552761078, 0.021347161382436752, 0.0761861503124237, -0.04648297652602196, 0.02088128961622715, 0.01269733626395464, -0.057269372045993805, 0.010886099189519882, -0.02625296823680401, -0.10785390436649323, -0.008061948232352734, -0.009255549870431423, 0.09714682400226593, 0.028261344879865646, 0.025735098868608475, -0.008664160035550594, -0.004105073399841785, 0.013628414832055569, -0.04869566485285759, -0.03348400816321373, 0.06426045298576355, 0.0403096079826355, -0.1152697280049324, 0.036431338638067245, 0.00726746954023838, 0.083287313580513, -0.05015711486339569, -0.01656373217701912, -0.040564052760601044, 0.07840924710035324, -0.02190263569355011, -0.00022030227410141379, 0.023083828389644623],
+ "VADDSDrr":[0.03485118970274925, 0.03808408975601196, -0.044920071959495544, -0.027322806417942047, -0.058395445346832275, -0.035585157573223114, 0.00535364868119359, 0.06305564194917679, -0.051598239690065384, -0.022501442581415176, -0.05551058053970337, 0.002076420933008194, -0.022565167397260666, -0.010621396824717522, 0.000839361862745136, 0.11503610759973526, 0.059108421206474304, 0.05425383895635605, -0.00882316380739212, -0.06837215274572372, 0.01601554825901985, -0.047601524740457535, -0.014967096038162708, -0.00734899565577507, 0.04134814813733101, 0.027957554906606674, 0.01783471554517746, 0.009600939229130745, 0.05276469141244888, 0.02672484703361988, -0.026004202663898468, -0.0710500106215477, 0.07277487963438034, 0.02904197759926319, -0.04388496279716492, 0.025041483342647552, 0.01735110953450203, -0.03810686245560646, -0.014082164503633976, -0.019489264115691185, 0.01117683108896017, 0.03956301882863045, -0.05743157118558884, 0.021226799115538597, 0.01108277402818203, 0.08452766388654709, -0.026891352608799934, -0.04898175597190857, 0.0029444750398397446, -0.03559817373752594, 0.057767003774642944, -0.09839899092912674, 0.014831507578492165, -0.021792003884911537, 0.03848348930478096, -0.00785153079777956, 0.05633450672030449, 0.059844955801963806, 0.0011550402268767357, 0.01050417497754097, -0.03477556258440018, 0.04416544735431671, -0.045978955924510956, 0.03380177542567253, -0.017594724893569946, 0.07137412577867508, -0.02811533212661743, 0.020792055875062943, 0.036045338958501816, -0.025562724098563194, -0.03876148536801338, 0.038407910615205765, 0.017768308520317078, -0.04111725836992264, 0.037650901824235916, 0.0070078810676932335, -0.08628185838460922, -0.003754358272999525, 0.004515314009040594, 0.005071139894425869, 0.061048053205013275, -0.005931271240115166, 0.04275599494576454, 0.00981649849563837, 0.061649929732084274, -0.01957833580672741, -0.004005603492259979, 0.0506572462618351, 0.06354966014623642, -0.07580848038196564, -0.0010618454543873668, -0.027438122779130936, 0.06470870971679688, -0.03180195763707161, -0.0009361766860820353, 0.0470225065946579, 0.08290069550275803, 0.00707516772672534, -0.02452712506055832, -0.017355648800730705],
+ "VADDSDrr_Int":[-0.03608214110136032, -0.08542346209287643, 0.0008957921527326107, 0.07121457904577255, -0.0029361082706600428, 0.04663100838661194, 0.09045670181512833, -0.06500238925218582, -0.011475731618702412, -0.04586835205554962, -0.07904969900846481, 0.017688708379864693, -0.04805166274309158, -0.03486199304461479, -0.032141029834747314, 0.08447746932506561, 0.04778589308261871, 0.09683046489953995, 0.01385948434472084, -0.02259942702949047, 0.029863376170396805, 0.05949819087982178, 0.0723128691315651, 0.05169662460684776, -0.04903331398963928, 0.008365428075194359, -0.03236192464828491, 0.07015840709209442, -0.06689785420894623, -0.05520717799663544, 0.035213012248277664, 0.04758630320429802, -0.027964800596237183, 0.02268628031015396, 0.10924489051103592, 0.03355921804904938, 0.030067283660173416, 0.032749418169260025, -0.04247833788394928, 0.020476125180721283, 0.10148291289806366, 0.024887531995773315, 0.0288775023072958, -0.0003808947803918272, -0.09233689308166504, -0.047105249017477036, -0.08121925592422485, -0.07998442649841309, 0.10031510889530182, -0.004809471778571606, -0.005283566657453775, 0.06420682370662689, 0.03310398757457733, 0.009866030886769295, 0.012368394993245602, -0.07982494682073593, 0.010147415101528168, -0.040504422038793564, -0.04896870255470276, -0.03828468173742294, -0.09507790207862854, -0.052142709493637085, 0.03616069629788399, -0.04566328227519989, 0.10555962473154068, -0.02321089617908001, -0.029401464387774467, 0.05829378217458725, -0.03439326584339142, 0.030568066984415054, 0.09278736263513565, 0.012451297603547573, -0.016834983602166176, 0.09128997474908829, -0.07264911383390427, 0.057801347225904465, 0.02702932059764862, 0.05207827687263489, 0.013920851983129978, -0.05912303552031517, 0.07151009887456894, 0.01441587321460247, -0.0740623027086258, 0.011222487315535545, -0.005842757411301136, 0.006412718910723925, -0.04800879955291748, -0.06137629225850105, -0.011023384518921375, -0.0359562449157238, -0.011764369904994965, 0.04086769372224808, 0.01462293229997158, 0.020664086565375328, 0.09922058880329132, 0.0455351248383522, 0.027441006153821945, -0.1054682657122612, 0.03484274074435234, -0.02391291968524456],
+ "VADDSSrm":[-0.047215454280376434, -0.06076055392622948, 0.023922855034470558, 0.057984575629234314, 0.07044617086648941, 0.024026067927479744, 0.05926407128572464, -0.07740810513496399, -0.011525561101734638, 0.001174961100332439, 0.031019989401102066, -0.03900901600718498, -0.031221533194184303, -0.03241383284330368, 0.024084409698843956, 0.030888482928276062, 0.0476081408560276, -0.011150646954774857, -0.028013791888952255, -0.09823045879602432, -0.05087774619460106, -0.11237287521362305, -0.0921451672911644, 0.038866639137268066, -0.003349228296428919, -0.05867709219455719, -0.119762122631073, 0.09052079170942307, 0.035701997578144073, 0.05080236494541168, 0.0005124606541357934, -0.044630445539951324, 0.051146965473890305, -0.013027765788137913, 0.007608634419739246, -0.03919549286365509, -0.04506345093250275, -0.0053211962804198265, -0.04930037632584572, 0.001759653678163886, 0.07538430392742157, -0.016426153481006622, 0.05875173583626747, 0.07523322105407715, 0.02541729249060154, 0.08637150377035141, -0.043796077370643616, 0.030974235385656357, 0.046475429087877274, 0.12796719372272491, 0.009459994733333588, 0.018497643992304802, 0.0348312146961689, 0.10026151686906815, 0.009344539605081081, -0.0013456782326102257, -0.007112881168723106, 0.05570971965789795, -0.03268307447433472, -0.04253382980823517, -0.012609669007360935, 0.07164734601974487, -0.01615031622350216, -0.0023275490384548903, -0.031173190101981163, 0.005016309674829245, 0.031462475657463074, 0.012077344581484795, -0.018087515607476234, 0.09325424581766129, -0.08902394771575928, 0.003023001831024885, -0.023642323911190033, -0.04503745958209038, 0.005257107317447662, -0.06723728775978088, -0.06900563836097717, -0.011041535995900631, -0.023802103474736214, 0.048909734934568405, 0.12370635569095612, 0.08772685378789902, 0.11047767847776413, 0.04662209004163742, -0.012157936580479145, -0.021627696231007576, -0.10827518254518509, 0.06330631673336029, 0.052770569920539856, 0.0067245266400277615, 0.035117391496896744, -0.11126242578029633, 0.09059010446071625, 0.014901025220751762, 0.04842594265937805, -0.0431160144507885, -0.06788407266139984, 0.02288755215704441, 0.021700004115700722, 0.005240404512733221],
+ "VADDSSrr":[-0.039774976670742035, -0.014714716002345085, -0.0677591860294342, -0.03738675266504288, 0.006539101712405682, 0.003171524265781045, -0.16838212311267853, -0.01531753409653902, -0.03425513952970505, 0.12436939775943756, 0.005278559401631355, -0.03718637675046921, 0.003522507380694151, 0.03281472995877266, 0.08106128126382828, 0.006641946267336607, -0.05058448389172554, -0.03339306265115738, 0.07006832957267761, -0.041146207600831985, -0.02199695259332657, -0.011003756895661354, -0.047270018607378006, 0.06626304984092712, -0.13756626844406128, -0.034546609967947006, -0.02329890802502632, 0.07779430598020554, 0.06997354328632355, 0.03332613408565521, 0.06191319599747658, 0.0825728252530098, -0.07451184839010239, 0.0024082250893115997, 0.02231202833354473, -0.06988957524299622, -0.03169771283864975, -0.06170031428337097, -0.03451990336179733, -0.013074117712676525, 0.031326841562986374, -0.053038544952869415, 0.04680170118808746, 0.0467616431415081, 0.0343109630048275, 0.09590307623147964, -0.06484057754278183, -0.04065902158617973, 0.13208167254924774, -0.08515030890703201, -0.039164721965789795, 0.07575666904449463, -0.0879623219370842, -0.017393527552485466, 0.05076731741428375, 0.02885226346552372, -0.01845462992787361, 0.030638528987765312, -0.028479736298322678, -0.01376691460609436, -0.07028673589229584, 0.09539344906806946, 0.048996176570653915, 0.008457962423563004, -0.03912435099482536, -0.0038052801974117756, 0.02698482573032379, 0.0007143488619476557, -0.018492572009563446, -0.008473962545394897, -0.021836161613464355, -0.10938885062932968, -0.04145297408103943, -0.021173637360334396, -0.011532727628946304, -0.06853241473436356, -0.07772525399923325, 0.05441898852586746, -0.030695626512169838, 0.04214360937476158, 0.09829897433519363, 0.04012752324342728, 0.04762287065386772, 0.045322902500629425, 0.019388243556022644, -0.03437833860516548, 0.036845047026872635, 0.07640530914068222, 0.036595940589904785, -0.016835538670420647, 0.008347632363438606, -0.008728185668587685, 0.046685680747032166, -0.005881627090275288, 0.0833391547203064, -0.02628663368523121, -0.013257886283099651, 0.03624499589204788, -0.12909673154354095, -0.01804712601006031],
+ "VADDSUBPDrr":[0.03280726447701454, -0.02143409289419651, 0.04146397486329079, -0.020842237398028374, -0.07380973547697067, 0.040726982057094574, -0.07654576748609543, -0.04745015129446983, 0.0027302843518555164, 0.002490153769031167, 0.06902997940778732, -0.06520313769578934, 0.08752285689115524, -0.09774167835712433, -0.0032757127191871405, 0.03623220697045326, -0.07290336489677429, -0.027133304625749588, 0.05012413114309311, -0.10151109844446182, 0.01917840726673603, -0.05248630419373512, 0.05895354598760605, 0.0067518469877541065, -0.05272465944290161, 0.012771686539053917, 0.023830682039260864, 0.09619112312793732, 0.014790283516049385, 0.03434962034225464, 0.032168127596378326, 0.10072217136621475, 0.016473351046442986, 0.009984605014324188, 0.09080890566110611, 0.029422326013445854, -0.10017537325620651, -0.016520874574780464, 0.008911008015275002, -0.01998020149767399, -0.012852756306529045, 0.018738072365522385, 0.0257189329713583, -0.021352866664528847, -0.06228857487440109, -0.05506300926208496, 0.0010202029952779412, 0.09991369396448135, -0.09999994933605194, -0.04602520912885666, -0.012635498307645321, 0.027179639786481857, 0.05074009299278259, 0.006537060718983412, -0.06272692233324051, 0.04195614531636238, -0.06550084799528122, -0.08499900251626968, -0.023065203800797462, 0.08543648570775986, 0.049442555755376816, 0.030401352792978287, 0.10508161783218384, 0.05311467871069908, 0.028122760355472565, 0.016851138323545456, 0.0647125244140625, -0.10057326406240463, 0.04467247799038887, 0.024820992723107338, -0.03997990861535072, -0.013456170447170734, -0.04705530405044556, 0.0920901745557785, -0.06073436513543129, 0.03645607456564903, -0.057022709399461746, -0.09396133571863174, 0.004540397785604, 0.048834916204214096, -0.0482853427529335, 0.029597841203212738, -0.10767527669668198, 0.07224053889513016, 0.0485641285777092, 0.08269693702459335, 0.026314692571759224, -0.03286082670092583, 0.08574121445417404, 0.05739516764879227, -0.023976175114512444, 0.035135604441165924, -0.07592836767435074, 0.04673292860388756, -0.06577339768409729, 0.04075365886092186, -0.07919183373451233, 0.00498190289363265, -0.029591791331768036, 0.042488399893045425],
+ "VADDSUBPSYrr":[0.009750822558999062, -0.041034992784261703, -0.02663061022758484, -0.08153047412633896, 0.07699353247880936, 0.034004442393779755, 0.0192513819783926, -0.0507919043302536, -0.08236093074083328, -0.049259018152952194, -0.03349124267697334, 0.039150670170784, -0.052226655185222626, 0.08657867461442947, -0.09035664051771164, -0.03875479847192764, -0.009985187090933323, -0.04320550709962845, 0.09072057902812958, -0.020020343363285065, 0.05469910427927971, -0.04185517877340317, -0.05945326387882233, -0.05262629687786102, 0.023395100608468056, -0.02674754522740841, -0.02786712720990181, 0.04259977489709854, 0.03146878257393837, 0.028689414262771606, 0.028032803907990456, -0.059162117540836334, 0.002633637748658657, -0.00997511949390173, 0.0173018965870142, -0.06868404150009155, 0.007526900619268417, -0.02011578530073166, 0.012569933198392391, 0.026165733113884926, -0.024699004366993904, -0.08193332701921463, 0.03731181100010872, 0.06907299160957336, -0.05189322680234909, -0.10368689149618149, 0.04573402926325798, -0.06445174664258957, -0.059250809252262115, 0.04203423485159874, -0.01043007243424654, 0.07831656187772751, 0.0053380741737782955, -0.03133789822459221, -0.06179201975464821, 0.041346631944179535, -0.07283981889486313, 0.005975473206490278, 0.07255029678344727, -0.036922991275787354, 0.09082295000553131, 0.017589081078767776, 0.044099610298871994, 0.0383356437087059, 0.03540995344519615, -0.038410644978284836, 0.03193065524101257, -0.024901697412133217, 0.03417278826236725, 0.006164923310279846, 0.019726397469639778, -0.07369371503591537, 0.032508209347724915, 0.031083859503269196, -0.032164327800273895, -0.07323352992534637, -0.02247627079486847, 0.02331630513072014, -0.004830815829336643, -0.00612257793545723, -0.03513253107666969, -0.050420667976140976, -0.008543502539396286, -0.06292423605918884, -0.02963831089437008, 0.053923580795526505, 0.05108542740345001, 0.06117170676589012, 0.011586477980017662, -0.0006660998915322125, 0.04189367592334747, 0.07002148777246475, -0.04268652945756912, -0.012830710969865322, -0.07747891545295715, 0.010328562930226326, 0.0801541656255722, 0.07564124464988708, 0.02993304468691349, -0.07672248780727386],
+ "VADDSUBPSrr":[0.0412590391933918, -0.022379480302333832, -0.010745549574494362, 0.043588243424892426, 0.01997426711022854, -0.009119532071053982, -0.05647631734609604, -0.027796832844614983, -0.03157280758023262, 0.05527559295296669, 0.016234448179602623, 0.03571061044931412, 0.06990563124418259, 0.04027754068374634, -0.029113594442605972, -0.03610452264547348, 0.06706629693508148, 0.08666959404945374, 0.059650808572769165, -0.055951863527297974, 0.0496976375579834, 0.023651331663131714, 0.02213176153600216, -0.018696432933211327, 0.030978163704276085, -0.019176796078681946, 0.011822201311588287, -0.03906816244125366, -0.07262936234474182, -0.1105414479970932, 0.062144678086042404, 0.04475817084312439, 0.06424350291490555, -0.012295437976717949, 0.047659602016210556, -0.05707560107111931, -0.0017495115753263235, 0.018085923045873642, 0.06392254680395126, 0.009758335538208485, -0.05449134483933449, -0.020120413973927498, 0.010724183171987534, -0.052635423839092255, -0.045740026980638504, -0.02349313534796238, 0.05915917083621025, -0.036827631294727325, 0.024956921115517616, 0.010624879971146584, -0.011138749308884144, -0.015828490257263184, 0.02617098204791546, -0.005735130049288273, 0.10428712517023087, -0.058433789759874344, 0.01064346730709076, -0.05869680270552635, 0.058200158178806305, 0.07338055968284607, 0.0690731629729271, 0.08989857137203217, -0.020165778696537018, -0.09212260693311691, -0.02670319564640522, 0.04453592747449875, 0.07332560420036316, 0.07499650865793228, -0.0595158189535141, -0.05410420522093773, -0.054976917803287506, 0.05665099620819092, 0.02891370840370655, 0.036585889756679535, -0.03215506300330162, 0.02460240200161934, -0.0411832220852375, 0.07238414883613586, 0.04202571138739586, 0.03958059847354889, -0.048496101051568985, 0.042194414883852005, -0.11131612956523895, -0.00901802722364664, 0.1016368716955185, 0.005972616374492645, 0.04428035020828247, 0.005237228702753782, 0.09452513605356216, 0.014630289748311043, -0.09368830919265747, -0.009018879383802414, 0.04634227231144905, -0.062340665608644485, 0.06870561093091965, 0.035371169447898865, 0.02861900068819523, 0.07822313904762268, 0.014619323424994946, 0.004510733298957348],
+ "VBLENDPDYrmi":[-0.007550483103841543, -0.005488586146384478, -0.04464083909988403, 0.015483654104173183, 0.059200018644332886, -0.02516576275229454, -0.05091499164700508, -0.07407355308532715, 0.029629098251461983, -0.046257134526968, 0.03271467238664627, 0.020041273906826973, -0.05163327232003212, 0.02013816125690937, 0.05561278760433197, 0.024092458188533783, -0.06038561463356018, 0.02334977686405182, -0.10574166476726532, 0.09300603717565536, -0.06249840930104256, 0.04597315192222595, 0.007279771845787764, 0.05246696621179581, 0.07761918753385544, -0.03105965442955494, 0.08232057839632034, 0.05113506317138672, -0.013938874006271362, -0.03753014653921127, 0.012796052731573582, -0.0745476633310318, 0.0356813482940197, -0.08120210468769073, 0.022987835109233856, 0.05892287939786911, -0.00634505320340395, -0.04772062227129936, -0.062014345079660416, 0.013853068463504314, 0.04928242787718773, -0.03827275335788727, -0.08438355475664139, 0.04544413834810257, 0.07142467051744461, -0.008739872835576534, -0.0035177823156118393, -0.06814032047986984, 0.04449928551912308, 0.03106568567454815, 0.037768807262182236, -0.018403738737106323, -0.04791584983468056, -0.0638803020119667, 0.02290024794638157, 0.018455758690834045, 0.02500898391008377, 0.06438778340816498, -0.024050552397966385, 0.006299460772424936, -0.00752237206324935, -0.03922972455620766, -0.03378203511238098, 0.00837619323283434, -0.059419967234134674, -0.02727053314447403, 0.027370262891054153, -0.05519842728972435, 0.046395834535360336, -0.017341183498501778, -0.0014624528121203184, 0.007977691479027271, 0.042632631957530975, 0.013527086935937405, 0.0223652683198452, -0.06387583911418915, -0.05583559721708298, 0.0684882253408432, -0.028429381549358368, 0.0010243630968034267, -0.07024433463811874, 0.0026788320392370224, -0.03236859291791916, -0.044824231415987015, 0.0722697377204895, 0.07759957015514374, -0.04296565428376198, 0.012973721139132977, 0.0627274215221405, 0.10840988904237747, 0.05314142256975174, -0.07147998362779617, -0.07600122690200806, -0.035292647778987885, -0.048945456743240356, 0.05913013964891434, -0.04362240433692932, -0.0872005820274353, 0.0007019728654995561, 0.054985009133815765],
+ "VBLENDPDYrri":[-0.07257086783647537, 0.07825491577386856, -0.028055302798748016, -0.00044398021418601274, 0.055091742426157, 0.0608995221555233, -0.07659471780061722, 0.015492673963308334, 0.032148901373147964, 0.06769237667322159, -0.019911982119083405, -0.105796217918396, 0.049363743513822556, -0.021823784336447716, 0.040953848510980606, -0.01636834815144539, 0.05954159423708916, -0.015057637356221676, 0.013348321430385113, 0.025266055017709732, 0.050004806369543076, 0.07439617067575455, -0.09098215401172638, 0.07342862337827682, 0.014517786912620068, -0.013175908476114273, 0.03873642906546593, 0.03888015076518059, 0.03746017441153526, -0.0061901891604065895, 0.024535074830055237, -0.001339514972642064, -0.07865794748067856, 0.031162451952695847, -0.08366768062114716, -0.07547463476657867, -0.045689668506383896, -0.07659026235342026, -0.03279665485024452, -0.04014116898179054, -0.017739728093147278, -0.10676909983158112, -0.0035554603673517704, -0.06343882530927658, -0.07025159895420074, 0.0077412305399775505, 0.02286147139966488, 0.04055539146065712, 0.03177618980407715, -0.011358934454619884, 0.07740667462348938, -0.060511477291584015, -0.014280014671385288, -0.04663119837641716, 0.019986527040600777, -0.010944326408207417, -0.0540580227971077, -0.05212101712822914, 0.07799021899700165, -0.09324382990598679, -0.09551503509283066, 0.009666512720286846, 0.0916271060705185, -0.06745170056819916, -0.02775404043495655, 0.06534498929977417, -0.08377687633037567, -0.05197303742170334, 0.02839081361889839, 0.05149202048778534, 0.09297371655702591, 0.07880013436079025, 0.04539652168750763, 0.029087159782648087, -0.05177251249551773, 0.025943806394934654, 0.07143837958574295, -0.030223913490772247, -0.0869545191526413, -0.03956931456923485, -0.048843082040548325, 0.007311041466891766, -0.01374778151512146, -0.0840020626783371, -0.013884574174880981, 0.0482461042702198, -0.01179857924580574, -0.024350611492991447, 0.014772328548133373, 0.0941733568906784, 0.06322694569826126, -0.047210611402988434, -0.016905223950743675, 0.008534523658454418, 0.012928103096783161, 0.08036355674266815, 0.009291308000683784, -0.03158912435173988, 0.043281134217977524, -0.05299793556332588],
+ "VBLENDPDrmi":[0.0375637486577034, -0.04170665889978409, 0.05072324723005295, 0.08418131619691849, -0.011462855152785778, 0.0889364629983902, -0.004300473257899284, 0.04901353269815445, 0.03400273993611336, 0.059342846274375916, -0.03766317665576935, 0.03819674625992775, -0.01088120136409998, -0.07077135145664215, -0.04222894832491875, -0.011044466868042946, 0.09558521211147308, -0.02518164925277233, 0.02361689880490303, -0.04563385248184204, -0.029756082221865654, 0.06317984312772751, -0.028169257566332817, 0.006574204657226801, 0.10850406438112259, 0.06765415519475937, -0.09454549849033356, -0.0913500264286995, 0.05370347201824188, -0.0009944629855453968, 0.006774917710572481, -0.0641758069396019, 0.04018094390630722, -0.03433391451835632, 0.01509175356477499, 0.06237293407320976, 0.0035240433644503355, -0.01198646705597639, -0.03342311829328537, -0.07490569353103638, -0.024357693269848824, -0.04503016918897629, -0.012518107891082764, -0.09385257959365845, 0.02458813041448593, -0.07485005259513855, 0.033351048827171326, -0.07875125855207443, -0.03330284357070923, -0.05272616446018219, -0.041677724570035934, -0.06164874508976936, 0.004492667503654957, 0.003601590171456337, -0.04799740016460419, 0.08684059977531433, 0.028491217643022537, -0.07951850444078445, 0.04130910336971283, 0.06256389617919922, 0.05920443311333656, -0.015830842778086662, -0.04218517243862152, -0.04341745749115944, -0.07803831249475479, 0.0712025836110115, 0.09912443906068802, 0.01651138998568058, -0.031255219131708145, 0.015191935934126377, 0.0469534695148468, -0.056075338274240494, -0.03530478850007057, 0.07655584067106247, -0.018018467351794243, -0.053099364042282104, 0.02124815247952938, 0.08835257589817047, 0.07304584234952927, -0.07504335045814514, 0.043854910880327225, -0.020209848880767822, 0.015309366397559643, -0.03973403573036194, 0.034627217799425125, -0.0980694517493248, -0.014769024215638638, -0.01965712383389473, -0.01772153750061989, -0.006067385897040367, -0.03925864025950432, 0.05402471497654915, 0.02050194703042507, -0.006626073736697435, -0.02018589712679386, -0.05414879322052002, 0.04336545243859291, 0.046222638338804245, 0.08124655485153198, 0.044641364365816116],
+ "VBLENDPDrri":[0.015948805958032608, 0.028419623151421547, 0.04023861512541771, 0.011099357157945633, -0.001156676677055657, -0.018107125535607338, 0.014304140582680702, -0.048564422875642776, 0.031879063695669174, -0.040351662784814835, 0.07778649032115936, 0.11180468648672104, 0.04079439491033554, 0.007491319440305233, -0.009271870367228985, -0.06874197721481323, 0.011635216884315014, -0.02043760195374489, 0.007242888677865267, 0.09156890213489532, -0.0079225804656744, -0.08510249853134155, 0.018890229985117912, 0.008944086730480194, 0.10368869453668594, 0.011431400664150715, 0.13251307606697083, -0.04272975027561188, -0.007130717393010855, 0.00041137912194244564, -0.0228574238717556, -0.05775594711303711, -0.025797080248594284, -0.028984935954213142, 0.05241524055600166, -0.059392720460891724, 0.09797993302345276, 0.02299817092716694, -0.07314328104257584, 0.060872673988342285, 0.009359708055853844, 0.05796697363257408, 0.032962992787361145, -0.04623657092452049, 0.04574289172887802, 0.10833923518657684, 0.10410621017217636, -0.03695514053106308, 0.05092380940914154, -0.0218183696269989, 0.057468824088573456, -0.0004608894814737141, 0.06585545092821121, -0.07527726143598557, -0.02369193732738495, 0.012668827548623085, 0.029946142807602882, -0.028186293318867683, -0.013005591928958893, -0.00887869019061327, -0.009398120455443859, -0.1002514511346817, -0.04345012456178665, -0.06358159333467484, -0.04202769696712494, -0.02168196439743042, -0.0405941978096962, -0.0029594723600894213, 0.02964230813086033, 0.024103952571749687, -0.018078040331602097, 0.040749866515398026, -0.033966634422540665, -0.00986885093152523, 0.005623715464025736, -0.004260045010596514, -0.02204812318086624, 0.011942103505134583, 0.016767919063568115, -0.00500755337998271, -0.001926788710989058, 0.019510801881551743, 0.06810427457094193, 0.08416898548603058, 0.08386297523975372, -0.04201498255133629, 0.016192706301808357, -0.008476104587316513, 0.00840437039732933, 0.01128070242702961, 0.07484251260757446, 0.0351596362888813, -0.04318767413496971, -0.06112760677933693, 0.04294624552130699, 0.0636613667011261, -0.04398256167769432, -0.03658900782465935, 0.017090700566768646, 0.015519079752266407],
+ "VBLENDPSYrmi":[-0.059575729072093964, -0.0031286529265344143, -0.08133780211210251, 0.020597219467163086, -0.03527967259287834, 0.0020164032466709614, 0.03643025830388069, -0.009621459990739822, 0.030546532943844795, -0.00359866744838655, -0.0324036180973053, 0.026088897138834, -0.033099498599767685, -0.038662318140268326, 0.04668838530778885, 0.05183776095509529, 0.06024020537734032, -0.029759861528873444, -0.10449295490980148, 0.10566534101963043, 0.0296013243496418, 0.020807579159736633, 0.016298744827508926, -0.035473402589559555, -0.01780160702764988, 0.004455279093235731, -0.022654986009001732, -0.03751767426729202, -0.07605194300413132, -0.06744378805160522, 0.1036037877202034, 0.038730643689632416, -0.0015469068894162774, -0.002667191671207547, 0.055741019546985626, -0.06120136380195618, -0.016216902062296867, -0.022538259625434875, -0.10685374587774277, 0.023688524961471558, 0.005528709851205349, -0.018421024084091187, -0.07249526679515839, -0.04262762516736984, -0.08185801655054092, 0.03191041201353073, 0.009080282412469387, -0.06460830569267273, -0.021828997880220413, -0.04429645463824272, -0.08393678814172745, -0.06781771034002304, 0.08033887296915054, 0.04908687621355057, 0.07108109444379807, -0.0802246630191803, -0.09603729099035263, 0.021436801180243492, 0.0559769906103611, -0.07292329519987106, 0.06477819383144379, -0.027277903631329536, 0.087413489818573, 0.05908950790762901, -0.048231203109025955, -0.05479498952627182, 0.06474266946315765, -0.014580066315829754, -0.0947529524564743, 0.025506652891635895, -0.020193640142679214, -0.027085062116384506, 0.06833995878696442, -0.06765282154083252, 0.0011109447805210948, 0.053681883960962296, -0.07611816376447678, -0.09100434929132462, 0.019176948815584183, 0.04859813302755356, -0.07281628996133804, 0.03723866119980812, 0.016685742884874344, -0.008199338801205158, 0.00295101385563612, 0.06898517161607742, 0.02044709213078022, 0.03529049828648567, 0.08441759645938873, 0.09312289953231812, 0.020299965515732765, 0.0058761355467140675, -0.03401659056544304, 0.0008328375406563282, -0.040849700570106506, 0.06395653635263443, 0.03520838916301727, -0.033202264457941055, -0.04386168718338013, 0.04344535619020462],
+ "VBLENDPSYrri":[0.0740623027086258, -0.02514927089214325, 0.04639784246683121, 0.014696047641336918, -0.0850738137960434, 0.005793044809252024, 0.038232311606407166, -0.042382288724184036, 0.032583557069301605, 0.022507263347506523, 0.03126736357808113, -0.04439942538738251, -0.0485701821744442, -0.028309347108006477, -0.007795396260917187, -0.09556504338979721, 0.017891094088554382, -0.01656537689268589, -0.006664975080639124, 0.03228113800287247, 0.10827450454235077, -0.04330037534236908, 0.03353822976350784, 0.0010669841431081295, 0.08445215225219727, 0.0516682043671608, 0.05524876341223717, -0.054353442043066025, 0.0033886265009641647, -0.09450499713420868, -0.12353775650262833, -0.06415615230798721, -0.043970875442028046, 0.011475746519863605, 0.03436070680618286, -0.05598548799753189, -0.05083395540714264, -0.04067327082157135, 0.04020652174949646, 0.01880463771522045, -0.061835791915655136, 0.10721617192029953, -0.061976414173841476, 0.04623265936970711, 0.05402388423681259, 0.11768347024917603, 0.06801360100507736, -0.05308527499437332, -0.09984685480594635, -0.0791349709033966, 0.03386124595999718, 0.07731471210718155, 0.049393557012081146, -0.030526714399456978, 0.10005507618188858, -0.011492627672851086, -0.04767798259854317, -0.005795750766992569, -0.0009882883168756962, -0.0038640392012894154, 0.030278898775577545, -0.08576353639364243, -0.048009827733039856, -0.03428260609507561, 0.056028373539447784, -0.005271855741739273, -0.0787382647395134, -0.08649083971977234, -0.05937298387289047, -0.1094222366809845, -0.04015924409031868, -0.0507432259619236, -0.04010981321334839, 0.014316433109343052, -0.004016667138785124, 0.06346914172172546, -0.0197154488414526, -0.008670765906572342, -0.027678148820996284, 0.018266696482896805, -0.0230658408254385, -0.0349230095744133, 0.071281798183918, -0.08974453061819077, -0.012832650914788246, 0.010035812854766846, -0.0045651039108633995, -0.0008559123380109668, 0.03054596297442913, -0.045712996274232864, 0.06011129170656204, -0.016762977465987206, -0.10004846751689911, -0.07956120371818542, -0.019566616043448448, 0.0553424134850502, 0.05329986661672592, -0.07569669932126999, 0.015805261209607124, 0.030699336901307106],
+ "VBLENDPSrmi":[0.029037322849035263, -0.06241222098469734, 0.0008017782820388675, 0.07617048174142838, -0.0030115467961877584, 0.04509827867150307, 0.008138920180499554, -0.04517832398414612, 0.026055537164211273, 0.030438989400863647, -0.012331198900938034, -0.04062621667981148, 0.09088987112045288, -0.004099597688764334, -0.022266393527388573, -0.0944020226597786, 0.04955209046602249, 0.057576585561037064, 0.07367219030857086, -0.013426423072814941, -0.029999908059835434, 0.03361836448311806, -0.0641443282365799, 0.07958891242742538, 0.02509014494717121, 0.026849718764424324, -0.023193415254354477, 0.051608409732580185, -0.03284274786710739, -0.02576274424791336, -0.09997059404850006, 0.07598859816789627, -0.05660419538617134, 0.0842326208949089, -0.0045136576518416405, -0.010199826210737228, 0.10654371231794357, -0.010889980010688305, 0.03367532417178154, -0.0532287135720253, 0.007737955544143915, 0.07002720236778259, 0.008092259988188744, -0.05521301552653313, -0.0058834971860051155, 0.009181652218103409, 0.02119520865380764, -0.0573238804936409, -0.001489592483267188, -0.005530312657356262, 0.03390779346227646, -0.034846797585487366, 0.07090411335229874, 0.0082759540528059, 0.008167116902768612, 0.05961389094591141, 0.01790379174053669, -0.05328754708170891, -0.06330312788486481, 0.06223977357149124, 0.039024144411087036, -0.044252071529626846, -0.026172414422035217, -0.043047644197940826, 0.09132511168718338, 0.018346762284636497, -0.035645321011543274, 0.017938630655407906, 0.06021351367235184, 0.06065753102302551, -0.02384001761674881, 0.06259158998727798, -0.035093311220407486, 0.02654811553657055, 0.05263138562440872, 0.04807848855853081, 0.03922558203339577, 0.043154049664735794, -0.0039371601305902, -0.09061191976070404, 0.01136980764567852, 0.09606891870498657, -0.03639593720436096, -0.04622495919466019, -0.011568978428840637, 0.005111974664032459, -0.06483715027570724, -0.07369169592857361, -0.057592373341321945, -0.0056854491122066975, 0.005130666308104992, 0.024751897901296616, 0.005755703430622816, -0.08684194833040237, 0.01071030180901289, -0.049797724932432175, 1.741022424539551e-05, -0.000963718572165817, -0.03390565514564514, 0.10047458857297897],
+ "VBLENDPSrri":[-0.08421706408262253, -0.013848229311406612, 0.061190973967313766, 0.009710253216326237, 0.11188459396362305, -0.011786668561398983, -0.004684747662395239, -0.036976806819438934, 0.018127720803022385, 0.06252763420343399, 0.047459498047828674, 0.0071859960444271564, -0.06267531216144562, 0.060914501547813416, -0.0066530900076031685, 0.06320137530565262, 0.014693913981318474, -0.033212438225746155, 0.06546954810619354, -0.03666229173541069, -0.07804437726736069, -0.007070345338433981, 0.0027102187741547823, -0.0656369999051094, 0.07831934839487076, 0.08973240852355957, 0.04433242604136467, 0.0014197682030498981, 0.008035519160330296, 0.07081679999828339, 0.03269714489579201, 0.013902759179472923, 0.009956032037734985, 0.029100565239787102, -0.05339295044541359, 0.03057699091732502, -0.003793112002313137, -0.016285119578242302, 0.078026682138443, 0.07006603479385376, 0.02340797334909439, -0.009433563798666, 0.016155697405338287, 0.027246341109275818, -0.05752609670162201, 0.07135193049907684, -0.0536416731774807, -0.042818374931812286, -0.0456734336912632, 0.07474261522293091, 0.037919387221336365, 0.0030221114866435528, 0.007851233705878258, 0.0009080366580747068, -0.07795798033475876, 0.030591463670134544, -0.026305167004466057, 0.09377031773328781, -0.07381217926740646, -0.012051531113684177, -0.039194267243146896, 0.09899795055389404, -0.08540632575750351, -0.037247903645038605, -0.007570924237370491, -0.04960916191339493, -0.04482514038681984, 0.05870804935693741, -0.06920157372951508, -0.05467600375413895, -0.08012589812278748, -0.03910250589251518, 0.08347190916538239, 0.07444513589143753, 0.001927650417201221, 0.06902143359184265, -0.04968905821442604, 0.07834058254957199, 0.04027782380580902, 0.09280481189489365, -0.05525617673993111, 0.09545531123876572, -0.05691475421190262, -0.019927967339754105, 0.034089647233486176, -0.05023334175348282, -0.049189139157533646, 0.046399977058172226, -0.04199923947453499, 0.06269247829914093, 0.02133410982787609, 0.0700024738907814, 0.09491796791553497, -0.03692929074168205, 0.07851381599903107, 0.05990703031420708, 0.01347032468765974, -0.01165720820426941, -0.002066007349640131, -0.06729438155889511],
+ "VBLENDVPDYrr":[-0.042085979133844376, -0.11125380545854568, 0.001241997815668583, -0.10270129889249802, 0.06134120002388954, -0.05912375450134277, -0.06745696067810059, 0.07279706746339798, 0.06629867106676102, 0.029060477390885353, 0.0005615053232759237, 0.036021944135427475, 0.04578563570976257, 0.10893582552671432, -0.04955339431762695, -0.05202951282262802, 0.001928041223436594, 0.01892346888780594, -0.007935306057333946, 0.0165454912930727, 0.08994648605585098, 0.02040928788483143, -0.09437482059001923, -0.024742141366004944, 0.04645734652876854, -0.07390818744897842, -0.012243536300957203, -0.02192612551152706, 0.028258152306079865, -0.0813136100769043, -0.03254808112978935, -0.026164520531892776, -0.018124859780073166, 0.021511776372790337, 0.018918879330158234, -0.014777419157326221, 0.030446873977780342, 0.031077750027179718, 0.012068081647157669, -0.028580011799931526, 0.05783519893884659, -0.07858970761299133, -0.03286261856555939, 0.00672954972833395, 0.06540489196777344, 0.023730522021651268, 0.07789113372564316, -0.04486637935042381, -0.02905891276896, 0.024923691526055336, -0.04116631671786308, 0.0034316026140004396, 0.0033902570139616728, -0.028635475784540176, -0.018381282687187195, 0.06454034894704819, -0.0113019198179245, -0.005813535302877426, 0.027907198294997215, -0.02585718408226967, -0.01873231679201126, -0.0017962967976927757, 0.07198931276798248, 0.06171705201268196, -0.05668093264102936, -0.023949652910232544, 0.056213583797216415, -0.10045167058706284, 0.05054686591029167, -0.024539919570088387, 0.015070254914462566, 0.04202749952673912, 0.06680814921855927, -0.07847555726766586, 0.0007248983019962907, -0.05344425141811371, 0.0008709512185305357, -0.0835302323102951, -0.05305615812540054, 0.0423414409160614, -0.09215199202299118, -0.005634407512843609, 0.006372534204274416, -0.014676721766591072, 0.014831576496362686, 0.007788489572703838, -0.032733313739299774, 0.0846942812204361, 0.045900601893663406, 0.015030419453978539, -0.04282049089670181, 0.011471904814243317, 0.006387523375451565, 0.017553308978676796, 0.03320290148258209, 0.0407475009560585, -0.08441862463951111, -0.09094319492578506, -0.005632190965116024, -0.0616724006831646],
+ "VBLENDVPDrm":[0.008573513478040695, 0.04744268208742142, -0.07029655575752258, 0.10541389137506485, -0.06763368844985962, -0.04278672859072685, 0.06161189079284668, 0.038824114948511124, 0.03828231245279312, 0.037206750363111496, -0.07363153994083405, 0.07798031717538834, 0.006108376197516918, -0.041524738073349, 0.08264327794313431, 0.05128173530101776, 0.007809176575392485, 0.01327681913971901, -0.036501768976449966, 0.03826167434453964, -0.06392008066177368, 0.015981677919626236, 0.060931216925382614, -0.004084473475813866, 0.012454765848815441, 0.025810817256569862, -0.027082329615950584, 0.09223847091197968, 0.07612758874893188, 0.026040082797408104, -0.07280193269252777, 0.024561192840337753, -0.009534391574561596, 0.0412960983812809, -0.0007738994318060577, 0.04429301992058754, -0.0007737389532849193, -0.012185114435851574, -0.08475926518440247, 0.02346280962228775, -0.012224477715790272, -0.02155580185353756, -0.011141017079353333, -0.023558203130960464, -0.03802904486656189, 0.011215189471840858, 0.06543191522359848, 0.10764254629611969, -0.007525516673922539, -0.018461011350154877, 0.039008479565382004, -0.055687066167593, -0.017670119181275368, 0.010308771394193172, -0.09109129756689072, 0.041346363723278046, 0.007636388298124075, -0.028255460783839226, -0.0016850500833243132, 0.0796738788485527, -0.10402198880910873, -0.01456126756966114, -0.054222892969846725, -0.06420842558145523, 0.018857089802622795, -0.05274619534611702, 0.025381984189152718, 0.05982833728194237, 0.03900112584233284, 0.014316393062472343, 0.01801200956106186, 0.044733960181474686, -0.02322133630514145, 0.008044945076107979, 0.00855870358645916, 0.01989850401878357, -0.10275720059871674, -0.056590884923934937, 0.03986151143908501, -0.018943706527352333, 0.0414910763502121, -0.04492805898189545, -0.02671867609024048, -0.08848541975021362, -0.05885074660181999, 0.08209013193845749, 0.027736954391002655, -0.052139800041913986, 0.06712575256824493, -0.05571366846561432, -0.04908311367034912, 0.047443635761737823, 0.027479594573378563, -0.07804657518863678, 0.00690816342830658, 0.0036683061625808477, -0.05872252583503723, -0.07950304448604584, 0.03439868241548538, -0.031887490302324295],
+ "VBLENDVPDrr":[0.030535200610756874, 0.012423486448824406, 0.02847619168460369, -0.059667184948921204, 0.04343049228191376, -0.028530163690447807, -0.016224833205342293, 0.040866702795028687, -0.028473392128944397, -0.00827900879085064, -0.028207194060087204, 0.09849362820386887, 0.02979746274650097, -9.278432844439521e-05, 0.05324682593345642, 0.024267876520752907, 0.05406109243631363, 0.011699305847287178, 0.014446435496211052, -0.04717443138360977, 0.024844970554113388, -0.03163803368806839, -0.07446259260177612, 0.017526468262076378, -0.0010339993750676513, -0.02857925184071064, 0.015111957676708698, 0.09499859064817429, 0.06468255072832108, 0.046670928597450256, 0.004483338445425034, 0.018002180382609367, -0.02052065171301365, 0.06583579629659653, 0.0258464515209198, -0.015512138605117798, -0.0050048623234033585, 0.004605527501553297, 0.04720189422369003, 0.016230769455432892, 0.0479080006480217, 0.03491509333252907, -0.027995767071843147, -0.047600168734788895, 0.03492830693721771, -0.016847757622599602, -0.011268938891589642, -0.05275636166334152, 0.03042280301451683, -0.002559700747951865, 0.07330643385648727, -0.05794983729720116, 0.055313270539045334, -0.0935194343328476, -0.05562219396233559, 0.025661781430244446, -0.07342838495969772, -0.07109549641609192, -0.00513958465307951, -0.08867929875850677, -0.08619336783885956, -0.0750153511762619, 0.05746520310640335, -0.012216143310070038, 0.03304372727870941, 0.09858714044094086, -0.024256853386759758, 0.029803572222590446, 0.0032430195715278387, -0.0665467232465744, 0.051828786730766296, -0.04805402830243111, 0.03566449508070946, 0.04970759525895119, 0.011475306004285812, -0.08379027247428894, -0.08870121836662292, -0.10186325758695602, 0.030831683427095413, -0.013388445600867271, -0.08806097507476807, 0.01244942843914032, 0.0106458505615592, 0.014532229863107204, -0.006555329076945782, 0.030422070994973183, 0.0013601519167423248, 0.08128681033849716, -0.03047514148056507, -0.09418301284313202, 0.03215060383081436, -0.08038153499364853, 0.04048173129558563, 0.061093736439943314, 0.06654123216867447, -0.0245604757219553, -0.08505622297525406, -0.010787452571094036, -0.09671728312969208, -0.07621350139379501],
+ "VBLENDVPSYrm":[-0.09020549803972244, 0.0018147941445931792, 0.009294523857533932, -0.04592214524745941, 0.037971850484609604, -0.0084582744166255, 7.10943786543794e-05, 0.060803331434726715, 0.024828029796481133, 0.06713120639324188, 0.0526476725935936, -0.10048143565654755, 0.09260302782058716, 0.02429591305553913, 0.029960352927446365, -0.03934049606323242, -0.06014358624815941, -0.05182972177863121, -0.04471563175320625, -0.02788511849939823, 0.049588486552238464, -0.02460208721458912, 0.10128646343946457, 0.0017046299763023853, -0.04810672625899315, 0.02685895562171936, 0.012890035286545753, -0.06576376408338547, 0.026714948937296867, 0.07107612490653992, 0.022581981495022774, 0.028938448056578636, -0.013067912310361862, 0.04973218962550163, -0.05631106719374657, -0.011966905556619167, 0.11229246109724045, 0.07816626131534576, -0.01492110826075077, 0.07841289043426514, -0.01930725947022438, 0.04133450239896774, 0.07837793976068497, -0.05791737139225006, 0.03949907794594765, -0.0812629982829094, 0.0227096825838089, -0.05617717653512955, -0.031621746718883514, -0.06437861174345016, 0.014931130222976208, -0.03772900998592377, -0.06047208607196808, 0.014423733577132225, -0.09050074219703674, 0.051178526133298874, -0.08493594080209732, -0.07244841754436493, -0.053980473428964615, -0.03180771693587303, -0.04194874316453934, 0.05884449928998947, -0.07937408238649368, -0.07014021277427673, 0.07651378214359283, -0.06449748575687408, 0.049183037132024765, -0.07369356602430344, -0.05600139498710632, -0.057869747281074524, -0.03777773678302765, 0.0728108361363411, 0.004416592884808779, -0.013637591153383255, -0.014425545930862427, 0.08286984264850616, -0.09721273928880692, -0.05936672165989876, 0.012179931625723839, 0.07311142235994339, 0.020424172282218933, 0.008442588150501251, 0.007072261068969965, -0.07986780256032944, 0.0740007758140564, -0.06706000119447708, 0.09505181014537811, -0.05754389986395836, -0.043452098965644836, 0.05100028216838837, 0.009519778192043304, 0.016928475350141525, -0.10973124206066132, 0.06722060590982437, -0.08942487090826035, 0.04405279457569122, -0.047899626195430756, -0.02246549166738987, 0.012838917784392834, -0.03193758800625801],
+ "VBLENDVPSYrr":[-0.017330441623926163, 0.00970433745533228, 0.01405178103595972, -0.008485907688736916, -0.09522628039121628, -0.0056933253072202206, -0.009967324323952198, 0.0019113855669274926, 0.05420999974012375, -0.009170826524496078, -0.0016384667251259089, 0.0888800099492073, -0.04177779331803322, -0.019726844504475594, 0.03707890957593918, -0.0008385017281398177, -0.0699288621544838, -0.0650804415345192, -0.009160682559013367, 0.008873197250068188, 0.04368067532777786, 0.026254672557115555, -0.0980246514081955, 0.09442432969808578, -0.057724859565496445, -0.014244051650166512, -0.03209804743528366, -0.09566470980644226, -0.054823026061058044, 0.020710600540041924, -0.026227159425616264, -0.06595060229301453, -0.056516293436288834, -0.029503492638468742, 0.07987784594297409, 0.07195907086133957, 0.07025889307260513, 0.07943699508905411, 0.0452430360019207, 0.0520918183028698, 0.017562178894877434, -0.08245491981506348, -0.09031505882740021, -0.0709397941827774, -0.020595140755176544, 0.049699995666742325, -0.015298757702112198, 0.03304044529795647, 0.06411424279212952, 0.017801951617002487, 0.10371781140565872, -0.05542006716132164, 0.019489474594593048, -0.05076194554567337, 0.07251518964767456, -0.01445869542658329, -0.02750360406935215, 0.0781739130616188, -0.08711105585098267, 0.0063829580321908, -0.05868787318468094, -0.010276335291564465, 0.029365846887230873, 0.030701765790581703, -0.027508655562996864, 0.030821409076452255, 0.031446170061826706, -0.023645242676138878, 0.09152740240097046, 0.04647000506520271, 0.06933663040399551, -0.012244722805917263, 0.05694965645670891, -0.042939525097608566, 0.045784126967191696, 0.05225628241896629, -0.07413975149393082, -0.06833034753799438, 0.021190349012613297, -0.054516348987817764, -0.059799227863550186, 0.05810815840959549, -0.0463416613638401, 0.01001003012061119, 0.02896960638463497, 0.018144303932785988, -0.0029514641501009464, -0.05448782816529274, 0.009631802327930927, -0.06597891449928284, -0.01925087906420231, 0.03208574280142784, -0.048223428428173065, -0.06255578249692917, 0.04265700280666351, -0.07270199060440063, -0.09565255790948868, 0.06654041260480881, 0.0039849490858614445, 0.0608818493783474],
+ "VBLENDVPSrm":[-0.009561210870742798, -0.05217999964952469, -0.041434597223997116, -0.06015560030937195, -0.026977095752954483, 0.07642453163862228, 0.04870861396193504, 0.011591927148401737, 0.09767209738492966, 0.07077903300523758, -0.02839653193950653, 0.06732400506734848, -0.06363530457019806, 0.028828512877225876, 0.07935670018196106, 0.0002167419734178111, 0.05772852152585983, -0.01953102834522724, 0.021847093477845192, 0.015149586834013462, -0.014851571060717106, -0.03887750953435898, 0.09119701385498047, -0.0963878184556961, 0.03963402658700943, -0.030376432463526726, 0.008454184047877789, -0.029035676270723343, 0.04948540776968002, 0.05049509555101395, 0.02157903090119362, -0.04384363070130348, -0.008558029308915138, -0.03653896227478981, 0.041567303240299225, 0.013377875089645386, 0.028834862634539604, 0.07431264966726303, 0.060239359736442566, 0.034278567880392075, 0.04317626357078552, -0.024403221905231476, 0.09977827221155167, -0.01712912879884243, -0.06604577600955963, -0.04648255929350853, -0.05138146132230759, -0.022353239357471466, -0.02755625732243061, 0.09357783943414688, -0.05984390899538994, 0.0363437719643116, 0.020068597048521042, 0.02470049262046814, -0.01315129455178976, 0.05149781331419945, -0.08710155636072159, 0.03713217005133629, 0.10267707705497742, 0.08129196614027023, 0.051809344440698624, 0.06351601332426071, 0.012312418781220913, -0.024305814877152443, -0.0881233811378479, -0.02695363573729992, 0.04495609924197197, -0.09676376730203629, 0.08079235255718231, -0.09144963324069977, -0.010317143984138966, -0.003034156048670411, 0.003368653589859605, 0.00119080173317343, 0.04020162671804428, 0.04270518571138382, 0.06472453474998474, -0.028272509574890137, -0.03609596937894821, -0.06442204117774963, 0.0075869495049119, -0.06924672424793243, -0.007210522890090942, -0.011751904152333736, -0.01863350160419941, -0.009809267707169056, -0.04598855599761009, 0.08834099024534225, 0.09097396582365036, -0.024586984887719154, -0.03402135521173477, -0.009338258765637875, 0.006769482512027025, -0.05049586296081543, -0.07144612818956375, 0.007604504935443401, 0.014361323788762093, -0.06111472472548485, -0.03448530659079552, 0.0008101637940853834],
+ "VBLENDVPSrr":[-0.006182596553117037, 0.052866462618112564, 0.06319484859704971, -0.07037214934825897, 0.07074654847383499, 0.08155510574579239, -0.022223610430955887, -0.0228160098195076, 0.0027408115565776825, 0.042197633534669876, -0.08264108747243881, 0.012415296398103237, -0.07956963032484055, 0.014689215458929539, -0.020819416269659996, 6.997504533501342e-05, -0.055686287581920624, -0.018300741910934448, -0.06078025698661804, -0.024634286761283875, -0.07549235224723816, -0.043496545404195786, -0.021659551188349724, 0.07426516711711884, 0.021279361099004745, -0.0071324678137898445, 0.010509800165891647, -0.019334806129336357, 0.010113432072103024, 0.13259300589561462, 0.0626206323504448, 0.014134400524199009, 0.021037932485342026, 0.011263534426689148, 0.024004951119422913, -0.003329087980091572, -0.08138656616210938, 0.03219672664999962, 0.04945547878742218, 0.015586217865347862, 0.006653770804405212, -0.040823403745889664, 0.05048905685544014, -0.04960756376385689, 0.029583169147372246, -0.048845771700143814, -0.07311966270208359, 0.0021479912102222443, 0.057905931025743484, -0.08396943658590317, -0.028890235349535942, -0.03258473053574562, -0.0842515155673027, 0.03330225497484207, 0.08917958289384842, 0.07150578498840332, 0.01154650654643774, 0.013860601931810379, -0.06348390132188797, -0.03620246797800064, -0.07160460203886032, -0.04384337738156319, -0.03168417140841484, -0.011540006846189499, 0.028539186343550682, -0.015858424827456474, 0.055971257388591766, 0.04556799679994583, 0.006620601750910282, -0.003114532446488738, -0.02670423500239849, -0.0016237624222412705, 0.011351042427122593, 0.04438890889286995, -0.026978177949786186, -0.01197710633277893, -0.08950226753950119, -0.018083926290273666, -0.03927936032414436, 0.047814905643463135, -0.0003411707584746182, 0.08264388889074326, 0.01378471776843071, 0.021283455193042755, 0.06615826487541199, 0.008798946626484394, 0.014382450841367245, 0.04326298087835312, 0.004369121044874191, -0.03833892568945885, 0.020005706697702408, 0.061151761561632156, 0.007075146306306124, 0.009186314418911934, 0.0672265887260437, -0.0660749077796936, -0.13252821564674377, 0.008313247002661228, -0.01809820905327797, -0.03301363065838814],
+ "VBROADCASTF":[-0.10265657305717468, -0.051633093506097794, 0.06401772052049637, 0.07700196653604507, -0.015627829357981682, 0.06639713048934937, -0.010565678589046001, -0.05054371803998947, -0.0159313902258873, -0.07033221423625946, -0.004346409346908331, -0.07107039541006088, -0.10188205540180206, 0.05590721592307091, 0.010720890015363693, 0.06196148321032524, -0.026745030656456947, -0.03579214960336685, -0.0639827698469162, -0.03395853191614151, -0.07731696218252182, 0.10142379254102707, 0.04144507274031639, -0.03750012442469597, -0.025871047750115395, -0.05730561167001724, -0.07447119057178497, 0.02529236488044262, -0.05318247526884079, 0.05398436635732651, -0.04691432788968086, -0.08285502344369888, 0.08283165842294693, -0.02119293250143528, 0.007854162715375423, 0.05968266353011131, -0.03521280363202095, -0.006583770737051964, -0.031367309391498566, 0.018922576680779457, 0.001006767968647182, -0.014145483262836933, 0.020313937216997147, -0.046394601464271545, -0.006637698505073786, -0.030925340950489044, 0.056664977222681046, 0.0009134276770055294, -0.033448800444602966, 0.012905466370284557, 0.06891193240880966, -0.08231592178344727, -0.03607535362243652, 0.03981970250606537, -0.09603287279605865, -0.05307675898075104, -0.06929665803909302, -0.034729257225990295, -0.04985908046364784, -0.048207782208919525, -0.030317194759845734, 0.028732379898428917, -0.01286825630813837, -0.04238265007734299, 0.009391414932906628, -0.012295309454202652, 0.013035133481025696, -0.03379853069782257, 0.04430871084332466, 0.03297178074717522, 0.07894669473171234, 0.10826145112514496, 0.02042515017092228, 0.0247647687792778, -0.009461644105613232, 0.0331566222012043, -0.05253227427601814, -0.017161672934889793, -0.050293710082769394, -0.04579058662056923, 0.056455347687006, -0.08390305191278458, -0.020165197551250458, -0.037253111600875854, 0.08137290179729462, -0.014724797569215298, -0.02593129128217697, -0.03675733879208565, -0.04508256912231445, -0.07473215460777283, 0.013556988909840584, 0.051102276891469955, -0.0024335747584700584, 0.0005575665854848921, -0.04166099429130554, 0.004118498880416155, 0.07060668617486954, 0.04587971791625023, -0.06991736590862274, -0.08306307345628738],
+ "VBROADCASTSDYrm":[-0.07130929827690125, 0.029436960816383362, -0.03159954398870468, -0.04376581683754921, 0.050461262464523315, -0.01253313384950161, -0.10059284418821335, -0.052578672766685486, -0.04792219400405884, -0.1391945332288742, -0.054200440645217896, -0.0683247521519661, -0.07652764022350311, -0.0319993682205677, -0.032636065036058426, -0.037751272320747375, 0.09494554996490479, 0.043687690049409866, -0.045732077211141586, -0.06131979823112488, -0.004926440306007862, -0.005279536824673414, -0.016707437112927437, 0.1123235821723938, 0.022457100450992584, 0.05041922256350517, 0.023923303931951523, -0.01495680958032608, -0.04885658621788025, 0.06884627789258957, -0.12865881621837616, 0.030433926731348038, 0.0018709655851125717, 0.06701120734214783, -0.07108072936534882, -0.08334460854530334, 0.052504975348711014, 0.05058600381016731, 0.013254639692604542, -0.03477586433291435, -0.05056244879961014, -0.022603416815400124, -0.022899707779288292, 0.015054453164339066, -0.006104188971221447, 0.0009356554364785552, -0.014448794536292553, -0.08427694439888, -0.009018361568450928, 0.050143882632255554, -0.0650140792131424, 0.03578081727027893, 0.015753556042909622, 0.005887289065867662, 0.006019655615091324, -0.05796848610043526, 0.0719364657998085, -0.06712047010660172, -0.05691061541438103, -0.050709981471300125, 0.07533372938632965, -0.06198955699801445, 0.05234786123037338, -0.024425754323601723, 0.027488091960549355, -0.016440650448203087, -0.08589060604572296, 0.02380845695734024, -0.004073877818882465, 0.10235320776700974, 0.028823381289839745, 0.08930997550487518, 0.05126471817493439, 0.051499754190444946, 0.0006749600870534778, 0.03059886023402214, 0.017013737931847572, -0.002380020683631301, 0.024731187149882317, 0.006407267414033413, -0.0017662500031292439, -0.030837129801511765, 0.02743053250014782, -0.009764362126588821, -0.01871226169168949, -0.05325930938124657, -0.052339818328619, -0.051599059253931046, -0.004983603488653898, -0.014364364556968212, -0.08299307525157928, -0.07535626739263535, 0.12252822518348694, -0.08403629064559937, 0.03261273354291916, -0.022345392033457756, -0.019713101908564568, -0.023158814758062363, 0.03761637210845947, 0.041311703622341156],
+ "VBROADCASTSDYrr":[-0.021229060366749763, -0.004127829801291227, 0.056263815611600876, -0.030131636187434196, 0.016913041472434998, 0.026028327643871307, -0.057752057909965515, 0.024824686348438263, -0.03560449182987213, -0.030493922531604767, 0.04351012781262398, 0.003948933910578489, 0.09447772800922394, -0.021301954984664917, 0.07854337990283966, -0.01893344148993492, 0.04311783239245415, 0.03010500967502594, -0.014757221564650536, 0.05510906130075455, 0.01309582032263279, 0.005359844770282507, -0.01082636509090662, 0.017153825610876083, -0.011490286327898502, -0.005332048516720533, 0.04086163267493248, 0.01690307818353176, -0.02538299188017845, -0.02085384540259838, -0.11160868406295776, -0.0014552337815985084, 0.05569682642817497, 0.004576344043016434, -0.02389071322977543, -0.0816836878657341, -0.03403262421488762, -0.06601173430681229, -0.013377245515584946, -0.019855845719575882, -0.05271938443183899, 0.014383525587618351, -0.0673956573009491, -0.047065380960702896, -0.018390018492937088, 0.018930930644273758, 0.024235857650637627, 0.031219514086842537, 0.013731377199292183, -0.022875124588608742, -0.013240311294794083, 0.07017646729946136, -0.002676593605428934, 0.015410715714097023, 0.000652870861813426, -0.0073234145529568195, 0.03985661268234253, 0.03106783702969551, -0.02595590427517891, 0.0453345812857151, -0.051469866186380386, 0.04864025115966797, -0.07092586904764175, 0.03632337972521782, -0.05282505229115486, -0.037947140634059906, -0.03368057683110237, -0.029581822454929352, 0.10645342618227005, -0.045795340090990067, -0.024684276431798935, 0.07023342698812485, 0.006738447118550539, -0.015523044392466545, -0.027160925790667534, -0.01388793159276247, -0.0323958620429039, -0.04711771383881569, -0.003039237344637513, 0.011736123822629452, -0.10848632454872131, -0.019072595983743668, 0.08079995959997177, -0.03378798067569733, -0.005138085689395666, -0.005351515021175146, -0.04474998638033867, 0.0950850322842598, 0.037034496665000916, 0.10331877321004868, -0.08609979599714279, 0.04160588979721069, 0.08469557017087936, 0.025862278416752815, 0.02795478329062462, -0.058838680386543274, 0.07703372091054916, -0.07886242121458054, -0.03045090101659298, 0.023324277251958847],
+ "VBROADCASTSSYrm":[-0.06666866689920425, -0.0936564952135086, -0.0667317807674408, -0.00726353982463479, 0.004276202525943518, -0.017543919384479523, -0.030530545860528946, -0.040199361741542816, 0.03592129796743393, 0.017886608839035034, -0.022731753066182137, -0.03525371104478836, -0.040242280811071396, -0.05446920916438103, -0.02740427851676941, 0.0048423148691654205, -0.04751255363225937, -0.0015662949299439788, -0.04409239441156387, -0.06187691539525986, 0.013187460601329803, -0.05338839814066887, -0.058730773627758026, 0.012216620147228241, 0.045941244810819626, -0.02808098867535591, 0.07946263998746872, 0.03996383771300316, -0.03031090646982193, -0.04141531512141228, -0.1329292207956314, -0.01412552036345005, -0.0009338828967884183, 0.08916588127613068, 0.021545451134443283, -0.08356626331806183, 0.03046152926981449, -0.017867237329483032, 0.0027741703670471907, 0.007604032754898071, -0.027811134234070778, -0.019297245889902115, -0.0506623312830925, 0.04322066530585289, -0.06559610366821289, 0.03591493144631386, 0.06524106860160828, -0.03753121942281723, -0.05937127768993378, -0.05903642997145653, -0.030429480597376823, 0.01999593898653984, 0.00669905636459589, -0.031600501388311386, 0.01880347914993763, -0.05189019814133644, 0.032372090965509415, 0.11981426179409027, 0.05191609635949135, -0.02858182042837143, -0.021574487909674644, 0.15564851462841034, -0.0030646244995296, -0.02407735213637352, 0.10406658798456192, -0.09800271689891815, -0.07759955525398254, 0.0006263531977310777, -0.00447503849864006, -0.06332758814096451, -0.026198124513030052, 0.04054706171154976, -0.021421661600470543, -0.035131603479385376, -0.05752572789788246, -0.027747351676225662, 0.00619347020983696, -0.002477751113474369, -0.04151787981390953, -0.08182109147310257, 0.061539359390735626, 0.03521224111318588, 0.009024087339639664, -0.012568812817335129, -0.07108457386493683, -0.05970127135515213, 0.017690422013401985, -0.011707589961588383, -0.008120458573102951, -0.0486939437687397, -0.06551571935415268, -0.0628703385591507, 0.028940299525856972, -0.009247178211808205, -0.06452234089374542, 0.03528005629777908, -0.007541260682046413, -0.048025500029325485, 0.06304415315389633, -0.030317626893520355],
+ "VBROADCASTSSYrr":[0.028589770197868347, -0.018195146694779396, 0.0303743164986372, -0.034893885254859924, 0.047675974667072296, -0.04151894897222519, 0.11951127648353577, 0.04549479857087135, -0.04923080652952194, 0.10708466917276382, -0.09845399111509323, 0.060107048600912094, -0.022864140570163727, 0.02908577397465706, 0.011590580455958843, 0.061222195625305176, 0.04603957757353783, -0.02015680819749832, -0.0054573798552155495, 0.06614944338798523, -0.032379161566495895, 0.032816339284181595, -0.03227388858795166, 0.026578931137919426, -0.0006987017695792019, 0.06051276996731758, -0.07628689706325531, 0.0618823766708374, -0.012410200200974941, -0.025194764137268066, -0.0399397611618042, 0.01390060130506754, 0.051916077733039856, 0.08702951669692993, 0.07675808668136597, -0.026921860873699188, -0.047356218099594116, -0.006044213660061359, -0.027491332963109016, 0.04752211272716522, 0.014873201958835125, -0.02917507477104664, 0.031134653836488724, -0.05182621255517006, -0.0449971966445446, 0.054053861647844315, 0.09213538467884064, -0.030641580000519753, 0.07785938680171967, 0.06608637422323227, 0.013394405134022236, 0.039614882320165634, -0.008879773318767548, 0.05775494500994682, -0.011862387880682945, -0.008988728746771812, 0.10196034610271454, -0.037904541939496994, -0.07678410410881042, 0.008137999102473259, -0.016273612156510353, 0.002434099093079567, -0.0006487438222393394, 0.022989166900515556, -0.06697878241539001, -0.11030405759811401, -0.050040069967508316, 0.026629526168107986, -0.012954764068126678, -0.046964969485998154, -0.057660266757011414, 0.03022085130214691, 0.022139592096209526, -0.02058868668973446, -0.06034916266798973, -0.015480617992579937, 0.0051507363095879555, -0.052891552448272705, -0.004379515070468187, -0.03914184123277664, 0.08074276149272919, 0.10042213648557663, 0.0488683246076107, 0.0036782026290893555, 0.07776806503534317, -0.006777608767151833, -0.02016994170844555, -0.060008686035871506, 0.03866415470838547, 0.06406246870756149, 0.12737566232681274, 0.047031648457050323, -0.11025159060955048, -0.08906777203083038, 0.0008817790076136589, 0.05132228881120682, -0.04316633194684982, -0.04650852084159851, -0.02065848745405674, -0.010786078870296478],
+ "VBROADCASTSSrm":[-0.02706947550177574, -0.04748062044382095, 0.007824561558663845, -0.03769734129309654, -0.05816013365983963, 0.04925236478447914, 0.015506621450185776, -0.012921126559376717, 0.04239200800657272, 0.0695222020149231, -0.038350045680999756, 0.004482668824493885, -0.0035746637731790543, -0.06502921879291534, 0.08340666443109512, -0.04080979526042938, 0.001658731373026967, -0.005667300894856453, -0.07521411031484604, -0.029784467071294785, -0.07575702667236328, -0.07383236289024353, -0.06830209493637085, 0.048094138503074646, -0.04383021220564842, -0.058634158223867416, -0.03269517794251442, -0.08641034364700317, 0.04720668867230415, 0.08199258893728256, 0.0756557509303093, 0.009384363889694214, -0.011788301169872284, 0.022146204486489296, 0.02144601382315159, -0.0603429414331913, -0.10165762901306152, -0.05770577862858772, -0.011074015870690346, -0.0227454025298357, 0.04423454776406288, 0.12683480978012085, 0.13188745081424713, -0.000663383339997381, -0.06806042790412903, -0.0791129469871521, 0.03939029201865196, -0.028851699084043503, -0.049405377358198166, 0.017670176923274994, 0.03000439703464508, -0.03255906328558922, -0.003856260096654296, 0.01291269063949585, 0.0036227807868272066, -0.05172153189778328, 0.06279472261667252, 0.07667993009090424, 0.047377631068229675, -0.03079579398036003, 0.052728403359651566, -0.03418869152665138, -0.005081869196146727, -0.053132712841033936, 0.05100821703672409, -0.02196688950061798, 0.04130283370614052, 0.04023616760969162, -0.014078693464398384, -0.021823633462190628, 0.04452640935778618, 0.06127426028251648, -0.0032522159162908792, -0.05014496296644211, -0.08996500074863434, -0.06654004752635956, -0.0018620823975652456, -0.011530300602316856, -0.04351958632469177, 0.008143872022628784, 0.07768038660287857, 0.03577781841158867, 0.09402880817651749, 0.048553790897130966, -0.017882540822029114, -0.023745102807879448, -0.008325275965034962, -0.06047752872109413, -0.0031615847256034613, -0.04722622036933899, 0.09825984388589859, -0.07155390828847885, -0.010238321498036385, 0.02201412059366703, 0.028812700882554054, -0.05520786717534065, -0.02485114522278309, -0.01482637133449316, -0.006743958219885826, 0.038595087826251984],
+ "VBROADCASTSSrr":[-0.03746310994029045, 0.06274405121803284, 0.1609591692686081, -0.004097159951925278, 0.04969088360667229, 0.02325984090566635, -0.03147171810269356, -0.16176241636276245, 0.05599892884492874, 0.02400411106646061, 0.0005222643376328051, 0.03094792552292347, 0.06650274246931076, 0.020348450168967247, -0.04967944696545601, 0.00453520892187953, -0.01071144174784422, 0.015405104495584965, 0.11027119308710098, -0.056117668747901917, 0.020076934248209, -0.03412719443440437, -0.02548353560268879, 0.022350789979100227, -0.018995793536305428, -0.04639795050024986, 0.08404111117124557, 0.05736672133207321, 0.026420220732688904, 0.13576531410217285, -0.0002255982835777104, 0.006123516242951155, -0.029071763157844543, 0.022681759670376778, -0.03324779495596886, 0.06676759570837021, -0.06144668906927109, 0.03409155458211899, -0.011353260837495327, 0.006166473962366581, 0.005701643414795399, 0.06499496847391129, -0.03867795318365097, 0.06280247122049332, 0.0673275962471962, 0.04815327748656273, -0.004632513038814068, -0.055312756448984146, 0.09423086792230606, -0.03323064744472504, -0.03149952366948128, -0.005719790700823069, 0.014904356561601162, -0.034396927803754807, -0.024824831634759903, -0.0005177499842830002, -0.006325105205178261, -0.015357809141278267, 0.006015503779053688, 0.0025199423544108868, 0.00047451083082705736, -0.001119572902098298, -0.03301535174250603, -0.03883039578795433, -0.005772616248577833, -0.06961047649383545, -0.10403161495923996, -0.008497991599142551, 0.08354491740465164, -0.0009080655872821808, -0.11728708446025848, 0.028249891474843025, 0.051485560834407806, -0.014449278824031353, 0.022565411403775215, -0.023770222440361977, -0.015434520319104195, -0.04498543590307236, -0.040729451924562454, 0.08380446583032608, 0.03241182491183281, 0.012501620687544346, 0.048598989844322205, 0.06106986850500107, -0.10639782249927521, -0.015240090899169445, -0.018899256363511086, 0.0829111859202385, -0.04180408641695976, -0.0675608292222023, -0.053863462060689926, -0.01342583354562521, -0.021485496312379837, -0.05296047031879425, -0.04821700230240822, 0.008863608352839947, 0.08276623487472534, -0.041590236127376556, -0.03702216222882271, -0.03513111546635628],
+ "VCMPPDYrri":[-0.004202740732580423, -0.0012840713607147336, 0.01795758493244648, 0.05266544222831726, 0.08298133313655853, -0.012754826806485653, -0.07369811832904816, 0.028449518606066704, -0.06690876930952072, -0.06440126895904541, 0.030133023858070374, 0.07470408082008362, -0.0684305727481842, 0.08777932077646255, -0.016743110492825508, 0.0013261812273412943, -0.10298040509223938, -0.07246062159538269, -0.022380048409104347, 0.01787720061838627, 0.0795896127820015, 0.049883756786584854, 0.0262187197804451, -0.0054925065487623215, 0.035025790333747864, -0.02489614486694336, -0.03292178362607956, -0.025562861934304237, 0.010639613494277, -0.07558949291706085, 0.04607708007097244, -0.00679015601053834, -0.037883006036281586, 0.06236053258180618, -0.0325235016644001, -0.0789123922586441, -0.0614909827709198, 0.10697851330041885, 0.012741143815219402, -0.013164293952286243, -0.04808387905359268, 0.0017377238254994154, -0.04925885796546936, -0.013821510598063469, -0.06129400432109833, 0.0020761277992278337, -0.0715223103761673, -0.016047298908233643, 0.005238685756921768, 0.046995047479867935, 0.018308650702238083, -0.04606201872229576, 0.020136794075369835, -0.01834944635629654, -0.024900518357753754, -0.0011431964812800288, 0.002230817684903741, 0.021774087101221085, -0.03338535875082016, -0.07081479579210281, -0.054829731583595276, 0.037019092589616776, 0.06356155127286911, 0.020893754437565804, -0.10119014233350754, 0.02290673367679119, 0.04980848729610443, -0.023049136623740196, -0.0445987805724144, -0.026969725266098976, -0.06341718882322311, 0.026457656174898148, 0.03471752256155014, 0.06766258925199509, 0.09038195759057999, 0.012099330313503742, 0.020966872572898865, -0.0913170799612999, 0.049244217574596405, 0.0011261708568781614, 0.036885716021060944, -0.04366682097315788, -0.05505141615867615, -0.02068149484694004, 0.07835161685943604, 0.09167958796024323, -0.07381914556026459, -0.008523902855813503, -0.08186990767717361, -0.024664610624313354, 0.05412721261382103, -0.010730338282883167, 0.03480051830410957, -0.07841852307319641, -0.0254869032651186, 0.004312374163419008, 0.026382213458418846, 0.04446125775575638, 0.036867719143629074, -0.024184180423617363],
+ "VCMPPDrmi":[-0.057896941900253296, 0.03850935772061348, 0.01698020100593567, -0.026295391842722893, -0.05105721205472946, 0.060986876487731934, 0.08217286318540573, 0.08697374910116196, -0.046371057629585266, -3.6343553801998496e-05, -0.06678939610719681, 0.04591597616672516, -0.04961833730340004, 0.08918596804141998, -0.07850085943937302, -0.05618373304605484, -0.012424473650753498, -0.013253645040094852, 0.036778319627046585, 0.05011618509888649, -0.022208206355571747, 0.01115889847278595, -0.03907569497823715, -0.010587033815681934, -0.04569799825549126, 0.0259700994938612, 0.08794651925563812, -0.0631481409072876, 0.09111575782299042, 0.02116420865058899, 0.03079373575747013, 0.028506023809313774, 0.0703229233622551, 0.0044128429144620895, -0.04661104083061218, 0.02802751399576664, -0.09714781492948532, 0.02958500199019909, -0.05007418245077133, 0.019421378150582314, -0.0472596175968647, -0.03694479912519455, -0.00026653631357476115, -0.012940785847604275, -0.00833145622164011, -0.02102847397327423, 0.03439556807279587, 0.054551903158426285, -0.06082148477435112, 0.03129114583134651, 0.08661321550607681, 0.016114234924316406, 0.05320252478122711, -0.02470046654343605, -0.08539200574159622, 0.0685078501701355, -0.04155362397432327, 0.07578840851783752, 0.09458630532026291, 0.069510817527771, -0.03612833097577095, -0.09117492288351059, -0.004166814032942057, -0.002832433907315135, -0.003074083011597395, -0.0880667120218277, 0.0035945987328886986, -0.03760738670825958, -0.014008790254592896, 0.04128503426909447, 0.020382221788167953, 0.020673686638474464, 0.04858310520648956, 0.009151501581072807, 0.10118267685174942, -0.005457786377519369, 0.044631149619817734, -0.03658225014805794, 0.008855056948959827, 0.026582559570670128, 0.039671558886766434, -0.020821155980229378, 0.022419899702072144, -0.08515803515911102, 0.059824880212545395, -0.05821368843317032, 0.06426455080509186, 0.057685062289237976, -0.11121182143688202, 0.03795813396573067, 0.03491080179810524, 0.07751709967851639, 0.05194853991270065, 0.07198823988437653, -0.08727817237377167, 0.013801170513033867, -0.028154706582427025, 0.09496445208787918, 0.019112782552838326, 0.061497874557971954],
+ "VCMPPDrri":[-0.0365496426820755, -0.09123316407203674, -0.040502019226551056, -0.003984152339398861, -0.060245417058467865, 0.0016778188291937113, -0.022080298513174057, 0.041887179017066956, -0.026274222880601883, 0.04915444925427437, -0.005813011899590492, 0.006076816935092211, 0.01670796424150467, -0.03746461868286133, 0.0519104078412056, -0.030055053532123566, 0.10195663571357727, -0.07323844730854034, 0.046895965933799744, -5.278634125716053e-05, -0.03310546651482582, -0.05197391286492348, -0.06573532521724701, -0.08431660383939743, -0.1037609651684761, -0.0031638850923627615, 0.01643245853483677, -0.0771958976984024, -0.04785905405879021, -0.05808480083942413, 0.001351799233816564, -0.05170392617583275, -0.05527039244771004, -0.047139089554548264, -0.0013296211836859584, 0.00650858273729682, 0.041361983865499496, 0.10064036399126053, 0.03713122755289078, 0.00016139919171109796, 0.031876035034656525, -0.02099027670919895, 0.018348973244428635, -0.07879741489887238, -0.039595045149326324, 0.018452197313308716, -0.057690106332302094, -0.06453615427017212, 0.07348588854074478, 0.061989326030015945, -0.06218249350786209, -0.047340307384729385, -0.003093356266617775, 0.04551982879638672, -0.009637750685214996, 0.05935655161738396, -0.04545881599187851, -0.013870286755263805, 0.000815240025985986, -0.028301475569605827, -0.03384995833039284, 0.05123341828584671, 0.0650896355509758, -0.10435483604669571, -0.05702408030629158, -0.013558180071413517, -0.010043317452073097, 0.035022761672735214, -0.006465076934546232, -0.01264288742095232, -0.06450475007295609, -0.03494608402252197, 0.061056509613990784, -0.06924957782030106, -0.016352174803614616, 0.0513928160071373, 0.002426354680210352, -0.006504358723759651, -0.007347689941525459, 0.05275343358516693, -0.0011313923168927431, -0.006140155252069235, 0.06757517158985138, 0.04022151604294777, -0.002619427163153887, -0.005782477557659149, -0.07056380063295364, -0.021318357437849045, 0.006945788860321045, 0.07103034853935242, -0.09161562472581863, 0.018712377175688744, -0.05929425731301308, -0.047922730445861816, 0.03781601041555405, -0.033532269299030304, 0.03463475778698921, -0.06275204569101334, 0.010215794667601585, -0.0022587268613278866],
+ "VCMPPSYrmi":[-0.08894936740398407, -0.05838874354958534, 0.07765766978263855, 0.04808108136057854, -0.06643453240394592, -0.0694592297077179, -0.045999761670827866, -0.0057788207195699215, -0.024797746911644936, -0.0216574314981699, 0.026055937632918358, -0.013955812901258469, -0.07830185443162918, 0.026019925251603127, 0.013200690969824791, -0.02192777208983898, 0.038511063903570175, 0.0012293392792344093, 0.00928984023630619, 0.026143765076994896, -0.04468841850757599, -0.08493144810199738, 0.06086910516023636, 0.026002168655395508, -0.031956370919942856, -0.07591503858566284, 0.06452349573373795, -0.030567066743969917, -0.062496427446603775, -0.0164590235799551, 0.0855121910572052, 0.09915920346975327, -0.021278783679008484, -0.09694869816303253, -0.026795832440257072, 0.058102402836084366, -0.02782754972577095, 0.06427774578332901, -0.0763990730047226, -0.023409666493535042, 0.021515564993023872, -0.05277093127369881, 0.015623695217072964, -0.018948428332805634, 0.04375690966844559, -0.037590689957141876, -0.006209190469235182, -0.06552959233522415, -0.07670705020427704, -0.06743672490119934, -0.001829089829698205, 0.05189287289977074, -0.02855510637164116, 0.004344305023550987, -0.032157111912965775, -0.07447746396064758, 0.0691533163189888, -0.03575674444437027, -0.02415311150252819, -0.0862244963645935, 0.04168092459440231, 0.03837136924266815, 0.04559963941574097, -0.07442689687013626, 0.08939861506223679, -0.05093974247574806, 0.01399897038936615, 0.007261189632117748, -0.03680197894573212, 0.034189991652965546, 0.08018255233764648, 0.019145093858242035, -0.08045793324708939, -0.07393653690814972, -0.030028223991394043, 0.05007947236299515, 0.027560096234083176, 0.025858530774712563, 0.00961939338594675, 0.02176220342516899, 0.05860518664121628, -0.016062894836068153, -0.07308156043291092, 0.0011885418789461255, 0.04375952482223511, -0.03471842780709267, 0.028992680832743645, 0.0054063801653683186, -0.019744914025068283, -0.0448504276573658, -0.023703807964920998, 0.02304058149456978, 0.09071055799722672, 0.06443094462156296, 0.03034850023686886, 0.033386386930942535, 0.01784401573240757, -0.06666092574596405, 0.06469380855560303, 0.02365395426750183],
+ "VCMPPSYrri":[-0.0273418128490448, -0.0027832728810608387, 0.053470179438591, 0.009582074359059334, 0.02359442412853241, -0.014941133558750153, -0.09852155297994614, 0.04057890921831131, 0.09002145379781723, 0.03450458124279976, -0.006011467892676592, 0.05845864489674568, -0.0478757806122303, 0.0582096204161644, 0.030878478661179543, 0.03398267179727554, -0.03755098953843117, 0.030741911381483078, -0.030973054468631744, -0.11462429165840149, 0.02871347777545452, -0.07465104758739471, -0.04736514016985893, 0.0879097655415535, 0.02731935866177082, -0.034029487520456314, 0.062425196170806885, -0.004224731586873531, -0.020576845854520798, 0.011021383106708527, -0.12379220128059387, -0.05076030641794205, -0.0013304341118782759, 0.053325019776821136, -0.033121172338724136, -0.07214426249265671, 0.05014853924512863, -0.06724342703819275, 0.035915009677410126, 0.09201105684041977, -0.025222746655344963, 0.013764104805886745, -0.05927214026451111, 0.06717946380376816, -0.06618396192789078, -0.0024543863255530596, 0.05424314737319946, 0.009243817999958992, -0.03987792879343033, -0.01935495436191559, 0.011403131298720837, -0.0010345234768465161, -0.015259328298270702, -0.09387838840484619, 0.043319933116436005, -0.09441451728343964, 0.12122279405593872, -0.009147976525127888, 0.04834245890378952, -0.06681173294782639, 0.031065702438354492, -0.055501263588666916, -0.00922574382275343, -0.022993437945842743, 0.1066538393497467, 0.028554372489452362, 0.043071601539850235, 0.011537842452526093, -0.04615391790866852, -0.06399762630462646, 0.08137764036655426, -0.037218619138002396, -0.02937696874141693, -0.03017529286444187, 0.010053945705294609, -0.01982475258409977, -0.013632535003125668, -0.02827019803225994, 0.041188210248947144, -0.040151722729206085, -0.024848874658346176, -0.0318024717271328, 0.041544511914253235, -0.033506330102682114, -0.08609924465417862, -0.07556676864624023, 0.020190004259347916, 0.001516620977781713, 0.0718727558851242, -0.03395657613873482, 0.02866695635020733, 0.0985627993941307, -0.06944022327661514, -0.02431013248860836, -0.05535481125116348, 0.02542298659682274, 0.06313801556825638, 0.07444746047258377, -0.00522884726524353, 0.049417704343795776],
+ "VCMPPSrmi":[0.03798830881714821, 0.06941565871238708, -0.027215059846639633, 0.015472017228603363, -0.10934707522392273, 0.07133644074201584, -0.07533640414476395, -0.030918922275304794, -0.024437598884105682, -0.02025975100696087, 0.04647164046764374, 0.0738312155008316, -0.04300271347165108, 0.017405902966856956, 0.05321750044822693, 0.023227136582136154, -0.10297073423862457, 0.006713514681905508, -0.07168666273355484, -0.0015391542110592127, 0.01438888069242239, -0.011951719410717487, 0.10910273343324661, 0.013309244997799397, -0.0480157732963562, 0.026562845334410667, -0.07737712562084198, 0.037383295595645905, -0.003998142667114735, 0.009916461072862148, 0.036855537444353104, -0.04669313132762909, 0.05945881828665733, 0.07918607443571091, 0.053207188844680786, 0.025326550006866455, 0.01717144437134266, 0.014357130043208599, -0.004001596011221409, 0.011263193562626839, 0.01721171662211418, 0.03563103824853897, -0.08472835272550583, -0.013560321182012558, 0.09499204903841019, -0.04189061000943184, -0.010578745044767857, 0.015797829255461693, 0.007646492682397366, 0.024160899221897125, 0.04793889820575714, -0.020208530128002167, 0.007099120412021875, 0.06867356598377228, 0.0469294898211956, 0.06184593588113785, 0.017029741778969765, 0.0380694679915905, 0.06398671120405197, -0.05979227274656296, 0.045369524508714676, 0.09044283628463745, 0.032011352479457855, 0.0036010376643389463, -0.03632573410868645, -0.08323109894990921, 0.019361654296517372, -0.049547746777534485, -0.03927251696586609, -0.06665957719087601, -0.043046269565820694, 0.044986896216869354, 0.02803460694849491, 0.052385229617357254, 0.057268865406513214, -0.05189209431409836, 0.10635709017515182, 0.030588822439312935, -0.05205896869301796, 0.10247802734375, -0.05887054279446602, 0.09997957944869995, 0.01973351463675499, -0.05581294000148773, 0.1110663190484047, 0.06018364056944847, -0.03330574184656143, 0.06048977002501488, 0.10890509188175201, 0.06252221763134003, -0.08741804957389832, -0.01308608241379261, -0.04782973974943161, 0.04502451792359352, -0.025116564705967903, -0.03918951004743576, -0.03553745895624161, 0.07413967698812485, 0.030532903969287872, 0.006380259525030851],
+ "VCMPPSrri":[0.018635239452123642, 0.01757833920419216, -0.08489014208316803, -0.02869107574224472, -0.047841716557741165, 0.02626500278711319, 0.12381478399038315, 0.025952674448490143, 0.06826990097761154, 0.08592672646045685, -0.08109941333532333, -0.004982910118997097, 0.024104537442326546, -0.05217643082141876, 0.07873512804508209, 0.07507073879241943, -0.03312354162335396, -0.11298198997974396, 0.04164125770330429, -0.015573268756270409, 0.08337761461734772, -0.05283204838633537, -0.007309465669095516, 0.041304852813482285, -0.04119453206658363, 0.0031707314774394035, -0.007496312726289034, 0.00847938098013401, -0.03931301459670067, -0.021995313465595245, 0.03159429505467415, 0.02161412499845028, -0.021148616448044777, -0.030244529247283936, 0.07610627263784409, -0.05075462907552719, 0.06924575567245483, -0.0051739951595664024, -0.022911250591278076, 0.10250715166330338, -0.011171379126608372, 0.02706015296280384, 0.04310791566967964, -0.06205182522535324, -0.002592984586954117, 0.015597674995660782, -0.051200054585933685, 0.019048726186156273, -0.013958949595689774, -0.014210338704288006, -0.007802842650562525, 0.0659543052315712, -0.051834654062986374, -0.04521890729665756, 0.04624238237738609, -0.009993360377848148, 0.017964310944080353, 0.0026216725818812847, -0.0650048553943634, -0.04667876288294792, -0.09398160129785538, 0.01944693922996521, 0.07462922483682632, -0.014556209556758404, 0.007144553121179342, 0.03388255834579468, -0.03126876428723335, 0.01669052056968212, 0.08179990202188492, -0.05706670507788658, 0.1104152575135231, -0.11055014282464981, -0.04595363885164261, -0.026911376044154167, -0.011144958436489105, 0.07633980363607407, -0.032671231776475906, 0.01351795345544815, 0.029081443324685097, -0.039107177406549454, 0.03365115076303482, 0.07130057364702225, 0.03394344076514244, -0.009492820128798485, 0.024929441511631012, -0.09695085883140564, -0.0017464116681367159, 0.004936592187732458, 0.004235546104609966, 0.029244719073176384, 0.03657091036438942, -0.06126956269145012, 0.12090055644512177, -0.02915312722325325, -0.0639500617980957, -0.0020478738006204367, 0.062471095472574234, 0.008176623843610287, 0.0008414154872298241, -0.02478749118745327],
+ "VCMPSDrm":[-0.10302909463644028, 0.07817061245441437, 0.07495968788862228, 0.04129064455628395, -0.0677887499332428, -0.06180582568049431, 0.0406837984919548, -0.03912660852074623, -0.02325858734548092, -0.05686807632446289, -0.046348389238119125, 0.07436224073171616, 0.005027360748499632, 0.0005208073416724801, 0.046286407858133316, 0.020050646737217903, 0.046167340129613876, 0.07080168277025223, 0.014559836126863956, 0.016372540965676308, -0.03926150128245354, 0.03390668332576752, 0.06108064949512482, 0.05246933549642563, 0.07181565463542938, -0.0341150127351284, 0.028177335858345032, 0.02046177163720131, 0.06998630613088608, -0.012216910719871521, -0.062036897987127304, 0.02077607251703739, -0.0029308386147022247, 0.023943055421113968, -0.016937095671892166, -0.04047759994864464, -0.04059411585330963, 0.014313643798232079, -0.08152647316455841, -0.006226266734302044, -0.02400878816843033, -0.07234431058168411, -0.0009871076326817274, 0.007713692262768745, 0.015673993155360222, 0.012652953155338764, -0.028435474261641502, 0.05496848747134209, 0.03248721733689308, 0.04865528643131256, 0.053532492369413376, -0.004626644775271416, 0.04913761094212532, 0.08737452328205109, -0.017172671854496002, 0.005313947796821594, -0.008681374602019787, 0.01763572171330452, 0.01856527477502823, 0.026466727256774902, -0.06865017116069794, -0.016721658408641815, -0.01338199619203806, -0.08278712630271912, 0.04849381372332573, -0.08670186251401901, 0.047080159187316895, -0.04048580303788185, 0.039514001458883286, -0.05271950364112854, 0.03971586003899574, -0.021843213587999344, 0.006216554436832666, -0.05574903264641762, -0.029414048418402672, -0.04915444925427437, 0.012803804129362106, -0.01393954548984766, -0.04986749216914177, -0.04808661341667175, 0.025596199557185173, -0.04932686313986778, -0.0054550874046981335, 0.0572696290910244, -0.013977340422570705, -0.042256761342287064, 0.0030040994752198458, -0.02783781662583351, -0.0572693794965744, 0.04057496786117554, 0.006127209402620792, -0.03178947791457176, -0.00943500455468893, 0.024236004799604416, -0.006714421324431896, -0.06380514800548553, -0.015723412856459618, -0.05309638753533363, -0.027539338916540146, 0.04829246178269386],
+ "VCMPSDrr":[0.036712437868118286, 0.0687633529305458, 0.007311510853469372, -0.029459815472364426, 0.04140172898769379, -0.0013620974496006966, -0.05678664520382881, -0.08877906948328018, -0.09400426596403122, -0.0201741773635149, -0.051836784929037094, 0.034912168979644775, 0.034040872007608414, -0.10635101050138474, 0.0058594802394509315, 0.015237846411764622, -0.004392435308545828, -0.015248412266373634, -0.11487237364053726, -0.0423077754676342, -0.04038335755467415, -0.0027878459077328444, -0.07765228301286697, -0.01209461223334074, -0.0634184330701828, 0.055459488183259964, -0.0010281532304361463, -0.012125106528401375, 0.04721882939338684, 0.07308142632246017, 0.04600181058049202, -0.09157685190439224, 0.015014320611953735, -0.017020979896187782, -0.001880721771158278, -0.040631502866744995, -0.09378129243850708, 0.024040652438998222, 0.07458607107400894, -0.0636344701051712, 0.02373450994491577, 0.10243746638298035, -0.061918165534734726, 0.030702773481607437, 0.09738248586654663, -0.018107831478118896, -0.0057170516811311245, 0.014720829203724861, 0.0005907194572500885, -0.012414795346558094, 0.10250848531723022, -0.061692170798778534, -0.02307455614209175, -0.10506534576416016, 0.049267202615737915, 0.01976815052330494, 0.015203923918306828, 0.003247828222811222, 0.003547694068402052, 0.04360440745949745, -0.055009860545396805, -0.07638051360845566, 0.03541270270943642, 0.054004549980163574, 0.018459171056747437, 0.04111018776893616, -0.0283174030482769, 0.03090767376124859, 0.028367621824145317, 0.020566048100590706, -0.03171047195792198, -0.01545810792595148, 0.05716261267662048, 0.07279618829488754, -0.011189322918653488, -0.06194990500807762, -0.11004631221294403, -0.0927729457616806, 0.03363614156842232, -0.042741842567920685, 0.01845763623714447, -0.044417303055524826, 0.09114111214876175, 0.020897505804896355, 0.029965776950120926, 0.029736487194895744, 0.0009513742988929152, 0.07920524477958679, 0.06862387806177139, -0.09222713857889175, -0.08279137313365936, -0.03943638131022453, 0.08515709638595581, 0.007822539657354355, 0.09387215971946716, -0.060093723237514496, -0.024821363389492035, -0.010696257464587688, 0.059064529836177826, -0.021181611344218254],
+ "VCMPSSrm":[-0.05463535338640213, 0.06693820655345917, 0.017115531489253044, 0.0038975575007498264, 0.003346407786011696, 0.030062908306717873, -0.01940152607858181, -0.040638573467731476, 0.03985152021050453, -0.02860741689801216, 0.028267748653888702, -0.03902227059006691, 0.00047024968080222607, -0.035978954285383224, 0.02554430440068245, 0.03544358164072037, 0.040464937686920166, -0.05977894738316536, 0.07233194261789322, -0.10892179608345032, -0.0466323122382164, -0.08143247663974762, 0.07818423211574554, 0.03644805774092674, 0.04663391783833504, 0.033301737159490585, 0.04761413484811783, 0.03180905431509018, -0.00195363094098866, 0.028026897460222244, -0.017119528725743294, -0.022239187732338905, -0.04247291013598442, 0.04039115831255913, -0.018598301336169243, 0.011900574900209904, 0.01910053752362728, 0.023280613124370575, -0.024491190910339355, 0.07324374467134476, 0.05461052060127258, -0.003460691310465336, 0.09513922035694122, 0.09541632980108261, -0.08200152963399887, 0.059291545301675797, -0.0002292135905008763, 0.02481197752058506, -0.01203882321715355, -0.05232507735490799, 0.03236083313822746, -0.021099090576171875, -0.052032336592674255, 0.09726140648126602, -0.05106192082166672, 0.00281923683360219, -0.006405265536159277, -0.041373468935489655, -0.05384930968284607, 0.046721745282411575, 0.051681485027074814, -0.05070589855313301, -0.018565025180578232, -0.045677054673433304, -0.030818257480859756, -0.03385781869292259, 0.019867392256855965, -0.006831483915448189, 0.023736465722322464, 0.04627795144915581, -0.000512582017108798, 0.01715966872870922, -0.009745093993842602, -0.038068439811468124, 0.004716905299574137, 0.04804186895489693, -0.031295664608478546, 0.03735579922795296, 0.05521272495388985, 0.07806524634361267, 0.044957440346479416, 0.007910043001174927, 0.0829954519867897, -0.024864645674824715, 0.06881726533174515, 0.05101333186030388, -0.045430682599544525, -0.04470072686672211, -0.022145560011267662, -0.0875626802444458, -0.007038999814540148, -0.02535952813923359, 0.11477504670619965, 0.10495006293058395, 0.06832212954759598, -0.04230145364999771, -0.047776926308870316, 0.0030940743163228035, -0.06424114853143692, -0.06678739935159683],
+ "VCMPSSrr":[-0.05286697670817375, -0.05911916494369507, 0.056675367057323456, -0.06793773919343948, 0.09814846515655518, 0.041642654687166214, -0.08461160212755203, -0.14771588146686554, 0.12102115154266357, 0.06432943046092987, 0.05672641098499298, -0.0456647127866745, -0.008268280886113644, 0.0247042179107666, 0.017870213836431503, -0.08042114973068237, -0.05077125504612923, -0.011627420783042908, -0.03585553169250488, 0.03322690352797508, -0.09607931971549988, -0.07662525773048401, -0.06706526130437851, 0.03082798607647419, -0.02572249062359333, 0.043230000883340836, -0.0005693803541362286, -0.01047611515969038, 0.03101719170808792, 0.01313017588108778, 0.047631196677684784, -0.021528642624616623, 0.022687872871756554, -0.0286735687404871, 0.058551233261823654, -0.02469896711409092, -0.02119249477982521, -0.0017777093453332782, -0.06512608379125595, 0.0102263567969203, 0.008810806088149548, 0.12042952328920364, 0.0676187202334404, -0.018073754385113716, -0.042899612337350845, 0.01091997791081667, -0.06490899622440338, 0.015987016260623932, 0.08553754538297653, 0.016884692013263702, -0.023713577538728714, 0.014624765142798424, -0.08895374089479446, -0.030851133167743683, 0.042891718447208405, 0.002099844627082348, 0.0005085461889393628, 0.0009427459444850683, -0.07360860705375671, 0.0850050300359726, 0.053941916674375534, 0.00514892628416419, 0.033983685076236725, -0.0076476712711155415, 0.0061981938779354095, 0.03353121131658554, 0.008679858408868313, -0.03529689088463783, -0.03271815925836563, -0.016486413776874542, 0.023610392585396767, 0.11207569390535355, -0.04843651130795479, -0.04720396548509598, -0.011846454814076424, -0.012314140796661377, -0.035791199654340744, -0.026526199653744698, 0.016978856176137924, 0.06145365908741951, 0.019320368766784668, 0.07718360424041748, 0.0065376609563827515, 0.012091560289263725, 0.030701572075486183, 0.009582092985510826, 0.017113538458943367, 0.06034085899591446, -0.014610974118113518, -0.03246346488595009, 0.027430688962340355, 0.02724442258477211, 0.07793305069208145, 0.05283437669277191, 0.049153659492731094, -0.05343648046255112, -0.06093486025929451, 0.015080166049301624, -0.029287012293934822, -0.037409812211990356],
+ "VCVTDQ":[0.004245855379849672, -0.03015829622745514, 0.009069971740245819, -0.07769636064767838, -0.04077795147895813, -0.018236225470900536, 0.04646414518356323, 0.048127543181180954, -0.01220876444131136, 0.04022730141878128, 0.09690208733081818, -0.05744042992591858, 0.07001835107803345, -0.07408732920885086, 0.031137730926275253, 0.04246073216199875, 0.07440473884344101, -0.027224060148000717, 0.09381091594696045, -0.02374918945133686, 0.01614980399608612, -0.07149708271026611, -0.08916252851486206, 0.03285010904073715, 0.06727369129657745, -0.10138396918773651, -0.04056761413812637, -0.020051531493663788, -0.03188176453113556, -0.014933810569345951, -0.009038492105901241, 0.053532831370830536, -0.02755158394575119, -0.014654046855866909, -0.023181593045592308, -0.11261989921331406, -0.018433963879942894, -0.004867326468229294, 0.10394328832626343, -0.087515689432621, -0.12473354488611221, -0.015508961863815784, 0.1438860297203064, -0.04622751846909523, -0.033066220581531525, 0.06262368708848953, 0.012019994668662548, -0.0016907225362956524, 0.08084460347890854, -0.027406804263591766, -0.007870528846979141, -0.021574024111032486, -0.06388968229293823, -0.09336783736944199, -0.0243146400898695, -0.017845356836915016, 0.004343151114881039, -0.13422751426696777, -0.006040256004780531, -0.02989860437810421, -0.008567693643271923, 0.09060811251401901, -0.07186641544103622, -0.038071293383836746, 0.05531752482056618, 0.04081142693758011, 0.011022684164345264, 0.004871131852269173, -0.0552193708717823, 0.11156249046325684, -0.010791929438710213, 0.017704792320728302, -0.0047501083463430405, 0.006654178723692894, 0.01991329900920391, -0.015986766666173935, -0.048288799822330475, -0.01896282099187374, -0.008057992905378342, 0.10132838785648346, -0.004038859624415636, -0.023303208872675896, 0.12072854489088058, -0.024729041382670403, 0.08270460367202759, -0.007600207347422838, 0.022413162514567375, 0.01799275167286396, -0.09008372575044632, 0.014430509880185127, 0.07218898832798004, -0.00801550131291151, 0.11455310881137848, 0.030419575050473213, 0.017057383432984352, 0.003432401455938816, 0.00010097558697452769, -0.04314717277884483, -0.029833868145942688, 0.004762229043990374],
+ "VCVTPD":[-0.0024576953146606684, -0.030297039076685905, 0.07174867391586304, 0.08244423568248749, 0.011295023374259472, -0.022077886387705803, 0.08046112954616547, -0.0534721240401268, 0.027119912207126617, 0.08661066740751266, -0.029411032795906067, -0.059659309685230255, 0.025455566123127937, -0.06466207653284073, -0.013110353611409664, -0.0486188605427742, 0.035145048052072525, -0.057537779211997986, -0.012229654006659985, -0.034242790192365646, -0.02254350297152996, -0.08115661144256592, 0.04841015487909317, -0.09203741699457169, 0.04091886430978775, 0.031181951984763145, -0.03174864500761032, -0.07050638645887375, -0.02334250696003437, -0.03756202757358551, -0.008608071133494377, -0.0600312240421772, -0.018619762733578682, -0.008211322128772736, -0.05904344469308853, 0.023742666468024254, -0.02689148113131523, -0.06264576315879822, 0.03753621131181717, -0.053104087710380554, 0.11105204373598099, -0.07220043241977692, 0.016805484890937805, -0.05878894403576851, -0.03234580531716347, 0.056192923337221146, 0.051644399762153625, 0.059036776423454285, 0.009243374690413475, 0.034276340156793594, -0.038497064262628555, 0.01959306001663208, -0.060762859880924225, 0.06628906726837158, 0.0650840774178505, 0.03134126588702202, 0.03429171070456505, 0.010110387578606606, 0.05837961286306381, -0.08287762105464935, 0.016488047316670418, -0.012230847030878067, -0.10585012286901474, -0.045530688017606735, 0.05315582826733589, -0.03927832096815109, 0.04332791268825531, -0.07346702367067337, -0.03246290981769562, -0.025402290746569633, -0.05995001271367073, -0.012345933355391026, 0.05822839215397835, 0.06426826864480972, 0.029756618663668633, -0.0608564130961895, -0.01303837075829506, -0.09326320886611938, 0.028857087716460228, 0.03173235058784485, -0.06314215064048767, -0.049990132451057434, -0.04057326540350914, -0.07804084569215775, -0.047138512134552, 0.08653920143842697, -0.07614272087812424, -0.02985290065407753, -0.02962016500532627, 0.024852339178323746, -0.03711147978901863, 0.06991991400718689, -0.07447478175163269, -0.022272765636444092, 0.049156107008457184, 0.10732683539390564, 0.04269620031118393, -0.04941864311695099, -0.03213038668036461, -0.006613553036004305],
+ "VCVTPS":[0.05832907557487488, -0.03566279634833336, 0.0404873825609684, -0.04196730628609657, -0.019981369376182556, 0.04407642409205437, -0.031120015308260918, 0.03673848882317543, 0.008933166041970253, -0.04848392307758331, -0.09691484272480011, -0.09117180109024048, -0.023142581805586815, -0.0807674303650856, 0.019270319491624832, 0.019995559006929398, -0.02757376804947853, -0.05244259536266327, -0.05460978299379349, 0.055136747658252716, 0.08390767872333527, 0.04992693290114403, 0.05577420815825462, -0.01113984826952219, 0.027180148288607597, 0.009046979248523712, 0.003292165696620941, -0.06298132240772247, -0.04144289717078209, -0.0048399693332612514, 0.002292498480528593, -0.01312890462577343, 0.09558562189340591, -0.05028780922293663, 0.045572251081466675, 0.01670045778155327, 0.02747342362999916, -0.07154712826013565, 0.0549965426325798, -0.0028032315894961357, -0.04092828556895256, 0.012424556538462639, -0.005059416871517897, 0.023964589461684227, 0.003055903594940901, -0.017997577786445618, 0.05931662768125534, -0.09264180064201355, 0.01050171535462141, 0.062012676149606705, 0.011872579343616962, 0.017648862674832344, 0.017200961709022522, -0.04034274071455002, 0.059522371739149094, 0.04764188081026077, -0.079065702855587, -0.04517153650522232, 0.09467704594135284, -0.03522113338112831, 0.06995158642530441, -0.07664281129837036, 0.04816523194313049, 0.08741363883018494, -0.006149768363684416, -0.09043937176465988, 0.03236612305045128, 9.225926623912528e-05, 0.05890617519617081, 0.015104986727237701, 0.0021712156012654305, -0.07571935653686523, -0.026218434795737267, 0.05132027342915535, -0.0025356255937367678, 0.010392718017101288, 0.039968572556972504, 0.0730377733707428, 0.007678512949496508, -0.010055228136479855, -0.08983829617500305, -0.09760192036628723, -0.028533687815070152, -0.09143342077732086, 0.08817227929830551, 0.0007553985924459994, 0.09198616445064545, -0.04212166368961334, -0.054565366357564926, -0.026054976508021355, -0.05737414211034775, 0.030915923416614532, -0.04932541400194168, -0.08327509462833405, -0.04969800263643265, -0.00396768981590867, -0.057777293026447296, -0.048392992466688156, -0.00678219273686409, 0.03691575676202774],
+ "VCVTSD":[0.021407920867204666, 0.003873088862746954, -0.08747658133506775, -0.10562358051538467, 0.07323727011680603, -0.051447078585624695, -0.029671069234609604, -0.021893108263611794, -0.03949480131268501, 0.013340321369469166, 0.012480465695261955, -0.0005453740013763309, -0.1010429859161377, -0.012205740436911583, 0.019007999449968338, 0.019469723105430603, 0.055954016745090485, 0.058415547013282776, 0.029045457020401955, -0.029577670618891716, 0.029464758932590485, -0.021058347076177597, -0.02416415698826313, -0.011387066915631294, -0.059955891221761703, 0.06068941950798035, -0.09675482660531998, 0.021160438656806946, 0.000838803593069315, -0.05746769160032272, -0.05516887083649635, -0.032974906265735626, 0.045697689056396484, 0.011067225597798824, 0.026453828439116478, 0.02234325371682644, -0.08045992255210876, 0.014688944444060326, -0.003566134488210082, -0.009193954057991505, 0.05943644791841507, 0.008603760972619057, 0.009939217008650303, 0.036553021520376205, 0.014886083081364632, -0.02378874458372593, 0.022002534940838814, -0.06216466426849365, -0.10865166038274765, 0.002725522965192795, 0.018797939643263817, 0.013995557092130184, 0.006338523235172033, -0.0223090723156929, 0.11785130202770233, 0.015040512196719646, 0.04204375296831131, -0.03378304839134216, -0.09183856844902039, -0.03726125508546829, 0.1106727123260498, 0.09881988167762756, 0.01929650828242302, 0.03429553657770157, -0.06937389820814133, 0.06326764076948166, 0.0486985519528389, 0.044679924845695496, 0.014874507673084736, 0.0837000235915184, -0.06894388049840927, 0.04391780495643616, 0.013705556280910969, -0.036759715527296066, -0.07870090007781982, 0.0170388575643301, -0.11622152477502823, 0.030375566333532333, 0.02105272002518177, -0.0012521956814453006, 0.07708732038736343, 0.03490519896149635, 0.00529160350561142, 0.001206801738590002, 0.020993974059820175, -0.023521749302744865, -0.006196025758981705, 0.065242700278759, 0.007292581722140312, -0.033287134021520615, -0.006848929449915886, -0.03994883969426155, 0.08959052711725235, -0.01664195954799652, -0.03861558437347412, -0.048963043838739395, -0.012864498421549797, -0.024087991565465927, -0.0711820125579834, -0.012347188778221607],
+ "VCVTSI":[-0.04152202978730202, -0.05440806224942207, -1.7791357095120475e-05, -0.044322870671749115, -0.007389996200799942, -0.02568613365292549, -0.006130036432296038, -0.13409067690372467, 0.02604622207581997, 0.06486883014440536, -0.017631443217396736, -0.023382749408483505, -0.012085934169590473, -0.02074406109750271, 0.02722989022731781, -0.04742080718278885, 0.018293844535946846, -0.005694975610822439, -0.04904170706868172, -0.09792914986610413, 0.03197312727570534, -0.10244961082935333, -0.03847786784172058, 0.05030100792646408, -0.015920093283057213, 0.05325692147016525, -0.050343047827482224, -0.08449625968933105, 0.07650759816169739, 0.09765876084566116, -0.04284351319074631, -0.04167690873146057, -0.049017392098903656, 0.056746382266283035, -0.046815916895866394, 0.016705172136425972, -0.007257959805428982, 0.031026912853121758, 0.01315055601298809, 0.045997254550457, -0.04120532423257828, 0.02972765825688839, -0.04359853267669678, 0.1051928699016571, 0.015921778976917267, 0.06421662122011185, -0.08979739993810654, -0.044533900916576385, -0.05507364496588707, -0.016561446711421013, -0.015696635469794273, 0.0064126369543373585, 0.0357162207365036, 0.021056978031992912, 0.0245926845818758, -0.0009384527802467346, -0.030782343819737434, -0.01193005871027708, -0.03460824489593506, -0.004203561693429947, -0.04484878480434418, 0.015462962910532951, 0.0074854884296655655, 0.020203037187457085, -0.043845035135746, 0.09241438657045364, -0.032495349645614624, 0.04892207309603691, 0.007725081872195005, -0.012227409519255161, -0.003621065989136696, 0.0665321871638298, -0.08427248150110245, 0.004258883651345968, 0.015472610481083393, -0.06158404052257538, -0.11537716537714005, 0.0031455587595701218, -0.019907202571630478, 0.016748623922467232, 0.1153014525771141, 0.041076045483350754, 0.06028886139392853, 0.02925325557589531, 0.061199165880680084, 0.017551712691783905, -0.030126720666885376, 0.05222158879041672, 0.07257376611232758, -0.09914363920688629, -0.016348475590348244, 0.007237728219479322, 0.08026789873838425, 0.04629247263073921, -0.019656531512737274, -0.020883357152342796, -0.06370705366134644, 0.036790091544389725, -0.06798699498176575, -0.017270207405090332],
+ "VCVTSS":[0.0343359112739563, -0.018084656447172165, -0.04113861545920372, 0.05197407677769661, 0.008744141086935997, -0.006872635800391436, -0.034942783415317535, -0.11117906123399734, -0.04970237985253334, -0.051853206008672714, -0.000309262570226565, -0.027678970247507095, -0.07929159700870514, -0.09157293289899826, -0.018248585984110832, -0.026396721601486206, 0.03521181643009186, -0.06460869312286377, 0.07342532277107239, -0.02455609291791916, 0.009903153404593468, -0.03998967260122299, -0.022230640053749084, 0.027173304930329323, -0.09047595411539078, 0.015573428012430668, -0.0037342337891459465, 0.026276173070073128, 0.017657743766903877, 0.05874647572636604, -0.0378001406788826, 0.0002396332856733352, 0.04151524603366852, 0.013374026864767075, 0.03187571093440056, -0.027115585282444954, 0.006175370886921883, 0.014047371223568916, 0.09231989830732346, -0.04228220134973526, -0.007400237489491701, -0.022234639152884483, -0.08866560459136963, -0.01043891441076994, 0.09010345488786697, 0.08208177983760834, -0.08721600472927094, -0.032271966338157654, -0.029677726328372955, -0.013394122011959553, 0.1352560967206955, -0.05697223171591759, -0.05483144149184227, -0.07512089610099792, 0.01836327463388443, 0.01669727824628353, 0.003734645200893283, 0.0018824998987838626, -0.07355985045433044, -0.025533821433782578, 0.007133378181606531, 0.08218488097190857, 0.03372465819120407, 0.04961785301566124, -0.04046148806810379, 0.07110364735126495, 0.021299919113516808, 0.011438971385359764, -0.00042734353337436914, 0.02494914084672928, 0.009932944551110268, -0.03189314529299736, 0.02655050717294216, -0.033998262137174606, -0.008339609019458294, 0.018716782331466675, -0.12229897081851959, 0.011280878446996212, -0.04434102773666382, -0.011062657460570335, 0.05717604234814644, 0.05323131009936333, -0.0053999111987650394, -0.00432461965829134, 0.089703269302845, 0.04124249145388603, 0.07155507057905197, 0.059728801250457764, 0.01909434050321579, -0.02027786336839199, -0.004064565058797598, -0.035153161734342575, 0.0404604971408844, -0.031548645347356796, -0.07984627783298492, 0.09458824247121811, 0.029272813349962234, -0.0148412911221385, -0.057469677180051804, -0.03536106273531914],
+ "VCVTTPD":[-0.026998812332749367, 0.00860102940350771, -0.013765094801783562, -0.015941262245178223, 0.011023062281310558, 0.0032523220870643854, 0.010325166396796703, -0.061228763312101364, 0.031892288476228714, -0.03859933838248253, -0.02137034200131893, -0.06299158930778503, -0.044856153428554535, -0.012926327995955944, -0.01444592047482729, -0.04177025333046913, 0.014397312887012959, -0.01125901099294424, 0.03559969365596771, -0.046520914882421494, -0.025026164948940277, 0.04137931764125824, -0.07067468017339706, 0.03876736760139465, -0.03737490251660347, 0.030238743871450424, -0.048918966203927994, -0.00751896807923913, 0.00510533107444644, -0.026526233181357384, -0.045660991221666336, 0.0552496537566185, -0.045966412872076035, -0.04238284006714821, 0.08586759120225906, -0.03515269607305527, -0.00865213293582201, -0.0031872615218162537, 0.016085077077150345, -0.058605559170246124, 0.0027376473881304264, 0.029313283041119576, -0.041612476110458374, -0.06091761961579323, -0.02595365047454834, 0.02158774621784687, -0.07751953601837158, 0.017500698566436768, 0.036191754043102264, -0.0031531855929642916, 0.10042603313922882, -0.046771612018346786, -0.04945908486843109, -0.10926692187786102, -0.018360693007707596, -0.0268069077283144, -0.009695542976260185, -0.0355309322476387, 0.07163740694522858, -0.0562119334936142, 0.09004946053028107, -0.05774814262986183, 0.0990174189209938, -0.004084683023393154, 0.0020148081239312887, 0.03702573478221893, 0.035216543823480606, 0.028203032910823822, -0.04142158105969429, -0.028023920953273773, -0.026657825335860252, -0.041107550263404846, -0.022003790363669395, 0.05124451965093613, 0.04619016870856285, 0.0293909702450037, 0.0020695116836577654, -0.010182967409491539, -0.01567251980304718, -0.03587748482823372, 0.06648632138967514, -0.0746513307094574, 0.059857793152332306, 0.06285984814167023, 0.05325186252593994, -0.04810642823576927, -0.013778000138700008, 0.0022630635648965836, -0.023617370054125786, 0.08428531885147095, -0.06839123368263245, -0.004218987189233303, -0.02790178544819355, -0.034131694585084915, 0.015218906104564667, 0.018877917900681496, 0.060816194862127304, 0.059602949768304825, -0.0597088560461998, 0.006958728656172752],
+ "VCVTTPS":[0.04417352005839348, -0.05433044955134392, 0.010037774220108986, -0.059178076684474945, -0.03916042298078537, 0.0946190133690834, -0.03341205418109894, -0.049757182598114014, -0.014923841692507267, -0.019856344908475876, -0.01971614733338356, 0.03843538835644722, -0.09284020960330963, -0.07348150759935379, 0.0365581251680851, -0.08135067671537399, 0.02869105525314808, -0.030026011168956757, -0.02639497071504593, 0.008036800660192966, 0.051133763045072556, 0.08019469678401947, -0.03918886557221413, 0.012557236477732658, -0.020274406298995018, 0.09455431997776031, -0.041552163660526276, -0.017198337242007256, 0.05431370437145233, 0.05337933078408241, 0.06081708148121834, -0.0044557140208780766, -0.11784722656011581, 0.09516032040119171, -0.10190029442310333, -0.12266130745410919, 0.049515340477228165, -0.01950552873313427, 0.07184010744094849, 0.028993159532546997, 0.03262782096862793, -0.040063049644231796, -0.035506151616573334, 0.028916219249367714, -0.02856987901031971, -0.007109605707228184, -0.009457573294639587, 0.09294772148132324, -0.019191935658454895, 0.06329832226037979, 0.05347820371389389, -0.02477710321545601, 0.01396176777780056, 0.024341315031051636, -0.0321446992456913, -0.0283075999468565, 0.03146793693304062, -0.08853498846292496, 0.03429657593369484, -0.022703519091010094, 0.023867735639214516, -0.026534032076597214, 0.056911081075668335, -0.001412683050148189, 0.06606000661849976, 0.044141653925180435, -0.004115391988307238, -0.000993365072645247, -0.00948572438210249, -0.033796556293964386, -0.07398006319999695, -0.05474955588579178, -0.023116502910852432, 0.004983254708349705, -0.05332837253808975, 0.00014826713595539331, 0.025052744895219803, -0.012681378051638603, 0.007658777758479118, -0.039904166013002396, 0.091041699051857, -0.015025119297206402, 0.007235506549477577, -0.023021919652819633, 0.062263935804367065, 0.0007750100921839476, 0.07610553503036499, 0.016498062759637833, -0.03183146193623543, -0.04050217941403389, 0.08900174498558044, 0.03420797362923622, -0.0009511201060377061, -0.06027552857995033, -0.002384224906563759, 0.08481979370117188, 0.08173847198486328, 0.04630386456847191, 0.009234453551471233, 0.02743942104279995],
+ "VCVTTSD":[0.02132519893348217, -0.07642221450805664, -0.005861372221261263, -0.019359754398465157, -0.09350904077291489, 0.0031202908139675856, -0.004622699227184057, -0.00814446434378624, 0.007855044677853584, -0.09045426547527313, -0.1345653384923935, -0.004128165077418089, 0.05875461921095848, 0.06969865411520004, 0.012509242631494999, 0.058296285569667816, -0.008731799200177193, 0.028029611334204674, -0.02113525941967964, -0.08844214677810669, -0.061478059738874435, -0.04578122869133949, -0.029308514669537544, 0.07600777596235275, 0.01307368278503418, -0.044004131108522415, 0.022608142346143723, 0.04431057721376419, 0.040575478225946426, -0.04464389383792877, -0.07900382578372955, 0.09730721265077591, 0.00573556637391448, 0.028173329308629036, -0.05295693874359131, 0.005574342329055071, 0.0018709753639996052, -0.024219853803515434, 0.05232292413711548, 0.006288046017289162, 0.024494880810379982, 0.07101307064294815, -0.0353439636528492, 0.02041754126548767, 0.012979403138160706, 0.020475303754210472, 0.0019481605850160122, -0.003160037798807025, -0.011233821511268616, 0.05392858013510704, -0.043261460959911346, -0.016570014879107475, 0.05105886980891228, -0.06980493664741516, -0.06959705799818039, 0.03141436725854874, 0.08804657310247421, -0.07692442089319229, -0.008280107751488686, 0.013174825347959995, -0.005360396578907967, 0.013097021728754044, -0.03687673807144165, 0.04580698907375336, -0.029271187260746956, 0.043531958013772964, -0.040305495262145996, 0.04209389165043831, 0.022163068875670433, -0.008334388025105, 0.021595584228634834, 0.03563408926129341, -0.011443168856203556, 0.11613813042640686, 0.010569998063147068, -0.013579749502241611, -0.09785451740026474, 0.05970228090882301, -0.002584739588201046, 0.002362398896366358, 0.08701106905937195, 0.022102639079093933, -0.02526143379509449, 0.02478923089802265, 0.07020367681980133, -0.05106896534562111, -0.04496298357844353, 0.015022870153188705, 0.03699621185660362, -0.03197094425559044, 0.03604474663734436, 0.0016140007646754384, 0.023508140817284584, -0.03835529461503029, 0.003445576410740614, -0.07786215841770172, 0.06440610438585281, 0.04338797554373741, -0.016244348138570786, -0.08434348553419113],
+ "VCVTTSS":[-0.00799552071839571, -0.022169725969433784, -0.06744067370891571, -0.008163541555404663, 0.0013328150380402803, 0.04660089686512947, -0.05288092792034149, -0.005271900910884142, -0.024208081886172295, -0.018980318680405617, -0.0009047812200151384, -0.046039361506700516, 0.011207844130694866, 0.028911488130688667, 0.0003066313802264631, 0.004702720791101456, -0.03633632883429527, -0.02108822949230671, -0.030944110825657845, -0.09547583013772964, -0.024702079594135284, 0.10916417837142944, -0.01961878314614296, 0.059437427669763565, -0.05097262188792229, 0.06480559706687927, 0.00023772184795234352, 0.054853104054927826, 0.05517743155360222, -0.024775752797722816, 0.037751950323581696, -0.021351411938667297, 0.011356206610798836, 0.011117380112409592, -0.021891692653298378, -0.00378127652220428, -0.0316774882376194, -0.07130365818738937, 0.12527859210968018, 0.007353378459811211, 0.007257283199578524, 0.017742246389389038, 0.047897424548864365, 0.10674435645341873, 0.016085658222436905, 0.03238565847277641, -0.0889001339673996, 0.026249360293149948, 0.021200111135840416, -0.04148469120264053, -0.052845511585474014, -0.005487870424985886, 0.02045392245054245, 0.04272226244211197, 0.04665074869990349, 0.039036914706230164, -0.008531913161277771, 0.0019654773641377687, -0.03138851746916771, -0.015286767855286598, -0.04215375706553459, 0.06422152370214462, -0.020266102626919746, 0.03257812559604645, -0.032877352088689804, 0.03442194685339928, 0.0005782084772363305, 0.024174829944968224, -0.06682924181222916, -0.008746437728404999, -0.005489606875926256, 0.011341236531734467, -0.12075794488191605, -0.014967949129641056, -0.0449092760682106, -0.015468564815819263, -0.035041291266679764, 0.028068793937563896, -0.025417542085051537, 0.03539213538169861, 0.08075109869241714, -0.010386322624981403, 0.029821615666151047, 0.0909612774848938, 0.06193031370639801, -0.0028755497187376022, 0.0019109114073216915, 0.05897248163819313, 0.06352972239255905, -0.0777600109577179, 0.03215446695685387, -0.0439935028553009, 0.017171883955597878, 0.01894235797226429, -0.025957519188523293, -0.037852942943573, -0.017743438482284546, 0.006338894832879305, -0.014673322439193726, 0.03155657649040222],
+ "VDIVPDYrm":[-0.02875501476228237, 0.053918011486530304, 0.02239803411066532, -0.03431876376271248, -0.04229786992073059, -0.04515673965215683, -0.030651673674583435, -0.004203001968562603, 0.023156780749559402, -0.051638949662446976, -0.017681917175650597, 0.08170259743928909, -0.053417738527059555, -0.001784167718142271, -0.021529508754611015, -0.008965475484728813, -0.042718932032585144, -0.016809875145554543, 0.024523621425032616, -0.09543708711862564, -0.05125020071864128, 0.0051763844676315784, 0.032739728689193726, -0.011627860367298126, 0.09850185364484787, -0.006853803526610136, 0.055397603660821915, -0.0213323924690485, -0.029452458024024963, 0.018613526597619057, -0.10661930590867996, -0.04239882901310921, 0.024676358327269554, -0.01620662212371826, 0.042855724692344666, 0.03837829455733299, -0.028918486088514328, 0.07823198288679123, 0.018883926793932915, -0.05547213926911354, 0.029805436730384827, -0.03044341318309307, -0.08735717833042145, 0.06837118417024612, -0.055805206298828125, -0.012006795033812523, 0.09363141655921936, 0.019633332267403603, -0.026119129732251167, 0.029425324872136116, -0.07937160134315491, 0.0767664983868599, 0.054375819861888885, 0.020664826035499573, -0.018151376396417618, -0.0011196405394002795, -0.011336867697536945, -0.020056281238794327, -0.03632158041000366, -0.048382122069597244, 0.1195717379450798, -0.05618894100189209, 0.007086164318025112, -0.013935676775872707, 0.0840369313955307, 0.0012936501298099756, -0.05525718629360199, -0.016100328415632248, 0.0067135063000023365, 0.08438106626272202, 0.05619005858898163, -0.051648225635290146, -0.04157135635614395, -0.051749929785728455, 0.01683996245265007, 0.09124115854501724, -0.018953664228320122, 0.025501471012830734, -0.05550232157111168, -0.020143477246165276, 0.03125602379441261, 0.06994558870792389, 0.11296728253364563, -0.03209918364882469, 0.006106166634708643, -0.11541140824556351, -0.06308186054229736, -0.04199397563934326, 0.05252833291888237, -0.02946268767118454, -0.07700025290250778, 0.006279171444475651, -0.05447016656398773, -0.03152149170637131, 0.031026242300868034, -0.04533787816762924, -0.09264203906059265, -0.08972684293985367, -0.11974215507507324, 0.024884013459086418],
+ "VDIVPDYrr":[-0.02905203588306904, 0.045824408531188965, -0.06144172325730324, -0.017916716635227203, 0.10827912390232086, 0.07749593257904053, 0.021076088771224022, -0.012586584314703941, -0.06175331398844719, 0.05215737596154213, 0.024557629600167274, -0.02792343683540821, 0.0008798182243481278, 0.011254880577325821, 0.04037678241729736, -0.0024700313806533813, -0.03125018998980522, 0.05763261392712593, 0.03684103488922119, -0.011630834080278873, 0.09467079490423203, 0.04520568624138832, 0.05679120495915413, -0.03854954242706299, -0.017622139304876328, -0.1044214591383934, 0.023744117468595505, -0.07566163688898087, -0.029857242479920387, 0.029341841116547585, -0.02979598566889763, -0.08479506522417068, -0.03433284908533096, -0.050460055470466614, -0.018381694331765175, 0.04353520646691322, -0.01079363003373146, 0.004427438136190176, 0.002554800361394882, 0.04250504449009895, -0.0190444216132164, -0.04563998803496361, -0.04464828968048096, 0.03451806306838989, -0.05987550690770149, 0.05612944811582565, 0.029032574966549873, -0.04899459704756737, 0.013548186980187893, -0.0610799714922905, -0.05749116092920303, 0.033965278416872025, 0.06801889836788177, 0.03017001412808895, -0.01444945391267538, 0.07031352072954178, -0.030181264504790306, 0.02371552214026451, 0.050313692539930344, -0.07112543284893036, 0.01590069942176342, 0.02624553069472313, 0.03546601161360741, -0.04901456832885742, -0.0008486562874168158, 0.03299029543995857, -0.031049860641360283, 0.07312201708555222, 0.043717510998249054, 0.05827650427818298, -0.012923684902489185, -0.008035803213715553, 0.03175009414553642, 0.03063160367310047, -0.018913455307483673, 0.004933057818561792, 0.019554169848561287, -0.04537809640169144, -0.05905069038271904, 0.013145485892891884, 0.05415403097867966, -0.09799821674823761, 0.04763713851571083, -0.024222638458013535, 0.0262864138931036, -0.005929165985435247, 0.07044240087270737, -0.0034997789189219475, -0.09764015674591064, 0.007786119822412729, 0.045609522610902786, -0.00816337950527668, -0.04034231975674629, 0.049421753734350204, 0.05467228218913078, 0.032739248126745224, 0.08741573244333267, 0.058919552713632584, 0.01014210470020771, 0.022813264280557632],
+ "VDIVPDrm":[0.002957465359941125, 0.10718325525522232, 0.0007651877240277827, -0.03709043562412262, -0.04710928723216057, 0.045338526368141174, 0.003931788261979818, 0.044860124588012695, -0.09198794513940811, -0.07750361412763596, 0.043114930391311646, -0.07502030581235886, 0.016234779730439186, 0.042313579469919205, -0.017755169421434402, 0.01681966707110405, 0.007938710041344166, -0.034715067595243454, 0.06322815269231796, 0.01998102106153965, 0.006793659180402756, -0.020294656977057457, 0.01759870909154415, -0.03505551069974899, -0.06140962243080139, 0.011709419079124928, -0.03633910045027733, 0.01888255588710308, 0.08481717854738235, 0.050823040306568146, -0.040906958281993866, -0.010170473717153072, -0.06955601274967194, 0.01871601492166519, 0.051626745611429214, 0.02467537298798561, 0.07205111533403397, -0.06862550228834152, 0.024447578936815262, -0.014466426335275173, -0.023055115714669228, -0.03961718827486038, 0.04145929217338562, -0.0204746276140213, -0.02125667594373226, -0.06173616275191307, 0.03932880610227585, -0.029520483687520027, 0.01097665261477232, -0.00835791602730751, -0.06312688440084457, -0.04238780960440636, -0.06777219474315643, -0.08582987636327744, 0.03385554999113083, -0.046603474766016006, 0.014256302267313004, -0.05546746775507927, 0.06463007628917694, -0.002473339671269059, 0.09818997234106064, -0.10021721571683884, -0.001708258525468409, 0.009749269112944603, 0.03320174291729927, 0.001489778165705502, -0.03247450292110443, 0.009275614283978939, 0.09602711349725723, -0.061547402292490005, 0.09130348265171051, -0.034342747181653976, -0.007410951424390078, 0.00663056829944253, -0.10396318882703781, 0.025939447805285454, 0.002936331555247307, 0.058575913310050964, 0.02714417688548565, -0.026820046827197075, -0.07169464975595474, 0.025876909494400024, 0.016805602237582207, 0.09158113598823547, -0.03292803093791008, -0.06472013145685196, 0.03662664070725441, -0.0645386353135109, -0.013897820375859737, 0.07224689424037933, 0.07332152128219604, -0.05210615321993828, 0.07134765386581421, 0.10946743190288544, -0.062261324375867844, -0.06358162313699722, -0.001964966068044305, 0.08118537068367004, 0.014921269379556179, 0.04699384421110153],
+ "VDIVPDrr":[0.07409421354532242, 0.01005645003169775, 0.04049760103225708, -0.05308123677968979, 0.022094663232564926, -0.006507030222564936, -0.00992423202842474, 0.018803823739290237, 0.03920344263315201, -0.022893980145454407, 0.0014838454080745578, -0.010498255491256714, -0.03389234468340874, 0.012664427049458027, 0.019361766055226326, -0.021906336769461632, 0.05373702570796013, -0.08804254978895187, 0.07746616005897522, -0.02832232043147087, -0.04079791530966759, 0.024139324203133583, -0.035520073026418686, 0.00271034543402493, -0.025681016966700554, 0.018030336126685143, 0.011285862885415554, 0.008809843100607395, -0.013182527385652065, -0.004157970659434795, -0.0321815088391304, 4.9090860557043925e-05, -0.025618519634008408, -0.0073208073154091835, -0.011323044076561928, -0.047894492745399475, -0.008215658366680145, 0.010452233254909515, 0.052861593663692474, -0.011066969484090805, 0.07695671916007996, 0.05336153134703636, 0.027981607243418694, 0.012100466527044773, -0.014749114401638508, -0.0829288586974144, -0.11283142864704132, 0.02922649309039116, -0.049475789070129395, 0.09734968096017838, -0.042001038789749146, 0.0023466679267585278, 0.015504000708460808, -0.03972196951508522, -0.014562025666236877, 0.0007785183261148632, 0.08567161113023758, -0.05708036944270134, 0.06928957998752594, -0.014428411610424519, 0.04379688948392868, -0.0329521968960762, 0.05700546130537987, -0.044246964156627655, -0.02790992334485054, -0.0672987625002861, -0.01066729798913002, 0.003979579079896212, 0.0495711974799633, 0.022306976839900017, 0.00503573240712285, 0.015498279593884945, 0.007570174057036638, 0.03677478805184364, -0.08060171455144882, -0.0011812183074653149, 0.04875022917985916, 0.009902269579470158, 0.0005837195203639567, 0.034152209758758545, 0.027890145778656006, -0.01828361488878727, 0.017251256853342056, 0.0374746210873127, 0.0631168857216835, -0.0019670710898935795, -0.04666249826550484, 0.02641649730503559, 0.0009703590185381472, -0.01738864928483963, 0.027191493660211563, -0.09302258491516113, 0.07883097231388092, 0.05352430418133736, -0.02316034957766533, -0.08632846921682358, 0.06223684921860695, 0.045367322862148285, 0.06680615991353989, -0.017258498817682266],
+ "VDIVSDrm":[0.02754290960729122, 0.046913597732782364, 0.020194506272673607, -0.01589958555996418, 0.05984115973114967, 0.01584700681269169, -0.05311870574951172, 0.010380392894148827, 0.11179763078689575, 0.05831269547343254, 0.03349500894546509, 0.025849727913737297, -0.005038582254201174, -0.047312259674072266, -0.019302519038319588, -0.0439051017165184, 0.05983152613043785, 0.08034388720989227, -0.0038584063295274973, -0.0669281929731369, -0.03688132017850876, -0.024394674226641655, -0.006863629911094904, 0.023403754457831383, -0.029860729351639748, -0.0017097019590437412, -0.0637521892786026, 0.021529437974095345, 0.006219644099473953, 0.038192763924598694, -0.1287040263414383, 0.017787950113415718, -0.12215173244476318, -0.016948625445365906, -0.05421670898795128, 0.01225969661027193, 0.035034555941820145, -0.012719536200165749, -0.0018281732918694615, -0.017919186502695084, -0.01351776160299778, -0.022618455812335014, 0.05508445203304291, -0.09133222699165344, -0.05223294720053673, 0.10296110063791275, -0.10782864689826965, 0.052040599286556244, -0.014092140831053257, 0.015766993165016174, -0.02679344452917576, 0.035295650362968445, -0.05724899843335152, 0.009113148786127567, -0.015808457508683205, -0.09174691140651703, 0.08602466434240341, -0.01029064878821373, -0.04085688292980194, -0.04680847376585007, -0.08860649913549423, -0.044057585299015045, -0.00013500552449841052, 0.05067777261137962, -0.03095267340540886, -0.004056335426867008, -0.04490850865840912, 0.00446497555822134, -0.01440904475748539, -0.0538630373775959, -0.004225521814078093, -0.1191350445151329, 0.03742265701293945, -0.08366767317056656, 0.05590641126036644, 0.02796892821788788, -0.0667186751961708, -0.03693343698978424, -0.10692821443080902, -0.014496960677206516, -0.023977180942893028, -0.006732736714184284, -0.0070362091064453125, -0.020195050165057182, 0.08350537717342377, -0.014594933949410915, -0.10384867340326309, 0.06407474726438522, 0.06786854565143585, -0.08579105138778687, -0.10549882054328918, 0.00040475878631696105, 0.08757093548774719, 0.0024221353232860565, 0.048200823366642, -0.05847138911485672, 0.006727118045091629, -0.024900076910853386, 0.027535680681467056, 0.024502350017428398],
+ "VDIVSDrr":[0.033057793974876404, 0.01740080676972866, 0.004374997224658728, -0.06918594986200333, -0.05223295837640762, -0.008262641727924347, -0.01365920715034008, -0.023709088563919067, -0.030596913769841194, 0.03471287712454796, -0.015353906899690628, 0.005590957123786211, -0.02072257734835148, -0.017238860949873924, 0.06522493064403534, -0.0228598453104496, 0.06835480779409409, 0.08728928864002228, 0.0649486631155014, -0.08009551465511322, 0.014722339808940887, -0.1009460836648941, 0.0060730003751814365, 0.07741199433803558, -0.0810685083270073, 0.053170908242464066, 0.013745534233748913, 0.033960968255996704, -0.01442723348736763, 0.020734433084726334, -0.024961385875940323, -0.12090209871530533, 0.10436786711215973, -0.03638544678688049, -0.02224108763039112, -0.014456343837082386, -0.02537675015628338, 0.014968744479119778, 0.03233855590224266, 0.06133192032575607, 0.0715906098484993, -0.04156726598739624, -0.07027226686477661, -0.09315328299999237, 0.0036696908064186573, 0.09446799755096436, -0.05911054089665413, -0.0639633908867836, 0.0035526175051927567, -0.01840147003531456, 0.017238955944776535, -0.04776165261864662, 0.019595462828874588, -0.023140260949730873, 0.0908542051911354, 0.003252799389883876, -0.04551466181874275, -0.04728708043694496, 0.04002875089645386, 0.013691676780581474, 0.007031423505395651, 0.05190553888678551, 0.03856021538376808, 0.04759792611002922, -0.03775431215763092, 0.10313277691602707, 0.07461528480052948, 0.02311284840106964, 0.09452183544635773, -0.025527717545628548, 0.04449873045086861, 0.054331518709659576, 0.024403797462582588, 0.03999962657690048, -0.03797460347414017, -0.03523288294672966, -0.107705257833004, -0.03481373190879822, 0.007361084688454866, 0.019583160057663918, 0.04480549320578575, 0.006019355729222298, 0.06903984397649765, -0.0033067618496716022, 0.0798073336482048, -0.06972440332174301, -0.10650816559791565, 0.09770997613668442, 0.04982701316475868, -0.09234213829040527, -0.012815417721867561, -0.07957231253385544, 0.0637761801481247, -0.03886355459690094, -0.009634658694267273, -0.012288139201700687, -0.07968772947788239, -0.06943965703248978, -0.049826279282569885, -0.01896086521446705],
+ "VDIVSSrm":[-0.01559157483279705, -0.0018606598023325205, -0.012331376783549786, 0.006750561762601137, -0.05548211187124252, 0.020514240488409996, 0.09536153823137283, -0.029814088717103004, 0.08911141753196716, 0.013230543583631516, 0.07052550464868546, -0.04944558069109917, 0.037822384387254715, 0.01379996445029974, 0.02243875339627266, -0.06677993386983871, -0.027109725400805473, -0.01848934032022953, -0.004277267958968878, 0.02496553398668766, 0.03877812251448631, -0.04700621962547302, -0.023853996768593788, 0.04071829095482826, -0.0274653360247612, -0.008138537406921387, 0.027836274355649948, 0.057899199426174164, 0.026903290301561356, 0.020906096324324608, -0.0661785826086998, -0.040956780314445496, 0.026148777455091476, -0.0050329528748989105, -0.08059390634298325, -0.0371689610183239, 0.02566736564040184, 0.01519098412245512, 0.045391712337732315, 0.007906236685812473, -0.0166259054094553, -0.0033834974747151136, 0.03238633647561073, 0.009430674836039543, 0.04080893471837044, -0.03449126332998276, 0.0575004443526268, 0.08904542028903961, -0.032956771552562714, -0.01982039399445057, 0.015599951148033142, 0.04034297168254852, 0.0601370707154274, 0.02478018030524254, 0.060223571956157684, -0.02350935898721218, -0.05521663650870323, -0.021143153309822083, 0.10445012897253036, -0.07154469192028046, 0.008059692569077015, -0.06139116734266281, 0.0058697545900940895, -0.04003319889307022, -0.00786325428634882, 0.06580152362585068, -0.005680621135979891, 0.05702568218111992, 0.04093899577856064, 0.058027006685733795, 0.14410272240638733, 0.044370803982019424, -0.032279130071401596, -0.0322224460542202, 0.00859250221401453, 0.00785304605960846, -0.009774582460522652, 0.09434075653553009, -0.025843210518360138, -0.1099126785993576, 0.11709412932395935, 0.03580981120467186, -0.015803875401616096, 0.03361811116337776, -0.03910183906555176, 0.03342230245471001, -0.009760155342519283, 0.09904123097658157, 0.001669416087679565, 0.10417166352272034, -0.053549181669950485, 0.0016212231712415814, 0.08643056452274323, 0.053326305001974106, 0.050772592425346375, -0.07753322273492813, -0.017913149669766426, -0.11166602373123169, 0.007027181796729565, -0.009095299988985062],
+ "VDIVSSrr":[-0.019596382975578308, -0.03413569554686546, 0.044642556458711624, -0.04923967272043228, 0.032576918601989746, -0.0014537209644913673, -0.014173964038491249, -0.01981179229915142, -0.03261254355311394, 0.07830452919006348, 0.048256680369377136, -0.03678144887089729, 0.005754449404776096, 0.05374245345592499, 0.018271729350090027, 0.08346258103847504, -0.026712778955698013, 0.12395978718996048, 0.06500345468521118, -0.053234830498695374, -0.06055164337158203, -0.11067788302898407, -0.05617890506982803, 0.05402353033423424, 0.03853723034262657, 0.1128816157579422, 0.01481697242707014, 0.03087652660906315, 0.022805912420153618, -0.052757106721401215, -0.014060868881642818, -0.07251902669668198, -0.05561559274792671, -0.04525158554315567, 0.05612673982977867, -0.014219717122614384, -0.009290691465139389, 0.12066015601158142, -0.03352495655417442, -0.02440101094543934, 0.05566306784749031, 0.023394176736474037, 0.02831341326236725, 0.054559361189603806, 0.05704410374164581, 0.09314145892858505, -0.060582373291254044, -0.044089898467063904, 0.10310451686382294, -0.05696149915456772, -0.004334792494773865, 0.09583607316017151, -0.017334649339318275, -0.014699406921863556, 0.058629900217056274, -0.06238631531596184, 0.02380826696753502, -0.036372873932123184, -0.02687673456966877, 0.0006698333309032023, 0.051074981689453125, 0.04051605239510536, 0.06395451724529266, 0.0008465707651339471, -0.053849492222070694, 0.1076970249414444, -0.005022561177611351, -0.006980357225984335, -0.018214082345366478, -0.04674797132611275, -0.05696124956011772, 0.07312565296888351, -0.041987720876932144, 0.0003772879426833242, 0.0018345926655456424, -0.07309181243181229, -0.0824364721775055, -0.030341168865561485, -0.02835058607161045, -0.023230846971273422, 0.05480055883526802, 0.029938071966171265, 0.02273430861532688, 0.040131304413080215, -0.10027376562356949, 0.001927408971823752, 0.03235674649477005, 0.04503032937645912, -0.031024988740682602, -0.01398671604692936, -0.05242590606212616, -0.054845936596393585, 0.06299564242362976, 0.08876758813858032, -0.026391683146357536, 0.00654535973444581, -0.04297294840216637, 0.026808664202690125, -0.040505003184080124, -0.04726669564843178],
+ "VEXTRACTF":[0.030665064230561256, 0.00838498119264841, 0.013318326324224472, 0.004469908773899078, -0.05705508589744568, -0.08984687924385071, -0.055825334042310715, -0.04489089548587799, 0.0038616121746599674, -0.009382044896483421, -0.015526586212217808, -0.01228856947273016, -0.06707147508859634, 0.040682870894670486, -0.12348070740699768, 0.014992114156484604, 0.006479936186224222, -0.026112306863069534, -0.021162180230021477, 0.02463710866868496, 0.090241439640522, -0.02347617782652378, -0.050710488110780716, 0.0002750144340097904, 0.017695317044854164, 0.04173433780670166, 0.115623340010643, 8.872679609339684e-05, 0.0233776792883873, -0.06292363256216049, -0.06538628786802292, -0.03825466334819794, 0.019833380356431007, 0.06254899501800537, 0.06907110661268234, -0.02677314542233944, -0.005978569388389587, -0.02822749875485897, -0.01559886522591114, -0.01616612635552883, -0.03120434284210205, -0.06631501019001007, -0.011186736635863781, -0.0029348526149988174, -0.04318314045667648, 0.09972048550844193, -0.01894921250641346, -0.01645016111433506, 0.011608614586293697, 0.08529826253652573, 0.054373085498809814, -0.015857188031077385, -0.026003453880548477, 0.01014382392168045, -0.004030190873891115, 0.03837226331233978, -0.005592509638518095, -0.0073551032692193985, 0.029950421303510666, 0.019467825070023537, -0.07331174612045288, -0.12745274603366852, 0.0005438101361505687, 0.006245764903724194, 0.034453704953193665, -0.009159253910183907, -0.06558636575937271, -0.09128598123788834, 0.025246743112802505, -0.056019484996795654, 0.032990310341119766, 0.03302633762359619, -0.045185644179582596, -0.037429917603731155, 0.06758367270231247, 0.01750217005610466, 0.050579532980918884, 0.00011205604096176103, -0.019305169582366943, 0.01041248720139265, 0.05871838703751564, -0.08268342167139053, 0.04923607409000397, 0.017459897324442863, 0.03002280369400978, -0.0075895353220403194, 0.06412161141633987, -0.005761970300227404, -0.07566534727811813, -0.0018597927410155535, 0.0028133317828178406, -0.020127661526203156, 0.035507310181856155, -0.02226676046848297, -0.027638494968414307, 0.019960137084126472, -0.03130296245217323, 0.03218457102775574, -0.08686088025569916, -0.019547300413250923],
+ "VEXTRACTI":[0.040270913392305374, -0.04995296150445938, -0.021979814395308495, 0.018291810527443886, -0.06336329877376556, 0.04991930350661278, 0.06381544470787048, -0.058397628366947174, -0.024644067510962486, -0.05639815703034401, -0.019131775945425034, -0.005615842994302511, -0.05500851199030876, -0.03144235908985138, -0.0872994139790535, 0.033212870359420776, 0.04542485624551773, -0.09890357404947281, -0.028361301869153976, -0.023285401985049248, -0.026860440149903297, 0.03030923753976822, 0.008210978470742702, 0.0895971953868866, 0.016507916152477264, -0.0039588687941432, -0.05883146822452545, 0.10186974704265594, -0.01953885890543461, -0.017188863828778267, -0.06031127646565437, 0.1018536239862442, 0.018243912607431412, -0.061588648706674576, 0.04416021704673767, -0.1154794842004776, -0.008807224221527576, 0.05260160192847252, 0.011961464770138264, 0.06630504131317139, -0.023841263726353645, -0.02215147763490677, 0.03488743677735329, -0.029810598120093346, 0.01092605572193861, 0.031876660883426666, -0.034950386732816696, 0.08793479949235916, -0.006611694116145372, -0.025908714160323143, -0.026793010532855988, -0.05348366126418114, -0.008641998283565044, 0.038458336144685745, 0.10535456240177155, 0.059766046702861786, -0.099884532392025, -0.0019205404678359628, 0.0019423904595896602, -0.01743929088115692, 0.056092679500579834, -0.08949656039476395, -0.05885414406657219, 0.0777156800031662, 0.09113375842571259, 0.09983514249324799, 0.03770576789975166, 0.005619158037006855, 0.01588200032711029, 0.09313804656267166, -0.1154002845287323, 0.009159750305116177, -0.006457040552049875, -0.04718862473964691, -0.06076336279511452, -0.06336546689271927, 0.03686181455850601, -0.021569587290287018, 0.012665004469454288, -0.017923926934599876, -0.04317161440849304, -0.0855882465839386, 0.006315912120044231, -0.021576346829533577, 0.06421657651662827, -0.004811424762010574, -0.026348862797021866, 0.006685575470328331, -0.02684553526341915, -0.05177769437432289, 0.09924404323101044, -0.032896336168050766, 0.018947573378682137, -0.005139948334544897, 0.01957283355295658, 0.020987344905734062, -0.029421022161841393, -0.011456126347184181, -0.08706926554441452, 0.04066285863518715],
+ "VEXTRACTPSmr":[0.021464772522449493, -0.007786602713167667, -0.07642216235399246, -0.08407720178365707, 0.006453249603509903, 0.02491403929889202, -0.0013157394714653492, -0.012519079260528088, 0.05188975855708122, -0.004756490234285593, 0.033174436539411545, 0.02810552343726158, -0.02596297860145569, -0.024480851367115974, 0.08908922970294952, 0.07833985984325409, -0.03391656279563904, 0.033487509936094284, 0.059147417545318604, 0.031869083642959595, 0.05356495454907417, 0.025536131113767624, 0.06263113766908646, 0.0014340105699375272, 0.009835498407483101, -0.06777279824018478, 0.038767144083976746, -0.10441077500581741, 0.007442007772624493, -0.04529371112585068, 0.04927412420511246, 0.04712508246302605, 0.025542201474308968, 0.031083494424819946, -0.09034230560064316, 0.038727112114429474, -0.017481064423918724, 0.10095394402742386, -0.009793630801141262, 0.031575847417116165, 0.009953705593943596, 0.03665364533662796, -0.029253743588924408, -0.09885495901107788, -0.018019378185272217, -0.004258654545992613, 0.0003364725271239877, -0.0759950801730156, -0.014491701498627663, -0.018582593649625778, 0.008030368946492672, 0.022010961547493935, 0.048683665692806244, -0.018865128979086876, 0.024229934439063072, 0.033351242542266846, -0.04057469591498375, -0.015027972869575024, 0.0717538446187973, 0.0637628585100174, -0.0819489061832428, -0.03206849843263626, 0.0027403386775404215, -0.029295820742845535, -0.008599216118454933, 0.05993860960006714, -0.005237915553152561, -0.03963989391922951, -0.06818792223930359, 0.03805074840784073, -0.039336297661066055, -0.005696154665201902, -0.01078709028661251, 0.09772450476884842, 0.0581558421254158, -0.09318772703409195, -0.026519371196627617, 0.0023340254556387663, 0.04727788642048836, 0.029759226366877556, -0.037816401571035385, -0.09680742025375366, -0.023994585499167442, -0.03022332675755024, 0.020932398736476898, -0.07523343712091446, 0.07722662389278412, -0.00806829147040844, -0.10153908282518387, -0.06029130890965462, 0.06215869262814522, 0.03161902353167534, -0.01318426989018917, -0.09779524058103561, 0.06552039831876755, -0.07826724648475647, -0.053603462874889374, -0.04926525801420212, 0.0367312952876091, 0.0158738624304533],
+ "VINSERTF":[0.08534613251686096, 0.024901675060391426, 0.05269612371921539, 0.00585030484944582, -0.0017291317926719785, -0.0014583817683160305, 0.057498253881931305, -0.02943105809390545, -0.08624933660030365, 0.08109931647777557, 0.022815966978669167, 0.0008162417798303068, -0.028775811195373535, 0.06802995502948761, 0.09682092070579529, -0.08626776933670044, 0.027091559022665024, -0.003607765305787325, 0.04581202566623688, 0.07490655034780502, 0.02366548962891102, 0.059200700372457504, 0.04024890437722206, -0.010004536248743534, -0.02771114744246006, 0.0464034266769886, -0.10123786330223083, -0.023475883528590202, -0.04363903030753136, 0.05386713892221451, -0.1470882147550583, -0.04866654425859451, -0.008566453121602535, -0.006099667400121689, 0.04284815117716789, 0.02997591346502304, 0.04236998409032822, -0.03162519261240959, -0.018148766830563545, 0.07972342520952225, -0.00883021391928196, 0.12373977899551392, 0.02902781032025814, 0.01224557776004076, 0.11944516003131866, 0.12966834008693695, -0.09583456069231033, -0.010711532086133957, 0.15826690196990967, -0.018566548824310303, 0.038467805832624435, 0.0058271624147892, 0.0758526548743248, -0.030926138162612915, 0.01782146841287613, 0.03187733143568039, -0.01466855313628912, 0.14197169244289398, -0.0033629757817834616, -0.010187750682234764, 0.011090272106230259, -0.005058048292994499, -0.01572483591735363, -0.07862149178981781, 0.12040182203054428, 0.014861908741295338, 0.015547445975244045, -0.03147182613611221, -0.018917713314294815, 0.043561190366744995, 0.016909433528780937, 0.026899905875325203, -0.05766383558511734, 0.02306794375181198, 0.004362279083579779, 0.052445944398641586, -0.030832476913928986, 0.0186107587069273, 0.03887008875608444, 0.02334604784846306, 0.08280348777770996, -0.013834306038916111, 0.08667817711830139, -0.07616552710533142, 0.04348638281226158, 0.04133487865328789, -0.005059308372437954, 0.0037424464244395494, 0.04048117995262146, -0.08182436227798462, 0.055926911532878876, 0.05432324856519699, -0.0043466947972774506, 0.058128878474235535, 0.04464581236243248, 0.02068459242582321, 0.061362192034721375, -0.062516950070858, -0.02630464918911457, 0.01748138852417469],
+ "VINSERTI":[0.09046315401792526, 0.015515458770096302, 0.04200809448957443, -0.046130646020174026, -0.045843131840229034, 0.003743539797142148, 0.025380345061421394, -0.021319231018424034, 0.03850293532013893, 0.006397924851626158, -0.06982530653476715, -0.016159888356924057, -0.09164588898420334, 0.1245846077799797, -0.05104857683181763, -0.011446121148765087, -0.06936608999967575, -0.02683587372303009, -0.0337526798248291, -0.005495472811162472, 0.023584537208080292, -0.0771733894944191, -0.026287894695997238, -0.01172191184014082, 0.09737047553062439, 0.0375351756811142, 0.03280220180749893, -0.014072075486183167, 0.06032971292734146, 0.0072259255684912205, -0.08368974179029465, 0.054626062512397766, -0.021156134083867073, -0.09647785127162933, 0.07431179285049438, -0.09039300680160522, -0.07652204483747482, -0.002478789770975709, -0.012967151589691639, 0.08174770325422287, -0.00968913547694683, 0.015551612712442875, 0.08655177801847458, -0.056927114725112915, -0.011370684020221233, -0.0408773347735405, 0.04413295164704323, 0.05919815972447395, 0.08101782202720642, -0.008914918638765812, -0.019233090803027153, 0.05211508646607399, -0.010292282328009605, 0.021839600056409836, 0.0016950241988524795, -0.031931016594171524, 0.004831018857657909, 0.015328328125178814, -0.015326892025768757, -0.05457184836268425, 0.03782501816749573, -0.014512602239847183, 0.00869232788681984, -0.04001179710030556, -0.00994281005114317, -0.041689563542604446, 0.060574647039175034, 0.044912341982126236, 0.05958174169063568, -0.035378437489271164, 0.08524063974618912, 0.012326095253229141, -0.052227456122636795, -0.015090923756361008, -0.012893415056169033, -0.019565775990486145, -0.03284028172492981, -0.02651887759566307, 0.02436136268079281, 0.004743371158838272, 0.019924448803067207, -0.046163417398929596, 0.005615816451609135, -0.03354670852422714, 0.00801338255405426, 0.02501787059009075, 0.03313247114419937, -0.012842012569308281, 0.04856807366013527, -0.031942710280418396, -0.026277944445610046, 0.11483185738325119, 0.015686793252825737, 0.052031729370355606, 0.025188622996211052, -0.021448785439133644, 0.05062439665198326, -0.030834710225462914, 0.02746596559882164, 0.027027780190110207],
+ "VINSERTPSrm":[0.010265239514410496, 0.03508870303630829, 0.0182888712733984, 0.01066108699887991, 0.09608251601457596, -0.0390457920730114, -0.02508910745382309, -0.051061324775218964, 0.051924970000982285, 0.02405509166419506, 0.07347054034471512, -0.023432396352291107, 0.03053455613553524, 0.11051331460475922, -0.07987380027770996, -0.07169938087463379, -0.06944284588098526, -0.010227087885141373, 0.01555782649666071, 0.0033066831529140472, -0.017572278156876564, 0.018880389630794525, -0.03347453102469444, 0.023936258628964424, 0.04189354181289673, -0.008910899050533772, 0.045309878885746, 0.039228133857250214, -0.0026367944665253162, 0.01713910512626171, -0.0038225038442760706, -0.02550170198082924, -0.04479162022471428, -0.11607012152671814, -0.05566885322332382, -0.03926549106836319, -0.05618799477815628, 0.0587196871638298, -0.003744689514860511, 0.09148088097572327, -0.008691483177244663, 0.060393813997507095, 0.05017181858420372, 0.05314680561423302, 0.010222898796200752, 0.04390108212828636, 0.06256565451622009, -0.039335936307907104, -0.030927496030926704, -0.010439696721732616, -0.09615844488143921, 0.04857023432850838, -0.021018074825406075, -0.04949686676263809, 0.0718517154455185, -0.0008082279819063842, -0.05119258537888527, -0.016725104302167892, -0.031902290880680084, 0.07473913580179214, -0.07040376961231232, -0.06263279169797897, -0.01866966485977173, -0.04580819234251976, -0.0018242622027173638, 0.02124813199043274, 0.01608111523091793, 0.033293697983026505, 0.04724595695734024, 0.06764823198318481, -0.010222701355814934, -0.09166357666254044, 0.0065320758149027824, 0.03907076641917229, 0.014404546469449997, -0.04371245950460434, -0.036747194826602936, -0.013570152223110199, -0.04874530807137489, -0.048001520335674286, 0.015114152804017067, 0.018710903823375702, 0.06920618563890457, -0.04024452716112137, 0.07851467281579971, -0.03879975154995918, 0.039278119802474976, -0.06678346544504166, -0.02139596827328205, 0.03483150899410248, 0.047795433551073074, -0.08071790635585785, 0.05023014172911644, -0.05863310769200325, 0.04391729459166527, -0.006796867586672306, -0.07156652212142944, -0.016402525827288628, 0.07568787783384323, 0.01640038751065731],
+ "VINSERTPSrr":[0.022902479395270348, 0.024018414318561554, 0.011011038906872272, 0.009072761051356792, -0.057881347835063934, 0.03739643841981888, 0.006768766324967146, 0.07734010368585587, 0.001509909750893712, 0.043335434049367905, -0.07244917005300522, -0.1078081876039505, 0.027186766266822815, 0.018834171816706657, 0.007436624728143215, -0.048498328775167465, 0.09450934827327728, -0.015420452691614628, 0.014672537334263325, -0.0012827727477997541, 0.019664635881781578, -0.026565955951809883, -0.04819858446717262, -0.0004387270309962332, 0.01676507107913494, -0.0014571163337677717, 0.015105879865586758, 0.04038102179765701, 0.008408628404140472, 0.07757255434989929, -0.09923559427261353, -0.04181523248553276, -0.0313955582678318, -0.006045420188456774, 0.05904707312583923, -0.014993838034570217, 0.03219055384397507, 0.058543696999549866, -0.06872320920228958, 0.021718619391322136, -0.08984571695327759, 0.06557019799947739, -0.018167613074183464, -0.011413732543587685, 0.036035921424627304, 0.10104569792747498, 0.05836406350135803, -0.02576756477355957, 0.03827998414635658, -0.06874323636293411, 0.01668366976082325, 0.048310816287994385, -0.010213772766292095, -0.035550933331251144, -0.03385040909051895, 0.004614332225173712, 0.018951643258333206, 0.10679180175065994, -0.019135646522045135, -0.011955377645790577, 0.028140606358647346, -0.08185642957687378, -0.015775075182318687, -0.011507326737046242, 0.07914295047521591, -0.030148068442940712, 0.11757981777191162, 0.00040086795343086123, 0.056880321353673935, -0.014461426064372063, -0.0008378245402127504, -0.06245473772287369, -0.05332277715206146, -0.038401950150728226, 0.005011103581637144, 0.0368003323674202, -0.021230563521385193, 0.01497745979577303, 0.0372738242149353, 0.07988940924406052, -0.013381360098719597, 0.0036820468958467245, 0.07501927763223648, -0.0996084213256836, 0.028014982119202614, -0.09410325437784195, 0.0007335525006055832, 0.004884959198534489, 0.040397197008132935, -0.07655651122331619, 0.05677357316017151, 0.005359896458685398, -0.047478366643190384, 0.03828851506114006, 0.03363208472728729, -0.041756175458431244, -0.00031817640410736203, 0.022837577387690544, 0.039567966014146805, 0.03662540763616562],
+ "VIRT_REG_FR32":[0.0034248235169798136, -0.011980761773884296, -0.0501178540289402, 0.0494888611137867, 0.06103336811065674, -0.06178610771894455, 0.007709897588938475, -0.011392943561077118, 0.06570645421743393, 0.0771368145942688, 0.0005577280535362661, 0.013396150432527065, -0.041660163551568985, 0.05122360959649086, 0.11354377865791321, -0.009875510819256306, -0.06466709822416306, 0.048170577734708786, 0.0007201629341579974, 0.06538223475217819, 0.08870227634906769, -0.05771782249212265, 0.009273379109799862, -0.03325295075774193, 0.01197165809571743, 0.06604835391044617, 0.08265330642461777, -0.005758166313171387, 0.02512396313250065, 0.03383670747280121, 0.038484204560518265, -0.06539343297481537, -0.013461028225719929, 0.001498897559940815, 0.05170154944062233, 0.06965786963701248, -0.07339458167552948, 0.05094756931066513, 0.01983451284468174, -0.06855696439743042, 0.07892709225416183, 0.06099703162908554, 0.08492864668369293, 0.05357863008975983, -0.009294840507209301, -0.0054923719726502895, -0.029938997700810432, 0.028260599821805954, 0.053790509700775146, -0.06574371457099915, -0.009621666744351387, -0.08131514489650726, -0.08474338054656982, 0.039622966200113297, 0.06945627927780151, 0.02545306645333767, 0.005390701815485954, 0.04582791030406952, -0.1103447750210762, -0.050917647778987885, 0.03087870217859745, 0.06918162852525711, 0.0548822283744812, -0.01838473603129387, 0.05597897991538048, 0.03548860549926758, -0.009931124746799469, -0.07856663316488266, 0.033994875848293304, 0.03467561677098274, 0.09580692648887634, -0.04153195023536682, -0.06732118874788284, -0.06857144832611084, 0.03419093042612076, -0.01200241968035698, -0.06983492523431778, 0.05929506942629814, -0.00041734304977580905, -0.026396293193101883, 0.05230500176548958, -0.006162640172988176, 0.044198282063007355, -0.028765834867954254, 0.031155114993453026, 0.06967037916183472, -0.0892564132809639, 0.028816571459174156, -0.037065472453832626, 0.06540130823850632, -0.01888667233288288, 0.030632384121418, 0.0359313078224659, 0.106044240295887, 0.03259910270571709, -0.0775517001748085, -0.04267778620123863, 0.04977935180068016, -0.01790289767086506, -0.11223265528678894],
+ "VIRT_REG_FR64":[0.08496882021427155, 0.049308884888887405, -0.016840212047100067, 0.010602951049804688, -4.6025739720789716e-05, -0.06524767726659775, 0.048670798540115356, -0.06444543600082397, -0.0031944462098181248, 0.05608433857560158, -0.03958145156502724, 0.05171080678701401, -0.03572545200586319, -0.054364755749702454, 0.052311528474092484, -0.0361458919942379, 0.024109655991196632, 0.15923210978507996, -0.07255382835865021, -0.011799084022641182, -0.06846465915441513, 0.0023571476340293884, 0.02642918936908245, -0.05057685822248459, 0.029800178483128548, -0.06036723777651787, -0.012272411957383156, -0.022802220657467842, -0.02426644042134285, 0.05623406544327736, -0.07506053894758224, -0.02078152634203434, 0.02549685165286064, -0.030025657266378403, -0.0627482682466507, 0.062375299632549286, 0.03684084117412567, 0.06365678459405899, 0.0004415051080286503, -0.002180535811930895, 0.05225013941526413, -0.0693102702498436, -0.03649357333779335, 0.005159272346645594, -0.03298519179224968, 0.041419681161642075, -0.05325934663414955, -0.017585784196853638, -0.03843431547284126, -0.002649943344295025, 0.033329058438539505, -0.04736043140292168, -0.043852102011442184, -0.06713785231113434, -0.03237355872988701, 0.012679073959589005, -0.01959240809082985, 0.07324203103780746, 0.07468831539154053, 0.03327644243836403, -0.01596391387283802, 0.12015434354543686, 0.051839299499988556, 0.00980563648045063, -0.08275608718395233, 0.04445798322558403, -0.03891860321164131, 0.10891054570674896, -0.008730625733733177, -0.051655255258083344, -0.05982912331819534, 0.04106972739100456, 0.06872759014368057, 0.013289053924381733, 0.03469584137201309, -0.06673429906368256, -0.0695682018995285, 0.047426726669073105, 0.02815094031393528, -0.05552271753549576, 0.0010567272547632456, -0.051840681582689285, -0.01704293303191662, -0.047185055911540985, 0.036965738981962204, 0.03452568128705025, -0.05430837720632553, 0.0383443646132946, 0.0003438846324570477, -0.030417989939451218, 0.02749026007950306, -0.0546082966029644, 0.03005768544971943, 0.0025131346192210913, 0.0013019279576838017, -0.054173994809389114, -0.008382225409150124, 0.02153395675122738, 0.011912085115909576, -0.10461334884166718],
+ "VIRT_REG_GR16":[0.09543223679065704, 0.03513967618346214, 0.08986528217792511, -0.012217407114803791, -0.02076001651585102, -0.04190119728446007, 0.01318269595503807, -0.010142332874238491, -0.011869532987475395, -0.040446147322654724, 0.06552371382713318, 0.04439055174589157, 0.08176156878471375, -0.06334159523248672, -0.033928077667951584, -0.00024628525716252625, 0.0244551170617342, -0.019419007003307343, -0.09592454880475998, 0.005961012560874224, 0.03278326243162155, -0.07028506696224213, -0.08484592288732529, -6.329250754788518e-05, 0.015018146485090256, -0.05068608745932579, 0.0732998326420784, 0.023434389382600784, 0.0002124009479302913, 0.060401707887649536, 0.013626078143715858, -0.010556582361459732, -0.005069760140031576, -0.004616749472916126, -0.034329116344451904, 0.060584329068660736, -0.05430089309811592, -0.029179023578763008, 0.042385730892419815, -0.0652197003364563, 0.09378205984830856, -0.05090794339776039, -0.008510591462254524, 0.0837036669254303, 0.009071480482816696, 0.04464874789118767, -0.012855015695095062, 0.06306030601263046, -0.08556588739156723, -0.05393703281879425, -0.06741822510957718, -0.03717748448252678, 0.017156923189759254, 0.07401604950428009, -0.06629005819559097, -0.04564857482910156, -0.055414989590644836, 0.039407771080732346, -0.04089723527431488, 0.06915309280157089, 0.030190052464604378, 0.027542876079678535, 0.03557966649532318, 0.05191207677125931, -0.03237364813685417, -0.02036256715655327, -0.071859210729599, -0.06704329699277878, 0.0336633175611496, 0.09511569887399673, 0.0048662531189620495, 0.05273270234465599, -0.056247059255838394, 0.06079721450805664, -0.04150049015879631, -0.08104457706212997, -0.10303051024675369, 0.04522428661584854, -0.04379847273230553, -0.019447194412350655, 0.0021319733932614326, -0.010465282015502453, 0.06857019662857056, -0.00443653529509902, -0.08039603382349014, -0.05012141168117523, 0.0875077098608017, -0.03053239732980728, -0.05321606993675232, 0.016501901671290398, -0.0563507042825222, -0.03187479078769684, -0.0015389680629596114, 0.022985411807894707, -0.05008963868021965, 0.028300117701292038, 0.02875804342329502, -0.024458128958940506, -0.022238614037632942, -0.049835607409477234],
+ "VIRT_REG_GR32":[-0.008479167707264423, -0.02941126376390457, 0.05343153327703476, 0.03769504278898239, -0.0006716987118124962, -0.0329299233853817, 0.03442851081490517, -0.06826753169298172, -0.09117511659860611, -0.018657755106687546, 0.029032904654741287, 0.02404048666357994, 0.010598761960864067, -0.0482308566570282, 0.06956348568201065, -0.027967501431703568, -0.07380961626768112, -0.021098148077726364, -0.0808446854352951, 0.0127912862226367, -0.01355082169175148, -0.040285225957632065, 0.035385165363550186, -0.001157263875938952, -0.026462145149707794, -0.08616211265325546, -0.044482193887233734, -0.010969695635139942, 0.04645564407110214, -0.018178211525082588, -0.038536932319402695, -0.027571648359298706, -0.007523007690906525, -0.02699458785355091, -0.039170436561107635, 0.12889482080936432, -0.04512789845466614, -0.03883056715130806, 0.051210880279541016, 0.03924906626343727, 0.036943964660167694, -0.016879307106137276, 0.011263007298111916, 0.053573690354824066, -0.018964825198054314, -0.041856080293655396, -0.036545924842357635, 0.07715532928705215, -0.041981130838394165, -0.04114629328250885, -0.04393022507429123, -0.030163627117872238, 0.0019487979589030147, 0.10988762229681015, 0.09039165079593658, -0.0035424421075731516, -0.06272851675748825, 0.007701062131673098, -0.01971622183918953, 0.06203003600239754, 0.048561323434114456, -0.04599940404295921, 0.00802221056073904, -0.002905400237068534, -0.1050020381808281, 0.003395768813788891, -0.07973644882440567, 0.008020970039069653, -0.08614815771579742, 0.0518532320857048, 0.021174483001232147, 0.03254232555627823, -0.01905026100575924, -0.0009989180834963918, -0.06409642845392227, -0.022425753995776176, -0.03563409671187401, 0.07717793434858322, -0.04553033784031868, -0.02112392708659172, -0.002374667674303055, 0.03828585892915726, -0.014221777208149433, -0.015974245965480804, -0.01805220916867256, 0.04202109947800636, -0.0841534212231636, 0.06608130037784576, -0.11586519330739975, 0.024179989472031593, 0.017091574147343636, 0.08567194640636444, -0.03692129999399185, 0.03266705200076103, -0.046154942363500595, 0.0040525165386497974, -0.03177625685930252, 0.039895471185445786, 0.042960215359926224, -0.05573953315615654],
+ "VIRT_REG_GR32_ABCD":[0.016604775562882423, -0.0028934956062585115, 0.041060179471969604, -0.025077441707253456, -0.018642406910657883, 0.023762650787830353, -0.028646549209952354, -0.02460283786058426, 0.005985732190310955, 0.01774146780371666, -0.004014404024928808, -0.05473850294947624, -0.0417158380150795, -0.06322457641363144, 0.060795728117227554, -0.036435071378946304, -0.04245952516794205, 0.08069344609975815, 0.035319335758686066, -0.012020719237625599, 0.045771341770887375, -0.10842540860176086, 0.046253710985183716, -0.004099135287106037, 0.030616935342550278, -0.08288344740867615, 0.08569363504648209, -0.014164377935230732, -0.004303323570638895, 0.09726760536432266, 0.06208871304988861, -0.04007713496685028, 0.005815347656607628, 0.02377200312912464, 0.07813961058855057, 0.03192306309938431, -0.006230524741113186, 0.10110925883054733, -0.023409254848957062, 0.030774405226111412, -0.011607645079493523, -0.03929119184613228, 0.004817614797502756, -0.013827506452798843, 0.07770339399576187, -0.07994075864553452, -0.03157062083482742, 0.06743781268596649, 0.014881699346005917, -0.030165214091539383, -0.07844353467226028, -0.04563238099217415, 0.09747181832790375, 0.057128582149744034, 0.04173563793301582, -0.0011194447288289666, -0.01902887038886547, -0.032171595841646194, 0.04824799671769142, 0.008433254435658455, 0.024706291034817696, 0.0746094286441803, 0.04515853151679039, -0.0018984260968863964, -0.10070884972810745, -0.01883143000304699, -0.07785795629024506, 0.10938235372304916, -0.08001448959112167, -0.07419873028993607, 0.010544849559664726, 0.025767439976334572, -0.1005895584821701, 0.05103800818324089, -0.03675306960940361, -0.020510872825980186, 0.022482097148895264, 0.06463642418384552, -0.03149804100394249, -0.021647030487656593, 0.04025804623961449, 0.003628256032243371, 0.03532547131180763, -0.08667688816785812, 0.018817460164427757, -0.01690257526934147, -0.10114696621894836, -0.022815177217125893, 0.024386661127209663, 0.10286301374435425, 0.030005114153027534, 0.0370776504278183, -0.008584428578615189, -0.077603779733181, -0.03588058054447174, 0.030617419630289078, -0.07383710891008377, 0.03215676173567772, 0.03288266062736511, -0.036702848970890045],
+ "VIRT_REG_GR32_NOREX":[0.019052108749747276, -0.006784944795072079, -0.05410394072532654, 0.001966317882761359, -0.06686867773532867, 0.013514372520148754, 0.030097918584942818, -0.03868359327316284, 0.004314934369176626, -0.06713679432868958, 0.02491898462176323, 0.027683967724442482, 0.035907283425331116, -0.023093875497579575, -0.0892200842499733, -0.1052003800868988, -0.03923499956727028, 0.08808581531047821, -0.10092058777809143, 0.03336786851286888, -0.08974049985408783, -0.015254802070558071, 0.039686985313892365, -0.010083628818392754, -0.03423550724983215, -0.08821681141853333, -0.05621311068534851, -0.020327769219875336, -0.016793876886367798, 0.08908043801784515, -0.04112761467695236, -0.050139520317316055, -0.01524045504629612, 0.05841142684221268, 0.08270087838172913, 0.0348736047744751, -0.016146546229720116, 0.05751227214932442, 0.05081859603524208, -0.07304663956165314, -0.047101784497499466, -0.02825125865638256, 0.0006340605323202908, 0.0008785317186266184, -0.044239338487386703, 0.007173972204327583, -0.029449066147208214, 0.07254412025213242, -0.026029080152511597, 0.025982191786170006, -0.09524690359830856, -0.052613094449043274, -0.1270490437746048, 0.05319184809923172, 0.1046818196773529, 0.0477570965886116, -0.06291303783655167, 0.04725426062941551, -0.05330964922904968, 0.04056742787361145, 0.01543382927775383, 0.03627128154039383, -0.048232536762952805, 0.014761016704142094, -0.007380587514489889, -0.008060632273554802, -0.021923277527093887, -0.022500980645418167, -0.08495079725980759, 0.045358967036008835, -0.04728720709681511, 0.03550735488533974, 0.03445536270737648, -0.01891610585153103, -0.09439470618963242, -0.044266197830438614, -0.07952893525362015, 0.05221104994416237, -0.03507477045059204, 0.04218391329050064, 0.040326621383428574, -0.0395088866353035, 0.02447870559990406, -0.04280063137412071, 0.06520935893058777, -0.003358252113685012, -0.057561881840229034, 0.01911463774740696, 0.05295571684837341, 0.030342884361743927, 0.03814920783042908, -0.03366788476705551, 0.03090745024383068, 0.09487249702215195, -0.002995486371219158, -0.012020634487271309, -0.029147809371352196, 0.09558248519897461, 0.02548893168568611, 0.0931544378399849],
+ "VIRT_REG_GR64":[0.02717440389096737, -0.026730243116617203, -0.023244258016347885, 0.04027782380580902, 0.006808254402130842, -0.027519788593053818, -0.01906559243798256, 0.027793627232313156, -0.00129543652292341, -0.03455121070146561, 0.021734628826379776, 0.035481199622154236, -0.07251942157745361, -0.025691546499729156, -0.03271827474236488, -0.13225725293159485, -0.0601421520113945, 0.09084498882293701, -0.10225717723369598, 0.004034099169075489, 0.023578351363539696, -0.041603971272706985, 0.04199974611401558, -0.014711204916238785, -0.04272732138633728, -0.12534455955028534, -0.023738788440823555, 0.005328727886080742, 0.038416482508182526, -0.026419155299663544, -0.041119154542684555, 0.00022502713545691222, -0.05204978585243225, -0.019709734246134758, -0.04102563485503197, 0.06480151414871216, 0.009224721230566502, 0.04627599939703941, 0.027821402996778488, -0.05595114827156067, 0.04526345059275627, 0.024196594953536987, 0.10446277260780334, 0.07561361789703369, -0.08028160035610199, -0.0314163975417614, 0.11944323033094406, 0.1025814488530159, -0.08457476645708084, 0.02227119728922844, -0.041679076850414276, -0.02260834351181984, 0.036674268543720245, 0.10488750785589218, 0.019218411296606064, -0.015966340899467468, -0.06852715462446213, 0.026523491367697716, -0.11090730130672455, -0.0021082640159875154, -0.048291631042957306, -0.032388005405664444, 0.015713853761553764, 0.03355225548148155, -0.06502845883369446, -0.010098783299326897, -0.09930021315813065, -0.017413528636097908, -0.055861033499240875, 0.0801810696721077, -0.03900628536939621, -0.03278445452451706, -0.0337282195687294, -0.11434067040681839, -0.04371264949440956, -0.01736009307205677, -0.05100121721625328, 0.07490750402212143, -0.014680330641567707, -0.02126181870698929, 0.018013890832662582, 0.0018135658465325832, 0.029781077057123184, -0.012477489188313484, -0.021443217992782593, 0.047576501965522766, -0.05993758141994476, -0.06040889024734497, 0.016642581671476364, 0.011624492704868317, -0.042229063808918, -0.007573941722512245, -0.04010608047246933, -0.006444427650421858, -0.014495199546217918, -0.04122597724199295, -0.08505907654762268, -0.004049300216138363, 0.06545045226812363, -0.04762336611747742],
+ "VIRT_REG_GR64_ABCD":[0.04577033221721649, -0.07758746296167374, 0.00799313560128212, -0.11011485010385513, -0.010862522758543491, 0.012709266506135464, 0.05257265642285347, -0.07354705780744553, 0.04262387007474899, 0.07554348558187485, -0.06358839571475983, 0.006669520866125822, 0.049098193645477295, 0.11183933168649673, -0.028112098574638367, 0.021986473351716995, -0.02839403599500656, -0.06199958547949791, 0.08614487200975418, -0.041216861456632614, 0.041238460689783096, 0.005937385838478804, 0.00200703926384449, -0.05337367579340935, 0.037919919937849045, -0.07485998421907425, -0.09153831005096436, -0.0554175041615963, -0.10251995176076889, -0.01289951242506504, -0.030631467700004578, 0.04197017475962639, -0.03578301519155502, 0.010593005456030369, -0.05836241692304611, 0.06809061765670776, 0.10871735960245132, -0.09833388775587082, -0.009873395785689354, -0.056898634880781174, 0.05946199968457222, 0.015534073114395142, 0.01677171140909195, -0.020233800634741783, -0.006396631710231304, -0.049332089722156525, 0.012649210169911385, 0.03756912052631378, 0.0033660116605460644, -0.09084216505289078, -0.07142844051122665, -0.0030346515122801065, 0.0019640070386230946, 0.038837920874357224, 0.011760945431888103, 0.04995080456137657, -0.06997165083885193, -0.035297296941280365, 0.01996617764234543, 0.01954355463385582, -0.0934600979089737, 0.030165065079927444, -0.007337240036576986, -0.05346155911684036, 0.0732186883687973, -0.04716489836573601, -0.06555212289094925, -0.018465254455804825, 0.051119767129421234, -0.03106619231402874, 0.0748852789402008, -0.02095886692404747, 0.006320921704173088, 0.03146332502365112, -0.08238139003515244, -0.03618254140019417, -0.014570276252925396, 0.062481846660375595, -0.0394093319773674, -0.05171547457575798, -0.044726233929395676, -0.01228095218539238, 0.09699232876300812, 0.07471026480197906, 0.03112417459487915, 0.022543631494045258, -0.08634103089570999, 0.059702761471271515, -0.013801504857838154, 0.004984616301953793, 0.045798566192388535, -0.03205988556146622, -0.06150995194911957, -0.02244667150080204, 0.03318532556295395, 0.03462471440434456, 0.03236381709575653, 0.0884014293551445, -0.01604369841516018, -0.05234146490693092],
+ "VIRT_REG_GR64_NOREX":[-0.03959479182958603, -0.06190898269414902, -0.02920372597873211, -0.09973344951868057, -0.004333901684731245, -0.08522991091012955, 0.0459987074136734, -0.057674553245306015, 0.037046968936920166, -0.05669403821229935, -0.02221340872347355, -0.062426190823316574, 0.05804889276623726, -0.02635439857840538, -0.045627325773239136, 0.03632078319787979, 0.07128578424453735, 0.07544906437397003, -0.0537678524851799, -0.04624016210436821, 0.014316501095890999, 0.05580946058034897, 0.05251356214284897, -0.08244197070598602, -0.08901460468769073, -0.07641059905290604, -0.04924754425883293, 0.05417120084166527, -0.0060508353635668755, -0.00814742036163807, -0.06154030188918114, 0.05966867506504059, -0.03231468051671982, 0.021429890766739845, 0.031103987246751785, 0.04343251883983612, -0.08997714519500732, 0.039365898817777634, 0.052908625453710556, -0.02683917060494423, -0.05547752603888512, -0.014131218194961548, 0.0016863569617271423, -0.041112788021564484, -0.010230163112282753, -0.06687774509191513, -0.006144971586763859, -0.08074352145195007, 0.04034091532230377, -0.08176303654909134, -0.004055786412209272, -0.0024839320685714483, -0.007289807312190533, 0.06915127485990524, 0.023709064349532127, 0.04671626538038254, 0.06229325756430626, 0.04707597941160202, 0.06800796836614609, -0.02885584905743599, 0.030613983049988747, -0.019083039835095406, 0.045457858592271805, 0.040770504623651505, -0.05441175401210785, -0.05712401866912842, 0.07744520157575607, -0.0756613239645958, -0.06890957802534103, -0.07997069507837296, 0.09348486363887787, -0.04511028528213501, 0.036194607615470886, 0.040017660707235336, 0.016245214268565178, 0.023104460909962654, 0.058383163064718246, 0.0679842159152031, -0.00921112485229969, -0.10036550462245941, 0.09075804799795151, -0.059704095125198364, -0.013338442891836166, -0.005139742512255907, 0.07807526737451553, 0.06255412846803665, -0.008151572197675705, -0.0624256506562233, 0.012590888887643814, 0.03665084019303322, -0.028498578816652298, -0.01614067517220974, 0.007552243769168854, -0.007216903381049633, 0.0760180801153183, -0.04200543463230133, 0.06412865966558456, -0.05136435106396675, -0.0024792966432869434, 0.06856651604175568],
+ "VIRT_REG_GR64_NOREX_NOSP":[-0.0656895712018013, 0.058077458292245865, -0.006653467658907175, 0.037784356623888016, 0.07274001836776733, 0.07232078164815903, 0.07074914127588272, 0.05637859180569649, 0.04296007752418518, 0.05499762296676636, -0.01783664897084236, -0.08387365937232971, -0.01376343984156847, -0.07938199490308762, -0.027822256088256836, -0.0663403570652008, 0.036170270293951035, -0.07460261881351471, 0.08652043342590332, 0.02483147382736206, -0.07939319312572479, 0.033202506601810455, 0.0903514102101326, -0.10181311517953873, 0.060751549899578094, 0.07619930803775787, 0.05017509311437607, -0.0470910519361496, 0.07713821530342102, -0.0426195003092289, -0.04506472498178482, 0.003363420255482197, -0.0017315347213298082, 0.06264199316501617, 0.005245774984359741, -0.027923958376049995, 0.09868567436933517, 0.06738796830177307, -0.10339145362377167, 0.0020383980590850115, 0.087734155356884, 0.011040030047297478, -0.05993311479687691, -0.05790332704782486, 0.01574312523007393, 0.009771298617124557, 0.022676382213830948, -0.009197148494422436, 0.03372732177376747, 0.08404259383678436, -0.015135225839912891, -0.04693703353404999, 0.09917140752077103, 0.007134507410228252, 0.020209072157740593, -0.00027669535484164953, -0.0351635180413723, 0.03751315921545029, -0.019665181636810303, 0.028500953689217567, 0.034186746925115585, -0.005931361112743616, 0.05645192414522171, -0.02027188241481781, -0.022675039246678352, -0.08812297880649567, -0.014896178618073463, -0.048788342624902725, 0.008708382956683636, 0.019917558878660202, -0.002275944221764803, 0.03409638628363609, 0.033304013311862946, 0.057676300406455994, 0.039842985570430756, -0.025169866159558296, 0.016520975157618523, -0.030201178044080734, -0.021718870848417282, -0.07023277878761292, -0.007528252899646759, 0.009067370556294918, -0.0460657961666584, 0.07117785513401031, -0.03609836474061012, -0.011893372051417828, -0.006047600414603949, 0.0179970171302557, 0.024480223655700684, -0.03918423503637314, 0.004897980485111475, 0.05040167644619942, 0.010113563388586044, -0.1074901670217514, -0.06277655810117722, -0.02934161201119423, -0.06922926008701324, -0.05638887360692024, 0.05314395949244499, 0.04588884115219116],
+ "VIRT_REG_GR64_NOSP":[0.0015277941711246967, -0.03938478231430054, -0.030811766162514687, 0.027071669697761536, 0.02127140760421753, 0.0015787228476256132, -0.07842491567134857, 0.004658385645598173, -0.05909501388669014, -0.03576778993010521, -0.07251477241516113, 0.12117832154035568, 0.04499363154172897, -0.009405314922332764, -0.01015283353626728, -0.002841090550646186, 0.0689091831445694, 0.10697457194328308, -0.09274765104055405, -0.027955353260040283, -0.0379958301782608, -0.044126156717538834, 0.04907212778925896, -0.038063473999500275, -0.003686746582388878, -0.08313410729169846, -0.045181579887866974, -0.011702840216457844, -0.006579228211194277, 0.046807315200567245, -0.045654296875, -0.03466613590717316, -0.08313826471567154, -0.06678880006074905, -0.027727074921131134, 0.036734677851200104, -0.040936414152383804, 0.05170389637351036, 0.038199927657842636, 0.02960256300866604, 0.0355701707303524, -0.02052776888012886, 0.06218089163303375, 0.10570456087589264, -0.036479029804468155, -0.008999336510896683, -0.031860992312431335, 0.07250168174505234, -0.061084795743227005, -0.057996805757284164, -0.010533110238611698, -0.018169214949011803, 0.017261315137147903, 0.10023517906665802, -0.044131457805633545, -0.07618662714958191, -0.09124933928251266, 0.01819406822323799, -0.05906827375292778, 0.04295642301440239, -0.03197735920548439, 0.03641442954540253, 0.005168464966118336, -0.00010972691961796954, -0.0829579159617424, -0.014677388593554497, -0.08750011026859283, -0.04695136100053787, -0.07696729153394699, -0.00718996487557888, 0.018294518813490868, -0.014321570284664631, -0.04416860267519951, -0.0890057235956192, -0.014466283842921257, 0.02831638976931572, -0.04845190420746803, 0.08228176832199097, 0.03420877829194069, 0.056510377675294876, 0.037403274327516556, 0.04364967346191406, 0.08903267979621887, -0.016827082261443138, -0.0682789757847786, 0.06286796927452087, -0.0958203598856926, 0.018489282578229904, 0.02886355295777321, 0.028006011620163918, 0.039986785501241684, -0.04771937429904938, -0.004648604430258274, 0.033939141780138016, -0.027820419520139694, -0.026187442243099213, -0.07972361892461777, 0.006323353853076696, 0.016448041424155235, -0.01961681991815567],
+ "VIRT_REG_GR64_NOSP_and_GR64_TC":[0.08079065382480621, -0.05147358775138855, -0.08338657021522522, 0.06757336109876633, -0.015237463638186455, 0.026806311681866646, 0.07564966380596161, -0.037159934639930725, -0.02222878858447075, -0.04553138092160225, -0.006632891017943621, 0.001604291144758463, 0.043711669743061066, 0.0710049569606781, -0.08854726701974869, -0.03142566233873367, -0.0865127220749855, 0.08521236479282379, 0.039203498512506485, 0.04737624153494835, 0.02893459051847458, 0.004120660945773125, 0.03552098199725151, -0.0010448878165334463, 0.04423774778842926, 0.03258584439754486, 0.03433830663561821, -0.019990455359220505, -0.03263172507286072, 0.09782663732767105, -0.00702365068718791, -0.06544602662324905, 0.013447105884552002, 0.04603038728237152, 0.029931804165244102, 0.0988783910870552, -0.062023941427469254, -0.0070026409812271595, 0.032557111233472824, -0.08212000876665115, 0.03199682757258415, 0.020828546956181526, 0.07071725279092789, -0.018812179565429688, -0.0184739138931036, -0.06008931249380112, 0.01504000648856163, -0.019235603511333466, 0.014653048478066921, -0.009083813987672329, 0.03171474114060402, 0.019499456509947777, 0.05263463407754898, 0.10554639250040054, -0.02759619802236557, -0.00156494346447289, -0.03898271545767784, 0.06027846410870552, -0.061001915484666824, 0.039365388453006744, -0.06546281278133392, 0.0006352368509396911, 0.0500405877828598, -0.03232716768980026, -0.010176514275372028, 0.002549059921875596, 0.0666508674621582, -0.037290267646312714, -0.028836704790592194, 0.06271649152040482, -0.016647985205054283, 0.013602355495095253, 0.020110899582505226, 0.011730309575796127, -0.10071564465761185, -0.06239647418260574, -0.09507977962493896, -0.09190725535154343, -0.08861985802650452, -0.0006123466300778091, 0.0951915979385376, -0.035364676266908646, -0.04007220268249512, 0.08415472507476807, 0.0006664254469797015, 0.05864431709051132, 0.01460045762360096, -0.09507087618112564, 0.024228032678365707, 0.04208158329129219, 0.006106846500188112, 0.09294755011796951, 0.06157369166612625, 0.0826527327299118, -0.058974966406822205, -0.09958664327859879, 0.06913749873638153, -0.08108915388584137, 0.07425157725811005, 0.04784728214144707],
+ "VIRT_REG_GR64_TC":[-0.0944172665476799, 0.040403831750154495, -0.017597073689103127, 0.04766053333878517, -0.03104357235133648, 0.025751160457730293, 0.036779265850782394, -0.0235747080296278, 0.032111138105392456, 0.009872193448245525, -0.01596468687057495, 0.05234881862998009, -0.047335200011730194, 0.005157034378498793, -0.02132921665906906, -0.0544377863407135, 0.057515472173690796, -0.006743279751390219, -0.01474941335618496, -0.0990658849477768, 0.022418741136789322, -0.007098495960235596, 0.046933863312006, 0.1002131924033165, 0.01583809033036232, 0.03995800018310547, -0.017743254080414772, -0.01684877835214138, 0.06543229520320892, 0.04597911611199379, 0.05365373566746712, -0.008774830959737301, -0.01341968309134245, -0.004754040390253067, 0.04739849269390106, 0.032378777861595154, -0.0020728895906358957, 0.03502136841416359, 0.05946416035294533, -0.06190952658653259, 0.01910495012998581, -0.023678753525018692, 0.012653682380914688, -0.06766874343156815, -0.0729866623878479, 0.0757005363702774, -0.027033904567360878, -0.06776778399944305, -0.010131776332855225, -0.06334701925516129, -0.04702980816364288, 0.06837917864322662, 0.002726735547184944, 0.04345812648534775, 0.04288078844547272, -0.06921732425689697, -0.07625382393598557, 0.037991974502801895, -0.04257906600832939, 0.06338586658239365, 0.05315309390425682, -0.02785014547407627, 0.04054750129580498, 0.06967299431562424, -0.07271680235862732, 0.0032969408202916384, -0.08254148811101913, 0.07269596308469772, -0.01827111467719078, 0.034775473177433014, 0.010106234811246395, 0.0389409065246582, 0.042805008590221405, -0.03822058066725731, 0.0668339803814888, -0.005216705612838268, -0.00022202919353730977, -0.0221820380538702, -0.027401722967624664, -0.045061662793159485, -0.05296671763062477, -0.0190189890563488, -0.002744461875408888, -0.04073096439242363, -0.06974441558122635, 0.05868958309292793, -0.06907399743795395, -0.026619713753461838, 0.015318086370825768, 0.035948701202869415, -0.08301021158695221, 0.03955607861280441, 0.028369972482323647, 0.0202812347561121, -0.12075140327215195, -0.039504438638687134, -0.03826067969202995, 0.01607581228017807, 0.02135113812983036, -0.08897850662469864],
+ "VIRT_REG_GR64_TC_with_sub_8bit":[0.00805664248764515, 0.06228634715080261, -0.005148644559085369, -0.025605352595448494, -0.04853198677301407, -0.018169978633522987, 0.008530518971383572, -0.1050964742898941, -0.08428415656089783, -0.014802628196775913, 0.05918573588132858, 0.07529161125421524, 0.09815273433923721, -0.014188972301781178, 0.06676790118217468, 0.09496084600687027, -0.03843621164560318, -0.00740150036290288, -0.11988909542560577, -0.01781499572098255, -0.03719411790370941, -0.07447166740894318, 0.005513608455657959, -0.014381160028278828, 0.036786310374736786, -0.04839075356721878, -0.009440913796424866, 0.03984222561120987, -0.08096668124198914, 0.026751000434160233, 0.06400448083877563, 0.07998895645141602, 2.295125523232855e-05, 0.0266779325902462, -0.0030931613873690367, 0.05236855521798134, -0.010479471646249294, -0.011119752191007137, -0.06124376133084297, -0.019449712708592415, 0.03448517248034477, -0.04095051810145378, 0.01377212442457676, 0.09643338620662689, 0.021325431764125824, 0.06029453128576279, 0.048866767436265945, -0.03436344116926193, -0.043422505259513855, 0.03822150453925133, 0.004718889016658068, -0.04090931639075279, -0.04219569265842438, 0.019032739102840424, 0.06111171841621399, 0.04305591061711311, -0.0379939004778862, -0.03224434703588486, -0.06517905741930008, 0.002272483194246888, 0.09273418039083481, -0.028145847842097282, 0.01824336126446724, 0.00936606340110302, -0.07281909137964249, -0.028650810942053795, -0.060721538960933685, -0.09477518498897552, -0.0014060320099815726, 0.06919887661933899, -0.03463669493794441, 0.0026504716370254755, -0.0653621107339859, -0.02800566703081131, -0.02503957599401474, -0.060285311192274094, 0.014794053509831429, -0.08424058556556702, 0.0482206828892231, -0.07467620074748993, -0.09909844398498535, -0.06888734549283981, -0.0014173799427226186, -0.09022543579339981, 0.06461413204669952, 0.024526789784431458, -0.07400602847337723, -0.008816084824502468, 0.025513656437397003, 0.047476526349782944, -0.05981749668717384, 0.08338218182325363, 0.02657591737806797, 0.03547860309481621, -0.043622229248285294, 0.10129662603139877, 0.08802521973848343, -0.09759330749511719, 0.025680232793092728, 0.05964493378996849],
+ "VIRT_REG_GR64_with_sub_16bit_in_GR16_NOREX":[-0.03117012232542038, -0.02872271090745926, -0.039712607860565186, 0.03738812729716301, 0.030099159106612206, 0.00013636364019475877, -0.019107641652226448, -0.04186702147126198, -0.053099144250154495, -0.020432034507393837, -0.0004185919533483684, 0.010934959165751934, 0.036054231226444244, 0.03788067027926445, 0.05227302014827728, -0.034505825489759445, -0.08298061788082123, 0.0399160161614418, 0.03668724000453949, 0.014606554992496967, -0.0071771652437746525, 0.059049926698207855, -0.06330917030572891, 0.007379058748483658, -0.0750177726149559, -0.0423760749399662, -0.019386067986488342, -0.018436923623085022, -0.015116279944777489, 0.023602722212672234, 0.0533282607793808, -0.026401247829198837, 0.023750485852360725, -0.027648568153381348, -0.016443056985735893, 0.04291580244898796, -0.04391908273100853, 0.05113501846790314, -0.03743087872862816, 0.056367188692092896, 0.048130668699741364, -0.0230261143296957, 0.03358393907546997, -0.030188169330358505, 0.08421863615512848, 0.0033821314573287964, 0.03151029348373413, -0.042818162590265274, 0.04007953777909279, -0.0050337472930550575, 0.03335743024945259, -0.026563530787825584, 0.016440672799944878, -0.04272226244211197, -0.07304228097200394, 0.024836458265781403, -0.016342775896191597, -0.055494848638772964, -0.05826134234666824, 0.027478834614157677, 0.025981346145272255, -0.04745938256382942, 0.013695796020328999, -0.027888784185051918, 0.03769542649388313, -0.024486247450113297, 0.04720773920416832, -0.012697651982307434, -0.03559652715921402, 0.012948199175298214, -0.025600459426641464, 0.014954420737922192, -0.06651762872934341, 0.04277091473340988, -0.08291683346033096, 0.016881149262189865, 0.04145864024758339, -0.04162050038576126, -0.03363965451717377, -0.05018439516425133, 0.06321889907121658, -0.00871780700981617, 0.06867428869009018, 0.057975344359874725, 0.009704249911010265, 0.049075234681367874, -0.06111253425478935, 0.027943406254053116, 0.03725599870085716, 0.032480716705322266, -0.01960119605064392, -0.0295172780752182, 0.014026675373315811, 0.056797921657562256, -0.031707022339105606, 0.0010152219329029322, -0.023705823346972466, -0.07695567607879639, 0.017504720017313957, -0.0020094760693609715],
+ "VIRT_REG_GR64_with_sub_8bit":[-0.011493992060422897, -0.027181852608919144, 0.022013556212186813, 0.05687474459409714, -0.03289574757218361, -0.04803529754281044, -0.04204253479838371, 0.044671084731817245, -0.0849028080701828, -0.09561576694250107, 0.03596775606274605, 0.027156801894307137, 0.05034027621150017, -0.006308000069111586, 0.012393618933856487, -0.048590339720249176, -0.049129705876111984, 0.059305012226104736, -0.10330235958099365, 0.00738809397444129, 0.03855152800679207, -0.03220852091908455, 0.05221837759017944, -0.01274650078266859, 0.024303985759615898, -0.05925533175468445, -0.015623844228684902, -0.025864524766802788, 0.009918035939335823, 0.004779431037604809, -0.02866589091718197, 0.006512579973787069, -0.037251196801662445, 0.005028596147894859, -0.011677909642457962, 0.051886074244976044, -0.03552602231502533, 0.011968757025897503, 0.00829426757991314, -0.06981230527162552, -0.029781555756926537, -0.012621275149285793, 0.08595969527959824, 0.08630531281232834, 0.10018875449895859, -0.054863955825567245, -0.044519901275634766, 0.0893385037779808, 0.04004377871751785, 0.003711731405928731, -0.021447300910949707, -0.08500636368989944, 0.0037281641270965338, 0.14561010897159576, 0.03993009030818939, 0.07621612399816513, 0.020513180643320084, 0.004926605150103569, -0.035578932613134384, 0.06101486086845398, -0.08422145247459412, -0.03511432558298111, 0.01537742093205452, -0.010146304965019226, -0.05133780837059021, -0.010472903028130531, -0.09726933389902115, -0.010570867918431759, -0.09348491579294205, 0.002129049738869071, -0.01265127956867218, 0.03504374623298645, -0.008679943159222603, -0.002507386729121208, -0.06586045026779175, -0.04775359109044075, -0.042809367179870605, 0.08359787613153458, -0.0230431966483593, -0.015440763905644417, 0.0195400882512331, -0.0186530202627182, -0.03176320344209671, -0.019522372633218765, -0.02984560839831829, 0.024256182834506035, -0.07656785100698471, 0.03944750130176544, 0.016559945419430733, 0.007124909665435553, 0.08061631768941879, 0.08561833202838898, -0.018525447696447372, -0.0019649232272058725, -0.018469924107193947, -0.012311050668358803, -0.08448101580142975, 0.060216110199689865, 0.06368701905012131, -0.07110093533992767],
+ "VIRT_REG_GR8":[0.02255251444876194, 0.012649326585233212, 0.05363747105002403, -0.006129346787929535, 0.027027001604437828, 0.03703385218977928, -0.045294541865587234, -0.02489621751010418, 0.026587747037410736, -0.06228360906243324, 0.01547946222126484, 0.03494448587298393, 0.08276952058076859, -0.03470698744058609, 0.0036826131399720907, 0.04216131567955017, -0.04518325626850128, 0.09584730118513107, -0.09126991778612137, -0.11293632537126541, 0.0141398124396801, -0.05086163431406021, 0.0421922467648983, -0.0001364851341350004, 0.05821910500526428, -0.04154132679104805, 0.036521218717098236, -0.016718950122594833, 0.0773339569568634, 0.05134757608175278, -0.03728386387228966, -0.014684299007058144, 0.016949277371168137, 0.025767508894205093, -0.01573120802640915, 0.0343811996281147, 0.008209497667849064, 0.0011038129450753331, -0.06688684970140457, -0.08167136460542679, 0.03875276446342468, 0.08301592618227005, 0.023012684658169746, 0.07135005295276642, 0.008461466059088707, 0.004998552612960339, 0.02622731775045395, -0.09479465335607529, 0.014987453818321228, -0.008574756793677807, -0.008050303906202316, -0.005560623947530985, 0.04616820812225342, 0.11537269502878189, 0.032199542969465256, 0.05507092550396919, -0.053164780139923096, 0.012255114503204823, -0.01981479674577713, 0.06012535095214844, 0.043957680463790894, 0.02384384348988533, 0.04837791621685028, 0.04945961385965347, -0.1063770279288292, -0.07354240119457245, -0.08922741562128067, -0.026019031181931496, -0.08768662065267563, 0.09241457283496857, 0.03253300115466118, -0.018267929553985596, -0.04406850412487984, -0.05577726289629936, -0.05304105579853058, 0.016035545617341995, 0.05610279366374016, 0.06247573718428612, -0.019430609419941902, -0.017088554799556732, -0.022114543244242668, 0.07442588359117508, -0.017668865621089935, -0.02403153106570244, 0.006919574458152056, 0.05879344418644905, -0.0885634645819664, -0.016336753964424133, -0.024662213400006294, 0.029266972094774246, -0.04889025166630745, 0.042460259050130844, -0.013102580793201923, 0.023992935195565224, 0.024768078699707985, 0.047551900148391724, -0.02243787795305252, 0.05929713696241379, 0.03110451251268387, -0.00550821190699935],
+ "VIRT_REG_RFP80":[-0.04414765536785126, 0.05147779360413551, -0.035608600825071335, -0.03939598798751831, 0.0430026613175869, -0.03331028297543526, 0.015591064468026161, 0.01892651617527008, -0.011428372003138065, -0.06980786472558975, 0.06445881724357605, 0.1036338210105896, 0.01164929661899805, -0.07599718868732452, 0.022036561742424965, 0.10396245121955872, -0.041171155869960785, -0.07264886051416397, 0.00032837275648489594, 0.02848120965063572, -0.031889040023088455, 0.023848745971918106, -0.02298046089708805, -0.05559201166033745, 0.026687605306506157, 0.0565699003636837, -0.0134252505376935, 0.05494402348995209, -0.0584089457988739, 0.05422470346093178, -0.024360226467251778, 0.03570455685257912, 0.013681530021131039, -0.006910417694598436, 0.011886067688465118, 0.07619262486696243, 0.08147607743740082, 0.05824091285467148, 0.001224246108904481, -0.030463339760899544, -0.023527851328253746, 0.03078501485288143, -0.02225799672305584, -0.058049511164426804, 0.015403151512145996, 0.07900431007146835, 0.025944147258996964, 0.021455328911542892, 0.023985104635357857, -0.0327906534075737, 0.04195002466440201, -0.10313323140144348, -0.023333510383963585, -0.010316243395209312, -0.02042137086391449, 0.07474000751972198, 0.02313513681292534, -0.0030733307357877493, 0.06138097122311592, 0.005197131074965, -0.03222955763339996, 0.005364845506846905, -0.05313501134514809, 0.0013082564109936357, 0.025044983252882957, 0.0349799208343029, 0.09704083949327469, -0.017403649166226387, -0.03375721350312233, 0.05970870703458786, -0.021679691970348358, -0.04719642922282219, 0.024217652156949043, -0.06130526587367058, 0.004813425708562136, 0.07473690062761307, -0.039600174874067307, -0.009295261465013027, 0.05440402403473854, 0.04785943776369095, -0.04006686061620712, -0.020133933052420616, 0.00989031046628952, -0.054447200149297714, 0.06291327625513077, -0.01196430902928114, 0.0841275230050087, -0.05557875707745552, -0.0813804343342781, -0.0746457576751709, -0.024255990982055664, -0.048101916909217834, -0.014132879674434662, -0.013147399760782719, -0.009715595282614231, 0.08717820793390274, -0.04318689927458763, -0.0311901792883873, -0.017253845930099487, 0.005144816357642412],
+ "VIRT_REG_VR128":[0.08292517066001892, 0.053138989955186844, 0.0019234063802286983, -0.030035940930247307, 0.0821828693151474, -0.0540342852473259, 0.06449387222528458, -0.03985493257641792, 0.026820721104741096, 0.0352952741086483, -0.1056072935461998, 0.054804764688014984, 0.01685425080358982, 0.05867069214582443, 0.11665259301662445, -0.07655566930770874, 0.021201618015766144, 0.00927705504000187, -0.04723019897937775, 0.016582123935222626, -0.01160470675677061, -0.013075411319732666, 0.01054342370480299, -0.05403316020965576, 0.033609066158533096, -0.07971179485321045, 0.1005927175283432, -0.020655132830142975, -0.0036442605778574944, 0.018269486725330353, 0.036334097385406494, -0.06517180055379868, -0.028530113399028778, -0.03768114373087883, 0.10582506656646729, 0.011199450120329857, -0.06707775592803955, 0.02332702837884426, -0.014528930187225342, -0.09369251132011414, 0.069722481071949, 0.031001657247543335, 0.08032777905464172, -0.060744334012269974, 0.015131807886064053, 0.01935953088104725, -0.087028868496418, 0.041773099452257156, 0.0381581112742424, -0.07518653571605682, 0.021307995542883873, -0.07350508868694305, -0.04699733853340149, -0.007377162110060453, 0.07836157828569412, 0.016066696494817734, -0.02160775288939476, -0.030519334599375725, -0.09255059063434601, 0.03597188740968704, -0.11260625720024109, -0.08602424710988998, 0.058293748646974564, -0.034749604761600494, 0.005541469436138868, -0.07924741506576538, -0.024103455245494843, 0.06047135218977928, 0.026729481294751167, 0.03493977710604668, -0.07453227788209915, -0.01716521382331848, 0.008985077030956745, -0.08075122535228729, 0.03353623300790787, -0.08125714957714081, 0.04245763644576073, 0.06520543247461319, 0.020550349727272987, -0.003161275526508689, -0.03491697832942009, -0.005496494937688112, 0.09021904319524765, -0.057418785989284515, 0.03494826331734657, -0.052578359842300415, -0.044952504336833954, 0.11770184338092804, -0.048565153032541275, -0.03815764561295509, 0.06020108237862587, -0.09397949278354645, 0.03820547088980675, 0.08039405196905136, 0.014751153998076916, 0.006572262849658728, 0.05658692866563797, 0.05043925344944, -0.0060436660423874855, -0.12018798291683197],
+ "VIRT_REG_VR256":[0.032775089144706726, 0.029240285977721214, 0.01821955479681492, 0.023595772683620453, -0.02587016113102436, -0.12190376222133636, 0.09720813482999802, 0.005780891049653292, -0.0581410676240921, 0.04817686229944229, -0.04627984017133713, 0.03618951886892319, -0.10393846780061722, 0.04380590096116066, 0.030101926997303963, -0.021811308339238167, 0.0012455569813027978, 0.06209835410118103, -0.08859474956989288, 0.0671553835272789, -0.006448917090892792, 0.0169842429459095, 0.031113164499402046, -0.07417412847280502, 0.05549546331167221, -0.013042094185948372, 0.0948401540517807, -0.07335975021123886, -0.03987044095993042, -0.005343804135918617, -0.08741248399019241, -0.08009110391139984, 0.005667346995323896, 0.03745159134268761, 0.019986214116215706, -0.03723142296075821, -0.0037649653386324644, 0.005682446528226137, 0.0659727230668068, -0.002658356446772814, 0.07049102336168289, -0.01944110542535782, -0.014278342947363853, 0.04189611226320267, 0.0312303826212883, -0.046760618686676025, 0.040438465774059296, 0.054074693471193314, 0.07479880005121231, -0.016405146569013596, 0.027125591412186623, -0.04216836765408516, 0.0011189498472958803, -0.01471384521573782, -0.010250975377857685, -0.006412460468709469, -0.12170380353927612, 0.015495882369577885, -0.054699406027793884, 0.05955614894628525, 0.06753991544246674, -0.03688138723373413, 0.049010518938302994, -0.07614680379629135, 0.06504888087511063, -0.014145595952868462, 0.02210555598139763, 0.023598313331604004, 0.00511248828843236, 0.013318972662091255, -0.11605404317378998, -0.032067783176898956, -0.05010659247636795, -0.023693162947893143, 0.06650379300117493, -0.026386691257357597, 0.06052805855870247, 0.0515507273375988, 0.033960308879613876, -0.06421340256929398, -0.09355985373258591, -0.0658700093626976, 0.10278744995594025, -0.10271084308624268, -0.012089421041309834, -0.04169749841094017, -0.07112454622983932, -0.032573599368333817, -0.0003141233173664659, 0.017007946968078613, 0.03622191399335861, 0.05829676240682602, 0.06261610984802246, 0.005667738616466522, 0.009631159715354443, 0.022852277383208275, 0.057013869285583496, -0.05015721917152405, 0.027599012479186058, -0.08637165278196335],
+ "VMASKMOVPDYmr":[-0.04878474771976471, 0.009688055142760277, 0.05428608879446983, -0.030850162729620934, 0.03008297272026539, 0.03831377625465393, -0.023454757407307625, 0.061062078922986984, -0.07177434861660004, 0.003681673901155591, 0.040161218494176865, -0.009652352891862392, 0.07261710613965988, -0.010966332629323006, -0.013221205212175846, -0.03301544487476349, 0.04829031974077225, -0.08083753287792206, 0.030231673270463943, -0.02659734897315502, -0.036777157336473465, 0.06681652367115021, 0.01175805926322937, 0.06305940449237823, -0.019296150654554367, 0.02796877548098564, -0.029999401420354843, -0.0198240764439106, -0.04471949115395546, -0.06781838089227676, 0.024380704388022423, 0.03754236921668053, 0.06767786294221878, 0.04803696274757385, 0.046649131923913956, 0.04538867995142937, -0.028629129752516747, 0.0127564687281847, 0.004995361436158419, -0.08728974312543869, 0.029057662934064865, 0.07067801058292389, 0.0007887053652666509, 0.019237162545323372, -0.04447153955698013, -0.10583364218473434, 0.08983936905860901, 0.015038984827697277, -0.034384895116090775, -0.055098336189985275, -0.07670909911394119, 0.002524072304368019, 0.10086455941200256, 0.022610867395997047, 0.05591642111539841, -0.07907918840646744, -0.04253252223134041, 0.05387851223349571, -0.034182146191596985, -0.08478306978940964, -0.039358172565698624, 0.05872701108455658, 0.0004980096709914505, -0.054017916321754456, -0.05543661117553711, -0.05234605073928833, -0.01648441143333912, -0.039598412811756134, 0.014009279198944569, 0.07753992825746536, -0.024791967123746872, 0.0015941763995215297, -0.08564147353172302, 0.015439499169588089, 0.04659571126103401, 0.042471837252378464, 0.005456998012959957, 0.015990061685442924, -0.02272135764360428, -0.03891618177294731, -0.0077924951910972595, -0.05113787576556206, 0.040118955075740814, -0.043831776827573776, 0.05283576622605324, 0.09104584157466888, 0.015506122261285782, -0.028880758211016655, -0.0025508899707347155, 0.08238258212804794, -0.011219828389585018, 0.0496247261762619, -0.044287387281656265, 0.050674524158239365, 0.02936738170683384, -0.017218898981809616, 0.07722929865121841, 0.04578819498419762, -0.031120644882321358, -0.022032534703612328],
+ "VMASKMOVPSYmr":[0.020578626543283463, -0.004085692577064037, 0.07696651667356491, 0.028803450986742973, -0.006955036427825689, -0.018540993332862854, 0.0719260424375534, 0.09322775900363922, 0.05095001682639122, -0.01811334490776062, 0.01627892442047596, 0.050088733434677124, -0.06736274808645248, 0.025077303871512413, 0.06022811681032181, -0.09305489808320999, -0.09338469058275223, -0.0525103323161602, -0.06159364432096481, 0.030921749770641327, 0.06632588058710098, 0.031169326975941658, 0.016549210995435715, -0.06410345435142517, 0.034944821149110794, 0.01632581278681755, 0.06805131584405899, -0.004622941836714745, -0.02994105964899063, 0.025459013879299164, 0.020487098023295403, 0.06677251309156418, -0.046148937195539474, -0.05847230181097984, -0.0662517175078392, -0.006552667822688818, 0.05338975414633751, -0.07456435263156891, -0.05682503432035446, -0.0720917284488678, -0.08354304730892181, 0.057539310306310654, -0.0984572172164917, -0.015717046335339546, -0.04905203357338905, -0.016580646857619286, 0.030063051730394363, -0.04245767742395401, -0.019089849665760994, 0.037014883011579514, -0.03125334531068802, -0.02194075658917427, 0.057924628257751465, 0.053156934678554535, 0.03154401481151581, -0.03698640316724777, -0.047283731400966644, -0.07787752151489258, -0.09294760227203369, 0.008879968896508217, -0.039479922503232956, 0.06407082825899124, 0.021868228912353516, 0.02621234394609928, -0.05872492864727974, -0.07943505048751831, 0.024682780727744102, 0.014713538810610771, 0.02206231839954853, -0.0664556622505188, -0.08985312283039093, -0.028045928105711937, 0.022865260019898415, -0.03564520925283432, 0.06292934715747833, 0.009946631267666817, 0.031550049781799316, -0.08577742427587509, 0.047102898359298706, -0.07018786668777466, -0.10670997202396393, 0.0016501775244250894, -0.08505392074584961, 0.00861909706145525, -0.06370823830366135, 0.03423767164349556, 0.03173772618174553, 0.019602738320827484, 0.021573755890130997, 0.02385428547859192, -0.01468846295028925, 0.023825718089938164, -0.05538937821984291, 0.05968264490365982, 0.08997872471809387, -0.006320557557046413, 0.012793052941560745, -0.10326020419597626, -0.015349009074270725, 0.006139614153653383],
+ "VMASKMOVPSYrm":[-0.09999474138021469, -0.05461611971259117, 0.06111544370651245, 0.009340068325400352, 0.05158305540680885, 0.018409717828035355, 0.03258055821061134, -0.0017857305938377976, 0.041260261088609695, -0.04183795303106308, -0.04711655154824257, 0.007005605846643448, 0.017177876085042953, 0.011972760781645775, -0.058734532445669174, 0.022736912593245506, -0.10794606059789658, 0.029367392882704735, -0.012645614333450794, -0.09590506553649902, -0.07090207934379578, -0.05850019305944443, -0.018024247139692307, -0.0036007456947118044, -0.06459654122591019, 0.009839186444878578, 0.04846305027604103, -0.11106285452842712, 0.029033005237579346, 0.10009876638650894, 0.012796668335795403, -0.0073439814150333405, -0.08754748106002808, -0.037603843957185745, -0.015900349244475365, -0.007158457301557064, 0.03420218825340271, 0.027995899319648743, -0.07699259370565414, 0.042778756469488144, 0.04648644104599953, -0.04391217231750488, -0.018405593931674957, -0.01280362717807293, 0.08530068397521973, -0.03674551844596863, 0.06248623505234718, 0.0038591010961681604, -0.07031620293855667, -0.01702764257788658, 0.005379523150622845, -0.029414091259241104, 0.00011999297566944733, 0.058016858994960785, 0.10091454535722733, 0.07112561911344528, -0.07445680350065231, -0.08252609521150589, -0.05458306148648262, 0.0828995481133461, 0.030287114903330803, 0.08512170612812042, -0.0745752677321434, 0.011145705357193947, 0.07730960845947266, 0.06756677478551865, 0.10192125290632248, -0.015338120050728321, 0.025173967704176903, -0.017697714269161224, 0.00455897580832243, -0.01002852339297533, -0.09001599997282028, 0.06024448946118355, 0.01357717253267765, -0.04349803552031517, 0.026919689029455185, 0.07871785014867783, 0.06163106486201286, -0.02904645912349224, 0.05042176693677902, 0.019180594012141228, -0.029065869748592377, -0.02645217627286911, -0.04180121049284935, -0.01644887775182724, 0.005278781522065401, 0.021325504407286644, 0.0710480809211731, -0.02405066229403019, 0.06883849203586578, -0.08493685722351074, -0.0180019810795784, 0.10276532918214798, -0.04697193205356598, -0.0004998040967620909, 0.014400942251086235, 0.07172509282827377, 0.027445673942565918, 0.04722077399492264],
+ "VMAXCPDYrr":[-0.045131467282772064, 0.009342465549707413, 0.0394115075469017, 0.022855356335639954, 0.07097823172807693, -0.0528571791946888, -0.011623447760939598, 0.020577045157551765, -0.049010127782821655, -0.024361778050661087, 0.025938406586647034, -0.026517590507864952, 0.033551547676324844, -0.015390902757644653, -0.010928326286375523, -0.020697029307484627, 0.045292116701602936, 0.028852595016360283, -0.04783368483185768, -0.03611654415726662, 0.01631799526512623, 0.015467553399503231, -0.0901816114783287, -0.03102879226207733, -0.08114942163228989, -0.005977717228233814, 0.11882505565881729, -0.0170945655554533, -0.03602013736963272, -0.00612608203664422, 0.08260075002908707, -0.05817171558737755, 0.05175555497407913, 0.03500857204198837, -0.016179101541638374, -0.07968049496412277, -0.05079679191112518, 0.013260838575661182, -0.027559377253055573, -0.02197672426700592, -0.0037698536179959774, -0.019358867779374123, -0.02344164252281189, 0.048064131289720535, 0.05940837413072586, 0.004177086520940065, 0.031972452998161316, -0.030601471662521362, 0.05141207203269005, -0.03696197643876076, 0.0700748935341835, 0.07003279775381088, -0.007183277513831854, 0.02480200305581093, -0.011822398751974106, -0.0010476043680682778, -0.08010498434305191, -0.04588789492845535, -0.0726952999830246, -0.04555952921509743, 0.08780597895383835, -0.011691270396113396, 0.03444618359208107, -0.029242027550935745, 0.03690854832530022, 0.007049867883324623, -0.04867476597428322, 0.10380996763706207, 0.017567181959748268, -0.011300626210868359, 0.026187149807810783, 0.019030511379241943, -0.03782890364527702, 0.047482650727033615, 0.06841395050287247, 0.004864340648055077, 0.05915450304746628, -0.02164379507303238, -0.06697966158390045, -0.02342834137380123, -0.07523774355649948, -0.006313158664852381, 0.03792953863739967, 0.004063687287271023, -0.04248501732945442, -0.02978685311973095, -0.012456005439162254, -0.03615914657711983, 0.02943955361843109, 0.02546575851738453, -0.02976957894861698, 0.0028702733106911182, 0.08412066102027893, -0.039902012795209885, 0.05963548272848129, -0.06851322948932648, -0.036500949412584305, -0.03232322633266449, -0.012614607810974121, -0.015461649745702744],
+ "VMAXCPDrm":[-0.05837053805589676, 0.08556337654590607, -0.06511285901069641, 0.07223474234342575, 0.06695679575204849, 0.018944231793284416, 0.09051045775413513, -0.054656144231557846, 0.07694999128580093, -0.08103381097316742, 0.006390448193997145, 0.051494721323251724, 0.0876600369811058, -0.04363241046667099, 0.0062012928538024426, 0.08228378742933273, -0.013193164952099323, -0.048260949552059174, -0.07978234440088272, 0.07690145820379257, 0.02585693821310997, -0.006315567996352911, 0.008107529021799564, -0.06439938396215439, 0.08492491394281387, 0.04220223054289818, -0.018800536170601845, 0.0010077974293380976, 0.027703911066055298, 0.04120223596692085, -0.07338575273752213, 0.03412146866321564, 0.030130302533507347, -0.015844251960515976, -0.11446935683488846, 0.0013375694397836924, -0.02619154192507267, -0.03439519554376602, 0.057969655841588974, -0.020497361198067665, -0.0102334413677454, 0.02141592465341091, -0.03640462085604668, -0.05671876296401024, -0.008772454224526882, 0.06619565188884735, -0.006410738453269005, -0.008847435936331749, 0.002299176063388586, -0.0200079083442688, 0.03312009200453758, -0.010274636559188366, 0.0005054399953223765, -0.10769572108983994, -0.08785638958215714, -0.019171081483364105, -0.09513550251722336, 0.04985244572162628, -0.05409112572669983, -0.0055307988077402115, 0.06408058851957321, -0.05447164922952652, -0.07674375921487808, 0.04772152751684189, 0.0779547169804573, -0.07633260637521744, 0.023462478071451187, -0.05895143747329712, 0.07163481414318085, 0.10031984001398087, 0.031362202018499374, 0.03578203171491623, 0.03545413911342621, 0.02667982690036297, -0.06587989628314972, 0.06323458254337311, 0.020467497408390045, 0.10230140388011932, 0.04596846178174019, 0.015692375600337982, -0.038183070719242096, 0.05001101642847061, 0.07139839231967926, 0.008047112263739109, 0.03986852616071701, 0.08014202117919922, 0.09993264079093933, 0.06581144034862518, -0.027725787833333015, -0.0009118871530517936, -0.04728465899825096, -0.029203608632087708, 0.04485620930790901, -0.01524323783814907, 0.06196974962949753, 0.010072426870465279, 0.00499894330278039, 0.020192615687847137, 0.04239136353135109, 0.07366912066936493],
+ "VMAXCPDrr":[0.09888744354248047, 0.04386461153626442, -0.008759518153965473, 0.0037239077500998974, -0.024708006531000137, -0.011919472366571426, -0.07757989317178726, -0.03871675208210945, -0.10233178734779358, 0.09277309477329254, 0.08404448628425598, 0.06537581980228424, 0.06132971867918968, -0.010723958723247051, -0.006508604623377323, 0.01878410577774048, -0.05452027544379234, 0.008043569512665272, 0.04386115074157715, 0.028925003483891487, -0.023107966408133507, 0.03209732472896576, -0.0591256283223629, -0.09938568621873856, 0.004809905309230089, -0.032926350831985474, 0.008048185147345066, -0.023326165974140167, -0.00014738831669092178, 0.01281548012048006, -0.008486984297633171, 0.08063901215791702, -0.04592028260231018, -0.052631933242082596, 0.024134142324328423, -0.04912501946091652, -0.11036331951618195, 0.021359102800488472, 0.04146198928356171, 0.012851819396018982, -0.025537827983498573, -0.050671353936195374, 0.020315513014793396, 0.02841179259121418, -0.08218318223953247, -0.006147895008325577, -0.006004638504236937, -0.007778830826282501, -0.04543740674853325, 0.016132334247231483, 0.016671504825353622, -0.02062811329960823, 0.012468172237277031, -0.06801079213619232, -0.04815765470266342, 0.004941633902490139, -0.10698091983795166, -0.01313503086566925, 0.040969446301460266, 0.017986062914133072, 0.05460332706570625, -0.09619055688381195, 0.009236357174813747, 0.07430294901132584, 0.06502263993024826, 0.07468471676111221, 0.03515896946191788, -0.012751342728734016, 0.012196672149002552, -0.009713921695947647, -0.0840454176068306, -0.0013724630698561668, -0.08578158915042877, -0.07507334649562836, 0.1124756932258606, 0.08608190715312958, 0.0619986355304718, -0.0631525069475174, 0.04082515463232994, 0.08037188649177551, 0.015647072345018387, -0.08765485882759094, -0.054508864879608154, 0.10408568382263184, 0.05675746873021126, -0.01943393610417843, 0.05839294567704201, 0.07784650474786758, -0.03474121540784836, -0.08329940587282181, -0.07370876520872116, 0.00247382465749979, -0.03260962292551994, -0.02801946923136711, -0.009724347852170467, 0.07360021770000458, -0.017926234751939774, -0.0005674186395481229, 0.018418006598949432, -0.030917160212993622],
+ "VMAXCPSYrr":[0.09201978892087936, 0.0018367641605436802, -0.03309619426727295, -0.05410880595445633, -0.025816932320594788, -0.07079555839300156, -0.12155257910490036, 0.014701789245009422, -0.06864894181489944, -0.060135167092084885, 0.030712783336639404, -0.02625776082277298, -0.1023305207490921, -0.0009115138091146946, 0.015377328731119633, 0.015191277489066124, 0.055071212351322174, -0.02061476558446884, -0.006780699826776981, 0.02818389981985092, -0.0461970791220665, 0.012486565858125687, -0.05366143584251404, 0.062485016882419586, 0.053851064294576645, 0.03060455620288849, 0.003552083158865571, -0.10464375466108322, 0.05579259246587753, -0.026458175852894783, 0.0006628168048337102, 0.06506980955600739, 0.07900208234786987, 0.043478451669216156, -0.0223330557346344, -0.0849357396364212, -0.04291952773928642, 0.09122665226459503, -0.014438879676163197, -0.010599217377603054, -0.028185009956359863, 0.05491015315055847, -0.06329690665006638, 0.0556461475789547, -0.08538158237934113, 0.02146466262638569, -0.0348685197532177, 0.05642593652009964, 0.09494389593601227, -0.04531555250287056, 0.10467149317264557, 0.03887365385890007, 0.045834630727767944, -0.0628046989440918, 0.023275932297110558, 0.01249393355101347, -0.030878718942403793, 0.08345259726047516, -0.025901691988110542, -0.004041718319058418, 0.09415033459663391, -0.007655947003513575, 0.07821182906627655, 0.020331716164946556, 0.11179056763648987, 0.06793903559446335, -0.060935914516448975, -0.05664094164967537, -0.046255238354206085, 0.03828335553407669, 0.03852503374218941, -0.10359453409910202, -0.09329437464475632, -0.04362664744257927, 0.0375644713640213, 0.014331256039440632, 0.049023546278476715, 0.003326797392219305, -0.013260951265692711, 0.04163547605276108, -0.057176802307367325, -0.08147144317626953, 0.03429558500647545, 0.021229568868875504, 0.01766619086265564, -0.028169909492135048, 0.02803892083466053, -0.10149383544921875, 0.10994728654623032, 0.04074878990650177, 0.009905951097607613, 0.004271613899618387, 0.02820580080151558, 0.003259951714426279, -0.024215184152126312, -0.022009458392858505, -0.07088306546211243, -0.07886044681072235, -0.10606694966554642, -0.020748669281601906],
+ "VMAXCPSrr":[0.08406110107898712, 0.016181757673621178, 0.028225326910614967, -0.029203809797763824, -0.025877205654978752, -0.03634817898273468, 0.028585821390151978, -0.025553574785590172, -0.011022076942026615, -0.027774257585406303, -0.014169266447424889, -0.021950215101242065, -0.06561706960201263, 0.029066110029816628, 0.043708622455596924, -0.012949937023222446, -0.05047169327735901, -0.03887695074081421, 0.004404725972563028, 0.07414430379867554, -0.017155533656477928, -0.004544093273580074, 0.03358950838446617, -0.08521768450737, -0.0031397666316479445, 0.02986987493932247, -0.004391350317746401, -0.005226092878729105, 0.07641121000051498, -0.03960596024990082, -0.04976623132824898, -0.031241828575730324, 0.0032177490647882223, -0.03147627413272858, 0.08812211453914642, -0.03373635932803154, 0.044601015746593475, -0.029624978080391884, -0.0391823872923851, -0.010082840919494629, 0.013807590119540691, 0.06116427853703499, -0.010663076303899288, -0.05843140929937363, -0.059146080166101456, 0.11077644675970078, -0.013273954391479492, -0.031963713467121124, -0.007594613824039698, -0.10548485070466995, 0.0769648626446724, 0.003992057405412197, -0.05894961580634117, -0.02422664500772953, 0.040488723665475845, 0.012327552773058414, 0.08459137380123138, -0.04789658263325691, -0.014150157570838928, 0.029352253302931786, 0.021098189055919647, -0.07414170354604721, -0.11367842555046082, 0.10778455436229706, -0.021672744303941727, 0.09381935745477676, 0.07537519931793213, -0.009107102639973164, -0.03917418792843819, -0.034001898020505905, -0.01974579691886902, -0.012663369067013264, -0.055976491421461105, -0.06077145040035248, -0.08398575335741043, 0.031190652400255203, -0.05093924328684807, 0.0497216172516346, -0.08547908067703247, -0.025571955367922783, -0.0690930187702179, -0.047157447785139084, 0.04213938117027283, 0.039980385452508926, 0.03224688023328781, -0.031196434050798416, 0.06684726476669312, 0.0014020497910678387, -0.025138603523373604, 0.0027769438456743956, 0.03953103721141815, -0.04039723426103592, 0.04977814108133316, -0.0205230712890625, -0.0257750041782856, 0.06097907945513725, 0.07373537123203278, 0.06206243112683296, -0.05495056137442589, -0.019938940182328224],
+ "VMAXCSDrm":[0.06903731822967529, 0.0036941685248166323, -0.017282024025917053, -0.05486759915947914, 0.01906016282737255, 0.07041285932064056, -0.027840280905365944, -0.057718675583601, 0.057003557682037354, -0.013624187558889389, -0.010055793449282646, 0.057727329432964325, -0.030867373570799828, 0.015118350274860859, -0.07271517813205719, 0.08064902573823929, 0.06941363215446472, 0.0901893600821495, 0.014381267130374908, 0.007411886006593704, 0.06530777364969254, -0.0011428430443629622, 0.0109944399446249, 0.0452754981815815, -0.09856456518173218, -0.02381143905222416, 0.04596353694796562, -0.04020103067159653, -0.0056068915873765945, 0.04106029495596886, 0.07050091028213501, 0.07596488296985626, -0.001745998626574874, -0.010110551491379738, 0.015979528427124023, 0.050801265984773636, -0.007647417485713959, 0.03403009846806526, 0.0033952295780181885, 0.03221847116947174, -0.038127459585666656, 0.015036791563034058, -0.0161697119474411, -0.0077366395853459835, -0.06849038600921631, 0.00419665826484561, 0.08615665137767792, 0.01394588965922594, 0.053133778274059296, -0.05103954300284386, -0.017344821244478226, -0.024754490703344345, 0.06043291464447975, 0.0320328064262867, -0.032635826617479324, -0.07495781779289246, -0.019209561869502068, 0.07349751889705658, 0.08090416342020035, -0.028617650270462036, 0.03228268399834633, -0.019549835473299026, -0.026121599599719048, -0.07622767984867096, 0.03160844370722771, -0.03076937422156334, 0.016138259321451187, -0.0770677700638771, 0.00409186165779829, 0.008503496646881104, -0.015147333964705467, 0.03560261428356171, -0.039139870554208755, -0.09395809471607208, -0.109495609998703, 0.006295111496001482, -0.09228900820016861, -0.04890942573547363, -0.01449514739215374, 0.0636419728398323, -0.02279851585626602, -0.010518651455640793, -0.05946742370724678, -0.05268000438809395, -0.044325217604637146, 0.00701469462364912, -0.03194708377122879, 0.040183454751968384, -0.0835430696606636, -0.016541993245482445, 0.01899217627942562, 0.00962655246257782, -0.01872400753200054, 0.018114285543560982, -0.0013913552975282073, 0.01725139282643795, -0.001568682724609971, 0.04303613305091858, -0.01163520198315382, -0.04116198793053627],
+ "VMAXCSDrr":[0.022457478567957878, 0.006628907285630703, 0.019273146986961365, -0.013699018396437168, 0.03216582536697388, -0.007428259123116732, -0.011547443456947803, 0.012728849425911903, 0.03865739703178406, -0.014036492444574833, 0.000507563934661448, -0.029182352125644684, 0.031554222106933594, -0.09050402045249939, 0.02975234016776085, 0.008697733283042908, 0.07027783989906311, 0.06324294209480286, -0.04986852407455444, 0.011060346849262714, 0.05684041976928711, -0.040516823530197144, -0.03348996490240097, -0.004428695421665907, 0.022750450298190117, -0.05224071070551872, 0.011675112880766392, 0.030721141025424004, -0.024925749748945236, -0.0028488580137491226, -0.07468106597661972, 0.06832251697778702, -0.015567169524729252, -0.06612274795770645, 0.03547388315200806, 0.03754270821809769, 0.07378311455249786, 0.004910988733172417, 0.006273120641708374, -0.07650040835142136, 0.03979448601603508, -0.024782512336969376, -0.08013072609901428, -0.029316410422325134, -0.00958508625626564, 0.07992623746395111, -0.046930111944675446, -0.05463794618844986, -0.017135675996541977, -0.091220922768116, 0.025587495416402817, -0.023377003148198128, -0.02564033679664135, -0.0722711980342865, 0.009801519103348255, 0.010657898150384426, 0.06474729627370834, 0.02111680991947651, 0.07834424078464508, -0.04215659201145172, -0.043548572808504105, 0.022505855187773705, 0.06956236064434052, -0.02777179144322872, 0.002855071099475026, 0.09729887545108795, -0.061086494475603104, -0.029690157622098923, 0.06832470744848251, -0.09654206037521362, 0.040118664503097534, 0.029965801164507866, 0.001964857568964362, 0.007009010761976242, 0.004328954499214888, -0.057691749185323715, -0.12979333102703094, -0.06504106521606445, -0.02450711652636528, -0.07423004508018494, 0.03433818370103836, -0.10017435997724533, 0.012115086428821087, 0.007686460856348276, -0.0070830704644322395, 0.04584791511297226, 0.0002514768566470593, 0.0548829510807991, -0.03192698583006859, -0.06273142993450165, 0.021792683750391006, -0.03406865894794464, -0.01611872762441635, -0.08603311330080032, -0.025547612458467484, -0.08477693796157837, 0.017011353746056557, 0.019280152395367622, -0.023932088166475296, -0.014234345406293869],
+ "VMAXCSSrm":[0.060885101556777954, -0.0525064580142498, 0.05437862500548363, -0.005903678014874458, 0.010227854363620281, 0.020441440865397453, -0.023230552673339844, 0.051761530339717865, 0.07136557996273041, 0.03961152955889702, -0.028444496914744377, 0.03977284952998161, -0.09727932512760162, -0.045309312641620636, 0.03004104644060135, -0.08365906029939651, 0.0678812712430954, -0.04481159523129463, 0.04659609869122505, -0.033429741859436035, 0.00837632454931736, -0.11379741877317429, -0.09296871721744537, 0.04893495887517929, -0.022894540801644325, 0.04441064968705177, -0.05374487489461899, 0.06331617385149002, 0.017325706779956818, -0.008670966140925884, -0.027097610756754875, -0.05313466489315033, 0.06869524717330933, -0.07358411699533463, 0.07109684497117996, 0.06803680956363678, -0.0802387148141861, -0.05298025906085968, 0.04660208523273468, -0.043376944959163666, 0.044592440128326416, 0.050922997295856476, 0.06303588300943375, 0.07255847752094269, -0.06523536890745163, 0.08106223493814468, 0.02862795628607273, 0.09628880769014359, -0.00300511228851974, 0.0191648006439209, 0.06593679636716843, 0.03713136911392212, -0.05023861303925514, 0.004471863619983196, 0.0027125035412609577, 0.0008394916658289731, 0.07595839351415634, -0.012294843792915344, -0.030934888869524002, -0.07549919933080673, -0.02980785444378853, 0.13784649968147278, 0.07720265537500381, 0.005368560086935759, 0.08171532303094864, -0.04182617738842964, -0.04914820194244385, 0.06641341745853424, 0.013471750542521477, 0.053904686123132706, -0.05385488644242287, -0.028264738619327545, -0.060456179082393646, -0.007241086568683386, -0.07383748888969421, 0.055683888494968414, -0.01704099401831627, -0.05076386034488678, -0.07628286629915237, 0.07500756531953812, 0.11144179105758667, -0.03800505772233009, 0.08679592609405518, -0.05818997696042061, 0.029468052089214325, 0.029358001425862312, 0.029706936329603195, 0.03353201970458031, 0.03923904895782471, 0.0275258868932724, -0.08547819405794144, -0.010648445226252079, 0.04322199150919914, -0.06632086634635925, 0.11643343418836594, -0.04673709347844124, -0.0670868530869484, 0.05561612918972969, 0.051186420023441315, 0.024486524984240532],
+ "VMAXCSSrr":[-0.05436093732714653, 0.060812219977378845, -0.03129205480217934, 0.0005023166304454207, 0.008871288038790226, -0.006623539142310619, -0.03426211327314377, -0.06986192613840103, -0.03737598657608032, -0.0011757150059565902, 0.008365854620933533, -0.045379478484392166, -0.07904671132564545, 0.057070259004831314, 0.08186128735542297, -0.020013470202684402, 0.02794552408158779, -0.046929653733968735, 0.03851627930998802, 0.05485126003623009, 0.03403175249695778, -0.057765644043684006, -0.023321686312556267, -0.08369549363851547, 0.024100931361317635, -0.023760639131069183, 0.09134288877248764, -0.0635112076997757, 0.06531781703233719, 0.017047163099050522, 0.04275306314229965, -0.016338573768734932, 0.04891025274991989, -0.013144767843186855, 0.028417479246854782, -0.0937616154551506, -0.03797212988138199, 0.05028041824698448, 0.04983878508210182, -0.0952003076672554, -0.03013400174677372, 0.060589808970689774, 0.025484630838036537, 0.06579728424549103, -0.014735682867467403, 0.012714664451777935, 0.02390296198427677, -0.07221367210149765, 0.08216608315706253, -0.06316695362329483, -0.04957696422934532, -0.04982360079884529, -0.046025633811950684, -0.022876258939504623, 0.07150015980005264, 0.08935373276472092, 0.06985893845558167, 0.020907141268253326, -0.09983965009450912, 0.05896510183811188, 0.04881127551198006, -0.0012589138932526112, -0.018552834168076515, 0.021982580423355103, -0.017940454185009003, -0.03486495837569237, -0.020302604883909225, 0.026977794244885445, -0.038709983229637146, 0.0004994435585103929, 0.046897731721401215, 0.03172789886593819, -0.03158184885978699, 0.0005533028161153197, -0.02567782998085022, 0.015811661258339882, -0.1296250820159912, -0.03496670722961426, -0.039810530841350555, 0.008255695924162865, 0.01831936091184616, -0.02931193821132183, 0.029802484437823296, 0.03497844561934471, -0.028101399540901184, -0.02134389989078045, -0.013072767294943333, 0.04052085801959038, 0.09352467209100723, -0.03419005498290062, 0.006836360320448875, 0.026612907648086548, -0.05774129182100296, 0.036237236112356186, -0.021417861804366112, -0.024446332827210426, 0.0402950756251812, 0.004458218812942505, -0.015658240765333176, -0.01679108664393425],
+ "VMINCPDYrr":[-0.05198508873581886, 0.023851625621318817, 0.053241513669490814, -0.023066390305757523, 0.009219074621796608, -0.008295467123389244, -0.0025685245636850595, 0.0729529857635498, -0.009300434961915016, -0.01814384199678898, -0.07885698229074478, -0.04065301641821861, 0.04195651784539223, 0.03602268546819687, 0.009629379026591778, 0.011443955823779106, 0.06293342262506485, -0.04403149336576462, -0.011856882832944393, 0.04482153430581093, -0.04076140373945236, -0.03516464680433273, -0.08648233115673065, 0.1024947240948677, 0.030887175351381302, 0.05636090785264969, 0.04398011043667793, -0.03892401605844498, 0.05609834939241409, 0.04498962312936783, -0.05334047973155975, -0.06246672570705414, 0.004354008473455906, 0.03643856942653656, -0.040512699633836746, -0.08117388933897018, 0.05793486908078194, 0.01340334489941597, 0.01179709192365408, 0.058452755212783813, -0.07642967998981476, -0.026163261383771896, -0.05710187926888466, 0.04866183176636696, -0.009021361358463764, -0.005776270292699337, 0.007939906790852547, -0.03262672945857048, 0.07074090093374252, 0.058307915925979614, -0.0034743966534733772, 0.0749761238694191, -0.0804852694272995, 0.06971388310194016, -0.0019763472955673933, -0.044629741460084915, -0.05648920312523842, -0.03289379924535751, -0.009559424594044685, -0.10017817467451096, 0.06429809331893921, -0.011714722961187363, 0.03306819871068001, -0.0295702014118433, -0.07193523645401001, 0.011777020990848541, 0.04485958069562912, -0.019935207441449165, 0.039758533239364624, -0.012216085568070412, 0.061862751841545105, -0.005310801323503256, 0.013664627447724342, 0.035372015088796616, -0.006743194535374641, 0.013831564225256443, 0.03780872002243996, 0.04507312551140785, 0.02863745391368866, -0.01624622382223606, -0.010868205688893795, 0.0009035879047587514, -0.005219296086579561, -0.028565550222992897, -0.013486001640558243, -0.04336434230208397, 0.02549045905470848, 0.06307316571474075, 0.12454208731651306, -0.011156992986798286, -0.029985126107931137, 0.05325988680124283, 0.09547727555036545, -0.06492558121681213, -0.02512308396399021, -0.0066118487156927586, -0.03247546777129173, -0.060803525149822235, 0.04410576820373535, -0.0728088915348053],
+ "VMINCPDrr":[-0.09939801692962646, 0.06234009936451912, 0.02159658633172512, 0.023361295461654663, -0.03138386085629463, 0.029647544026374817, -0.07004475593566895, 0.0034724425058811903, -0.01649688370525837, 0.04450426995754242, 0.0315525159239769, -0.021166350692510605, 0.0017371784197166562, 0.05698736757040024, 0.047101348638534546, 0.01801426149904728, -0.041329506784677505, 0.09026800841093063, 0.04230325296521187, 0.0348447822034359, -0.05400199815630913, 0.007128055207431316, -0.01576852984726429, -0.025985771790146828, 0.0644441619515419, 0.09281010180711746, 0.060679927468299866, -0.04614229127764702, 0.046566326171159744, -0.01901477575302124, 0.0340302400290966, 0.03156961128115654, 0.030728468671441078, -0.011247316375374794, 0.08568403124809265, -0.011422100476920605, -0.03860718756914139, 0.1013602688908577, -0.05020713433623314, -0.04480024427175522, 0.019934430718421936, -0.01899935118854046, 0.038826704025268555, -0.020823409780859947, 0.0447787269949913, -0.01966284215450287, 0.07166345417499542, 0.019701527431607246, -0.022476522251963615, 0.00836524460464716, 0.0058184536173939705, 0.003150239819660783, -0.016301261261105537, -0.005125490482896566, 0.03510165959596634, 0.04329271987080574, -0.001148865674622357, 0.030036702752113342, -0.06373484432697296, 0.005809723865240812, 0.079022116959095, -0.08209201693534851, -0.07484468072652817, 0.10511565953493118, 0.030704427510499954, 0.061043594032526016, 0.09222239255905151, -0.015412370674312115, 0.03181149810552597, 0.03727057948708534, -0.015253057703375816, -0.0015171451959758997, -0.022722583264112473, 0.024125661700963974, 0.04992228373885155, 0.06950674206018448, 0.04352452605962753, 0.028299087658524513, 0.03790774941444397, -0.07278570532798767, 0.08196402341127396, 0.009100872091948986, 0.016121912747621536, -0.06447084248065948, -0.0201188363134861, 0.07554074376821518, 0.005693928338587284, 0.08998444676399231, 0.06394000351428986, 0.05541091039776802, -0.010704734362661839, 0.03843732923269272, 0.019208483397960663, 0.07897176593542099, -0.022996779531240463, -0.01778571493923664, 0.021316321566700935, 0.0025951266288757324, -0.0059397853910923, 0.037219204008579254],
+ "VMINCPSYrr":[0.08477579802274704, -0.0116703687235713, -0.022739646956324577, -0.016781924292445183, -0.031387172639369965, 0.0481562539935112, 0.13642115890979767, 0.067116379737854, -0.048028189688920975, -0.07424812763929367, -0.017636744305491447, -0.029720747843384743, -0.15594439208507538, 0.03956027701497078, 0.05471380800008774, 0.002217033412307501, -0.002149958163499832, -0.013680030591785908, 0.07588627189397812, 0.019013579934835434, 0.01891031675040722, -0.0509481281042099, -0.043382078409194946, 0.06097232177853584, 0.04653138294816017, 0.03525327891111374, 0.04741900414228439, 0.08202803879976273, 0.02434566617012024, -0.008093710988759995, -0.09291009604930878, -0.010536408051848412, 0.03827785328030586, 0.03943352773785591, -0.06506244838237762, 0.00836970005184412, 0.04839067533612251, -0.07314897328615189, 0.025538936257362366, -0.007764731999486685, 0.025920899584889412, 0.07125329226255417, -0.03759311884641647, 0.026608798652887344, 0.010076758451759815, 0.019257811829447746, -0.10226443409919739, -0.021384738385677338, -0.003803446190431714, 0.06135273352265358, 0.029208503663539886, 0.016636595129966736, 0.0010127292480319738, -0.05087411776185036, -0.0006749461172148585, 0.0031075412407517433, -0.004131469409912825, -0.03404826670885086, 0.027545571327209473, 0.0161491297185421, 0.052839964628219604, -0.01941758207976818, -0.03786488622426987, -0.0006216960609890521, 0.09211203455924988, -0.010681229643523693, -0.061557650566101074, -0.06544972211122513, -0.03527912124991417, 0.0012384573929011822, 0.026357494294643402, -0.04701759293675423, 0.09288357943296432, 0.005417796317487955, 0.0830039456486702, 0.008607395924627781, 0.0391499288380146, 0.012507702223956585, -0.06607326120138168, 0.0016548971179872751, 0.018620239570736885, -0.10981632024049759, 0.06130579486489296, -0.00962552335113287, 0.05663459002971649, 0.00026070367312058806, 0.0026689087972044945, 0.03318776935338974, 0.07849538326263428, 0.03966635465621948, -0.003935762215405703, -0.031841982156038284, -0.07671593874692917, -0.07278954982757568, -0.057537421584129333, -0.04382326453924179, 0.04766514152288437, -0.06488984823226929, -0.0513213612139225, -0.028619036078453064],
+ "VMINCPSrr":[0.01823483221232891, 0.024576198309659958, -0.017898421734571457, 0.056243959814310074, -0.011332159861922264, -0.021533308550715446, -0.012041429057717323, 0.10688459873199463, -0.00732675613835454, -0.06550563126802444, -0.020680256187915802, -0.0075750225223600864, 0.013413247652351856, 0.043688442558050156, 0.07034429907798767, -0.03426416590809822, 0.01966889575123787, -0.04113571718335152, -0.10621591657400131, -0.0632375106215477, 0.03425402194261551, 0.0032642881851643324, -0.06140827387571335, -0.007537251804023981, -0.010940390639007092, 0.04040437936782837, -0.004472526255995035, -0.005450991913676262, 0.0008899419917725027, -0.005560104735195637, -0.011803577654063702, 0.0014545171288773417, 0.025791361927986145, -0.10398842394351959, 0.08360617607831955, -0.11172289401292801, -0.003656882792711258, 0.014901272021234035, 0.05038834363222122, 0.047200098633766174, 0.023634513840079308, 0.02481197752058506, 0.05114962160587311, 0.08068391680717468, -0.01216257642954588, 0.0013840803876519203, -0.000607303692959249, -0.03358026221394539, 0.05439857393503189, -0.0805533230304718, 0.08528215438127518, 0.004248709883540869, -0.07178645581007004, -0.0478326678276062, -0.0556294322013855, -0.0013255714438855648, -0.03936150670051575, -0.0704880803823471, -0.009034316055476665, 0.029617276042699814, -0.0703199952840805, -0.04481488838791847, 0.05874178558588028, -0.02760257013142109, -0.03541770204901695, 0.08079009503126144, -0.10083959251642227, -0.010031264275312424, 0.005528642330318689, 0.026382531970739365, -0.014973632991313934, -0.06975486874580383, -0.06120804324746132, -0.029131688177585602, 0.09861990809440613, 0.024511238560080528, 0.10262150317430496, -0.0015659144846722484, -0.011020653881132603, 0.03164141997694969, -0.10848567634820938, 0.040929775685071945, 0.04163513332605362, 0.02359198033809662, 0.06931813061237335, -0.10026143491268158, 0.08521151542663574, 0.03956018015742302, -0.001091880607418716, 0.06169671192765236, -0.09202465415000916, -0.03199772536754608, -0.01549914013594389, -0.022398456931114197, 0.024863235652446747, 0.005246060434728861, 0.07141761481761932, 0.031780872493982315, -0.023450566455721855, -0.01901969313621521],
+ "VMINCSDrm":[-0.008293255232274532, 0.014750659465789795, 0.043911971151828766, 0.06234464421868324, 0.0769185796380043, -0.06357242912054062, -0.022383131086826324, 0.05490979552268982, -0.07887265086174011, -0.033256255090236664, -0.034531090408563614, -0.04634557664394379, -0.0033926675096154213, 0.010793967172503471, -0.06070733442902565, -0.08624717593193054, 0.0031949945259839296, -0.03926361724734306, 0.016552116721868515, 0.07753453403711319, 0.0022749407216906548, 0.050485387444496155, -0.00038083698018454015, 0.07895287871360779, 0.04452545940876007, -0.0679164007306099, -0.013009252957999706, 0.002265225863084197, 0.08800580352544785, -0.0558084100484848, -0.031262319535017014, -0.050047989934682846, -0.03210819140076637, 0.00352450180798769, -0.0013612863840535283, -0.01117797289043665, -0.0350908599793911, -0.043396443128585815, -0.05740691348910332, 0.008945806883275509, 0.011819177307188511, 0.059913910925388336, 0.011034038849174976, 0.02636656165122986, 0.030981512740254402, -0.007329131942242384, 0.01064301934093237, 0.019751401618123055, -0.09422656893730164, 0.07495929300785065, -0.018878182396292686, -0.054775696247816086, -0.09863346070051193, -0.01806626468896866, 0.052920158952474594, -0.06627410650253296, 0.009407680481672287, -0.07455844432115555, 0.058701347559690475, -0.07187268882989883, -0.05115826800465584, 0.10101624578237534, 0.027453908696770668, -0.0830639973282814, -0.010408369824290276, -0.003216318553313613, -0.10111182928085327, -0.052758581936359406, 0.07270631939172745, -0.09817972034215927, 0.08429067581892014, 0.07815568894147873, -0.016809789463877678, 0.02458597905933857, -0.07363156229257584, -0.02354888804256916, -0.040331706404685974, 0.07170530408620834, 0.004018145147711039, -0.055154282599687576, 0.05084872245788574, 0.006785131059587002, -0.003565334714949131, -0.06554465740919113, 0.07695269584655762, 0.04076092690229416, -0.042199913412332535, 0.07408720999956131, -0.0786452367901802, 0.03232835233211517, 0.0052002896554768085, -0.028373679146170616, -0.10282079130411148, 0.105044424533844, 0.060467928647994995, 0.04946032539010048, 0.010785710997879505, -0.015084519051015377, -0.05676933377981186, 0.007234936114400625],
+ "VMINCSDrr":[0.03291118144989014, 0.056030966341495514, 0.029352867975831032, -0.013339351862668991, -0.106340691447258, 0.07713387161493301, 0.00401551928371191, 0.09976383298635483, 0.0225402619689703, -0.02880086377263069, -0.02743779681622982, 0.00374697451479733, 0.03692569211125374, -0.028406856581568718, 0.05325426533818245, -0.031708475202322006, 0.05937812477350235, -0.020399397239089012, -0.03930516168475151, -0.06505384296178818, 0.04210885986685753, -0.0461917407810688, -0.04351090267300606, 0.02448183298110962, 0.01303812675178051, -0.05746683478355408, -0.08892252296209335, 0.04682868346571922, 0.07837740331888199, 0.016892651095986366, -0.018000487238168716, 0.10519465059041977, 0.040834952145814896, 0.03972777724266052, 0.00011179949069628492, -0.010147138498723507, 0.10707563161849976, 0.06447705626487732, 0.05915983393788338, -0.008499386720359325, 0.05528805032372475, -0.022459397092461586, 0.015606781467795372, -0.01685645803809166, -0.013993453234434128, 0.08136782050132751, -0.0301909688860178, -0.024552730843424797, -0.062368039041757584, 0.052610814571380615, 0.06723736971616745, 0.03129251301288605, -0.034861791878938675, -0.05869690328836441, -0.0032314537093043327, -0.003977727144956589, 0.0739487037062645, 0.044167641550302505, 0.0319693386554718, 0.04521620273590088, -0.05533398315310478, 0.1217743456363678, 0.011801638640463352, 0.04267292097210884, 0.025341784581542015, 0.03211751952767372, -0.05052749067544937, 0.02228502370417118, 0.01566298119723797, 0.011057938449084759, -0.05941241234540939, 0.03315306827425957, 0.04005665332078934, 0.0595986470580101, 0.019727081060409546, -0.06467470526695251, 0.06115599349141121, -0.09298382699489594, 0.008379550650715828, -0.09600664675235748, 0.04657887667417526, 0.06357193738222122, 0.051547713577747345, 0.024368619546294212, -0.004169218707829714, -0.023043274879455566, 0.0042770905420184135, 0.007414774037897587, 0.10534218698740005, -0.09240022301673889, 0.007539887446910143, -0.06600750982761383, -0.030620360746979713, -0.03363659605383873, 0.03467140719294548, -0.07247672975063324, 0.0230226032435894, 0.0006058259750716388, -0.0033988680224865675, -0.027513280510902405],
+ "VMINCSSrm":[-0.010748511180281639, -0.04177282005548477, 0.01719966158270836, 0.007803515065461397, -0.0011409544385969639, 0.03559836745262146, -0.03720611333847046, -0.026499826461076736, -0.0010410640388727188, 0.01151339989155531, 0.030081065371632576, 0.018456220626831055, 0.0661105066537857, 0.029471196234226227, 0.024677539244294167, -0.06993654370307922, 0.01963629014790058, -0.03351216018199921, -0.024109048768877983, -0.03977799788117409, 0.1036694273352623, -0.09119454771280289, -0.07544722408056259, -0.01854793168604374, -0.02331678383052349, 0.013852221891283989, 0.03894944116473198, -0.013347494415938854, 0.022025279700756073, 0.05193682387471199, 0.019985070452094078, -0.03899988532066345, 0.07289981096982956, 0.056409042328596115, -0.07723896205425262, -0.008973810821771622, -0.007380524184554815, 0.007830501534044743, 0.03477311134338379, -0.06303025037050247, -0.0067118010483682156, 0.043422628194093704, 0.051026713103055954, 0.05911706015467644, 0.03870922327041626, 0.0284013282507658, 0.05853212624788284, -0.05346757173538208, -0.004314589314162731, 0.015467285178601742, -0.10099771618843079, -0.014129509218037128, 0.00031853283871896565, -0.0692451223731041, 0.04753517732024193, 0.06329792737960815, -0.032809287309646606, -0.01548230554908514, -0.031052028760313988, -0.0753161609172821, -0.03998030349612236, -0.00821517314761877, -0.11848954856395721, 0.036205027252435684, -0.007821900770068169, -0.03295638784766197, -0.018357165157794952, 0.0797308012843132, -0.08622764050960541, -0.028265658766031265, -0.01324496977031231, -0.05161098390817642, -0.04334075748920441, -0.036863792687654495, 0.00800354778766632, 0.06709885597229004, -0.008168493397533894, -0.013425291515886784, -0.08724620193243027, 0.014598394744098186, 0.004855173174291849, -0.006377824116498232, -0.011902578175067902, 0.09298477321863174, 0.022949250414967537, -0.014040307141840458, -0.006350744049996138, -0.02184300869703293, 0.036262642592191696, 0.012716960161924362, -0.028980538249015808, -0.01794443465769291, 0.07500692456960678, -0.0036717478651553392, -0.09414078295230865, -0.07078923285007477, 0.08573772013187408, 0.030409766361117363, 0.02407439425587654, 0.0073104617185890675],
+ "VMINCSSrr":[-0.009014119394123554, -0.034947965294122696, -0.008155823685228825, 1.0581894457573071e-05, 0.003359253751114011, 0.005624562036246061, 0.01765410602092743, 0.08767032623291016, -0.009172370657324791, -0.0009750492172315717, 0.01855710707604885, -0.0347055159509182, -0.00633307034149766, 0.02961145155131817, 0.010778957977890968, -0.05980018153786659, 0.04211900755763054, -0.007065622601658106, 0.04644012823700905, -0.03973899036645889, 0.07303210347890854, 0.004160705022513866, -0.06978708505630493, -0.011184143833816051, 0.039306607097387314, 0.030888238921761513, -0.0005024847923777997, 0.04938865453004837, 0.05321451649069786, 0.03847891092300415, 0.031982164829969406, -0.08069354295730591, 0.12447661906480789, -0.00493968790397048, 0.05513911321759224, -0.08108242601156235, -0.044909752905368805, 0.04935641959309578, 0.046967677772045135, 0.0002964115119539201, 0.004518771544098854, 0.06797799468040466, -0.05878162756562233, 0.06079700216650963, -0.0914529412984848, -0.01390001829713583, 0.0198260098695755, -0.03384324908256531, 0.08742019534111023, -0.059400662779808044, -0.03632334619760513, -0.06408919394016266, 0.0423782542347908, -0.03823820874094963, 0.051141444593667984, 0.022369248792529106, 0.0435124933719635, -0.02981744334101677, -0.03513611853122711, -0.07208055257797241, 0.02393525093793869, 0.09221448749303818, 0.016757633537054062, 0.04065708816051483, -0.0038088723085820675, 0.09743480384349823, -0.023453189060091972, 0.008809841237962246, -0.02725284919142723, -0.008570955134928226, 0.015046298503875732, -0.02785821072757244, -0.0684124082326889, -0.030964694917201996, -0.05229441076517105, 0.03028036467730999, 0.022323349490761757, -0.014693716540932655, -0.07485842704772949, 0.0374654158949852, 0.013786325231194496, -0.027562957257032394, 0.025796517729759216, 0.02742808312177658, -0.019545936957001686, -0.03670607879757881, -0.08268384635448456, -0.021129930391907692, 0.046369682997465134, -0.0028091289568692446, -0.0006545328651554883, -0.057334721088409424, -0.04563916102051735, 0.024671798571944237, 0.0844459980726242, -0.0034684340935200453, -0.05446144938468933, 0.036353569477796555, -0.03575862571597099, -0.0272491704672575],
+ "VMOV":[-0.04926028102636337, -0.06957024335861206, 0.01449529267847538, -0.04019352048635483, -0.08724743872880936, 0.04767467826604843, 0.026806320995092392, -0.09963323175907135, -0.014863709919154644, -0.08903012424707413, 0.0526558980345726, -0.00899734441190958, -0.07170631736516953, -0.0607813224196434, -0.1297457218170166, 0.017449410632252693, -0.06559540331363678, 0.0515381284058094, -0.02191438153386116, -0.04295684024691582, -0.0358564592897892, -0.02378358691930771, -0.04000542685389519, -0.04459748417139053, -0.0007420488400384784, -0.08219385892152786, -0.021552294492721558, 0.009592934511601925, 0.01122793834656477, 0.05081774294376373, -0.04159630835056305, 0.03363495320081711, -0.02382095344364643, -0.060236427932977676, 0.10086569935083389, -0.013322478160262108, -0.0758485347032547, 0.060685571283102036, -0.027698451653122902, 0.00442257197573781, 0.07462551444768906, 0.04302062839269638, -0.03047855943441391, 0.03403661027550697, 0.017598893493413925, 0.06182006374001503, 0.0020785238593816757, -0.03647889196872711, 0.034743789583444595, -0.052862491458654404, -0.016561711207032204, 0.0071599301882088184, -0.012448960915207863, -0.039826106280088425, 0.08777299523353577, -0.04722610116004944, 0.07900380343198776, -0.005869765765964985, -0.0819321796298027, -0.04211331531405449, -0.008209348656237125, 0.043048564344644547, 0.06542282551527023, 0.029605085030198097, -0.06827513128519058, -0.013946817256510258, -0.07557874172925949, 0.0724080502986908, 0.04467950761318207, -0.10677269101142883, -0.004934060387313366, -0.10811156779527664, -0.06544699519872665, 0.015983331948518753, -0.02963590808212757, 0.041683442890644073, -0.04423783719539642, 0.022524958476424217, 0.011176182888448238, 0.02468831278383732, 0.0277353934943676, -0.060271263122558594, -0.001245344989001751, -0.03033219277858734, 0.023360656574368477, -0.03321347385644913, 0.06244757026433945, -0.026384294033050537, 0.09689961373806, -0.04574698582291603, -0.022197995334863663, 0.03973305970430374, 0.05146922171115875, -0.010071353986859322, 0.011266186833381653, -0.043266672641038895, -0.08034385740756989, 0.009297392331063747, -0.06617028266191483, 0.0406508594751358],
+ "VMOVAPDYmr":[0.024429135024547577, -0.01506568118929863, -0.0010314102983102202, 0.10522958636283875, 0.0853060707449913, 0.01927717961370945, -0.07659221440553665, -0.05387831851840019, 0.10181543976068497, 0.047558337450027466, -0.06847656518220901, 0.013841009698808193, 0.023819446563720703, 0.06763386726379395, -0.038251154124736786, -0.04950006306171417, 0.022272037342190742, -0.06649955362081528, -0.06574280560016632, -0.04066234081983566, -0.005674694199115038, 0.05814463272690773, 0.0734374076128006, -0.06384731084108353, -0.023328537121415138, 0.003374831983819604, -0.06164604425430298, -0.09216662496328354, -0.1013234555721283, 0.0059206499718129635, -0.0685977041721344, 0.024832800030708313, -0.014790679328143597, -0.031313713639974594, -0.0016838681185618043, 0.08938600867986679, 0.02164381928741932, -0.06610103696584702, -0.06109890341758728, 0.052526481449604034, 0.005764396861195564, -0.007135998923331499, -0.04230092838406563, -0.022313058376312256, -0.08167406171560287, 0.05479748919606209, 0.0898430198431015, -0.08444542437791824, -0.0017073173075914383, 0.04905688390135765, 0.010923454537987709, 0.06615419685840607, 0.01213245838880539, -0.017250077798962593, 0.013174401596188545, 0.05076807737350464, -0.050851970911026, 0.026350809261202812, 0.06055404990911484, -0.030385879799723625, 0.09154200553894043, 0.022289281710982323, -0.0006545315845869482, 0.004707875195890665, -0.00615222891792655, 0.08691995590925217, -0.013282930478453636, -0.01999238133430481, 0.032887186855077744, -0.041109248995780945, 0.023013288155198097, -0.013423142023384571, 0.0871182531118393, 0.0694553330540657, -0.023043280467391014, -0.0695628970861435, 0.07071955502033234, 0.05570927634835243, 0.0008918241946958005, 0.034219950437545776, 0.05783954635262489, 0.013581335544586182, 0.050072282552719116, -0.04593348875641823, -0.0014169974019750953, -0.0241306833922863, -0.0395844392478466, -0.06224118173122406, -0.09445378184318542, -0.038924690335989, 0.0805995911359787, 0.017209572717547417, -0.07843527942895889, -0.012459526769816875, -0.08060609549283981, -0.01849513128399849, 0.07493504881858826, 0.016276801005005836, -0.040382061153650284, 0.05566933751106262],
+ "VMOVAPDYrm":[-0.08120272308588028, 0.06272806972265244, -0.018585944548249245, 0.06737742573022842, 0.04041821509599686, 0.01001138798892498, 0.04633350670337677, -0.05886225402355194, 0.03899683058261871, 0.03613245487213135, -0.01643882505595684, -0.0944344699382782, 0.01716466061770916, -0.047868240624666214, -0.01253624726086855, 0.010616241954267025, -0.06144748255610466, -0.01574734039604664, -0.04685145244002342, 0.014378421008586884, -0.021122969686985016, -0.0044979192316532135, -0.06810503453016281, -0.008932511322200298, -0.00854488369077444, 0.03747030720114708, -0.10253645479679108, -0.10198961943387985, 0.06004773825407028, 0.03516164422035217, -0.029207928106188774, -0.028944922611117363, -0.029802212491631508, 0.029974495992064476, -0.025954948738217354, -0.0174549650400877, 0.04313264042139053, 0.01996723935008049, -0.07987046241760254, 0.038488805294036865, 0.01797357387840748, 0.07675974816083908, -0.07830914109945297, -0.042343996465206146, -0.03944816067814827, -0.11032545566558838, -0.01132050808519125, -0.06393320113420486, -0.027176549658179283, 0.001244456972926855, 0.012295790016651154, -0.02227582223713398, 0.03975115343928337, -0.04843713343143463, -0.09207294136285782, -0.0015338319353759289, -0.039584189653396606, 0.05065274238586426, -0.044296082109212875, -0.047201741486787796, -0.05373644456267357, -0.01887655258178711, -0.04042486473917961, -0.07198512554168701, 0.06139669194817543, -0.04214750975370407, 0.04064616933465004, -0.047362931072711945, -0.07096043974161148, 0.003911680541932583, -0.09538048505783081, -0.028117520734667778, -0.008435717783868313, -0.01323444303125143, 0.07162043452262878, -0.022417863830924034, 0.08913115411996841, -0.006224403157830238, 0.002162256743758917, -0.011952481232583523, -0.004554222337901592, 0.021575400605797768, 0.013210627250373363, 0.07963152974843979, -0.05348430201411247, -0.013722130097448826, 0.07327195256948471, -0.03821026533842087, 0.008175675757229328, -0.027860445901751518, 0.02829764038324356, 0.03220454975962639, -0.02801377698779106, 0.00994783267378807, 0.05250883102416992, -0.0013541639782488346, -0.018910428509116173, -0.021567216143012047, 0.10554961860179901, 0.019182877615094185],
+ "VMOVAPDmr":[-0.05672096088528633, 0.04822602868080139, -0.005890322383493185, 0.08360902965068817, 0.01464609894901514, 0.08261135965585709, -0.05761723965406418, 0.08241782337427139, -0.0070695774629712105, -0.09166036546230316, -0.03228147327899933, -0.03606843948364258, -0.05224357545375824, 0.05748092010617256, -0.0011919087264686823, 0.0016495101153850555, -0.06632747501134872, 0.05075475573539734, -0.08133815228939056, 0.00849874597042799, 0.04194535315036774, 0.01976657845079899, -0.015576733276247978, -0.03679926320910454, 0.0061563123017549515, 0.0656060129404068, 0.0077239652164280415, 0.06578237563371658, -0.07009855657815933, 0.05434917286038399, 0.09294511377811432, -0.01495757419615984, 0.06759975105524063, -0.016077207401394844, 0.022583700716495514, -0.04150126874446869, 0.011331583373248577, -0.08615687489509583, 0.10121070593595505, 0.039764516055583954, 0.08838732540607452, 0.012439203448593616, 0.019510746002197266, -0.005905249156057835, -0.005599318537861109, -0.015992427244782448, 0.054679468274116516, -0.03656766191124916, 0.04074263945221901, 0.04841606691479683, -0.0782933235168457, 0.009738367050886154, -0.058318302035331726, -0.031300436705350876, -0.10410556942224503, -0.1056726798415184, 0.0983339473605156, -0.05096902325749397, -0.05732550844550133, 0.0764571875333786, -0.01685546711087227, 0.05035680904984474, -0.022455958649516106, -0.10969070345163345, -0.07303378731012344, 0.009229748509824276, -0.012844608165323734, -0.00901868287473917, 0.01782318763434887, 0.00993791688233614, 0.10194836556911469, -0.03196726739406586, 0.008226278237998486, 0.0069596911780536175, -0.05879449099302292, 0.09651349484920502, 0.027864763513207436, -0.10635345429182053, -0.0615922287106514, 0.020415237173438072, 0.08866924047470093, 0.04566680267453194, -0.05112387239933014, -0.02697816677391529, 0.0038994529750198126, 0.02349919080734253, 0.02712777815759182, 0.02062024362385273, 0.03343721106648445, 0.030047744512557983, 0.033175989985466, 0.03978922963142395, -0.05821337550878525, 0.08734254539012909, -0.044071510434150696, -0.00520081352442503, 0.059030208736658096, -0.015292190946638584, 0.10322415083646774, 0.03809034079313278],
+ "VMOVAPDrm":[-0.08029187470674515, 0.038701605051755905, -0.09255390614271164, -0.05512244626879692, 0.025373756885528564, 0.05315883457660675, -0.029729412868618965, 0.028200242668390274, 0.054525356739759445, -0.13400806486606598, -0.0306394025683403, 0.05456440895795822, -0.038995351642370224, -0.1352699100971222, 0.03253645449876785, -0.044810496270656586, 0.002137203933671117, 0.06715425848960876, -0.051514748483896255, -0.032455042004585266, 0.010329915210604668, -0.06541122496128082, 0.017196565866470337, -0.10757029056549072, 0.08458635956048965, 0.03081408329308033, 0.07032320648431778, 0.013023607432842255, 0.09394712001085281, -0.020150937139987946, 0.05586028844118118, -0.05618550255894661, -0.12101110070943832, -0.08569767326116562, 0.035840317606925964, 0.10730259120464325, 0.022966545075178146, 0.05999642610549927, 0.09980281442403793, -0.039208732545375824, -0.03581485152244568, 0.07225808501243591, 0.014945711940526962, 0.0022325364407151937, 0.02838301844894886, 0.03138993680477142, 0.009244732558727264, -0.05737880617380142, -0.05562916770577431, 0.01584664173424244, -0.019637206569314003, 0.019651612266898155, 0.04379170015454292, 0.01552319061011076, 0.005391178652644157, -0.03243205323815346, 0.08154208958148956, -0.04321569204330444, 0.05430418998003006, -0.032412972301244736, 0.008578430861234665, -0.013640391640365124, -0.012200379744172096, -0.0090637793764472, 0.024838929995894432, -0.023673122748732567, -0.0021368805319070816, 0.05076019465923309, 0.009542499668896198, -0.06444064527750015, -0.014897895976901054, 0.0017516901716589928, 0.12950919568538666, 0.0801793783903122, -0.04726654663681984, -0.034147728234529495, -0.03215191885828972, -0.011447056196630001, -0.04475937783718109, 0.03220123052597046, 0.0600525327026844, 0.03294144943356514, -0.0316784493625164, 0.010793407447636127, 0.022122742608189583, -0.025378119200468063, -0.03582429513335228, 0.03838784992694855, -0.00711427116766572, -0.011966672725975513, -0.025418436154723167, -0.11194691061973572, 0.02030879631638527, -0.03225753828883171, 0.09568217396736145, -0.02675376646220684, -0.030206097289919853, -0.0003605145029723644, 0.03943917155265808, 0.04118462651968002],
+ "VMOVAPSYmr":[-0.07378658652305603, -0.06634820252656937, -0.04312092065811157, -0.060237713158130646, -0.07070163637399673, 0.11715827137231827, 0.1093200296163559, 0.018497712910175323, 0.03425726294517517, -0.010242875665426254, 0.04511386901140213, 0.0824819877743721, -0.04526958614587784, -0.06786622852087021, 0.06228456273674965, -0.03189685940742493, -0.003291007364168763, 0.040352776646614075, -0.023571541532874107, -0.0013511274009943008, -0.007262783590704203, 0.09979795664548874, -0.009181632660329342, 0.07810810208320618, 0.038119006901979446, 0.10676788538694382, 0.03448963537812233, 0.030099675059318542, -0.02229234017431736, 0.11489874124526978, -0.08135385066270828, -0.0994749367237091, -0.00014792611182201654, 0.008388829417526722, 0.010198003612458706, -0.0248327124863863, 0.06756243854761124, -0.030297445133328438, -0.005350994411855936, -0.00825226679444313, -0.016635220497846603, 0.034600306302309036, -0.05057099834084511, 0.10218290239572525, 0.024303043261170387, -0.040811650454998016, 0.034074604511260986, -0.0026419120840728283, 0.014881139621138573, 0.02323765866458416, 0.008844632655382156, -0.011538679711520672, -0.03455718979239464, 0.04315769672393799, -0.032267894595861435, -0.0629090741276741, -0.05601201578974724, -0.05822780355811119, 0.10934892296791077, 0.004707883112132549, -0.028110215440392494, -0.12558859586715698, -0.08231449872255325, 0.0433623380959034, 0.018550310283899307, 0.07800845801830292, 0.018532490357756615, 0.02092234417796135, 0.06569169461727142, 0.04604668915271759, 0.04269710183143616, -0.07803425937891006, -0.05172814428806305, -0.007049945183098316, 0.020831473171710968, 0.08391758799552917, -0.08683529496192932, 0.008783415891230106, -0.06043345853686333, 0.022474901750683784, -0.07350742816925049, -0.04354940727353096, 0.0013163116527721286, -0.06835489720106125, -0.04194062203168869, -0.07291360944509506, 0.0203163493424654, 0.0610189363360405, 0.05521043762564659, -0.02956291474401951, -0.03771612048149109, -0.06070755422115326, 0.009629729203879833, -0.0027128683868795633, -0.052743978798389435, -0.005604954902082682, -0.007213722914457321, -0.026054274290800095, -0.03446142375469208, -0.05426327884197235],
+ "VMOVAPSYrm":[0.026163827627897263, 0.009068853221833706, 0.09870307892560959, -0.050618305802345276, 0.054005809128284454, 0.029397020116448402, 0.00039381295209750533, -0.005275291856378317, 0.02767651155591011, 0.01686868444085121, -0.002845178358256817, -0.05562988296151161, -0.0351225920021534, -0.04008278623223305, 0.04507716745138168, 0.07589606195688248, 0.002880265237763524, 0.002509735058993101, -0.01585276983678341, 0.017592081800103188, 0.008214838802814484, -0.05985984206199646, 0.009297876618802547, 0.011648275889456272, 0.020632289350032806, -0.035422246903181076, 0.029609687626361847, -0.02377709373831749, 0.0014028465375304222, -0.07558545470237732, -0.018569761887192726, -0.04161256551742554, -0.026465676724910736, 0.10195831954479218, 0.028718208894133568, -0.07109122723340988, 0.04656705632805824, -0.02501797117292881, 0.03927600756287575, -0.006146369501948357, 0.08990349620580673, 0.05913783237338066, -0.027219556272029877, 0.06819462031126022, 0.029367001727223396, 0.04015626385807991, 0.03352617099881172, 0.036996662616729736, 0.08659784495830536, 0.01574103906750679, 0.011669008992612362, 0.031209029257297516, -0.003481017891317606, 0.02015257254242897, -0.05398900806903839, -0.00037133076693862677, 0.061317168176174164, -0.04464487358927727, 0.054285988211631775, -0.0456024706363678, 0.005740908440202475, -0.007715148851275444, -0.0718524307012558, 0.023318087682127953, 0.0019052731804549694, 0.027448143810033798, -0.056744370609521866, -0.02724475972354412, -0.0002056643133983016, 0.07304435968399048, 0.015046468935906887, 0.0705418810248375, -0.0520000085234642, -0.022214924916625023, -0.022608241066336632, -0.017229603603482246, -0.028369596228003502, 0.03306340426206589, -0.03995899111032486, 0.10850563645362854, -0.01672208495438099, -0.01761111617088318, -0.12149908393621445, -0.08603276312351227, -0.018434619531035423, -0.0516614206135273, 0.007847665809094906, -0.12680543959140778, -0.026721317321062088, -0.05142825096845627, 0.06367916613817215, -0.02245703525841236, 0.0356442965567112, -0.02919408492743969, -0.06501247733831406, -0.06336519867181778, -0.041010305285453796, -0.03296585753560066, 0.054844580590724945, 0.035929400473833084],
+ "VMOVAPSmr":[-0.037066999822854996, 0.03152232989668846, -0.008027678355574608, -0.050882887095212936, 0.03101339563727379, -0.023264169692993164, -0.019691886380314827, 0.007016546558588743, 0.02084990404546261, -0.012344286777079105, -0.012292149476706982, 0.007411675062030554, 0.08259332180023193, -0.07100649178028107, -0.02787919156253338, -0.006091219373047352, -0.07534542679786682, 0.036440469324588776, 0.022401511669158936, -0.005212730262428522, 0.0344468355178833, -0.02793096750974655, 0.033669356256723404, 0.003019643947482109, -0.007292554248124361, -0.010034995153546333, 0.03093278408050537, -0.03378703072667122, 0.10502064228057861, 0.04851922765374184, -0.040946394205093384, 0.018481796607375145, 0.006028023548424244, 0.019947875291109085, 0.011709991842508316, 0.07045984268188477, -0.09498132020235062, 0.0008639441803097725, 0.007300789002329111, 0.03964962065219879, -0.08032795041799545, 0.03340205177664757, -0.001854846952483058, 0.059585969895124435, 0.05122210830450058, 0.055288996547460556, -0.02353111281991005, 0.022073131054639816, -0.03837232291698456, -0.0829620510339737, 0.008799205534160137, -0.0040764277800917625, -0.0015281091909855604, 0.06987836211919785, 0.09611041843891144, -0.04738367348909378, -0.021496854722499847, -0.03126867860555649, 0.030067363753914833, -0.0821506530046463, -0.04331529885530472, 0.09396295994520187, 0.041495855897665024, 0.011356836184859276, 0.005510392598807812, -0.02337166853249073, -0.04984719306230545, 0.041933562606573105, 0.03186662867665291, 0.08180495351552963, 0.03619273006916046, -0.00029025928233750165, 0.037885233759880066, -0.01747218333184719, 0.03135684132575989, 0.020115725696086884, 0.08828327804803848, 0.004245606251060963, -0.05050443857908249, 0.09262388944625854, -0.004464637488126755, 0.012191154062747955, -0.03385314717888832, 0.1183164194226265, 0.10171958059072495, 0.029708443209528923, -0.04115670919418335, 0.05370800569653511, -0.02496955543756485, -0.06763139367103577, 0.026760980486869812, -0.055614177137613297, -0.00525093637406826, -0.05499677360057831, -0.06633500754833221, -0.011241383850574493, 0.019818762317299843, -0.00482447724789381, -0.020991584286093712, 0.05216183885931969],
+ "VMOVAPSrm":[-0.022972172126173973, -0.007677602116018534, -0.024216018617153168, -0.043110303580760956, -0.006078180857002735, 0.08514724671840668, -0.03874912112951279, 0.010163910686969757, -0.14011476933956146, -0.0054983897134661674, -0.06690727174282074, -0.06910961866378784, -0.001855708658695221, -0.11746446788311005, 0.029755881056189537, 0.012967832386493683, 0.08887580782175064, -0.007769296877086163, -0.04339286684989929, -0.026564057916402817, -0.00965789332985878, -0.054700423032045364, -0.059183746576309204, 0.08597765117883682, 0.04939538240432739, 0.01515931636095047, 0.0025478166062384844, 0.004880507942289114, -0.09754960983991623, -0.03389522805809975, 0.05886242538690567, 0.035360828042030334, 0.06692208349704742, -0.06295046955347061, 0.037813521921634674, 0.05647871643304825, -0.004917447920888662, 0.01989552192389965, -0.004388188011944294, -0.044874824583530426, 0.056805722415447235, 0.0664840117096901, -0.0017476549837738276, -0.07539929449558258, 0.037310849875211716, 0.07616578787565231, -0.010085181333124638, -0.056262802332639694, 0.014894208870828152, 0.01713540591299534, 0.015792187303304672, -0.026805410161614418, 0.020481223240494728, 0.04438731446862221, 0.005707947537302971, 0.07743792980909348, 0.030366070568561554, 0.043280888348817825, -0.09772563725709915, -0.04833805933594704, -0.06702075153589249, -0.027247730642557144, 0.008761703036725521, -0.013175280764698982, -0.06192623823881149, -0.05214614048600197, 0.025700733065605164, 0.022524986416101456, -0.0014026111457496881, 0.08446967601776123, 0.07826274633407593, -0.12435213476419449, 0.1192299872636795, 0.012559161521494389, -0.06169826537370682, 0.005278916098177433, -0.012609180063009262, -0.007119703106582165, -0.045570433139801025, 0.05619989335536957, -0.029445869848132133, 0.018324902281165123, -0.01507545541971922, 0.003584467340260744, -0.018490133807063103, -0.024468204006552696, 0.07138170301914215, -0.09144709259271622, -0.006547610741108656, -0.020611027255654335, -0.017325758934020996, -0.07482830435037613, 0.06600316613912582, -0.03506619483232498, -0.04997741058468819, -0.07968826591968536, -0.09135151654481888, -0.022759344428777695, -0.024320023134350777, 0.041905321180820465],
+ "VMOVDDUPYrr":[0.023588504642248154, 0.035889267921447754, -0.04630141705274582, 0.0384535938501358, -0.10967592149972916, -0.025358809158205986, -0.052086301147937775, 0.037985898554325104, -0.034480586647987366, -0.06962379813194275, 0.02974911406636238, -0.0049661207012832165, 0.008536656387150288, -0.06930277496576309, -0.064697265625, 0.05446208268404007, -0.07431724667549133, 0.09746395796537399, 0.020621472969651222, 0.08457567542791367, 0.0434165894985199, -0.029559889808297157, 0.05812441557645798, 0.031105803325772285, -0.008128715679049492, 0.09426967054605484, 0.017900921404361725, 0.10094024986028671, 0.047617122530937195, 0.007968306541442871, 0.034775156527757645, -0.03395434841513634, 0.034127265214920044, -0.08692868053913116, 0.0587594211101532, 0.04961003363132477, -0.012860502116382122, -0.03907223418354988, 0.04761537164449692, -0.006920281797647476, 0.062078386545181274, -0.0034393169917166233, 0.08134601265192032, 0.04643680155277252, 0.039349645376205444, -0.10498706251382828, 0.011776342056691647, -0.11018156260251999, 0.0225553996860981, 0.0025095536839216948, -0.039149656891822815, 0.06659522652626038, -0.015031110495328903, -0.05002772435545921, 0.04322594404220581, -0.07071726769208908, -0.03503161296248436, 0.03378979116678238, -0.08822581171989441, -0.06970997899770737, -0.042640239000320435, 0.033544279634952545, 0.0007124115363694727, -0.06902545690536499, -0.05033033341169357, -0.059240516275167465, -0.09977150708436966, -0.01891944743692875, 0.05363915488123894, 0.02398645505309105, 0.009493062272667885, 0.03291679546236992, 0.05183284357190132, -0.013041851110756397, -0.061993539333343506, 0.007690249476581812, 0.006781201809644699, 0.036561742424964905, -0.08759415149688721, 0.07251769304275513, 0.0544348880648613, -0.022109398618340492, -0.05122753977775574, -0.06332233548164368, 0.0867856815457344, 0.02742941491305828, -0.02572106197476387, 0.06320639699697495, 0.006858795415610075, -0.11084208637475967, -0.048219941556453705, 0.02619044855237007, -0.077189601957798, -0.002959093078970909, -0.013440595008432865, 0.03770900517702103, -0.07043750584125519, 0.0753147229552269, -0.027193870395421982, -0.03065093606710434],
+ "VMOVDDUPrm":[0.04188833013176918, -0.010072103701531887, -0.008413558825850487, 0.045382317155599594, -0.019071022048592567, 0.047436896711587906, -0.07618191093206406, -0.024253178387880325, -0.007242674473673105, -0.012557422742247581, -0.019593002274632454, -0.02093299850821495, 0.040262702852487564, -0.016432277858257294, -0.024357318878173828, -0.07658921927213669, -0.03466720134019852, -0.057251278311014175, -0.007672093342989683, -0.005209320690482855, 0.001378039363771677, -0.09757718443870544, 0.009111442603170872, -0.11119517683982849, -0.05384095758199692, 0.04409000650048256, -0.09650976210832596, 0.014773945324122906, -0.11198817938566208, 0.018408235162496567, 0.017503522336483, -0.09463310986757278, -0.04589462652802467, -0.04239415377378464, -0.015499562956392765, -0.010258517228066921, 0.030406691133975983, 0.02197929099202156, -0.021462561562657356, 0.04229944944381714, 0.004921672400087118, 0.06799262762069702, -0.031657252460718155, -0.017049159854650497, 0.030120259150862694, 0.004267152398824692, 0.02020006999373436, -0.031074589118361473, -0.08266109973192215, 0.011796626262366772, -0.05649238079786301, 0.027718298137187958, -0.028737951070070267, 0.0404210202395916, 0.006844783667474985, -0.03166678920388222, 0.05250541865825653, 0.028187474235892296, 0.06349795311689377, -0.025068702176213264, -0.08067527413368225, -0.019581438973546028, 0.029220109805464745, 0.06446328014135361, -0.09893178939819336, -0.011754677630960941, 0.010262290015816689, -0.07758136838674545, -0.0017570065101608634, 0.05906862020492554, 0.08684410154819489, -0.005773111712187529, -0.014477250166237354, -0.06729425489902496, 0.004252942744642496, 0.014171911403536797, 0.024287978187203407, 0.04923033341765404, -0.020333455875515938, 0.10617236793041229, 0.05697500333189964, 0.0020619702991098166, 0.014314919710159302, -0.005698968656361103, -0.005064681638032198, -0.06546412408351898, 0.012404137291014194, -0.020948106423020363, -0.023207904770970345, -0.03953903168439865, 0.06343533098697662, -0.04841678962111473, -0.003937994595617056, 0.09574516862630844, 0.0343925766646862, 0.040978290140628815, 0.12527240812778473, 0.0861014872789383, 0.06272457540035248, 0.029556836932897568],
+ "VMOVDDUPrr":[0.08889410644769669, 0.053537894040346146, -0.027418354526162148, -0.07191407680511475, 0.02223874069750309, -0.02442377619445324, 0.04836835339665413, -0.0028218096122145653, -0.003268732689321041, -0.11746574938297272, 0.06581198424100876, 0.0247064046561718, 0.0216667540371418, 0.04494607076048851, 0.003344270633533597, -0.0538206584751606, 0.0792720839381218, 0.07525141537189484, 0.05552287772297859, 0.041970327496528625, 0.013869975693523884, 0.02580314129590988, 0.05178164318203926, -0.018024645745754242, -0.0006861989968456328, 0.06688926368951797, 0.11920669674873352, -0.009686723351478577, 0.09753522276878357, -0.0512055903673172, 0.013664329424500465, 0.05789519473910332, 0.08452941477298737, 0.005243332125246525, -0.0469600073993206, -0.06736709922552109, -0.07290557771921158, 0.009173222817480564, 0.06690669059753418, 0.066726453602314, 0.07914824783802032, 0.04351337254047394, 0.003501883475109935, 0.002647724701091647, 0.0954628437757492, 0.07799811661243439, -0.024543629959225655, 0.03035326860845089, 0.029832586646080017, 0.025607122108340263, -0.06582865864038467, 0.042224686592817307, 0.06347831338644028, -0.055613406002521515, -0.05930478498339653, 0.08120139688253403, 0.0013385986676439643, 0.0560946948826313, 0.06443639099597931, 0.009008169174194336, -0.005051890853792429, 0.04372940957546234, 0.028096511960029602, -0.0704057365655899, -0.01483372412621975, -0.005469418130815029, -0.05347634106874466, 0.013178659602999687, 0.04568443447351456, -0.05122273787856102, 0.06387874484062195, -0.07090912014245987, 0.014499010518193245, -0.053497564047575, 0.007905904203653336, -0.029224565252661705, -0.015846634283661842, -0.046392619609832764, 0.03412262722849846, 0.03047606348991394, 0.07133223861455917, -0.016013963147997856, 0.022769039496779442, -0.004599911626428366, 0.07035717368125916, -0.0002834283222910017, -0.05736161768436432, 0.00842303317040205, 0.04779934883117676, -0.07210443168878555, 0.03720534220337868, -0.08843198418617249, 0.02306867390871048, -0.005757878068834543, 0.028821300715208054, 0.0660654604434967, 0.12268733233213425, 0.02160184271633625, 0.0025529125705361366, -0.01010182499885559],
+ "VMOVDI":[-0.08296085149049759, -0.010020274668931961, 0.04231253266334534, -0.07702440768480301, -0.021941762417554855, 0.11402846872806549, -0.08145269751548767, -0.026428725570440292, -0.11861050873994827, 0.05358273908495903, 0.06245187669992447, -0.010034002363681793, 0.03377232328057289, -0.034524377435445786, -0.02905772067606449, 0.014294303022325039, -0.07965674996376038, -0.035673048347234726, -0.029118143022060394, 0.09188131242990494, -0.0022035217843949795, -0.06502912938594818, -0.059893086552619934, 0.05409802496433258, 0.10296010226011276, -0.011508780531585217, -0.020851479843258858, 0.08146253228187561, 0.0914454534649849, 0.0393691249191761, -0.020876646041870117, -0.06406322121620178, -0.06521620601415634, -0.012041810899972916, 0.014672740362584591, -0.034798409789800644, 0.1079539880156517, 0.022327957674860954, 0.011425316333770752, 0.017812414094805717, -0.03268963471055031, 0.016950218006968498, 0.06174715608358383, 0.1053435206413269, -0.042605821043252945, -0.013434245251119137, -0.037432052195072174, -0.09901247173547745, -0.07760456949472427, -0.05660310387611389, -0.0685734897851944, 0.03206915035843849, -0.01989579014480114, -0.053685326129198074, 0.020136496052145958, -0.03006918542087078, -0.035213880240917206, 0.051315806806087494, -0.015336062759160995, -0.04137182608246803, -0.02645600400865078, -0.03534423187375069, -0.00400472292676568, 0.027750758454203606, 0.017407197505235672, 0.09937788546085358, -0.022472044453024864, -0.059777189046144485, 0.01772497594356537, 0.003131488338112831, 0.043018657714128494, -0.11588839441537857, 0.003674853127449751, -0.008405241183936596, 0.00479484535753727, -0.028914926573634148, -0.029510578140616417, -0.0557139590382576, 0.04777902364730835, 0.06456457078456879, 0.06851395219564438, -0.007037551607936621, 0.08836773037910461, 0.015990054234862328, 0.027106918394565582, -0.015168549492955208, 0.03259802982211113, 0.04693789780139923, -0.05340771749615669, 0.004157710820436478, 0.030143922194838524, 0.0038640128914266825, 0.0018583402270451188, -0.03175177797675133, -0.0034724129363894463, -0.05797576159238815, 0.036925870925188065, 0.12055167555809021, 0.0655820444226265, -0.04435525834560394],
+ "VMOVDQAmr":[-0.007745156995952129, -0.030719934031367302, -0.09822434186935425, -0.04360551759600639, -0.04302981123328209, 0.07335526496171951, -0.011639853939414024, 0.015092303045094013, -0.057484839111566544, 0.044811856001615524, 0.038293689489364624, -0.004115499090403318, -0.05884051322937012, 0.02777187153697014, 0.0728537067770958, -0.11273044347763062, -0.012350832112133503, -0.1218012347817421, 0.0009551362600177526, -0.04428402706980705, -0.013866374269127846, -0.030987652018666267, -0.03535816818475723, 0.09124722331762314, 0.016866451129317284, 0.08745764940977097, -0.03649544343352318, 0.0033325760159641504, 0.0673249140381813, -0.09022478759288788, 0.002687335480004549, 0.015433902852237225, 0.008790051564574242, 0.02187487483024597, 0.009584390558302402, -0.06094282492995262, 0.011861531063914299, -0.011269520036876202, -0.007057783659547567, 0.048208821564912796, 0.01605067402124405, 0.04987243935465813, 0.08742921054363251, 0.02374648116528988, -0.01866506226360798, 0.05082748457789421, -0.0024784214328974485, -0.01812533661723137, -0.06569106131792068, 0.08729249984025955, 0.0017115172231569886, -0.08492022752761841, 0.03309797868132591, 0.03735769912600517, 0.03427598625421524, 0.05973946303129196, 0.06997081637382507, -0.03688399866223335, 0.043850358575582504, -0.07667777687311172, -0.10279042273759842, 0.02437596023082733, 0.04754307493567467, 0.0772186815738678, 0.0049390969797968864, -0.0437413714826107, -0.11552882939577103, 0.04440389573574066, 0.0368058979511261, -0.00722831767052412, 0.030263260006904602, -5.924939614487812e-05, -0.08032837510108948, 0.011085906066000462, -0.05315530672669411, 0.05258778855204582, -0.04919179901480675, 0.009347125887870789, -0.05199560523033142, -0.019044410437345505, -0.0008231748943217099, -0.09640151262283325, 0.07833753526210785, 0.07374219596385956, -0.010980121791362762, 0.07188457250595093, -0.0507701151072979, 0.014872207306325436, 0.007519356906414032, -0.07154640555381775, -0.017775582149624825, -0.04880843311548233, 0.0317123718559742, 0.054070308804512024, -0.05184824764728546, -0.00835427362471819, 0.030245313420891762, -0.025840744376182556, -0.019312839955091476, -0.027145283296704292],
+ "VMOVDQArm":[-0.003430651966482401, 0.01825549080967903, -0.0058781662955880165, 0.010437596589326859, -0.011063125915825367, 0.06559985131025314, 0.0018086667405441403, 0.0749603882431984, -0.03410907834768295, -0.007659541442990303, -0.09591160714626312, -0.015838194638490677, -0.03681057319045067, -0.03496424853801727, -0.03400125727057457, 0.029771655797958374, 0.004579103086143732, -0.010357839055359364, -0.05337890610098839, -0.04092506319284439, -0.02361610345542431, -0.025573940947651863, -0.018504930660128593, 0.08166936784982681, 0.005493843462318182, -0.0031855471897870302, 0.056912001222372055, -0.09914819896221161, 0.041927944868803024, -0.026704877614974976, -0.018542103469371796, 0.08743312954902649, -0.11799908429384232, 0.05217612907290459, 0.09394354373216629, 0.0021766929421573877, -0.09609131515026093, 0.023066217079758644, 0.0003681430243887007, 0.04929308965802193, -0.014992756769061089, -0.044365961104631424, -0.005854426417499781, 0.01324596256017685, -0.03346722945570946, 0.08632124960422516, -0.031837500631809235, -0.06439341604709625, -0.11383106559515, 0.013824460096657276, -0.025258878245949745, -0.028896179050207138, -0.00282491953112185, 0.031196972355246544, 0.06606447696685791, 0.12111994624137878, 0.12290321290493011, -0.10204920917749405, 0.05574197694659233, -0.05556130409240723, -0.009607595391571522, -0.00628070579841733, -0.011503382585942745, 0.06130223348736763, 0.10113780200481415, -0.14241792261600494, 0.01830841787159443, 0.05683751776814461, 0.02378024347126484, -0.014883165247738361, -0.00231736758723855, -0.06259460002183914, -0.030799804255366325, -0.08151988685131073, -0.06618272513151169, -0.0035957798827439547, -0.027061669155955315, 0.0022622395772486925, -0.0427154004573822, -0.0693892315030098, 0.011119789443910122, 0.019415173679590225, -0.0018123653717339039, -0.0073867193423211575, 0.007819883525371552, -0.023711154237389565, 0.014376059174537659, 0.020277688279747963, -0.00726695591583848, -0.05892666429281235, -0.016484439373016357, -0.0009398034308105707, 0.06638865917921066, 0.022528210654854774, 0.023643381893634796, -0.06269022077322006, -0.0669592097401619, -0.021601315587759018, 0.04040004312992096, 0.05138612911105156],
+ "VMOVDQUmr":[-0.01970754750072956, -0.06466254591941833, -0.008283525705337524, -0.05562641844153404, 0.014846691861748695, 0.07732096314430237, 0.06356952339410782, 0.01537484023720026, -0.06466683000326157, -0.011982746422290802, -0.010839535854756832, 0.025718895718455315, -0.05733862891793251, 0.03749910742044449, -0.10562201589345932, 0.023854423314332962, -0.013449626043438911, -0.01639876328408718, 0.031684111803770065, -0.04358258843421936, -0.01235478837043047, -0.04984379559755325, -0.029156478121876717, 0.09124557673931122, 0.02301914617419243, 0.0019123638048768044, 0.08063174784183502, 0.0033444641157984734, 0.05208338052034378, 0.0864035040140152, 0.010506563819944859, 0.014570779167115688, 0.00022793514654040337, 0.09187214821577072, 0.069267138838768, -0.06165975704789162, -0.0859062597155571, -0.0027786202263087034, -0.016346214339137077, 0.004305758513510227, -0.049512553960084915, 0.035046257078647614, 0.07036592811346054, 0.1546839028596878, 0.05739595741033554, -0.017831040546298027, -0.040169648826122284, -0.001144178444519639, -0.07233282178640366, -0.1339927315711975, 0.0026616936083883047, -0.018651247024536133, -0.007766866125166416, 0.03113153949379921, 0.04742486774921417, -0.051396820694208145, 0.05431200936436653, 0.010717724449932575, 0.02816636860370636, -0.04080744460225105, -0.07018862664699554, 0.008995028212666512, 0.021408213302493095, -0.026606202125549316, 0.008420846424996853, -0.04092327132821083, -0.05949290096759796, 0.039555396884679794, -0.08074109256267548, -0.005561825819313526, 0.07512958347797394, 0.06071896106004715, -0.044146694242954254, -0.018992746248841286, -0.04783106595277786, -0.0399952307343483, -0.09869524836540222, -0.006152607034891844, -0.06378983706235886, -0.027810577303171158, -0.014556211419403553, 0.01780562475323677, -0.016893930733203888, -0.06468136608600616, -0.010542577132582664, 0.04604658484458923, -0.05635613575577736, 0.0038089961744844913, 0.016146177425980568, -0.06705483049154282, 0.00783595535904169, 0.009084993973374367, 0.057639651000499725, 0.007430963218212128, 0.02964973822236061, -0.06996190547943115, 0.01383193302899599, -0.0246144849807024, 0.018106520175933838, 0.047951050102710724],
+ "VMOVDQUrm":[-0.05305131524801254, -0.009431561455130577, 0.0028263507410883904, -0.07028171420097351, -0.045675650238990784, 0.04679730907082558, -0.006481677759438753, -0.02892330475151539, -0.05336630344390869, -0.08345393091440201, -0.02206234075129032, 0.01992005482316017, -0.03479114547371864, -0.025159623473882675, -0.023725317791104317, -0.07309969514608383, 0.015155771747231483, -0.005070236977189779, 0.03959542140364647, 0.009191923774778843, -0.04837197810411453, -0.05693820118904114, -0.03405867516994476, 0.053024496883153915, 0.09448552131652832, 0.04790288209915161, -0.01941993646323681, 0.011894178576767445, 0.052416570484638214, -0.002275305800139904, -0.009565451182425022, 0.04412224888801575, -0.024874089285731316, -0.05638972669839859, 0.07085131853818893, -0.032294828444719315, 0.031023148447275162, -0.02374415658414364, -0.06687672436237335, -0.0223599411547184, -0.04921325668692589, -0.06336649507284164, 0.08344576507806778, 0.08452676236629486, -0.04357606917619705, -0.012196404859423637, -0.030910637229681015, -0.06387471407651901, -0.025129230692982674, -0.0003155987651553005, -0.021135883405804634, -0.03265180438756943, -0.02549551986157894, -0.016376085579395294, 0.07215505093336105, -0.02887781895697117, 0.0015419436385855079, 0.03121259994804859, 0.027248799800872803, -0.02618173137307167, -0.081599660217762, -0.06633655726909637, -0.0772046223282814, 0.043792132288217545, -0.046780556440353394, 0.04282662272453308, -0.029345659539103508, 0.006195999216288328, -0.021822838112711906, -0.02260061725974083, 0.10063300281763077, -0.14013537764549255, -0.04248100146651268, 0.015005518682301044, 0.0016932174330577254, 0.036917950958013535, -0.0300137959420681, 0.01830263063311577, -0.0412367507815361, -0.038530588150024414, 0.06147197633981705, 0.0027450434863567352, -0.04746402055025101, -0.036215897649526596, -0.04375508427619934, 0.03053377754986286, -0.05240415036678314, 0.04226576164364815, 0.09167493879795074, -0.08103208243846893, 0.08978363871574402, -0.06906567513942719, 0.05863816291093826, 0.0036832806654274464, -0.056936223059892654, -0.029109572991728783, -0.05198734998703003, -0.042212631553411484, 0.012938015162944794, 0.036272432655096054],
+ "VMOVHPDmr":[0.007966085337102413, -0.0295582115650177, -0.0656108409166336, -0.08115455508232117, -0.02991238795220852, -0.009269948117434978, -0.07661014795303345, 0.061808064579963684, 0.03140658140182495, -0.020857620984315872, 0.022931160405278206, -0.04554901272058487, -0.07420016825199127, -0.0015011467039585114, 0.08472172915935516, 0.026173489168286324, -0.018809033557772636, -0.08932706713676453, 0.04769264906644821, 0.06841080635786057, 0.0006738114170730114, 0.0305175818502903, -0.031176725402474403, -0.09213577210903168, 0.023329108953475952, -0.012506533414125443, -0.004487562458962202, 0.008578437380492687, -0.1026233434677124, -0.04913250356912613, -0.04888508468866348, -0.02018965408205986, -0.05166720598936081, 0.031247548758983612, -0.012550302781164646, 0.04026217386126518, 0.012355243787169456, -0.011812814511358738, 0.004529564641416073, -0.075086809694767, 0.04634424299001694, -0.07001953572034836, -0.0013845347566530108, 0.07353029400110245, 0.03563927859067917, -0.08476360887289047, -0.07390831410884857, 0.04587126895785332, 0.05836630240082741, 0.06373219937086105, 0.03370684012770653, -0.07068020850419998, -0.04388703033328056, -0.032140474766492844, -0.059361618012189865, -0.07829734683036804, 0.005111639853566885, 0.002274648053571582, -0.011394687928259373, -0.05713753402233124, 0.0669480487704277, -0.07355865836143494, 0.08802661299705505, 0.05809400975704193, -0.04902518540620804, 0.07495378702878952, 0.008804661221802235, -0.030088528990745544, -0.002244349103420973, 0.03553289920091629, 0.05761375650763512, 0.07410595566034317, 0.011033001355826855, 0.0025773521047085524, 0.032442331314086914, -0.05395134165883064, -0.02748870477080345, 0.039917055517435074, 0.058621231466531754, -0.07287108898162842, -0.07255164533853531, 0.058151133358478546, -0.09318449348211288, 0.002946268767118454, -0.06632102280855179, -0.021535677835345268, 0.07436526566743851, 0.04706695303320885, -0.04299696534872055, -0.06342765688896179, -0.026772014796733856, 0.008496696129441261, 0.03812344744801521, 0.008564254269003868, -0.009950684383511543, -0.004678856115788221, -0.10270154476165771, -0.04918988049030304, 0.002600671024993062, 0.06142738461494446],
+ "VMOVHPDrm":[-0.003061197465285659, 0.0506688728928566, 0.02436736226081848, 0.08026615530252457, -0.04227138310670853, 0.06740393489599228, -0.014742988161742687, 0.04571476951241493, -0.059896111488342285, -0.028538282960653305, -0.02598610892891884, 0.017785439267754555, 0.07382816821336746, 0.0033164366614073515, -0.025633061304688454, -0.07157140225172043, 0.01589307188987732, 0.0435914471745491, -0.006319835782051086, -0.011036246083676815, -0.10562476515769958, -0.08776876330375671, 0.05389908701181412, -0.06888265162706375, -0.0372314378619194, -0.01802593469619751, -0.11211853474378586, 0.03941868618130684, -0.004772630985826254, -0.08358969539403915, -0.047883301973342896, -0.038325488567352295, -0.10038380324840546, -0.03999561071395874, 0.03564245253801346, -0.01935337856411934, 0.04338952526450157, 0.06828772276639938, -0.0176559928804636, -0.00028546637622639537, -0.026518387719988823, 0.09463950246572495, 0.057476554065942764, 0.07429204136133194, -0.019022874534130096, 0.04775570333003998, -0.0109456991776824, 0.13536183536052704, -0.03224664926528931, -0.011053640395402908, 0.012651690281927586, 0.04845879226922989, -0.12528380751609802, -0.036758214235305786, -0.007103919982910156, 0.029360290616750717, 0.06266075372695923, -0.01808442734181881, 0.09239740669727325, 0.10961734503507614, -0.06479664146900177, -0.06772703677415848, -0.011960611678659916, 0.0010686073219403625, -0.11172089725732803, 0.023612862452864647, 0.028953390195965767, 0.001016923924908042, 0.01683461107313633, -0.018015140667557716, -0.04202151298522949, -0.044031839817762375, 0.010162856429815292, -0.07490875571966171, 0.009028689004480839, -0.0217045359313488, -0.015453237108886242, -0.08449363708496094, -0.009598299860954285, 0.05236082151532173, 0.05485209822654724, 0.05838797241449356, 0.036851122975349426, -0.0710410624742508, -0.009313512593507767, -0.0005672300467267632, 0.0034070275723934174, 0.0027224167715758085, 0.005461100023239851, 0.012654016725718975, 0.020492054522037506, 0.013481051661074162, 0.09018880128860474, 0.0027205077931284904, 0.047761861234903336, 0.0027821213006973267, 0.0667647048830986, 0.028136154636740685, 0.0175503920763731, 0.024557029828429222],
+ "VMOVLPDmr":[-0.04331618919968605, 0.05228305235505104, -0.0089853685349226, -0.0585421584546566, 0.04732745885848999, 0.08371326327323914, -0.11312494426965714, 0.034565117210149765, -0.03900104761123657, -0.012796425260603428, 0.0834922343492508, 0.0002381831727689132, -0.05599518492817879, -0.0602346770465374, -0.020293349400162697, 0.006117791403084993, 0.0018622861243784428, 0.03902719169855118, -0.01021841261535883, -0.04607444629073143, -0.014078949578106403, -0.05180457979440689, -0.030893933027982712, -0.006040763575583696, -0.008322374895215034, -0.10468193143606186, 0.0353277325630188, 0.02248622663319111, -0.06812244653701782, -0.08280211687088013, -0.06946782022714615, -0.10512562841176987, -0.0035225888714194298, -0.07510904222726822, 0.05795454978942871, -0.09999561309814453, 0.013955454342067242, -0.025499701499938965, -0.014662932604551315, -0.04178814962506294, 0.07030840963125229, -0.04070045426487923, 0.012117351405322552, -0.022376203909516335, 0.028905542567372322, 0.11383180320262909, -0.02666633203625679, -0.0038218528497964144, 0.005086988676339388, 0.0495065338909626, -0.021016858518123627, 0.021264255046844482, -0.08007491379976273, 0.04065946862101555, -0.04093633219599724, 0.04982045292854309, 0.08536041527986526, -0.01761961169540882, 0.03576678782701492, 0.01868816278874874, -0.07680632919073105, 0.04739416018128395, -0.047898922115564346, -0.0933036059141159, 0.004673351999372244, 0.06508030742406845, -0.035618606954813004, 0.04777582362294197, 0.04609011486172676, 0.053347308188676834, 0.05521073192358017, 0.06868042051792145, 0.0028238880913704634, -0.05597785487771034, 0.08819480985403061, 0.07788853347301483, 0.01468692533671856, -0.037514928728342056, 0.032206665724515915, -0.06816757470369339, 0.029067791998386383, -0.011699783615767956, -0.07063321024179459, -0.028675707057118416, -0.010067788884043694, 0.014093040488660336, -0.07001829147338867, 0.14182022213935852, 0.03522557020187378, 0.07527010142803192, -0.0191348809748888, 0.04411934316158295, 0.03351765125989914, -0.01658567041158676, -0.012115743942558765, 0.01864071749150753, 0.02161557227373123, 0.018881158903241158, 0.02256145142018795, -0.08100719749927521],
+ "VMOVLPDrm":[0.10107333213090897, -0.061438050121068954, -0.006976577918976545, 0.10519526898860931, -0.01768701896071434, 0.03609215468168259, 0.022339198738336563, 0.025229180231690407, 0.028353024274110794, -0.037349216639995575, 0.07887986302375793, -0.02977754920721054, -0.09180635213851929, -0.013203590176999569, 0.0010503145167604089, 0.08573756366968155, 0.07395438849925995, 0.07249712944030762, 0.036873120814561844, -0.052019570022821426, 0.013831108808517456, 0.062267351895570755, -0.04547182098031044, 0.08520237356424332, 0.05298149585723877, -0.01553397998213768, 0.026247071102261543, -0.020250800997018814, -0.10179764777421951, -0.019236406311392784, -0.015214524231851101, 0.03989878296852112, -0.05393356457352638, -0.037975091487169266, 0.027109256014227867, -0.07127130031585693, -0.034707922488451004, -0.04160940647125244, 0.09977094829082489, -0.09706202149391174, 0.05885278806090355, -0.01139886025339365, 0.032172441482543945, 0.0754745826125145, 0.03797042369842529, -0.02985266223549843, -0.006863212212920189, 0.0611206479370594, 0.040835171937942505, -0.004765726160258055, 0.04580223187804222, -0.001983771100640297, 0.045663200318813324, -0.0043040113523602486, -0.041142527014017105, 0.06122799590229988, -0.03140442818403244, 0.059916071593761444, 0.06137257441878319, -0.044331006705760956, 0.013093555346131325, 0.01708071678876877, 0.06800862401723862, -0.0358743853867054, 0.04720217362046242, 0.009613602422177792, -0.05101117119193077, -0.08325451612472534, -0.006526783108711243, -0.06685972213745117, -0.030558006837964058, -0.015311474911868572, 0.07240577042102814, -0.07538358122110367, 0.040050208568573, -0.062437109649181366, 0.06938981264829636, -0.03984658792614937, 0.03963598236441612, 0.04733816161751747, -0.03734006732702255, 0.0062047638930380344, 0.023154573515057564, 0.041325315833091736, -0.020430302247405052, 0.013600138016045094, -0.07519488781690598, -0.004990192595869303, -0.0035002343356609344, -0.06044496223330498, -0.06210581213235855, 0.03733738884329796, 0.01846025325357914, 0.0034695561043918133, -0.007501127198338509, -0.09526389092206955, -0.02272297628223896, 0.07892555743455887, 0.03445454314351082, -0.006854230538010597],
+ "VMOVMSKPDYrr":[-0.035431671887636185, 0.03466988727450371, 0.010904521681368351, 0.06837379187345505, -0.023076750338077545, 0.10915358364582062, -0.09761311113834381, 0.01711149886250496, 0.06009282171726227, -0.0014341713394969702, -0.08129628747701645, -0.017880715429782867, -0.05092667043209076, -0.010492980480194092, -0.029454391449689865, -0.02523300237953663, -0.042317524552345276, 0.0924149826169014, -0.01159077137708664, -0.0422428622841835, 0.04000573232769966, -0.06479378789663315, 0.06933452188968658, 0.0016921180067583919, 0.06856250017881393, 0.08229134231805801, 0.034889355301856995, -0.07795501500368118, 0.05240098014473915, 0.009084855206310749, -0.027032051235437393, 0.03622613102197647, 0.10748326033353806, -0.06329985707998276, -0.05043253302574158, -0.00266355206258595, -0.05722629651427269, 0.06556182354688644, -0.009765352122485638, 0.03448975831270218, -0.08426833152770996, -0.1057443842291832, 0.013988454826176167, -0.06865069270133972, -0.031220320612192154, -0.11470618844032288, -0.0021286436822265387, 0.07917136698961258, 0.0714411586523056, 0.09253014624118805, 0.0445176437497139, 0.008585735224187374, -0.0018652337603271008, 0.057357002049684525, -0.04363499954342842, 0.07993260771036148, -0.04599076882004738, 0.04296673834323883, -0.05712757259607315, -0.08170152455568314, 0.08807159215211868, 0.03200741484761238, -0.024450479075312614, 0.08860493451356888, -0.049153704196214676, 0.08837240189313889, 0.03517033904790878, 0.005237821023911238, 0.08079207688570023, 0.07038957625627518, -0.035882823169231415, 0.015086013823747635, -0.06618750095367432, 0.007700316607952118, -0.009957696311175823, 0.09983398765325546, -0.054592594504356384, -0.03916386887431145, 0.047675903886556625, 0.07228787243366241, 0.04725205898284912, 0.007078651338815689, -0.009463180787861347, 0.00798261258751154, -0.046251293271780014, 0.010868381708860397, -0.08476322889328003, 0.05303280055522919, 0.01869657263159752, 0.034918803721666336, -0.10758183896541595, 0.02124842070043087, -0.013552479445934296, -0.019351918250322342, 0.02573770098388195, 0.04572468623518944, -0.002208678750321269, 0.035753898322582245, -0.03779512643814087, 0.005065606441348791],
+ "VMOVMSKPDrr":[-0.046700675040483475, 0.05064487084746361, -0.028645748272538185, -0.06728185713291168, 0.0019654061179608107, 0.007909199222922325, 0.00872945599257946, 0.03258555382490158, 0.011483793146908283, -0.04572900012135506, 0.0015627405373379588, 0.04059530049562454, -0.06698258966207504, -0.04670856520533562, -0.014515847899019718, 0.02371438965201378, -0.01915712282061577, -0.021046897396445274, 3.0351216992130503e-05, 0.008676059544086456, -0.016314979642629623, -0.001913921907544136, -0.026441950350999832, 0.06052735075354576, 0.03982015699148178, 0.08356595784425735, -0.04192027077078819, -0.023123621940612793, 0.006857121828943491, -0.014930271543562412, 0.07723292708396912, -0.021126678213477135, -0.0558183416724205, 0.035782862454652786, 0.01374612282961607, -0.02004234492778778, -0.031265582889318466, -0.026675336062908173, 0.021727921441197395, 0.0010076203616335988, -0.07004290819168091, 0.018424784764647484, -0.010559611022472382, 0.004557475447654724, 0.06434831023216248, 0.022847097367048264, 0.08260927349328995, -0.0424833782017231, -0.024389319121837616, -0.0929085835814476, 0.04563867300748825, 0.019505580887198448, -0.09563890844583511, 0.06213174760341644, -0.04812883958220482, 0.032484058290719986, 0.006185161415487528, 0.07260597497224808, -0.08843827992677689, 0.07737546414136887, -0.06003516912460327, 0.04452972859144211, 0.048597823828458786, -0.08935950696468353, -0.02390977554023266, -0.013195211067795753, 0.08206615597009659, -0.02857990562915802, -0.010973679833114147, -0.007070048246532679, 0.08820775896310806, 0.0148173738270998, 0.10476268827915192, 0.07013299316167831, 0.07673542201519012, -0.09291443228721619, 0.0481741838157177, -0.04611421376466751, 0.00732235936447978, -0.04825213551521301, -0.041083257645368576, 0.003933503292500973, -0.054907090961933136, -0.0023311132099479437, -0.051911503076553345, 0.012002692557871342, -0.05860167369246483, -0.010499355383217335, 0.011707118712365627, 0.010448607616126537, 0.010626345872879028, -0.005185627844184637, -0.032843854278326035, -0.09233500063419342, 0.06453941017389297, -0.09706811606884003, 0.09285957366228104, 0.02966812625527382, -0.007032731547951698, 0.1039428785443306],
+ "VMOVMSKPSYrr":[-0.021836616098880768, 0.05626900494098663, -0.05229556933045387, -0.06478341668844223, -0.07825295627117157, 0.10440462082624435, 0.02114061452448368, 0.0401746928691864, 0.039706382900476456, -0.04570971056818962, -0.01330901961773634, -0.05975819751620293, -0.016613004729151726, -0.07452280819416046, 0.029243730008602142, 0.0601593479514122, -0.038406725972890854, 0.10673526674509048, 0.11466801166534424, -0.017230255529284477, -0.0202782079577446, 0.06700664013624191, 0.051433682441711426, 0.04765293747186661, -0.012256923131644726, 0.05898701772093773, 0.04916733130812645, 0.0728369802236557, 0.02516237087547779, -0.0174638070166111, -0.04007219895720482, 0.018274880945682526, 0.03769352287054062, -0.0737590342760086, 0.03213411197066307, 0.0840405821800232, 0.048917219042778015, 0.0037566854152828455, 0.02673701010644436, -0.03355393186211586, -0.06874947249889374, -0.07459250092506409, -0.04347895085811615, 0.06144668161869049, 0.00023699755547568202, -0.006323136389255524, -0.10723686218261719, 0.08761314302682877, 0.003179296851158142, -0.03719649091362953, 0.053194936364889145, 0.027338068932294846, -0.01161225326359272, -0.07090285420417786, -0.025912219658493996, 0.08500192314386368, -0.05211980640888214, -0.02748117782175541, 0.01916908472776413, 0.04751763120293617, 0.049135949462652206, 0.052060436457395554, -0.016045333817601204, -0.10959518700838089, 0.09684466570615768, 0.0704553872346878, -0.002037584315985441, 0.07978525012731552, -0.035082925111055374, 0.10119756311178207, -0.0004496282199397683, 0.0499805323779583, -0.08817122131586075, 0.049152158200740814, -0.09719349443912506, 0.08547355234622955, -0.016651708632707596, 0.029583558440208435, 0.01478323619812727, -0.04863334074616432, -0.0275350920855999, -0.0002938114630524069, 0.09156867861747742, 0.0901530385017395, -0.009740876033902168, 0.0007249304326251149, 0.010164172388613224, -0.018286069855093956, -0.1005130410194397, 0.008988679386675358, -0.09122519195079803, 0.012105594389140606, -0.016796903684735298, 0.022771531715989113, -0.06624273955821991, -0.014389392919838428, 0.03281914070248604, -0.05430625006556511, 0.09073520451784134, -0.029222937300801277],
+ "VMOVMSKPSrr":[-0.026246752589941025, -0.02594362013041973, -0.03780044987797737, -0.08783343434333801, -0.0965566411614418, -0.02744169533252716, 0.007736786734312773, -0.01394962053745985, -0.009929855354130268, -0.053668342530727386, -0.07977984100580215, 0.02056875266134739, -0.0021523600444197655, -0.00035869760904461145, 0.04258427768945694, 0.07551103085279465, 0.002389006083831191, 0.03626931086182594, -0.015946798026561737, 0.0006897772545926273, 0.05519973114132881, -0.010447559878230095, -0.06271026283502579, 0.057491008192300797, -0.0645795539021492, 0.07123661041259766, -0.08018733561038971, -0.004918206017464399, 0.03961513936519623, 0.020552968606352806, -0.06789475679397583, 0.011814525350928307, -0.03351607173681259, -0.0004487746919039637, 0.029287701472640038, 0.0520513616502285, 0.04067099839448929, -0.026326065883040428, -0.07353898882865906, -0.0045837401412427425, -0.027492515742778778, -0.0478774718940258, 0.022216796875, -0.032949529588222504, -0.003443492576479912, 0.0639607384800911, 0.05198345705866814, 0.047042738646268845, -0.026045681908726692, 0.055748097598552704, 0.04023534804582596, 0.04333046078681946, -0.034214578568935394, -0.06355147063732147, 0.05883210897445679, -0.04096585884690285, -0.04419366270303726, 0.03560338169336319, 0.07649610936641693, -0.03486960381269455, 0.041463375091552734, -0.059324003756046295, 0.08127729594707489, 0.02843903750181198, -0.0003445159818511456, -0.03180442750453949, 0.00726822204887867, -0.03286217153072357, 0.014792886562645435, -0.051495373249053955, 0.09539518505334854, 0.0500270277261734, -0.0792892724275589, 0.07191041111946106, -0.07980270683765411, -0.10030883550643921, 0.005155442748218775, -0.06859631091356277, -0.03034885600209236, -0.011317488737404346, 0.09723973274230957, -0.05497077852487564, -0.025252416729927063, -0.0706041157245636, 0.065289705991745, -0.05133387818932533, 0.0714295282959938, -0.05993521958589554, -0.019761759787797928, 0.057216234505176544, -0.021117137745022774, 0.061294592916965485, 0.00026444756076671183, 0.03203120827674866, 0.05674191191792488, 0.06772851198911667, -0.04199370741844177, -0.05372944846749306, 0.03226587548851967, -0.07605385035276413],
+ "VMOVPDI":[0.045999687165021896, 0.0412672720849514, 0.06077191233634949, -0.07068593800067902, 0.012596494518220425, 0.08765453845262527, -0.11887543648481369, -0.08862536400556564, -0.08710496872663498, 0.0593666173517704, -0.06702731549739838, -0.01994948275387287, 0.07671324163675308, 0.0005568959168158472, 0.0028161671943962574, -0.11131462454795837, -0.046468041837215424, 0.005620751064270735, -0.014552831649780273, 0.057877130806446075, -0.007583474740386009, -0.0017097615636885166, -0.03446438908576965, 0.0649881586432457, -0.004909972660243511, -0.05301092192530632, -0.018518701195716858, 0.02971782349050045, 0.06585080176591873, -0.03756621852517128, -0.02957887202501297, -0.05695926025509834, -0.013554981909692287, -0.046598561108112335, -0.04721226915717125, -0.07080267369747162, 0.004011193756014109, -0.04203371703624725, 0.023413121700286865, 0.005802236031740904, 0.015293953008949757, -0.012400203384459019, 0.01129199843853712, 0.018268311396241188, 0.0811973363161087, 0.06514722108840942, -0.07184750586748123, 0.0008238270529545844, -0.03796783834695816, 0.08797929435968399, 0.015934163704514503, 0.05320559814572334, 0.04946862906217575, 0.021732646971940994, -0.08604001998901367, -0.05984702333807945, -0.10599248111248016, 0.009872022084891796, -0.033917516469955444, 0.023964431136846542, -0.019679049029946327, -0.14406774938106537, -0.02895333804190159, -0.039727453142404556, -0.011493564583361149, -0.06886641681194305, -0.005471682175993919, -0.045856643468141556, 0.03858264908194542, -0.007728968281298876, 0.08139047771692276, 0.011991677805781364, -0.006939728744328022, -0.08130262792110443, -0.06590043753385544, 0.013525862246751785, 0.002742310520261526, 0.01688387617468834, -0.07181860506534576, 0.0846414864063263, 0.018853025510907173, -0.01191000360995531, 0.04192354902625084, 0.046945635229349136, 0.06508056819438934, 0.08582200855016708, 0.02292475663125515, 0.03272480517625809, 0.10141291469335556, -0.03383510932326317, 0.00427051167935133, 0.0631597489118576, 0.020543823018670082, 0.01619413122534752, -0.023907776921987534, -0.023785416036844254, 0.031009983271360397, 0.04803275689482689, 0.04012269899249077, 0.04810043051838875],
+ "VMOVPQI":[-0.027942487969994545, 0.07286912202835083, 0.0449494905769825, -0.004934266209602356, 0.012353017926216125, -0.036583311855793, -0.10616149753332138, 0.01626635529100895, 0.10316216945648193, 0.00678703049197793, 0.0315365307033062, 0.012959921732544899, 0.026759576052427292, -0.08982525765895844, 0.13517175614833832, -0.10544556379318237, -0.0012530190870165825, 0.02062690071761608, -0.0047933789901435375, -0.04287102073431015, -0.009369676001369953, -0.05067138001322746, -0.02922634966671467, 0.007796586491167545, 0.0037000260781496763, 0.029426313936710358, 0.03729584440588951, -0.014340785332024097, 0.0629609227180481, -0.05994046479463577, -0.14835204184055328, -0.054927729070186615, -0.003621083917096257, -0.041189275681972504, -0.06695084273815155, 0.03921685367822647, -0.037823040038347244, 0.029818687587976456, -0.04207610338926315, -0.02660859003663063, 0.0035293831024318933, -0.03282717615365982, 0.015668362379074097, -0.07158555835485458, -0.015322268009185791, 0.006569059565663338, 0.06461300700902939, 0.06701624393463135, -0.011599746532738209, -0.05569704249501228, 0.07694199681282043, 0.08639678359031677, 0.04880892485380173, -0.0926390141248703, 0.025581587105989456, -0.009084616787731647, 0.037461280822753906, -0.011251399293541908, 0.005225594621151686, -0.008354258723556995, -0.01319708302617073, 0.0009152658167295158, -0.049815528094768524, -0.004220594186335802, 0.008967977948486805, -0.06639480590820312, -0.04238753393292427, 0.008526865392923355, -0.09183085709810257, -0.008019332773983479, 0.07451394945383072, -0.07842589169740677, 0.008166011422872543, 0.0020772735588252544, 0.039353564381599426, 0.02369324117898941, -0.10096178948879242, 0.017873309552669525, 0.030475009232759476, 0.05266221612691879, 0.016704369336366653, 0.017647717148065567, 0.08986551314592361, 0.0664808452129364, 0.01382225938141346, 0.06926949322223663, 0.034913089126348495, -0.007063338067382574, 0.01756347343325615, 0.03724966570734978, 0.02091640792787075, -0.008267554454505444, -0.013535425066947937, 0.015190523117780685, -0.046215519309043884, -0.03522564470767975, -0.010751597583293915, -0.023874979466199875, 0.00039017945528030396, -0.06281828880310059],
+ "VMOVPQIto":[-0.01542090903967619, -0.09659864008426666, -0.04141362011432648, -0.02164447121322155, -0.08072240650653839, -0.07774724811315536, 0.0027893695514649153, 0.0894366204738617, -0.007309605833142996, 0.00409113522619009, -0.072700135409832, 0.05237609148025513, -0.05535856634378433, -0.07179854810237885, -0.0021705615799874067, 0.038197752088308334, 0.050641030073165894, -0.07112879306077957, -0.0002758203190751374, 0.03698420897126198, 0.0674663707613945, 0.049128517508506775, -0.009866290725767612, 0.05637586489319801, -0.0373513363301754, -0.02090221829712391, 0.012648651376366615, 0.0779832974076271, 0.05453994870185852, 0.025637008249759674, 0.03470100462436676, -0.02140643261373043, -0.06663178652524948, -0.01365749817341566, 0.06521645188331604, -0.06930064409971237, -0.02795909345149994, 0.04898868873715401, -0.03135735169053078, 0.011227771639823914, 0.03260621801018715, 0.018964042887091637, 0.03596843406558037, -0.04078437387943268, -0.06425757706165314, -0.055175039917230606, 0.0140400230884552, -0.012353656813502312, -0.011353375390172005, -0.06604201346635818, -0.007686555851250887, 0.05240240320563316, 0.006012111436575651, -0.0377652570605278, -0.0023219732102006674, -0.046574078500270844, 0.0315559059381485, -0.05615081265568733, 0.005744380410760641, 0.007487200666218996, -0.07541226595640182, 0.07085864990949631, 0.04711093381047249, -0.0709661990404129, -0.022685213014483452, -0.054047562181949615, 0.0006353858625516295, -0.03628212958574295, -0.06254465878009796, -0.06429986655712128, -0.05144249647855759, 0.05652177333831787, -0.000618815771304071, -0.05168114975094795, 0.009767417795956135, 0.05771232396364212, -0.09202384203672409, -0.032012928277254105, -0.0021232087165117264, 0.047956500202417374, 0.010431148111820221, 0.0866045132279396, -0.0014746986562386155, 0.016998128965497017, 0.04538000375032425, 0.07854153960943222, 0.012273282743990421, 0.0066720568574965, -0.10255894064903259, -0.010989334434270859, -0.03538872301578522, 0.009927050210535526, 0.037570249289274216, -0.05408365651965141, 0.02132052555680275, -0.0080834049731493, -0.04384515434503555, 0.012014195322990417, -0.01902414858341217, -0.018826939165592194],
+ "VMOVQI":[0.03824799880385399, -0.010208625346422195, -0.07331153005361557, -0.09784317761659622, -0.009783434681594372, 0.060631293803453445, -0.02837759628891945, 0.04309738054871559, -0.06793200969696045, -0.002351784845814109, -0.023334793746471405, -0.009383914060890675, -0.013817441649734974, -0.056787751615047455, 0.042266953736543655, -0.045823533087968826, 0.01429552212357521, 0.018112150952219963, -0.06608337163925171, 0.04880506545305252, -0.04194876179099083, -0.07420895248651505, 0.022074393928050995, -0.09296143054962158, -0.017404939979314804, -0.009175686165690422, 0.026182224974036217, 0.013029921799898148, 0.10539387166500092, 0.07687226682901382, -0.011213647201657295, -0.052071746438741684, -0.047545887529850006, 0.048638682812452316, -0.009090766310691833, 0.019615765661001205, 0.031863655894994736, -0.06946177035570145, 0.004601453896611929, 0.0038753922563046217, -0.04480379447340965, 0.06470026820898056, 0.06052953377366066, 0.08356571197509766, 0.0860566571354866, 0.024409255012869835, -0.029176460579037666, 0.03542083874344826, 0.07635809481143951, 0.013640823774039745, -0.029738828539848328, 0.01714414358139038, 0.10199033468961716, -0.07910513132810593, 0.005084834061563015, -0.020743846893310547, 0.05859852209687233, -0.02676553837954998, 0.007013683207333088, -0.09093120694160461, 0.011293294839560986, -0.016550596803426743, -0.09840332716703415, 0.10161872953176498, 0.0384569950401783, -0.014864007011055946, 0.019470473751425743, 0.022475209087133408, -0.002627953188493848, 0.017532192170619965, 0.004454317037016153, -0.04529772326350212, -0.07140474021434784, -0.037090301513671875, 0.022129014134407043, -0.027452128008008003, -0.028736671432852745, -0.03006679005920887, -0.037664759904146194, 0.01521096471697092, 0.05417974293231964, -0.03705422952771187, 0.0151323601603508, 0.07330210506916046, -0.015413939021527767, 0.011824696324765682, 0.03963770344853401, -0.05551012232899666, -0.04924051836133003, -0.051642633974552155, 0.04145742580294609, -0.04570407792925835, 0.020674068480730057, 0.10174883902072906, -0.030055910348892212, -0.038563840091228485, -0.030806804075837135, 0.04528985172510147, 0.03644751384854317, -0.02157810889184475],
+ "VMOVSDmr":[0.06080508232116699, 0.08184539526700974, -0.04479063302278519, 0.030858851969242096, -7.873539288993925e-05, -0.033775217831134796, -0.01895233802497387, 0.035854119807481766, -0.07623126357793808, -0.09359824657440186, 0.018526403233408928, 0.057880766689777374, -0.00763698248192668, -0.04462593421339989, 0.09830691665410995, 0.08259334415197372, -0.0033412855118513107, 0.06131422519683838, -0.016429606825113297, -0.07658534497022629, -0.014407191425561905, -0.037557490170001984, -0.01577853038907051, 0.010352350771427155, -0.007993098348379135, 0.027918120846152306, 0.07224089652299881, 0.028697984293103218, 0.01894311234354973, -0.03565230965614319, -0.09274116903543472, 0.03355664387345314, 0.0006857183761894703, 0.02314656227827072, 0.010264793410897255, 0.014727436006069183, 0.01574958860874176, -0.001994440797716379, 0.029967032372951508, -0.051474981009960175, -0.02807171270251274, 0.03789138421416283, -0.0940307155251503, 0.08309076726436615, -0.053872305899858475, 0.07360576838254929, -0.07628042250871658, -0.07392995059490204, 0.05133441463112831, -0.06914656609296799, 0.013731885701417923, 0.05646929889917374, 0.05295085534453392, -0.09420359134674072, -0.07120843231678009, -0.0789298415184021, 0.07426364719867706, -0.1337360292673111, 0.029719818383455276, -0.06417351216077805, -0.07866810262203217, 0.12978138029575348, 0.0649171769618988, 0.07038556784391403, -0.011308212764561176, -0.13363949954509735, -0.06542374193668365, 0.0404311902821064, 0.013818547129631042, -0.0022209701128304005, 0.04255089908838272, 0.0007437592139467597, 0.019612884148955345, -0.08558822423219681, -0.031992923468351364, 0.02908497303724289, -0.09437305480241776, -0.003140646731480956, -0.04472741112112999, 0.005540355574339628, 0.033245544880628586, -0.04491894692182541, 0.007672147359699011, -0.014262010343372822, -0.01224914938211441, 0.012177292257547379, 0.02307174913585186, 0.07491996884346008, 0.05731336399912834, -0.06152728199958801, 0.011557920835912228, 0.009005766361951828, 0.07154117524623871, -0.08467712253332138, 0.027694085612893105, -0.030288323760032654, -0.029148593544960022, -0.013531278818845749, -0.005297859199345112, 0.04167194291949272],
+ "VMOVSDrm":[-0.018385455012321472, -0.00025894795544445515, -0.045623134821653366, 0.03180595859885216, -0.011656672693789005, 0.0501994825899601, 0.007982959039509296, -0.029103389009833336, -0.07342755049467087, 0.045306894928216934, -0.08654248714447021, 0.03137212619185448, 0.030696867033839226, -0.0693679079413414, 0.02012944594025612, -0.0824526771903038, -0.08288431167602539, -0.0030668843537569046, -0.01664181798696518, -0.055374160408973694, 0.026694202795624733, -0.08899904787540436, 0.06546498090028763, -0.054624561220407486, -0.06260964274406433, -0.040381696075201035, 0.004933958873152733, -0.04900766536593437, -0.02434942126274109, -0.049949370324611664, -0.025966184213757515, -0.052210159599781036, -0.03994326293468475, 0.04579140990972519, 0.030902385711669922, -0.11009398847818375, 0.03519897535443306, 0.018250448629260063, 0.09058249741792679, -0.0040957252494990826, 0.032547011971473694, 0.11930619925260544, 0.041300125420093536, 0.054706793278455734, 0.0716991275548935, 0.0871870219707489, 0.021106867119669914, 0.10765616595745087, -0.08937852084636688, 0.07542828470468521, -0.023427994921803474, -0.046761076897382736, -0.006562644615769386, -0.05648859962821007, 0.005770488176494837, -0.03367161378264427, 0.013804865069687366, -0.08342635631561279, 0.009285947307944298, -0.03335567191243172, -0.01805148646235466, -0.025990735739469528, -0.023060936480760574, -0.0021103026811033487, -0.06969594210386276, -0.08697700500488281, 0.039000254124403, 0.05197889730334282, -0.020830994471907616, -0.036911386996507645, -0.013519504107534885, 0.00046578352339565754, -0.03482866287231445, -0.029498843476176262, -0.04291046783328056, 0.022410256788134575, -0.03574872761964798, -0.02796906791627407, -0.0425347276031971, 0.028927696868777275, 0.08765076845884323, 0.03500015288591385, -0.03392651304602623, 0.02010985091328621, 0.02383551560342312, 0.022982876747846603, -0.007559920661151409, 0.056821227073669434, -0.007585007231682539, -0.054512012749910355, -0.046729207038879395, -0.07294289022684097, 0.09438103437423706, 0.006070657633244991, 0.055564139038324356, -0.04367606341838837, -0.07040374726057053, 0.10764597356319427, 0.048825256526470184, 0.012738244608044624],
+ "VMOVSDrm_alt":[-0.0021334646735340357, 0.014599945396184921, 0.0625830739736557, -0.06217578053474426, 0.018343886360526085, -0.016507774591445923, -0.08092482388019562, -0.08811644464731216, -0.10298699140548706, 0.03651317581534386, -0.009705650620162487, 0.07127909362316132, -0.03664425387978554, -0.0705709457397461, -0.02526334673166275, -0.08169198036193848, 0.067120760679245, 0.04818052053451538, -0.05513159930706024, -0.08965237438678741, 0.0433666929602623, -0.08746141195297241, 0.029338842257857323, 0.0554036907851696, -0.001002258388325572, 0.029295049607753754, 0.11089364439249039, 0.014247731305658817, 0.012542827054858208, 0.05462191626429558, -0.04942796751856804, 0.03958061710000038, -0.06296859681606293, -0.07329793274402618, 0.020670099183917046, -0.0007228223257698119, 0.0003965988289564848, 0.0175954457372427, 0.006625667214393616, -0.031070370227098465, -0.012974249199032784, 0.09353580325841904, -0.06386560201644897, -0.01026260294020176, 0.025729607790708542, 0.07751917839050293, 0.027673732489347458, -0.06824789196252823, -0.08475828170776367, 0.009663484990596771, 0.015156125649809837, -0.11219773441553116, 0.020087309181690216, 0.029384691268205643, -0.03022029437124729, -0.03513474017381668, -0.026040425524115562, -0.09794426709413528, 0.0062856003642082214, -0.03494921326637268, -0.022328659892082214, 0.016417155042290688, -0.0799732580780983, 0.0266256220638752, -0.051803313195705414, 0.03644414246082306, 0.036874398589134216, 0.04999399185180664, -0.00034927556407637894, -0.013399398885667324, 0.015209811739623547, -0.07433738559484482, 0.011170749552547932, -0.0376133918762207, -0.05662134289741516, -0.03746214509010315, -0.12014209479093552, -0.07669269293546677, -0.03466545417904854, 0.010825849138200283, 0.043901123106479645, 0.009893317706882954, 0.0037570276763290167, 0.008206501603126526, 0.013984981924295425, -0.008833521045744419, -0.004410740919411182, 0.06095368042588234, 0.07680882513523102, -0.0743994191288948, -0.020619845017790794, -0.04356025904417038, 0.0682801827788353, -0.04271123930811882, 0.013992633670568466, -0.06842077523469925, 0.03450161591172218, -0.018195921555161476, -0.08740667253732681, 0.04009215906262398],
+ "VMOVSDto":[0.09580542892217636, 0.022895874455571175, 0.051714323461055756, -0.03481636568903923, -0.01798131875693798, 0.05693269893527031, -0.08550820499658585, 0.002066974062472582, -0.06431222707033157, -0.00673295371234417, 0.11104155331850052, -0.03675046190619469, 0.011654308997094631, 0.09641677886247635, -0.03428233787417412, 0.085843525826931, -0.0045877438969910145, 0.06612899154424667, -0.017000684514641762, -0.013102798722684383, -0.047387704253196716, -0.02105502411723137, -0.02260553650557995, -0.09301931411027908, 0.09660336375236511, 0.043774206191301346, -0.06620775908231735, 0.03817211091518402, -0.01849600300192833, 0.003752220654860139, 0.006303190253674984, 0.022072214633226395, 0.020652441307902336, -0.010769570246338844, -0.041089143604040146, -0.10289917141199112, 0.004375309217721224, 0.03996209800243378, -0.046212952584028244, 0.03362714499235153, 0.011979772709310055, -0.035654038190841675, 0.042773306369781494, 0.004310918040573597, -0.019789883866906166, -0.018162311986088753, 0.010463093407452106, -0.06990792602300644, -0.025572987273335457, 0.09966684132814407, -0.06471605598926544, 0.06469129025936127, -0.0066771795973181725, 0.10454411059617996, -0.03721613064408302, 0.0356832817196846, -0.04570549726486206, 0.005335918162018061, 0.025937596336007118, -0.0631493628025055, 0.009717823006212711, 0.04478607699275017, 0.032533999532461166, 0.06204839050769806, -0.04432836174964905, 0.03996424749493599, 0.0029400561470538378, 0.06716915220022202, -0.06705444306135178, 0.0932421013712883, -0.000986672705039382, 0.0740547776222229, 0.054321687668561935, -0.0033233172725886106, -0.09138835221529007, -0.011527089402079582, 0.014514103531837463, 0.06972979009151459, 0.02563861571252346, -0.0829785168170929, 0.0335073322057724, -0.004353684838861227, -0.06931699067354202, 0.056845467537641525, 0.08490600436925888, 0.0632430836558342, 0.0012399000115692616, -0.03548577055335045, 0.07048150151968002, -0.07233189046382904, 0.030539803206920624, 0.1356145441532135, 0.007004756946116686, -0.06411098688840866, 0.01468654628843069, 0.023855911567807198, -0.0584791824221611, 0.053576577454805374, -0.008494184352457523, -0.04693666100502014],
+ "VMOVSHDUPrr":[-0.04844674840569496, -0.035487838089466095, 0.07958416640758514, -0.041009753942489624, 0.02381301298737526, -0.017469776794314384, 0.002460274612531066, 0.06816189736127853, -0.008036382496356964, 0.10122653841972351, -0.02802439220249653, -0.02068324014544487, -0.015829645097255707, 0.0028434647247195244, 0.02331671118736267, 0.03638392686843872, 0.004017913714051247, -0.0403556302189827, 0.09492606669664383, -0.05089948698878288, -0.05999893322587013, 0.031737037003040314, -0.014677337370812893, -0.09387453645467758, 0.08160004764795303, 0.015051270835101604, 0.04062521457672119, -0.031616102904081345, 0.08986543864011765, 0.012652195058763027, 0.03939783200621605, -0.013945706188678741, -0.07621966302394867, -0.0736534595489502, 0.07723307609558105, -0.11778789013624191, 0.0034776681568473577, 0.015386258251965046, 0.062287941575050354, -0.007605596911162138, -0.030168820172548294, -0.028100112453103065, 0.057127296924591064, 0.06832291185855865, -0.0010391309624537826, 0.08339318633079529, -0.08908888697624207, -0.043193623423576355, -0.021037600934505463, -0.0791148766875267, 0.053989361971616745, 0.029895294457674026, -0.08286827802658081, -0.030050981789827347, 0.10880705714225769, -0.051831211894750595, 0.02016407996416092, 0.052148908376693726, 0.03283717855811119, 0.08603255450725555, -0.05960019305348396, 0.005341125652194023, -0.05443630740046501, 0.03719518706202507, -0.026394417509436607, -0.001534913433715701, 0.017194494605064392, 0.021678488701581955, -0.012531478889286518, -0.034533899277448654, -0.026131944730877876, 0.04666363447904587, -0.06949234008789062, 0.010557368397712708, -0.09445424377918243, -0.046167124062776566, -0.01340039074420929, -0.011911324225366116, -0.008932951837778091, 0.05099687725305557, -0.10730203241109848, -0.014104199595749378, 0.03618070110678673, 0.024510012939572334, -0.059464968740940094, -0.035841044038534164, -0.00880782026797533, 0.03154657408595085, 0.04057978093624115, 0.00730688264593482, 0.000821348512545228, 0.012744447216391563, 0.06950998306274414, 0.026786096394062042, 0.0361330583691597, 0.013089925982058048, 0.015769055113196373, 0.05445687845349312, -0.08918768167495728, -0.02681742236018181],
+ "VMOVSS":[-0.06479574739933014, 0.019421933218836784, -0.03602447360754013, 0.047627463936805725, 0.014223488979041576, 0.060058653354644775, 0.07518971711397171, -0.05941273272037506, -0.03378687798976898, -0.00597968278452754, 4.692792208516039e-05, 0.058757517486810684, -0.0006921360618434846, 0.026687227189540863, -0.0013869766844436526, -0.04644029214978218, -0.07289636135101318, 0.006795306224375963, -0.014953598380088806, 0.07470626384019852, 0.02195400558412075, -0.0261670034378767, -0.029930053278803825, 0.08137086033821106, 0.013813281431794167, -0.08980084955692291, 0.10774464160203934, 0.006813936401158571, -0.04214038327336311, 0.0033594826236367226, -0.04257788509130478, -0.012044321745634079, 0.030646152794361115, 0.015742680057883263, -0.05802930146455765, 0.02388673461973667, -0.04866493493318558, -0.03965451195836067, -0.023941494524478912, 0.038860972970724106, 0.04284808412194252, 0.006695277988910675, -0.034022096544504166, 0.044822849333286285, -0.05251714587211609, 0.010034154169261456, 0.006518945097923279, 0.054951682686805725, 0.032536331564188004, -0.01901698112487793, 0.038413118571043015, -0.025584984570741653, 0.00487496517598629, 0.022754792124032974, 0.07942646741867065, -0.05308431014418602, -0.01880786567926407, -0.0051739695481956005, 0.0423484668135643, -0.046531252562999725, -0.07995700091123581, -0.1040998101234436, 0.08262746781110764, 0.03811135143041611, 0.07474838197231293, 0.07103144377470016, 0.034398652613162994, -0.1096298024058342, -0.10822924971580505, 0.00818567629903555, 0.13015568256378174, 0.01838799938559532, -0.003874371759593487, 0.0307712834328413, -0.021741464734077454, -0.01240698155015707, 0.08452300727367401, 0.06207389011979103, -0.02161135897040367, 0.019563956186175346, 0.028353743255138397, 0.0901067703962326, -0.006652451120316982, 0.017026515677571297, 0.07973090559244156, 0.057321906089782715, -0.02865450270473957, 0.019416864961385727, 0.09426353126764297, -0.028465528041124344, 0.014453573152422905, 0.08399686962366104, 0.04085183143615723, 0.055845387279987335, 0.010696538724005222, -0.07128041982650757, 0.026942750439047813, -0.05687432736158371, 0.05245346203446388, 0.01027219183743],
+ "VMOVSSmr":[-0.0675642266869545, -0.027655579149723053, -0.03270987421274185, -0.05961230397224426, 0.017217429354786873, -0.026340793818235397, -0.026152608916163445, 0.017124831676483154, -0.05594716593623161, -0.07134561240673065, 0.08175498247146606, 0.02929164469242096, -0.06359366327524185, 0.0777711421251297, -0.07876763492822647, 0.05395815148949623, 0.026597602292895317, -0.017155291512608528, 0.021055277436971664, -0.04474661499261856, -0.07091940939426422, -0.10059451311826706, -0.030690839514136314, 0.037502411752939224, -0.006167863495647907, 8.081809210125357e-05, 0.03864014148712158, -0.023639507591724396, 0.04029657691717148, -0.06400373578071594, -0.03486309200525284, 0.0006332580815069377, -0.005269930232316256, 0.02215728349983692, 0.020034614950418472, 0.0479462556540966, -0.02659003995358944, 0.0017688007792457938, 0.04491637647151947, -0.04726874455809593, 0.004197954200208187, -0.004817074630409479, 0.10561425983905792, 0.15669502317905426, 0.04515890032052994, 0.08627036958932877, -0.0077991788275539875, 0.002172329928725958, 0.012296558357775211, -0.07143618166446686, 0.054542526602745056, -0.046108976006507874, 0.018017079681158066, 0.03256027400493622, 0.09747494012117386, 0.04748471826314926, 0.07352171093225479, -0.009653600864112377, -0.0033755404874682426, -0.00988302193582058, -0.07806327193975449, -0.09726803004741669, 0.024832559749484062, 0.012590146623551846, -0.06609388440847397, 0.07595731317996979, 0.013869176618754864, 0.06467775255441666, -0.008910119533538818, 0.10921188443899155, 0.03546898812055588, -0.018150825053453445, -0.04832396283745766, -0.018615426495671272, -0.035740941762924194, 0.028266679495573044, -0.09632784873247147, -0.04999113455414772, -0.06424769759178162, 0.028806647285819054, 0.10967865586280823, 0.022152196615934372, 0.06778037548065186, 0.038023531436920166, -0.03763967007398605, 0.032901208847761154, -0.04528417810797691, 0.053722962737083435, 0.026528850197792053, 0.01772724650800228, -0.05134984478354454, -0.01590462401509285, 0.11878228932619095, 0.014414792880415916, 0.09345586597919464, -0.03694690391421318, -0.0543183796107769, 0.05581844598054886, -0.015029668807983398, -0.004520869813859463],
+ "VMOVSSrm":[-0.06787026673555374, 0.0703793615102768, -0.013891908340156078, -0.07437766343355179, -0.01154353003948927, 0.06337209790945053, -0.02420187182724476, -0.04212707281112671, 0.0005277893505990505, 0.014182879589498043, -0.0012634949525818229, 0.02926691807806492, 0.013052919879555702, -0.11088887602090836, 0.028745586052536964, -0.088762566447258, 0.07093067467212677, -0.07528796792030334, 0.04427039250731468, -0.026310130953788757, -0.09241387248039246, -0.07489706575870514, -0.06062640622258186, 0.084740050137043, 0.0029956866055727005, 0.05265588313341141, -0.10191329568624496, 0.08240407705307007, 0.002243412658572197, -0.032142508774995804, -0.00861793477088213, 0.04384997487068176, -0.028989700600504875, 0.00032533297780901194, -0.05257025733590126, -0.00986459106206894, 0.028990505263209343, -0.024089131504297256, -0.01902446150779724, 0.018927758559584618, -0.015128515660762787, -0.011696198023855686, -0.03320121765136719, 0.012485767714679241, 0.020259974524378777, 0.04950287565588951, 0.1056642234325409, 0.0144559470936656, -0.07524648308753967, -0.02483457326889038, 0.030361689627170563, 0.016493331640958786, -0.11197491735219955, -0.060375843197107315, 0.005881296005100012, -0.031427282840013504, -0.007776463404297829, 0.0857008546590805, -0.08004908263683319, -0.033156607300043106, 0.06657098233699799, -0.010814004577696323, -0.05468366667628288, -0.10140474140644073, 0.02389538288116455, -0.023449452593922615, 0.0062494236044585705, -0.003655225969851017, -0.018393544480204582, 0.04924483597278595, -0.012210208922624588, 0.0008885195711627603, -0.018900858238339424, -0.07655945420265198, -0.04148491844534874, -0.026797926053404808, -0.04121863842010498, -0.0011885588755831122, -0.040497153997421265, 0.0839913934469223, 0.06283247470855713, 0.10690898448228836, -0.001036589266732335, 0.018495704978704453, 0.0353400893509388, 0.018649151548743248, -0.027707844972610474, 0.04230153560638428, -0.006957716774195433, -0.05814530327916145, -0.0065451557748019695, -0.10271243005990982, -0.007720960769802332, -0.0281221866607666, 0.06250285357236862, -0.07678824663162231, -0.007091996725648642, 0.01030812319368124, 0.04178055375814438, -0.09822844713926315],
+ "VMOVSSrm_alt":[-0.05297481268644333, -0.05450419709086418, -0.05847441777586937, -0.04630467668175697, -0.003332353662699461, 0.013703231699764729, -0.0804094672203064, -0.10184419900178909, -0.0700450912117958, 0.03378743678331375, 0.12113597244024277, -0.02557801827788353, -0.03483128920197487, -0.03827362507581711, 0.011930422857403755, -0.026958277449011803, 0.05108107626438141, -0.049373872578144073, -0.03297347202897072, -0.0382084921002388, 0.009672352112829685, -0.10881314426660538, -0.06345891207456589, 0.03920814394950867, 0.042570363730192184, 0.028119118884205818, 0.03954190015792847, 0.06756415218114853, 0.002062938641756773, 0.10525014251470566, -0.0125870481133461, 0.08228544145822525, -0.008355754427611828, 0.0490165539085865, 0.041763294488191605, -0.028471872210502625, -0.017719803377985954, -0.01715077832341194, -0.015494315885007381, 0.025941744446754456, -0.0013454932486638427, 0.03303114324808121, 0.06790923327207565, 0.10632964968681335, 0.06521861255168915, 0.0787622407078743, 0.032891761511564255, -0.025754010304808617, -0.08194413781166077, -0.004258180037140846, 0.0504225492477417, -0.020931413397192955, -0.028777826577425003, -0.09241243451833725, 0.06905646622180939, -0.017417490482330322, 0.013237000443041325, 0.03905722498893738, -0.08685203641653061, -0.007870230823755264, -0.012380748055875301, 0.06612736731767654, 0.10775571316480637, 0.00731459679082036, -0.06145327910780907, 0.08146338164806366, -0.06151943653821945, 0.004887969233095646, -0.0005469220341183245, -0.04528413712978363, 0.024649422615766525, 0.04827548563480377, -0.041215140372514725, -0.030375318601727486, -0.05012522265315056, 0.03860827162861824, -0.028896348550915718, 0.014046321623027325, -0.03628378361463547, 0.09289172291755676, 0.06417413800954819, 0.0256968904286623, 0.024270644411444664, 0.049628809094429016, -0.007429741322994232, 0.016982315108180046, -0.021922383457422256, 0.026717614382505417, 0.020676739513874054, -0.013922889716923237, -0.02704930305480957, -0.07150883972644806, 0.05649455264210701, 0.0054727159440517426, 0.07701016217470169, -0.06505165994167328, -0.10510498285293579, 0.038155581802129745, -0.007088589947670698, -0.004980265162885189],
+ "VMOVUPDYmr":[-0.03920627757906914, 0.033531904220581055, 0.09614590555429459, -0.038777969777584076, 0.07893908768892288, -0.07544569671154022, -0.10536547005176544, -0.016054686158895493, -0.07270114868879318, -0.001537205302156508, 0.014219311997294426, -0.031888317316770554, -0.0033261114731431007, -0.11695196479558945, -0.027870656922459602, -0.059445738792419434, -0.021067030727863312, 0.057271625846624374, -0.03791780024766922, -0.04325944930315018, -0.01030199509114027, 0.03399157151579857, -0.020524460822343826, -0.017204459756612778, 0.004852975718677044, 0.005242424551397562, 0.03624165058135986, 0.06746868789196014, -0.06290800869464874, -0.003714808728545904, -0.1065552681684494, -0.08512948453426361, -0.0013873910065740347, 0.02448449097573757, -0.05621527135372162, -0.07581967115402222, -0.038118161261081696, -0.01756216585636139, 0.006491547916084528, -0.01499701663851738, -0.03704309090971947, -0.04844926670193672, -0.07706942409276962, 0.08516096323728561, -0.03472099080681801, 0.009991621598601341, -0.0006344421417452395, 0.009081229567527771, 0.028166258707642555, -0.05701658874750137, -0.002842686837539077, 0.05205182731151581, 0.02185581624507904, 0.02298692800104618, -0.06458721309900284, 0.025035211816430092, -0.040824875235557556, 0.02634499780833721, -0.06628398597240448, 0.04223285987973213, -0.04458743333816528, -0.08856002986431122, -0.012946665287017822, -0.0007148582953959703, 0.0292971134185791, 0.053523171693086624, -0.05842992663383484, -0.045373015105724335, 0.004181820899248123, 0.015569076873362064, -0.0049995556473731995, -0.01671481505036354, -0.0063187126070261, 0.026932314038276672, 0.07803469896316528, -0.005477809347212315, -0.10820699483156204, 0.06632470339536667, 0.03006838448345661, 0.05242260918021202, -0.0915001630783081, -0.05286918208003044, 0.0732654333114624, 0.055078256875276566, -0.011366044171154499, -0.01671365275979042, -0.05048626288771629, -0.11245374381542206, 0.056660253554582596, -0.022547174245119095, -0.03562282398343086, -0.06239154189825058, 0.0380890928208828, -0.08595006912946701, 0.029100725427269936, -0.034181173890829086, -0.03402429074048996, 0.000991886598058045, 0.06372544169425964, 0.04861022159457207],
+ "VMOVUPDYrm":[-0.04434113949537277, -0.011761133559048176, 0.06039480119943619, 0.07399802654981613, -0.04385257139801979, 0.08387769758701324, 0.00405327882617712, -0.026764124631881714, -0.048121288418769836, 0.11125985532999039, 0.027949729934334755, 0.05357133597135544, -0.09456739574670792, -0.044569313526153564, -0.055802445858716965, -0.04222036898136139, 0.0032287680078297853, 0.06440180540084839, -0.015918541699647903, 0.041070640087127686, -0.03740374743938446, -0.03992331773042679, 0.009314533323049545, -0.015174387954175472, -0.025910619646310806, 0.023607874289155006, -0.03169240429997444, -0.004233193583786488, 0.10680319368839264, -0.08711539208889008, -0.034521471709012985, 0.029211366549134254, -0.022846607491374016, 0.015251405537128448, -0.010516615584492683, 0.02893463335931301, -0.011007014662027359, -0.09965464472770691, -0.02022663503885269, 0.0433664470911026, 0.08050569891929626, -0.020713649690151215, 0.11075644195079803, 0.0704694390296936, 0.021370278671383858, -0.044099144637584686, -0.026377322152256966, 0.011601101607084274, -0.024012576788663864, 0.020690077915787697, 0.0686444640159607, 0.03717006370425224, 0.03552473708987236, -0.07975507527589798, 0.005278844386339188, -0.08375801891088486, -0.10855592042207718, 0.12394952028989792, -0.09378443658351898, -0.01732054352760315, -0.005387009587138891, -0.07019656151533127, -0.09292798489332199, -0.06707099825143814, 0.12907329201698303, 0.008905481547117233, -0.0595351979136467, 0.10992825031280518, -0.022646594792604446, 0.01865403540432453, -0.030652761459350586, -0.005845161620527506, -0.0036960416473448277, 0.04895581305027008, -0.036377761512994766, 0.00752206752076745, 0.010130125097930431, -0.04646562784910202, -0.05640053004026413, 0.017530059441924095, 0.08278294652700424, -0.011854780837893486, 0.12681113183498383, -0.0402003638446331, -0.03834822028875351, 0.08204060792922974, -0.009007170796394348, 0.0477260947227478, 0.06711272895336151, -0.023264795541763306, 0.011206414550542831, -0.007814791984856129, -0.005223950371146202, -0.0658227875828743, 0.035909466445446014, -0.0347522534430027, -0.07376480847597122, -0.06888499110937119, -0.039848458021879196, 0.09378372877836227],
+ "VMOVUPDmr":[-0.09017347544431686, 0.07537655532360077, -0.06591464579105377, -0.013469074852764606, 0.012567179277539253, -0.03453128784894943, 0.07746713608503342, 0.010867786593735218, -0.0749724730849266, 0.09669744223356247, -0.0482710637152195, 0.061127662658691406, 0.06250863522291183, -0.020273813977837563, -0.05591895058751106, -0.11085741221904755, 0.0011528449831530452, 0.0589265450835228, 0.027890456840395927, -0.053199402987957, -0.007883906364440918, -0.006136235781013966, -0.047817617654800415, -0.052231770008802414, 0.013390129432082176, 0.03211763873696327, 0.0064214011654257774, 0.023826856166124344, 0.03043452650308609, -0.08707161247730255, -0.1174890324473381, -0.020504139363765717, -0.004016858525574207, -0.046795353293418884, 0.07809911668300629, -0.052725594490766525, 0.058616477996110916, 0.04940849915146828, -0.01616165041923523, -0.05870378762483597, 0.0058543747290968895, 0.05698094889521599, 0.0008067275048233569, 0.09884129464626312, 0.00271525327116251, 0.07319272309541702, 0.06792980432510376, 0.03921820595860481, -0.004534231033176184, -0.09304748475551605, -0.0833112820982933, 0.023885095492005348, 0.040888093411922455, 0.03175570070743561, -0.07542648911476135, -0.05763205140829086, -0.021573474630713463, 0.011372088454663754, -0.10307161509990692, -0.06119542196393013, 0.0268666073679924, 0.04809826985001564, -0.010944155976176262, 0.07104674726724625, -0.00996819045394659, -0.07554993778467178, -0.07331422716379166, 0.051815781742334366, 0.079747274518013, 0.020479878410696983, 0.02943352237343788, 0.00011445065320003778, 0.019091658294200897, -0.08315349370241165, -0.0013737402623519301, -0.018341071903705597, 0.0017847151029855013, -0.04381569102406502, -0.04917042329907417, -0.008040852844715118, 0.04456090182065964, -0.029689539223909378, 0.07463007420301437, -0.008944411762058735, 0.07019765675067902, -0.0011144980089738965, 0.043391745537519455, -0.027964390814304352, 0.05438941717147827, -0.07068187743425369, 0.004319179803133011, -0.027816710993647575, 0.05096743255853653, -0.09085848182439804, -0.01093810610473156, 0.03394072502851486, -0.023642467334866524, -0.016088346019387245, -0.02783171832561493, -0.06664269417524338],
+ "VMOVUPDrm":[0.06666480749845505, -0.010294007137417793, 0.07190356403589249, 0.029060807079076767, -0.016852790489792824, 0.05346734821796417, -0.08972332626581192, 0.04633885994553566, 0.038879670202732086, -0.12013810873031616, -0.023303469642996788, 0.03937011584639549, 0.03651389479637146, -0.03511510044336319, -0.060428913682699203, -0.08152947574853897, 0.05671145021915436, 0.05025756359100342, 0.01928453892469406, 0.01737595722079277, -0.03579098731279373, -0.016709228977560997, -0.00038172953645698726, -0.027959903702139854, -0.03712000697851181, -0.037360724061727524, -0.030307631939649582, -0.06065155565738678, 0.045765116810798645, 0.0007639806717634201, -0.07229068875312805, -0.04009462893009186, -0.03592069819569588, -0.06405526399612427, 0.015491804108023643, 0.010294974781572819, 0.03442881628870964, -0.05178820341825485, -0.016544049605727196, -0.016365988180041313, 0.008052129298448563, -0.03723159804940224, -0.014613917097449303, 0.014449250884354115, 0.08063819259405136, 0.006393876392394304, -0.030987925827503204, 0.021848294883966446, -0.03493166342377663, 0.013345886021852493, 0.004352266900241375, 0.029628949239850044, -0.005553219001740217, 0.031615000218153, -0.018614308908581734, -0.03663218766450882, -0.039687689393758774, -0.09493289142847061, 0.04088465869426727, -0.0677013099193573, 0.009179103188216686, -0.03555901721119881, 0.014779643155634403, 0.11369308084249496, 0.12073752284049988, -0.0091049550101161, -0.05430707708001137, 0.09759794920682907, 0.009607392363250256, 0.11787374317646027, 0.013801252469420433, -0.004349812399595976, 0.01778046041727066, -0.09151878952980042, 0.133468896150589, 0.04079918935894966, -0.015762967988848686, 0.019253406673669815, -0.03656984493136406, 0.0590854212641716, 0.05167447403073311, -0.015631893649697304, -0.005947739817202091, -0.007084330543875694, -0.014016230590641499, -0.022256335243582726, 0.010337283834815025, 0.041512295603752136, 0.10801626741886139, -0.06510942429304123, 0.06506230682134628, -0.023332491517066956, 0.08245071023702621, -0.056975431740283966, 0.029764709994196892, 0.0329003781080246, -0.035453084856271744, 0.022452624514698982, 0.05490180477499962, -0.06268336623907089],
+ "VMOVUPSYmr":[-0.0642017126083374, -0.042738452553749084, -0.03175878897309303, -0.008172000758349895, -0.034220438450574875, -0.10591088980436325, 0.10510392487049103, 0.01585029810667038, 0.023201391100883484, -0.0966293141245842, 0.014633279293775558, -0.03622489422559738, -0.017823657020926476, -0.07794881612062454, 0.062367141246795654, -0.10140810906887054, -0.010957343503832817, 0.006018000189214945, -0.03484870493412018, 0.0014232371468096972, -0.007908998057246208, -0.08968548476696014, -0.014239279553294182, -0.009251655079424381, 0.014217880554497242, 0.07080098986625671, 0.05430198833346367, 0.001821649493649602, 0.018528912216424942, -0.08915843814611435, -0.036633770912885666, -0.11192771047353745, -0.029225343838334084, 0.028654299676418304, -0.0004728294734377414, -0.061546243727207184, 0.07205307483673096, -0.021140888333320618, 0.01014654990285635, 0.015112416818737984, 0.014386291615664959, 0.052834562957286835, 0.017241019755601883, 0.16496671736240387, -0.00525782722979784, 0.06784975528717041, 0.10808122903108597, 0.0015731209423393011, 0.06418193131685257, -0.05688666179776192, -0.06105201691389084, 0.020910969004034996, -0.020941035822033882, 0.05556043982505798, 0.03345289081335068, 0.03657511994242668, -0.050364211201667786, -0.10704316943883896, -0.008684055879712105, -0.016534904018044472, -0.037759874016046524, -0.073855921626091, 0.01914915069937706, -0.02706095390021801, -0.0246745478361845, 0.015079692006111145, -0.013727185316383839, -0.011957556940615177, -0.021095171570777893, -0.0793914720416069, 0.07856684923171997, -0.011627910658717155, -0.042126644402742386, -0.03355828672647476, -0.038585763424634933, -0.006034809164702892, -0.053034719079732895, 0.02710491046309471, -0.057023338973522186, 0.05814196541905403, -0.060267623513936996, -0.03978845849633217, -0.06236080825328827, -0.016973476856946945, -0.04321787506341934, -0.07468539476394653, 0.002197589725255966, 0.004907208029180765, 0.023915162310004234, -0.09253942966461182, -0.01756908930838108, 0.01936960034072399, 0.03810501843690872, 0.013869231566786766, -0.05945544317364693, -0.020062638446688652, -0.009620587341487408, -0.024374254047870636, -0.032148655503988266, 0.05674776807427406],
+ "VMOVUPSYrm":[0.014336270280182362, -0.0027593704871833324, -0.009055281057953835, 0.011297933757305145, -0.010167750529944897, 0.018475132063031197, 0.09461931139230728, 0.13152094185352325, 0.016340412199497223, 0.03008045069873333, -0.003906359896063805, -0.07459899038076401, -0.03269835561513901, -0.03958551213145256, 0.07017794996500015, -0.07440466433763504, 0.014428704977035522, -0.0014505517901852727, -0.014498842880129814, -0.04523494094610214, 0.005632271058857441, -0.067405104637146, -0.037144407629966736, 0.005245031788945198, -0.009622687473893166, -0.02447737567126751, 0.07394083589315414, 0.008339605294167995, 0.052686940878629684, -0.008208686485886574, -0.12833018600940704, -0.1021648421883583, -0.02807576023042202, 0.00046520534669980407, -0.08556721359491348, -0.022048719227313995, -0.027681728824973106, -0.000517629028763622, -0.048798657953739166, 0.06802712380886078, 5.3497620683629066e-05, 0.025637991726398468, 0.0494072325527668, 0.0966980904340744, 0.07201535999774933, 0.10014499723911285, 0.016187554225325584, 0.022476201876997948, -0.02069154568016529, 0.01239033229649067, 0.04102732613682747, 0.07307298481464386, 0.017998987808823586, 0.00752353435382247, 0.008501035161316395, -0.03906932845711708, 0.07226058095693588, -0.004094128496944904, 0.025714445859193802, -0.014594991691410542, 0.01879171095788479, -0.008870190009474754, -0.03620118275284767, -0.017183633521199226, -0.03699307143688202, -0.0293562151491642, 0.0895853191614151, -0.026405859738588333, -0.016207166016101837, -0.06364849954843521, 0.01299264095723629, 0.0038040869403630495, -0.0392528660595417, -0.018250450491905212, 0.003620019881054759, 0.061202067881822586, -0.05626794323325157, 0.02314702421426773, 0.012615366838872433, 0.009832152165472507, -0.013026142492890358, 0.003933675587177277, -0.014205326326191425, -0.07914657145738602, -0.0051035634241998196, -0.023080650717020035, -0.0024920336436480284, -0.0019819720182567835, 0.019398480653762817, -0.06635034084320068, 0.04471898823976517, 0.048203252255916595, 0.0010983309475705028, -0.04248357564210892, -0.05909473076462746, -0.009737849235534668, -0.052144855260849, -0.044862810522317886, 0.04711955413222313, 0.03344714269042015],
+ "VMOVUPSmr":[-0.09054262936115265, 0.03075561486184597, -0.06021343916654587, 0.005942901596426964, -0.03662917762994766, 0.07635293900966644, -0.09070174396038055, 0.05735468864440918, -0.061977654695510864, -0.010210477747023106, -0.035778310149908066, -0.045229922980070114, 0.09424624592065811, -0.076258584856987, 0.06261423975229263, 0.002027513924986124, -0.018501462414860725, -0.031245695427060127, -0.04592674970626831, -0.010183853097259998, 0.01409957930445671, -0.010193726979196072, -0.03157506138086319, 0.07294611632823944, -0.0771133229136467, -0.0436926931142807, 0.02416978031396866, -0.04114356264472008, -0.029291607439517975, 0.10876200348138809, 0.06760118901729584, 0.017245445400476456, 0.0059373765252530575, -0.04496357589960098, -0.006991884205490351, -0.0794946476817131, 0.07327565550804138, 0.04834681376814842, -0.017197415232658386, 0.026987072080373764, 0.008356153964996338, 0.06801177561283112, 0.08961302042007446, -0.03939060494303703, -0.017091676592826843, 0.07165009528398514, -0.07860886305570602, -0.002011930802837014, -0.05906517803668976, -0.11480997502803802, -0.06841879338026047, -0.03959596902132034, 0.0035665493924170732, 0.05917178466916084, 0.020445862784981728, 0.059740759432315826, 0.011999271810054779, 0.06242118775844574, -0.04823318496346474, 0.010553090833127499, -0.0897379219532013, 0.009829205460846424, -0.04190641641616821, -0.014190947636961937, 0.005387808661907911, -0.12018519639968872, 0.0020683736074715853, 0.028233960270881653, -0.04888785257935524, 0.10172903537750244, 0.04990403726696968, 0.0006001050933264196, 0.019013531506061554, -0.02323281578719616, -0.06314379721879959, -0.07897946238517761, 0.09308139979839325, 0.00736940186470747, -0.05240321531891823, 0.017803052440285683, -0.08957386761903763, 0.03808768466114998, 0.010347781702876091, 0.06510715186595917, -0.028323085978627205, 0.014880470000207424, 0.06940647959709167, 0.02237730100750923, -0.014571371488273144, -0.0826854258775711, -0.011582562699913979, -0.019235417246818542, 0.027996225282549858, -0.08821920305490494, 0.051719412207603455, 0.012153809890151024, -0.019670624285936356, 0.07406829297542572, -0.021908381953835487, 0.03450000658631325],
+ "VMOVUPSrm":[0.008114179596304893, 0.002197772730141878, -0.032032035291194916, 0.01419384591281414, -0.057489633560180664, 0.028004398569464684, -0.09449360519647598, -0.025846101343631744, 0.04228831082582474, 0.012177573516964912, 0.04806305840611458, -0.010358842089772224, 0.009150343015789986, -0.02688370645046234, 0.030237320810556412, -0.07972688227891922, -0.11423268169164658, -0.010420017875730991, 0.028362074866890907, -0.06972548365592957, -0.00772484065964818, -0.007951775565743446, 0.011373809538781643, 0.04906969889998436, 0.04957298934459686, -0.0484093576669693, 0.0054070171900093555, 0.04997101053595543, -0.002358922502025962, -0.011699756607413292, -0.10612118244171143, -0.04476137459278107, -0.07375837862491608, 0.011397037655115128, 0.0033718987833708525, -0.04088302329182625, -0.02915629744529724, 0.09323686361312866, -0.06454657018184662, 0.0821780189871788, -0.0763339176774025, 0.0695832371711731, 0.03520666062831879, 0.005172154866158962, 0.09004270285367966, 0.05029210075736046, 0.007844812236726284, -0.02220461517572403, 0.06256541609764099, -0.0018689814023673534, -0.03221715986728668, 0.016169793903827667, 0.08621829003095627, -0.03281128779053688, 0.0009598175529390574, -0.027040254324674606, -0.0015415588859468699, 0.03552604466676712, -0.022872697561979294, 0.07734068483114243, -0.048478011041879654, 0.015757597982883453, -0.05806517228484154, -0.001984395319595933, 0.0008402601815760136, 0.10392385721206665, -0.05374998599290848, 0.0105493925511837, -0.030263574793934822, -0.0018010304775089025, 0.03271891549229622, 0.021749377250671387, -0.01947832480072975, -0.11190500110387802, -0.016699064522981644, -0.02018188126385212, -0.041102588176727295, 0.020070862025022507, -0.02530382201075554, 0.058191392570734024, 0.06991368532180786, 0.01901448890566826, 0.09331763535737991, -0.07563319057226181, 0.03176793456077576, 0.02039894461631775, 0.002706095576286316, 0.005600438453257084, -0.05590385943651199, -0.07953100651502609, 0.05511562153697014, -0.03420190140604973, 0.014828233979642391, -0.05296996608376503, 0.025931287556886673, 0.08133242279291153, -0.12377508729696274, -0.04288944974541664, 0.0516139455139637, -0.0031592140439897776],
+ "VMOVZPQILo":[0.09724955260753632, 0.04807291552424431, 0.030597904697060585, 0.021291600540280342, 0.08420620113611221, 0.09571602940559387, 0.028729721903800964, -0.02255423739552498, 0.022959189489483833, -0.015163067728281021, 0.05885361135005951, -0.005503670312464237, -0.013195984065532684, -0.022646183148026466, 0.05023961886763573, -0.048685427755117416, 0.07085547596216202, 0.04307084530591965, -0.028029853478074074, -0.055342815816402435, 0.03694654628634453, 0.08701522648334503, 0.056765757501125336, 0.014877845533192158, 0.049353018403053284, 0.022207744419574738, 0.046077340841293335, -0.09545990824699402, 0.08926977217197418, -0.10021883994340897, -0.06250783801078796, 0.10134237259626389, 0.04178136587142944, -0.061030808836221695, 0.004741341806948185, 0.02714451216161251, -0.03435385227203369, -0.07882227003574371, 0.07623129338026047, -0.02846306562423706, 0.085828498005867, 0.06645094603300095, 0.006809173617511988, 0.014964785426855087, 0.002491110237315297, -0.061364419758319855, -0.018061071634292603, 0.04025641456246376, -0.018200712278485298, 0.031934529542922974, -0.03532101586461067, -0.053477153182029724, 0.009594550356268883, -0.011721653863787651, 0.06652230024337769, 0.07709304243326187, -0.020998045802116394, 0.052551452070474625, -0.09416697174310684, -0.045465875416994095, -0.04878917708992958, -0.013025425374507904, 0.0803748294711113, 0.09030605107545853, -0.07352583110332489, -0.004864325746893883, 0.0698748379945755, -0.002070680959150195, -0.07201498001813889, -0.07759340852499008, -0.02641165256500244, -0.0598834753036499, 0.0068661863915622234, 0.06415180116891861, -0.023278113454580307, -0.01753448322415352, 0.09371956437826157, 0.049682945013046265, 0.11170458048582077, 0.02517331950366497, 0.028151169419288635, 0.07869259268045425, -0.012422178871929646, -0.023403819650411606, 0.05727926641702652, 0.0037225622218102217, -0.043875642120838165, 0.02631642483174801, -0.05948537588119507, 0.10410530865192413, 0.0504058338701725, 0.01829695515334606, 0.0007294699316844344, 0.03476041555404663, 0.007487616967409849, -0.008421865291893482, -0.010692291893064976, -0.012330271303653717, 0.05889474228024483, 0.10685733705759048],
+ "VMULPDYrm":[0.0029525873251259327, 0.0382404588162899, 0.023338744416832924, 0.05166569724678993, -0.048635996878147125, 0.004896062426269054, -0.01965048722922802, -0.016321679577231407, -0.03791555017232895, 0.03081020712852478, -0.06700661778450012, -0.025560185313224792, -0.0510433204472065, -0.0504751056432724, -0.0444260872900486, -0.052433256059885025, 0.0324629470705986, 0.09184636175632477, -0.02771403081715107, -0.09502816945314407, 0.03321370482444763, -0.001920567825436592, -0.02082725614309311, -0.08838851004838943, 0.01486976258456707, 0.02959027886390686, 0.06358140707015991, 0.055131468921899796, -0.07649867236614227, 0.018634367734193802, -0.04781584441661835, -0.0484355092048645, -0.05765540152788162, -0.015872806310653687, -0.09789764136075974, 0.017328055575489998, 0.020902486518025398, 0.029561273753643036, 0.017086021602153778, -0.020386796444654465, -0.025622721761465073, 0.01119273342192173, 0.03777465596795082, 0.0947810709476471, -0.05878007411956787, -0.004175104666501284, -0.03975822031497955, 0.03679583966732025, -0.031734999269247055, -0.06569671630859375, 0.059841860085725784, 0.004515965934842825, 0.036006372421979904, -0.060108285397291183, -0.020668387413024902, -0.11446750164031982, -0.09694651514291763, -0.0017816366162151098, -0.035950470715761185, 0.03195316344499588, 0.10256455838680267, -0.0571480467915535, -0.0016090262215584517, -0.005109271500259638, 0.02273080311715603, -0.0017038235673680902, -0.03142324090003967, -0.08565004914999008, -0.0004971044836565852, 0.08893370628356934, -0.0052738916128873825, -0.040363945066928864, -0.03387678787112236, -0.08906649798154831, 0.01902509294450283, -0.016781069338321686, -0.01569458283483982, -0.01483115367591381, 0.002702990546822548, 0.02620432712137699, -0.02998930774629116, 0.06998257339000702, 0.0893603041768074, -0.03148161247372627, -0.020600946620106697, -0.012550384737551212, -0.08820267021656036, -0.12133237719535828, 0.0561683252453804, -0.0529235303401947, 0.032451748847961426, -0.004052734933793545, 0.13483962416648865, -0.09579083323478699, 0.047707658261060715, -0.043561901897192, 0.04554570093750954, -0.03404863551259041, 0.028087083250284195, -0.07704319059848785],
+ "VMULPDYrr":[-0.030247444286942482, 0.021119851619005203, -0.011528333649039268, -0.029755674302577972, -0.02967492863535881, -0.0803891196846962, -0.03398595750331879, 0.014033001847565174, -0.05638299509882927, -0.02917841263115406, -0.030831875279545784, -0.032178811728954315, -0.1266718953847885, 0.024972785264253616, -0.029291406273841858, -0.04895494133234024, 0.00676026102155447, 0.03545280918478966, 0.012154286727309227, 0.02141074277460575, -0.04445214942097664, 0.013508348725736141, 0.003328783204779029, -0.002490944927558303, -0.06134984642267227, 0.02403237111866474, -0.0033832124900072813, -0.034786757081747055, -0.0376473106443882, -0.08363926410675049, -0.1374170184135437, -0.028079137206077576, -0.06175203248858452, 0.041366469115018845, -0.05060092359781265, 0.07354392111301422, -0.0017500210087746382, 0.017694909125566483, -0.004870640579611063, -0.02107086405158043, 0.015866274014115334, -0.014970473945140839, -0.1278255730867386, -0.0648028701543808, -0.01422489807009697, 0.007836824283003807, 0.023877963423728943, -0.022322453558444977, 0.11242073029279709, 0.005419597029685974, -0.05403933301568031, 0.11700571328401566, 0.03398896008729935, -0.08275651931762695, 0.03640058636665344, 0.016448670998215675, -0.06193988397717476, -0.12676148116588593, -0.048782940953969955, -0.12445767223834991, 0.02277463860809803, 0.0546732023358345, 0.046792566776275635, -0.07298991829156876, 0.002648959867656231, 0.12524044513702393, 0.06277862191200256, 0.03678569570183754, -0.040282659232616425, -0.003980106674134731, -0.03837021812796593, -0.0012901362497359514, 0.007994349114596844, 0.036471717059612274, 0.08626136928796768, 0.055281318724155426, 0.062129564583301544, 0.011766797862946987, 0.02279585227370262, -0.027394654229283333, 0.08948619663715363, -0.03032919205725193, 0.08535734564065933, 0.044109463691711426, 0.023779043927788734, -0.04192924499511719, -0.01636882685124874, 0.04142281040549278, 0.05333762988448143, -0.02665793150663376, -0.08743969351053238, -0.05396981164813042, 0.02176644466817379, -0.08598270267248154, 0.04409034550189972, 0.001677509630098939, 0.06657911837100983, -0.0709846094250679, -0.0758240669965744, 0.02546953782439232],
+ "VMULPDrm":[-0.08282549679279327, 0.057982973754405975, 0.01816149242222309, 0.009585116989910603, 0.04169483855366707, 0.029431378468871117, 0.00027222654898650944, -0.10501399636268616, 0.11902269721031189, -0.026619194075465202, -0.022435206919908524, 0.07459049671888351, 0.0650496631860733, -0.03511817008256912, 0.01473197340965271, -0.0682888925075531, 0.05632243677973747, 0.02418944053351879, 0.04141921177506447, 0.0033221247140318155, -0.03803177922964096, 0.05388054624199867, -0.08345896005630493, -0.01753814145922661, -0.02840801142156124, 0.0013926047831773758, 0.03839591518044472, 0.02449236623942852, 0.04610249027609825, 0.005270564462989569, 0.04523098096251488, -0.04667523130774498, 0.030606310814619064, -0.01635134592652321, -0.07881898432970047, -0.05101112276315689, 0.04313131794333458, -0.004651603288948536, 0.06254894286394119, 0.017571840435266495, 0.019583921879529953, 0.07191071659326553, -0.0575123094022274, 0.11046680063009262, -0.11029130220413208, 0.09408759325742722, 0.03167508542537689, 0.03682498261332512, -0.03270236775279045, -0.0064578731544315815, -0.05665130540728569, 0.020092744380235672, -0.031839389353990555, 0.021743757650256157, -0.104833222925663, 0.013188008219003677, -0.02854006551206112, 0.04867466166615486, -0.03223284333944321, -0.0612231120467186, -0.07346517592668533, -0.08443471789360046, -0.018922919407486916, 0.09153518080711365, -0.005768657196313143, 0.02348482795059681, -0.06683620810508728, 0.010961225256323814, -0.014632503502070904, -0.01683766208589077, -0.009605634957551956, 0.005457686726003885, 0.009697696194052696, -0.05893280357122421, 0.008321468718349934, -0.03939655423164368, 0.005114116705954075, -0.059711284935474396, -0.0014506352599710226, -0.0023556454107165337, 0.05873417109251022, 0.07815894484519958, -0.015614933334290981, -0.08375462144613266, -0.011453819461166859, -0.005133685190230608, 0.04732174798846245, 0.015813566744327545, 0.037718500941991806, -0.056099407374858856, -0.007477696519345045, -0.04279351606965065, 0.036459844559431076, -0.11394099146127701, -0.040331728756427765, 0.06415919959545135, 0.06394273787736893, 0.02364015206694603, 0.04150481894612312, -0.0017504572169855237],
+ "VMULPDrr":[0.06983832269906998, 0.07829336822032928, -0.08846680074930191, -0.009492243640124798, -0.04219589754939079, -0.00810911227017641, 0.07578927278518677, -0.02686719223856926, 0.0007367561338469386, -0.14969727396965027, 0.0046955919824540615, 0.03853316232562065, 0.023769430816173553, 0.05174868181347847, 0.10856908559799194, -0.042699601501226425, 0.07764981687068939, 0.13793668150901794, 0.017693134024739265, 0.05557670444250107, -0.07894968241453171, -0.06152457743883133, 0.02156081236898899, -0.008473586291074753, 0.0800471231341362, 0.024580495432019234, -0.004809869918972254, -0.0790073573589325, 0.08759550750255585, -0.02886069379746914, -0.05508636310696602, 0.07575089484453201, 0.13586513698101044, -0.022671662271022797, 0.09448234736919403, -0.04267500340938568, 0.021022317931056023, -0.03229297325015068, -0.043520133942365646, -0.01831994019448757, 0.0784919485449791, 0.044868212193250656, -0.056533459573984146, -0.04252111539244652, 0.00810214038938284, 0.013510448858141899, -0.007074000313878059, -0.053189508616924286, 0.0951722115278244, -0.0463324636220932, -0.05766957998275757, -0.027373895049095154, -0.011879682540893555, 0.009020570665597916, -0.056301623582839966, 0.0478697195649147, 0.05454613268375397, -0.04477209225296974, 0.044533297419548035, 0.01132037490606308, -0.010495108552277088, -0.050498493015766144, -0.06491845101118088, -0.06573008000850677, 0.03309464454650879, -0.012564525939524174, -0.06992495805025101, 0.06112871319055557, 0.017916180193424225, 0.07719981670379639, -0.013660591095685959, 0.010032265447080135, 0.014209202490746975, -0.07961989939212799, -0.07976413518190384, 0.025980733335018158, 0.005441534798592329, 0.005590922199189663, 0.026484772562980652, 0.08835041522979736, 0.04439090937376022, 0.03158460184931755, 0.04700065776705742, 0.015159495174884796, 0.09176383167505264, 0.041411060839891434, -0.022272586822509766, 0.08481135219335556, 0.05139138549566269, -0.07430589199066162, 0.07932148873806, 0.028900617733597755, 0.04572414979338646, -0.0819452777504921, 0.03544081375002861, -0.012568436563014984, 0.04962395876646042, 0.005385568831115961, -0.04383447766304016, -0.0547318235039711],
+ "VMULPSYrm":[-0.0017016319325193763, -0.08687973767518997, -0.07116713374853134, -0.011973071843385696, 0.012683537788689137, -0.016949795186519623, -0.03559653460979462, -0.01878872513771057, -0.03215561434626579, 0.02744286321103573, -0.10497400909662247, 0.08143952488899231, -0.03172801434993744, -0.05454998463392258, -0.01429372001439333, -0.03411194309592247, -0.03158916160464287, -0.022925082594156265, -0.05491681396961212, -0.012319144792854786, -0.015448348596692085, -0.010890544392168522, -0.032222993671894073, 0.01929554156959057, -0.006320366635918617, -0.009786182083189487, -0.06774408370256424, -0.010915939696133137, -0.030406497418880463, 0.01696278341114521, 0.03346685692667961, -0.011874809861183167, -0.05661802738904953, 0.020858757197856903, -0.09946809709072113, -0.08443241566419601, 0.042576342821121216, -0.0036120405420660973, 0.02610098384320736, 0.02351825311779976, -0.023539600893855095, -0.02438400685787201, -0.059557802975177765, 0.08656156808137894, -0.03253690525889397, -0.01886148191988468, 0.08265835791826248, -0.02388932555913925, 0.056333642452955246, -0.031151991337537766, -0.073953777551651, 0.050763171166181564, 0.034867484122514725, -0.02315637655556202, -0.008785131387412548, -0.0802638903260231, -0.008312597870826721, 0.011663233861327171, 0.022175965830683708, -0.034589219838380814, -0.046892840415239334, -0.0664251297712326, 0.003917847294360399, -0.024642786011099815, 0.05565610155463219, 0.012738059274852276, -0.08991193026304245, -0.05954403430223465, 0.021821966394782066, 0.06147130951285362, -0.06090646609663963, -0.053569212555885315, -0.018655359745025635, -0.04140264913439751, 0.042622994631528854, -0.04630507528781891, 0.024233197793364525, -0.021570205688476562, 0.008306021802127361, -0.040918368846178055, -0.051751136779785156, 0.001868903636932373, 0.024035319685935974, 0.05003799870610237, 0.04103422909975052, 0.04155706241726875, -0.08152248710393906, 0.007209131959825754, -0.03596466779708862, -0.06498074531555176, 0.12733875215053558, 0.006991372909396887, 0.069594606757164, 0.0026836106553673744, 0.10200528800487518, -0.06304480135440826, -0.10547757148742676, -0.03326951339840889, 0.01034514605998993, 0.022679900750517845],
+ "VMULPSYrr":[-0.0013469783589243889, 0.1307184249162674, -0.07488924264907837, -0.012394139543175697, -0.0675887018442154, -0.01543258223682642, 0.03456960991024971, 0.08530715107917786, 0.05292529612779617, 0.07458776235580444, -0.07463451474905014, -0.02664586901664734, -0.021187689155340195, -0.0341988205909729, -0.07779040932655334, -0.005768248345702887, -0.0019320730352774262, 0.025656137615442276, -0.04040152207016945, -0.12178461253643036, 0.010449083521962166, -0.03545369207859039, -0.04422702640295029, -0.09827659279108047, 0.04831352457404137, 0.04048629477620125, -0.003974703140556812, 0.04578809812664986, -0.03840821236371994, -0.00586967496201396, -0.09786909818649292, -0.03920178860425949, 0.04333965852856636, 0.046048760414123535, -0.058935824781656265, -0.06259085237979889, -0.06017206609249115, -0.04908948391675949, 0.020935632288455963, -0.00709824962541461, -0.0035149052273482084, 0.021213335916399956, -0.0409335196018219, 0.0529693178832531, -0.013453719206154346, 0.03207004815340042, 0.04314602538943291, -0.03242173418402672, 0.004877986386418343, -0.03585875406861305, -0.04994481801986694, 0.002164139412343502, -0.015247057192027569, -0.07502073794603348, -0.012710167095065117, -0.044239334762096405, 0.0451161228120327, -0.02862643264234066, -0.0258165393024683, -0.033930324018001556, 0.05399389937520027, 0.04541126638650894, 0.0297633558511734, -0.03755614534020424, 0.10643953830003738, 0.057506684213876724, 0.07901167124509811, -0.0024153555277734995, 0.10188882797956467, 0.026250652968883514, 0.026177125051617622, -0.0029989909380674362, -0.025799283757805824, 0.002907603280618787, 0.0322844460606575, 0.006159596610814333, 0.025488173589110374, 0.004968662280589342, 0.1091323271393776, 0.015930894762277603, 0.0024189376272261143, 0.033226363360881805, -0.04839867725968361, -0.08480562269687653, 0.07328403741121292, -0.09694260358810425, 0.016466941684484482, 0.002777216024696827, 0.018019333481788635, -0.043192584067583084, -0.054010242223739624, -0.04625432938337326, -0.05952500179409981, -0.009406543336808681, -0.04162679985165596, 0.015181485563516617, -0.03741775080561638, -0.05941186472773552, -0.015346528962254524, 0.028598293662071228],
+ "VMULPSrm":[-0.014241671189665794, 0.022285345941781998, 0.009354028850793839, -0.04280232638120651, 0.052336789667606354, 0.04337453842163086, 0.04277065768837929, -0.04707740247249603, 0.016348063945770264, -0.013827335089445114, 0.052064474672079086, 0.0850294828414917, 0.015370143577456474, -0.080955870449543, -0.0030125926714390516, -0.06751931458711624, -0.046703822910785675, -0.02509128302335739, -0.03902893140912056, -0.07262765616178513, 0.01230714563280344, -0.0334165021777153, -0.03339201956987381, 0.041135042905807495, -0.03704236447811127, 0.016842013224959373, 0.016134358942508698, -0.03844096139073372, -0.014817511662840843, 0.016019659116864204, 0.04055725410580635, -0.05109198018908501, 0.0410553477704525, -0.029852410778403282, -0.07210264354944229, 0.017443042248487473, 0.07699162513017654, -0.003973817452788353, 0.0036799500230699778, -0.07211453467607498, 0.0027060566935688257, 0.047550443559885025, 0.047373101115226746, -0.09360483288764954, -0.0880076214671135, 0.03930915519595146, 0.04065803810954094, -0.000994969974271953, -0.019130758941173553, -0.035838525742292404, -0.019730214029550552, -0.0461222343146801, -0.016236992552876472, 0.09107235074043274, -0.021645009517669678, -0.0020092290360480547, 0.07458662241697311, -0.005268547218292952, -0.027175698429346085, -0.038268573582172394, -0.07906748354434967, -0.06075938418507576, -0.01745716854929924, -0.009554630145430565, -0.004053992684930563, -0.01649950072169304, 0.017287908121943474, 0.02253117598593235, -0.03131334111094475, 0.050826262682676315, -0.01536453329026699, -0.024788258597254753, 0.008330799639225006, -0.011143648065626621, 0.00454341433942318, -0.052932191640138626, 0.011899064294993877, 0.025924889370799065, -0.0028017964214086533, 0.012242307886481285, 0.09491752088069916, -0.033076077699661255, -0.008547374978661537, 0.033964257687330246, -0.04724486917257309, 0.001500327023677528, -0.11737973242998123, 0.03990640491247177, -0.023951567709445953, 0.08727801591157913, -0.011391635052859783, -0.11012992262840271, 0.0637848898768425, -0.07569905370473862, 0.03256223723292351, 0.002333360258489847, 0.09910908341407776, 0.06305432319641113, 0.02618478238582611, 0.07188820838928223],
+ "VMULPSrr":[0.00099107064306736, 0.01306703221052885, -0.06924693286418915, 0.10655771940946579, -0.0364239439368248, 0.051200877875089645, 0.03374498710036278, -0.06337493658065796, 0.043047066777944565, -0.026512283831834793, 0.09781283140182495, -0.009885106235742569, 0.0667978972196579, -0.017106544226408005, 0.015739120543003082, -0.019814342260360718, 0.04786503314971924, -0.018942415714263916, 0.03410295769572258, 0.0030474539380520582, 0.01746421493589878, -0.055730804800987244, -0.04202839359641075, -0.0520508699119091, -0.09630540758371353, -0.048650532960891724, 0.0011356573086231947, -0.06594657897949219, 0.08172114938497543, 0.06180432811379433, 0.03105095960199833, -0.031702928245067596, -0.0720330998301506, 0.0584992989897728, -0.025230059400200844, -0.09702075272798538, -0.03578725457191467, -0.018726669251918793, -0.014184958301484585, 0.004556662403047085, -0.05382091924548149, 0.02694508247077465, -0.06009848788380623, -0.06426327675580978, -0.05333015322685242, 0.08908528089523315, 0.08255258202552795, -0.043773502111434937, 0.022344162687659264, -0.11217572540044785, -0.0528569333255291, -0.11296386271715164, -0.02766060270369053, -0.06549429148435593, 0.07316914945840836, -0.05020955950021744, -0.0763683095574379, -0.07067955285310745, -0.00664239889010787, -0.018422948196530342, -0.023088796064257622, 0.03060423769056797, 0.03618687763810158, -0.04703541100025177, -0.0037833265960216522, 0.018646985292434692, 0.043489664793014526, 0.018394725397229195, -0.036386050283908844, 0.10304159671068192, 0.11565345525741577, 0.08733123540878296, 0.027544142678380013, -0.022554868832230568, -0.049910321831703186, -0.04742243140935898, 0.03693655505776405, -0.03942573815584183, -0.09418234974145889, -0.026555918157100677, 0.05045086890459061, 0.05663043633103371, 0.040454886853694916, 0.05553338676691055, 0.023963674902915955, -0.03000987321138382, 0.017205793410539627, 0.06515070050954819, 0.005199791397899389, -0.07976961880922318, -0.044243354350328445, 0.009374658577144146, 0.056891899555921555, -0.002553247846662998, 0.040454789996147156, -0.0008931294432841241, 0.043452318757772446, 0.03960685804486275, -0.01769985817372799, -0.022842159494757652],
+ "VMULSDrm":[0.01848224177956581, 0.06904207915067673, 0.006066879723221064, -0.059252794831991196, -0.04507886618375778, 0.0132398447021842, -0.06959015130996704, 0.09074249863624573, 0.0031777089461684227, -0.011026881635189056, -0.06124911084771156, -0.07904969900846481, -0.052342481911182404, 0.025935258716344833, 0.031041936948895454, -0.05089306831359863, 0.047052912414073944, 0.07382398098707199, -0.02849176526069641, -0.08063531666994095, 0.008393910713493824, -0.09408047050237656, -0.02109093964099884, 0.049389518797397614, -0.01170138455927372, -0.010321942158043385, 0.057485539466142654, 0.043806105852127075, -0.020720304921269417, 0.027967745438218117, -0.10788373649120331, -0.048846010118722916, 0.09012911468744278, -0.09300203621387482, -0.08255418390035629, -0.00035896626650355756, -0.04839401692152023, 0.011986729688942432, 0.02038564905524254, -0.04212833195924759, 0.029093829914927483, 0.10556025058031082, -0.06510639190673828, 0.07313154637813568, 0.01976494863629341, 0.08142323791980743, 0.10817074030637741, -0.05991452559828758, -0.06349115073680878, -0.028849629685282707, -0.11441482603549957, 0.03803152218461037, 0.022063536569476128, -0.0384787879884243, -0.030229419469833374, -0.009159112349152565, -0.004879118874669075, 0.007969433441758156, -0.034843843430280685, -0.04692581668496132, -0.02007419802248478, 0.039217401295900345, -0.03116043470799923, 0.05783415213227272, -0.049994662404060364, -0.06885512173175812, -0.018453167751431465, 0.08464642614126205, 0.042955730110406876, 0.08462352305650711, -0.061061687767505646, -0.04130131006240845, 0.030339976772665977, -0.05452723428606987, 0.02241641655564308, 0.1169629618525505, -0.11135389655828476, -0.04729793220758438, -0.010303867049515247, -0.020429203286767006, 0.022739050909876823, -0.04634873941540718, 0.05584156885743141, -0.00459392461925745, 0.057436417788267136, 0.04675561562180519, -0.05323744937777519, 0.07604724913835526, -0.08619403839111328, -0.10302551835775375, 0.009906101040542126, 0.006666801404207945, 0.13363438844680786, -0.03252146765589714, 0.03920593857765198, -0.03919069468975067, 0.0004936409532092512, -0.03019084222614765, 0.013024468906223774, -0.011257215403020382],
+ "VMULSDrr":[0.0788329690694809, 0.015259487554430962, -0.09972254186868668, -0.03514925017952919, -0.03530610352754593, -0.01806563511490822, 0.09480676800012589, -0.04787246882915497, -0.012043413706123829, -0.009120306000113487, -0.10743638873100281, 0.0350477360188961, 0.013571004383265972, 0.016873164102435112, -0.0070136417634785175, -0.03884030133485794, 0.045267317444086075, 0.07214769721031189, 0.017168357968330383, -0.08235832303762436, 0.019550105556845665, -0.05430920422077179, 0.006144460290670395, -0.028170088306069374, -0.022494526579976082, 0.04742565006017685, 0.1092759296298027, -0.0700591579079628, 0.036685068160295486, 0.09387741982936859, -0.026426782831549644, -0.036430567502975464, 0.1108890026807785, 0.013891777954995632, -0.020236024633049965, -0.023650353774428368, 0.06107278913259506, -0.0019910363480448723, 0.007691867649555206, -0.02303464151918888, 0.04425676167011261, 0.01049996167421341, -0.021087026223540306, 0.028559675440192223, 0.04723874107003212, 0.07447845488786697, -0.022280067205429077, -0.05937658250331879, 0.008647989481687546, -0.007816570810973644, 0.04464711248874664, 0.06897090375423431, 0.07173310965299606, 0.048801571130752563, -0.07590649276971817, 0.01336373295634985, 0.03425203263759613, -0.03504219651222229, 0.018728679046034813, -0.01989508606493473, -0.023947693407535553, 0.03970964625477791, 0.09325291961431503, 0.055870845913887024, -0.035664670169353485, 0.10518694669008255, -0.007003619335591793, 0.06090831011533737, 0.04462481290102005, -0.01929115131497383, -0.013484642840921879, -0.012006498873233795, 0.02043958380818367, -0.05551587790250778, -0.01736295409500599, 0.016746770590543747, -0.06205372139811516, -0.030605265870690346, -0.007648523431271315, -0.00530299823731184, 0.05530065298080444, 0.008069926872849464, 0.043036121875047684, 0.019707854837179184, 0.08285170793533325, -0.08370740711688995, -0.024287104606628418, 0.06098603829741478, 0.09627235680818558, -0.03680689260363579, 0.014243537560105324, -0.03942409157752991, 0.06611905246973038, -0.03745982423424721, -0.0028009938541799784, -0.032496243715286255, 0.14356815814971924, -0.024423111230134964, 0.07434520125389099, -0.024930035695433617],
+ "VMULSSrm":[-0.015476780943572521, -0.04340198636054993, 0.017886199057102203, -0.04468996450304985, -0.020211992785334587, 0.026748275384306908, 5.421393507276662e-05, -0.029032982885837555, -0.07466927170753479, 0.04364559054374695, 0.008211140520870686, -0.06313635408878326, 0.0032952954061329365, -0.005907442420721054, 0.013493550010025501, -0.03897958993911743, -0.06602007895708084, -0.03512345626950264, -0.02776479348540306, -0.09440401196479797, -0.04206157848238945, -0.11192711442708969, -0.045342933386564255, 0.032577160745859146, -0.02754232846200466, -0.0847238078713417, 0.04485590010881424, 0.010496757924556732, 0.0338812991976738, 0.019832352176308632, 0.03558516502380371, -0.037996985018253326, 0.009721644222736359, 0.06310165673494339, -0.01960098370909691, 0.0198463574051857, -0.04644467309117317, 0.008601727895438671, 0.06245085597038269, -0.027163151651620865, -0.033776286989450455, -0.0049277544021606445, 0.0882032960653305, 0.11406278610229492, 0.04103090241551399, 0.10902229696512222, -0.09427227079868317, -0.034543320536613464, 0.0894564762711525, -0.04951493442058563, 0.026980692520737648, 0.039093099534511566, 0.01003117486834526, 0.020081471651792526, -0.013814430683851242, -0.005504094995558262, -0.0201489869505167, -0.08750518411397934, -0.035862479358911514, -0.03738975524902344, -0.07695428282022476, 0.02567966841161251, 0.07687177509069443, 0.006997441872954369, -0.08322229981422424, 0.021110888570547104, -0.06744632124900818, -0.08859959989786148, -0.012443002313375473, 0.07822658866643906, -0.04908803105354309, -0.07366181164979935, -0.029606875032186508, -0.037243910133838654, 0.015276667661964893, 0.0027875364758074284, -0.05555142089724541, -0.03802286088466644, -0.02480430155992508, 0.009737985208630562, 0.09625054150819778, 0.05182599648833275, 0.030502518638968468, 0.022765357047319412, -0.10031113773584366, 0.00030484332819469273, -0.02155280113220215, 0.04749481752514839, 0.0367395244538784, 0.003939672373235226, -0.05567072704434395, -0.08652784675359726, 0.0860108733177185, 0.027427662163972855, 0.04573018476366997, -0.07390855997800827, 0.026504430919885635, 0.045386090874671936, 0.012867400422692299, 0.013538438826799393],
+ "VMULSSrr":[0.014687256887555122, -0.05212588608264923, 0.04155705124139786, -0.03456585109233856, 0.011866651475429535, -0.02481858804821968, 0.006114249583333731, 0.006870174314826727, -0.037906549870967865, 0.02569200098514557, 0.04554709047079086, -0.027178721502423286, 0.01988115906715393, 0.025384709239006042, -0.05764029175043106, 0.04104458540678024, -0.028682317584753036, -0.0369177982211113, 0.07034410536289215, -0.09512588381767273, 0.017842167988419533, -0.06288231909275055, -0.04075929522514343, 0.03986517712473869, -0.06641837954521179, 0.0058512818068265915, -0.0031532486900687218, 0.06601227074861526, 0.07372163981199265, 0.029717307537794113, 0.054243769496679306, 0.06558672338724136, 0.059140607714653015, -0.029349705204367638, 0.03940435126423836, -0.011349184438586235, -0.00034029854577966034, -0.05610453337430954, 0.027872970327734947, 0.018404491245746613, 0.003420152235776186, -0.023132460191845894, 0.05371138080954552, 0.037948865443468094, 0.019177934154868126, 0.08322682976722717, -0.11538826674222946, -0.024806739762425423, 0.024257145822048187, -0.05569661781191826, 0.061535295099020004, -0.030990589410066605, -0.08773963898420334, 0.03727877885103226, 0.07302824407815933, 0.01576284132897854, 0.05209994316101074, -0.06457711011171341, 0.08369272202253342, -0.01537325233221054, -0.004850669298321009, 0.09262779355049133, 0.05584635213017464, -0.03921055048704147, 0.02030479721724987, 0.09215354919433594, 0.01097563561052084, 0.02184252068400383, 0.006486234720796347, -0.0346846804022789, -0.029138680547475815, -0.04849833995103836, -0.060054704546928406, -0.02003515139222145, 0.011090339161455631, -0.005239199846982956, -0.027300400659441948, 0.02142048440873623, -0.02778591960668564, 0.034906838089227676, 0.11913297325372696, 0.04053051024675369, 0.025223370641469955, 0.027969704940915108, -0.05300236865878105, -0.009294942021369934, 0.007751853205263615, 0.06009959802031517, 0.04766693338751793, 0.03548588976264, -0.015043853782117367, 0.026956332847476006, 0.06799446046352386, 0.051560670137405396, 0.051446788012981415, -0.02222830429673195, 0.10977885127067566, 0.014495344832539558, -0.07047862559556961, -0.017650313675403595],
+ "VPABSDYrr":[0.08972964435815811, 0.043277911841869354, -0.055959057062864304, 0.026673821732401848, 0.07596246898174286, -0.0011582293082028627, 0.007346080616116524, 0.013362385332584381, 0.00022936632740311325, -0.03661263361573219, -0.09315331280231476, 0.053330112248659134, -0.04480096697807312, 0.04607151076197624, -0.03649049624800682, 0.001571362721733749, -0.013883502222597599, -0.08138439059257507, 0.024495070800185204, -0.08607862889766693, -0.09001564979553223, -0.06896022707223892, 0.013094902969896793, -0.08066362142562866, 0.01850457675755024, -0.04797883704304695, -0.08560121804475784, -0.10544918477535248, 0.061047278344631195, -0.016708670184016228, 0.007258837576955557, -0.0357590951025486, -0.06398583203554153, -0.06126469001173973, -0.05264813452959061, -0.03850498050451279, 0.006087966728955507, -0.016586441546678543, -0.07224114239215851, -0.09277459233999252, -0.07814981788396835, -0.01567106693983078, -0.00984949991106987, -0.010757510550320148, -0.06466058641672134, -0.010617859661579132, -0.010949946939945221, 0.03892503306269646, -0.0495741032063961, -0.010073606856167316, 0.022478066384792328, 0.03847576305270195, 0.006579020991921425, -0.016429433599114418, -0.056449539959430695, -0.043344784528017044, 0.05489306151866913, -0.015077526681125164, -0.0558331124484539, 0.05356920138001442, -0.013624956831336021, -0.04489877074956894, 0.08571811765432358, -0.017947038635611534, 0.027428902685642242, 0.026636021211743355, 0.0918317586183548, -0.09937871247529984, -0.06180388107895851, 0.08579658716917038, -0.026709819212555885, -0.01134999468922615, 0.0017908207373693585, 0.006814965046942234, -0.0034502719063311815, -0.014691337943077087, 0.0607311837375164, 0.030175838619470596, 0.030460001900792122, -0.0372648723423481, 0.08996988087892532, 0.0658106878399849, 0.048859838396310806, 0.0177682526409626, -0.08247445523738861, -0.01784483529627323, -0.06928636133670807, -0.07818076014518738, -0.055159058421850204, 0.10692029446363449, -0.004028750117868185, 0.014920148067176342, -0.02446804754436016, -0.020464086905121803, -0.027196312323212624, -0.0008566793985664845, -0.0017403929959982634, -0.036847591400146484, -0.06338987499475479, -0.049093157052993774],
+ "VPABSDrr":[0.01358660589903593, -0.03779410943388939, -0.003844070015475154, -0.0918661504983902, 0.009428921155631542, 0.04660278558731079, 0.044867951422929764, -0.0329454280436039, -0.07141967862844467, -0.06301533430814743, 0.0010249253828078508, -0.007571964990347624, -0.0354454480111599, -0.011921183206140995, -0.01489866804331541, -0.03567442670464516, -0.09225762635469437, 0.04498979449272156, 0.015020760707557201, -0.05795016512274742, -0.06749855726957321, -0.020659783855080605, 0.0799720361828804, 0.024706779047846794, 0.10876037180423737, -0.03426627069711685, -0.02956593595445156, 0.030458219349384308, 0.054974500089883804, -0.000922123552300036, 0.03921065106987953, 0.0361480787396431, 0.062434468418359756, 0.10038510710000992, -0.005753782112151384, -0.007505045272409916, 0.04421388357877731, -0.08328398317098618, -0.011336005292832851, 0.034810870885849, 0.007799255196005106, -0.013524489477276802, -0.08102105557918549, -0.08407413959503174, 0.052848927676677704, 0.0748269259929657, -0.020298561081290245, 0.02227850817143917, 0.014131307601928711, -0.07855269312858582, 0.02535264566540718, -0.006199997384101152, 0.05779694393277168, 0.07588797062635422, 0.09157159924507141, -0.005717572756111622, -0.012552973814308643, -0.0945010706782341, -0.015234007500112057, -0.07040490210056305, -0.062140192836523056, -0.027069004252552986, 0.01844615302979946, 0.08472490310668945, 0.023398984223604202, 0.05275167152285576, 0.024013429880142212, 0.029399726539850235, -0.017112577334046364, 0.01747063733637333, 0.039055660367012024, -0.032376911491155624, -0.02556752972304821, 0.059589289128780365, -0.0646154135465622, -0.0006198186310939491, 0.0024256601464003325, 0.008441280573606491, 0.04634486883878708, 0.08503271639347076, 0.019570929929614067, 0.0730755552649498, 0.024349551647901535, -0.08480487763881683, 0.013340262696146965, -0.02787620574235916, 0.059476565569639206, 0.020771373063325882, 0.038795266300439835, 0.0929395779967308, 0.0659654289484024, -0.0035093652550131083, 0.08928779512643814, 0.029737276956439018, 0.08839702606201172, 0.019975528120994568, -0.05723823606967926, -0.06496474891901016, -0.05121663212776184, -0.020843271166086197],
+ "VPACKSSDWYrr":[-0.00835542380809784, 0.039427388459444046, 0.04946335777640343, 0.007932276464998722, -0.03234278783202171, -0.0395287349820137, -0.0011110706254839897, -0.004085069056600332, -0.018687790259718895, 0.05042681470513344, -0.014775763265788555, 0.040664192289114, -0.08604149520397186, 0.006678505800664425, 0.10389332473278046, 0.07269012182950974, -0.02730785682797432, -0.052850306034088135, 0.06414581090211868, -0.022912122309207916, 0.003740662941709161, -0.009281614795327187, 0.008115202188491821, 0.009238208644092083, 0.07839924097061157, 0.034401047974824905, -0.0028508645482361317, -0.008109414018690586, 0.012477531097829342, -0.07597683370113373, -0.09871755540370941, 0.020999617874622345, 0.05894430726766586, 0.04796159639954567, -0.07781510800123215, -0.0380873940885067, 0.039161551743745804, -0.00127562100533396, 0.018176011741161346, -0.04840894788503647, 0.021754221990704536, 0.001808234374038875, -0.0035812954884022474, 0.023054620251059532, 0.005694655701518059, -0.09597862511873245, 0.04530680179595947, -0.020187601447105408, 0.01752367801964283, 0.0406026691198349, -0.05987963825464249, -0.031224176287651062, -0.029084591194987297, 0.02377256564795971, 0.08413367718458176, 0.015784867107868195, -0.04767551273107529, -0.026532812044024467, 0.025857452303171158, 0.04581635817885399, 0.03130876272916794, 0.001334359752945602, 0.0583174005150795, -0.04088087007403374, 0.013376935385167599, -0.0046239751391112804, 0.06917837262153625, 0.10029523819684982, -0.06196500360965729, -0.004680091515183449, -0.03646835684776306, -0.04147253558039665, 0.02689775638282299, 0.01920527033507824, 0.029247283935546875, -0.04341290518641472, 0.018640385940670967, -0.06078490614891052, -0.08475083857774734, 0.03305814415216446, 0.08444660156965256, -0.020095547661185265, -0.012571234256029129, -0.03188813477754593, 0.010385134257376194, 0.04230434447526932, 0.054690197110176086, 0.014328749850392342, 0.010057330131530762, -0.04941241070628166, 0.07926010340452194, -0.0030071688815951347, -0.0018317860085517168, -0.055290449410676956, -0.0008040719549171627, 0.016558611765503883, 0.07449982315301895, -0.07340288162231445, -0.01501806266605854, 0.009399943985044956],
+ "VPACKSSDWrr":[0.04368417337536812, 0.02002313919365406, 0.08876264095306396, -0.05290812626481056, -0.0540209598839283, 0.07225912064313889, 0.00710777472704649, -0.06395571678876877, 0.051328305155038834, 0.03094993531703949, -0.021209368482232094, -0.011153939180076122, -0.03262631595134735, -0.025690095499157906, -0.0770539790391922, 0.020176585763692856, 0.024509070441126823, 0.005558183882385492, 0.05256256088614464, -0.08357205241918564, 0.027459822595119476, -0.028236588463187218, 0.10376884043216705, -0.008241364732384682, -0.06590615957975388, 0.06414097547531128, 0.0018435295205563307, 0.014526521787047386, 0.02462577447295189, 0.022568628191947937, -0.011939376592636108, -0.06447247415781021, -0.023061692714691162, 0.02354932390153408, 0.055345453321933746, -0.038836847990751266, 0.008293649181723595, 0.014610372483730316, 0.11806289851665497, -0.09967371821403503, -0.0792028084397316, -0.045284613966941833, 0.028227267786860466, -0.0641850009560585, 0.03253746032714844, -0.008421055972576141, 0.029906291514635086, -0.02527816966176033, 0.05554414913058281, 0.013610540889203548, -0.04948142170906067, 0.011140849441289902, 0.05328122153878212, -0.04005381464958191, 0.05060490965843201, 0.00653671333566308, -0.043279316276311874, -0.1050984337925911, -0.004789306782186031, -0.044866468757390976, 0.06785590201616287, -0.009772798046469688, -0.04787452146410942, 0.07730758190155029, 0.08664248883724213, -0.03413780778646469, -0.0459381565451622, 0.05615011230111122, 0.010360067710280418, -0.07796920835971832, -0.013827124610543251, 0.055102162063121796, -0.034013666212558746, 0.07096858322620392, 0.056733496487140656, -0.07597474753856659, 0.04834079369902611, 0.059536539018154144, 0.0549050010740757, 0.03078084997832775, -0.05259060487151146, -0.1030835434794426, 0.049468833953142166, -0.01680554263293743, 0.030341878533363342, 0.07027179002761841, -0.01098660659044981, 0.046366024762392044, -0.014737021178007126, 0.024259792640805244, 0.10017012804746628, -0.05548892542719841, 0.01818137988448143, -0.004199826158583164, 0.026339998468756676, 0.011644148267805576, -0.02357432432472706, -0.005534609314054251, -0.08651576191186905, -0.03728639334440231],
+ "VPACKSSWBYrr":[-0.05554528534412384, -0.017179276794195175, 0.011205736547708511, 0.012584025040268898, -0.037429600954055786, 0.054868731647729874, -0.084750235080719, -0.0005438230582512915, -0.05439261719584465, 0.03223066031932831, -0.0582355372607708, 0.08027603477239609, -0.005769375246018171, 0.07607312500476837, 0.05094361677765846, 0.028014186769723892, 0.103578120470047, -0.0460185669362545, -0.025136083364486694, 0.09450119733810425, 0.07123676687479019, -0.016070762649178505, 0.0809648185968399, -0.029551144689321518, 0.047843340784311295, -0.05328436568379402, 0.012618769891560078, 0.010320792905986309, 0.03275438770651817, -0.04037956893444061, 0.03366886451840401, 0.030143050476908684, -0.027617042884230614, -0.014936246909201145, -0.00021510617807507515, 0.0018362803384661674, 0.006142281461507082, 0.10443364828824997, -0.014577887021005154, -0.08468712121248245, -0.006810944993048906, 0.06125028803944588, -0.06886051595211029, -0.049585822969675064, 0.06225203350186348, -0.071958027780056, -0.0221028421074152, 0.03517633676528931, -0.007609223015606403, -0.05546700954437256, 0.010337437503039837, -0.025627315044403076, 0.06619107723236084, 0.058236364275217056, 0.01933218352496624, 0.06455253064632416, 0.01922416500747204, 0.01123112253844738, 0.0338505320250988, 0.005323011893779039, -0.08355052769184113, 0.04534105584025383, 0.05540602654218674, 0.06099030002951622, 0.04007333889603615, -0.07378415018320084, -0.007898728363215923, -0.05080819129943848, -0.005576195195317268, 0.004208152648061514, 0.0681464746594429, 0.013847069814801216, -0.05055389925837517, 0.05549290403723717, 0.10682561248540878, 0.002491990104317665, -0.013897569850087166, -0.07197883725166321, 0.08951657265424728, 0.0538334921002388, -0.03978265821933746, 0.024798860773444176, -0.055998727679252625, -0.060269612818956375, -0.02790813520550728, -0.08283960074186325, 0.05643570050597191, 0.008713711984455585, 0.008075975812971592, 0.004540652967989445, 0.06856956332921982, -0.01027237344533205, -0.07334102690219879, 0.017583342269062996, -0.04423782229423523, 0.041231051087379456, 0.0741378590464592, -0.04528533294796944, -0.026186661794781685, -0.03637591749429703],
+ "VPACKSSWBrr":[0.045230939984321594, -0.02358740009367466, 0.04074829816818237, 0.036727502942085266, 0.08033421635627747, -0.016269391402602196, -0.05485420301556587, 0.04841675981879234, 0.06173637509346008, -0.04707225039601326, 0.026270896196365356, 0.0027607169467955828, 0.00770206144079566, 0.07125746458768845, 0.012327894568443298, 0.0061314101330935955, 0.08398202061653137, 0.0404285229742527, -0.027048151940107346, 0.10046711564064026, -0.07252998650074005, 0.032378826290369034, -0.09285242855548859, -0.020982371643185616, -0.02977047674357891, 0.04400668293237686, 0.00012234810856170952, 0.0872361809015274, -0.026309238746762276, 0.05948726832866669, 0.04331868886947632, -0.06124812737107277, -0.053048696368932724, -0.05713320150971413, 0.06226259842514992, 0.06726556271314621, 0.026479177176952362, -0.027135195210576057, -0.039010949432849884, -0.019722921773791313, -0.0717809721827507, -0.02698029763996601, -0.05075589939951897, 0.023002833127975464, -0.036504365503787994, -0.09493868798017502, 0.07352355122566223, 0.09525085240602493, 0.04026923328638077, -0.026830198243260384, -0.0391828753054142, 0.017181772738695145, 0.0628393217921257, -0.06728870421648026, 0.018972115591168404, -0.01612055115401745, 0.038069333881139755, 0.09712376445531845, -0.01960708759725094, -0.009150020778179169, 0.03715934231877327, -0.026937566697597504, -0.04789454862475395, 0.061835840344429016, 0.012529760599136353, 0.06552384793758392, 0.07022763043642044, -0.05880031734704971, 0.022238973528146744, -0.00510287843644619, 0.06941240280866623, -0.0177005585283041, -0.009066809900105, 0.0657043308019638, 0.050045911222696304, -0.03660690411925316, 0.012172277085483074, -0.021656958386301994, -0.06399944424629211, -0.04647262394428253, -0.06836934387683868, 0.02617660164833069, 0.0029248627834022045, 0.05752812698483467, 0.014287705533206463, -0.01271747425198555, -0.04736366868019104, -0.024876488372683525, -0.041692815721035004, 0.025007616728544235, 0.0006539679015986621, 0.03169742599129677, 0.05217774957418442, -0.011885665357112885, 0.07772306352853775, -0.006158763542771339, 0.04109494760632515, -0.026750655844807625, -0.0016959341010078788, 0.08097537606954575],
+ "VPACKUSDWYrr":[0.009355328977108002, 0.039045680314302444, -0.05281034857034683, -0.005808612797409296, 0.02399633452296257, 0.09500621259212494, 0.0012087413342669606, -0.06487515568733215, -0.028258247300982475, 0.0058499351143836975, -0.0029592146165668964, 0.008630119264125824, 0.002123286947607994, 0.05883609130978584, -0.041532766073942184, 0.044594451785087585, -0.0734681561589241, -0.0794307067990303, -0.02334214746952057, 0.05186443775892258, -0.09157028049230576, -0.021729394793510437, 0.017060108482837677, -0.025446347892284393, -0.006985286716371775, -0.038836438208818436, 0.03586119785904884, -0.007082543335855007, -0.0189518965780735, 0.06399963051080704, 0.005288972519338131, -0.056997839361429214, -0.04241136834025383, -0.029118608683347702, -0.08609306067228317, 0.03691227734088898, 0.01077980361878872, 0.07944310456514359, -0.07193503528833389, -0.040327172726392746, 0.05103757977485657, -0.02048427239060402, -0.006474051158875227, 0.1003098338842392, 0.004111647605895996, 0.05645478516817093, -0.09855397045612335, 0.0505310483276844, 0.05032527819275856, -0.020551087334752083, 0.09551554173231125, -0.018312878906726837, -0.04285954684019089, 0.007642934564501047, -0.051767747849226, 0.07535172998905182, -0.07434852421283722, 0.025220919400453568, 0.059505052864551544, -0.03172510117292404, -0.05111940950155258, 0.03431154415011406, 0.025394901633262634, -0.06405831128358841, 0.0008778704795986414, 0.0987636148929596, 0.0587112233042717, -0.022915994748473167, -0.0005703300703316927, -0.039402712136507034, -0.007214896846562624, -0.04097525402903557, -0.04151439294219017, -0.05174596607685089, 0.025562727823853493, -0.11081964522600174, -0.050120171159505844, 0.018300384283065796, 0.06706780940294266, -0.059651706367731094, -0.08646109700202942, -0.062074918299913406, -0.052967555820941925, -0.006828966550529003, -0.06368570029735565, -0.0041584474965929985, 0.02844047173857689, -0.0761391744017601, 0.00040526848169974983, 0.02228436805307865, -0.027566103264689445, -1.0417592420708388e-05, 0.041134726256132126, -0.10524265468120575, -0.08296038955450058, -0.03588495030999184, -0.08560410141944885, 0.08152934908866882, -0.004522244445979595, -0.06881706416606903],
+ "VPACKUSDWrr":[-0.0775805115699768, 0.06577818095684052, 0.06955821067094803, 0.053371936082839966, 0.09225005656480789, -0.06897678226232529, 0.04717035964131355, 0.09114756435155869, -0.03677903488278389, 0.001712230732664466, 0.009245009161531925, 0.00836833007633686, -0.005213426426053047, -0.04541439190506935, 0.06430801749229431, -0.0066608162596821785, -0.09739134460687637, -0.013245278038084507, 0.024888914078474045, 0.047095153480768204, -0.005828179884701967, 0.03153892606496811, 0.06388796120882034, 0.000552945421077311, 0.086199089884758, 0.0445827841758728, 0.008973155170679092, -0.10578452795743942, 0.00136581901460886, 0.05456359311938286, -0.06908082962036133, -0.033390119671821594, -0.01236709300428629, -0.016204051673412323, -0.06407957524061203, -0.009108594618737698, -0.07974013686180115, -0.036958999931812286, -0.014459289610385895, -0.04782668873667717, 0.06776922941207886, -0.08061335235834122, -0.043118301779031754, 0.07684333622455597, 0.000749887025449425, 0.010159479454159737, 0.006342957261949778, -0.0024179560132324696, -0.02668977528810501, 0.03149840980768204, 0.005905286408960819, -0.006911829113960266, 0.050326135009527206, -0.011050747707486153, 0.045695483684539795, 0.06985633075237274, -0.06540162116289139, 0.016381744295358658, -0.00727712782099843, 0.10438331216573715, -0.06417107582092285, -0.028245320543646812, -0.00965673103928566, 0.0021558322478085756, 0.028668735176324844, 0.10288834571838379, -0.021023254841566086, -0.021011479198932648, 0.020924996584653854, -0.008815499022603035, 0.05701509863138199, -0.06527834385633469, -0.08210548013448715, -0.04826108366250992, 0.04791758954524994, -0.06394091248512268, 0.02393360435962677, -0.10917305201292038, -0.00012387114111334085, -0.07371994853019714, -0.10513263195753098, -0.0030638594180345535, -0.062451399862766266, -0.05234023928642273, 0.03059213049709797, -0.07815004140138626, 0.01626395620405674, -0.051397424191236496, -0.08471964299678802, -0.015264772810041904, -0.04784301668405533, 0.03127482905983925, 0.0056137931533157825, 0.039531409740448, -0.06890556216239929, -0.0430719368159771, -0.026654357090592384, -0.028711849823594093, -0.04047015681862831, -0.022996414452791214],
+ "VPACKUSWBYrr":[0.025613853707909584, -0.09797075390815735, -0.02919428050518036, 0.09188929945230484, -0.053540438413619995, 0.00606189901009202, -0.004507123492658138, 0.0718732550740242, 0.08678682893514633, -0.04879944398999214, 0.015570895746350288, -0.058886636048555374, -0.057876233011484146, 0.04703762009739876, 0.08221182972192764, 0.010443945415318012, 0.027739088982343674, 0.03138338401913643, 0.06615430861711502, 0.04557498171925545, 0.047139834612607956, -0.0021588667295873165, 0.024551639333367348, -0.0043014041148126125, 0.014888006262481213, -0.010206802748143673, 0.01035103015601635, -0.02916976995766163, -0.0481930635869503, -0.04823422059416771, 0.052391186356544495, 0.008267613127827644, -0.04428291320800781, -0.012732640840113163, 0.06102102994918823, -0.029777182266116142, -0.08287476748228073, -0.02616739086806774, 0.010633982717990875, -0.01071817334741354, 0.03588737174868584, 0.053751349449157715, 0.05143574997782707, -0.013515341095626354, 0.02415674366056919, -0.0794103816151619, 0.01814272440969944, -0.043350595980882645, -0.03619353473186493, 0.007986662909388542, 0.0024468032643198967, 0.00676691671833396, 0.08605432510375977, -0.055588141083717346, -0.0026539769023656845, -0.08314123749732971, -0.025879595428705215, 0.008903665468096733, 0.06939072161912918, 0.1089470311999321, -0.01664802059531212, -0.02454356662929058, -0.002041351981461048, 0.029040899127721786, -0.027377430349588394, -0.029553193598985672, 0.07607734203338623, -0.019511746242642403, -0.022124264389276505, 0.0491657480597496, -0.004046711139380932, 0.026318566873669624, -0.04378131404519081, 0.026166683062911034, -0.05505182594060898, 0.03216896578669548, 0.06646554172039032, -0.0024389633908867836, 0.010834340006113052, -0.1100187674164772, 0.09405004978179932, 0.10015444457530975, 0.018761632964015007, -0.018444495275616646, 0.04327948018908501, -0.05259809270501137, 0.00722266361117363, 0.09481631964445114, -0.06953609734773636, -0.02726927399635315, 0.06064233183860779, -0.06937883049249649, -0.027077391743659973, 0.03272445499897003, 0.08560692518949509, 0.04113750532269478, 0.001127040944993496, -0.03244390711188316, -0.018937816843390465, 0.11125116795301437],
+ "VPACKUSWBrr":[0.03217386454343796, 0.08714562654495239, 0.008664022199809551, -0.050970159471035004, 0.06467762589454651, 0.049005575478076935, -0.01682143658399582, -0.0014234951231628656, 0.059146713465452194, -0.025166019797325134, 0.009436535649001598, -0.000508319353684783, -0.017863839864730835, -0.0854005292057991, -0.018623311072587967, 0.06489619612693787, 0.027362719178199768, -0.1041986271739006, 0.056037746369838715, 0.0925726369023323, 0.03331741690635681, -0.011153753846883774, -0.04209509491920471, -0.0050594741478562355, 0.12707695364952087, 0.004502886440604925, -0.024349896237254143, 0.012014188803732395, 0.00871890876442194, 0.0177909005433321, 0.02633616328239441, -0.050604552030563354, -0.04901856184005737, 0.04250866919755936, 0.056940656155347824, -0.025374505668878555, -0.05651549994945526, -0.01849941536784172, 0.004755948670208454, -0.05218932405114174, -0.053928226232528687, -0.04042365401983261, 0.033779073506593704, -0.06303104758262634, 0.05626441165804863, -0.004522114526480436, 0.0412900485098362, -0.0420866534113884, 0.09861936420202255, 0.10423648357391357, 0.04740769788622856, -0.022644488140940666, -0.005499312188476324, -0.0667225569486618, 0.05127435550093651, 0.03432941436767578, -0.020689543336629868, -0.026398899033665657, 0.004853785503655672, -0.0260411836206913, -0.040550343692302704, 0.08005450665950775, -0.022226901724934578, 0.030461089685559273, 0.030114302411675453, 0.020294060930609703, 0.02062087133526802, 0.0453450083732605, -0.045648615807294846, -0.058305565267801285, -0.03605487570166588, 0.03427121043205261, -0.03561408817768097, 0.011912473477423191, 0.00039624463533982635, -0.060183025896549225, 0.011315382085740566, 0.0007141588721424341, -0.05972865968942642, 0.032561395317316055, 0.024522310122847557, 0.018855497241020203, 0.06877131760120392, -0.052198585122823715, -0.009350848384201527, 0.06762151420116425, 0.014373481273651123, 0.047240275889635086, -0.012881978414952755, -0.030972100794315338, -0.06720595806837082, -0.06313765794038773, 0.03256600350141525, 0.03396797552704811, 0.03137357160449028, -0.003215022152289748, -0.03601546213030815, 0.06538272649049759, -0.03244141489267349, -0.032069046050310135],
+ "VPADDBYrm":[0.04905396327376366, 0.06697428226470947, -0.046919453889131546, 0.022114071995019913, 0.033109623938798904, 0.08868873119354248, 0.024927707388997078, -0.03221352770924568, -0.014016719534993172, 0.03377700224518776, 0.048089079558849335, -0.035701170563697815, 0.07249906659126282, -0.06754110753536224, -0.04255424812436104, 0.033730167895555496, -0.07737419754266739, -0.04480681195855141, 0.09008628129959106, -0.08840914070606232, 0.02376352809369564, 0.02243400551378727, -0.10431955009698868, -0.04945235699415207, -0.03674780949950218, 0.009260633960366249, 0.0005441384855657816, -0.013894652016460896, -0.04669947922229767, -0.00421880092471838, 0.030894044786691666, 0.09737662971019745, 0.008169920183718204, -0.013697026297450066, -0.04553334414958954, 0.05975702777504921, -0.015497168526053429, -0.09338480979204178, 0.021698595955967903, -0.07847581803798676, -0.03870256245136261, 0.04345637932419777, 0.05263112857937813, 0.0006122749182395637, 0.04107973724603653, 0.050778571516275406, 0.036906614899635315, 0.029936354607343674, 0.04620880261063576, -0.08917640894651413, -0.05188266932964325, -0.06111037731170654, 0.03997443616390228, 0.021727299317717552, 0.05159872770309448, -0.026383791118860245, -0.07254166156053543, -0.035184092819690704, 0.046037882566452026, 0.050053730607032776, 0.02190486341714859, 0.024922817945480347, 0.045583970844745636, -0.043452199548482895, 0.004241046030074358, 0.08378683775663376, 0.06352841854095459, -0.003160706954076886, 0.05438707023859024, -0.00296873040497303, 0.033899422734975815, -0.035277195274829865, -0.00743103725835681, 0.0006600241758860648, -0.003969475626945496, 0.06077970936894417, 0.08756361901760101, -0.06267698109149933, 0.02577996253967285, 0.0036937331315129995, -0.041326940059661865, 0.05263775214552879, -0.020656129345297813, -0.008032281883060932, 0.017659738659858704, 0.03543703258037567, 0.05764509737491608, 0.06319976598024368, 0.03591550141572952, -0.09710946679115295, 0.002928237896412611, 0.06309256702661514, -0.013009489513933659, -0.024637529626488686, 0.015617814846336842, -0.017685869708657265, -0.04650508984923363, -0.003289043204858899, 0.03421851247549057, -0.0769142284989357],
+ "VPADDBYrr":[0.058640915900468826, 0.042851511389017105, -0.04007057473063469, 0.08214805275201797, 0.03616022318601608, -0.022777019068598747, -0.041776128113269806, 0.003422511974349618, 0.08844682574272156, 0.02707115188241005, -0.06399992108345032, -0.01629558391869068, 0.04254155233502388, 0.023940376937389374, 0.04093785583972931, 0.02171151153743267, -0.0023756225127726793, -0.04298846051096916, -0.04133466258645058, -0.07617867738008499, 0.01166993286460638, -0.014211482368409634, 0.0971350222826004, 0.0561617873609066, 0.02766103483736515, 0.010815645568072796, -0.04413723200559616, 0.06404054164886475, 0.02346079796552658, 0.09245006740093231, -0.06078280881047249, -0.0381932333111763, 0.045841384679079056, 0.00861244834959507, -0.051477763801813126, 0.04263177886605263, 0.017147550359368324, -0.0103403739631176, 0.08313170820474625, 0.054230935871601105, -0.055871445685625076, -0.04191431403160095, -0.08647841960191727, -0.020750753581523895, 0.006362170446664095, -0.04864075779914856, 0.018979409709572792, 0.012105198577046394, -0.0027898885309696198, 0.0622003898024559, -0.003000386757776141, -0.04900626465678215, -0.023489519953727722, -0.03670886531472206, -0.003613770008087158, 0.02905823290348053, -0.02964344061911106, 0.011456985957920551, 0.014865530654788017, 0.024185756221413612, -0.04396386072039604, -0.026416964828968048, -0.007242680061608553, 0.0035435438621789217, -0.0116012217476964, -0.001242280937731266, -0.006951435003429651, -0.03733443096280098, -0.029871052131056786, 0.06418990343809128, -0.02069522999227047, -0.02828056924045086, -0.02330346591770649, -0.01762772724032402, 0.10568978637456894, 0.018733695149421692, -0.009630599990487099, -0.08298902213573456, 0.06525412201881409, -0.06138642877340317, -0.04138171672821045, -0.0693003460764885, 0.04747952148318291, -0.010009103454649448, 0.04361463710665703, -0.027689162641763687, -0.03831954672932625, 0.05492920055985451, -0.022538837045431137, -0.004031670279800892, -0.015354844741523266, -0.0005307907122187316, 0.03759177029132843, 0.09037840366363525, 0.03129752352833748, 0.03451810032129288, -0.015387116931378841, 0.04248413071036339, -0.025445174425840378, -0.02180579863488674],
+ "VPADDBrr":[0.03522004187107086, 0.03234472498297691, -0.05082610622048378, -0.08046739548444748, -0.10433433949947357, 0.02447686158120632, 0.05426019802689552, 0.012409700080752373, -0.06161047890782356, 0.06466882675886154, -0.0006467889179475605, 0.04575580358505249, -0.022227099165320396, 0.015850679948925972, 0.00442364439368248, 0.10536972433328629, -0.0505087748169899, -0.04368775710463524, -0.07228875905275345, -0.007817164063453674, 0.06561212241649628, 0.11025059968233109, 0.038409121334552765, -0.07778004556894302, -0.07031161338090897, 0.047591324895620346, 0.021891050040721893, -0.10162409394979477, -0.018180809915065765, -0.012088220566511154, -0.02322574332356453, 0.07042151689529419, 0.09526970982551575, -0.00551929697394371, 0.05951599031686783, 0.017404450103640556, 0.061572130769491196, 0.005956224165856838, -0.0727609321475029, 0.049538686871528625, -0.03921880945563316, -0.017726024612784386, -0.021459953859448433, -0.006865021772682667, 0.0027168444357812405, 0.060837775468826294, 0.02713015303015709, 0.04272978752851486, 0.050070006400346756, 0.01806347258388996, -0.028468824923038483, -0.0161469504237175, 0.04340904578566551, -0.08889804780483246, -0.11077910661697388, -0.023539923131465912, 0.019443729892373085, 0.04162292554974556, 0.08811173588037491, 0.00686333142220974, -0.02436036616563797, 0.044111479073762894, -0.011118607595562935, 0.0226273350417614, -0.02999364212155342, 0.02848718874156475, 0.007469821721315384, -0.045303668826818466, -0.06537225842475891, 0.026947174221277237, -0.009687073528766632, 0.07043492048978806, 0.020630303770303726, -0.029699834063649178, 0.08691911399364471, -0.078281469643116, 0.009487396106123924, -0.005419039633125067, 0.07631627470254898, -0.03468439728021622, 0.004063725005835295, 0.030935687944293022, 0.005363785196095705, 0.00397798977792263, -0.0091449785977602, -0.009329486638307571, -0.04837759584188461, -0.04687868431210518, 0.08179963380098343, 0.03782866895198822, -0.10792016237974167, -0.062191057950258255, -0.012053257785737514, 0.03678542748093605, -0.04863103851675987, 0.08315621316432953, 0.058685630559921265, 0.027042577043175697, -0.06841353327035904, -0.027764294296503067],
+ "VPADDDYrm":[0.07471011579036713, -0.06450705975294113, 0.08725710213184357, -0.04459302872419357, -0.09468826651573181, -0.05626651272177696, 0.08581706136465073, 0.060702208429574966, 0.06986985355615616, 0.09656357020139694, -0.011608838103711605, 0.011114945635199547, 0.05807095766067505, 0.013062589801847935, -0.06732932478189468, -0.033569831401109695, -0.05928188934922218, 0.03973405435681343, 0.07973115146160126, 0.08362122625112534, -0.03238525986671448, -0.009981987066566944, -0.11140894889831543, 0.009976137429475784, -0.04538501426577568, 0.04683595523238182, -0.06869471073150635, -0.09168874472379684, -0.002572060562670231, 0.02494857646524906, -0.052512917667627335, -0.05055473372340202, -0.010295966640114784, -0.08314187079668045, -0.03974834084510803, 0.010100907646119595, -0.014886140823364258, -0.03716248646378517, -0.03674668073654175, -0.014509645290672779, -0.027544641867280006, -0.07299239188432693, 0.023826036602258682, -0.012473590672016144, -0.009865882806479931, -0.011053085327148438, 0.022293951362371445, -0.09898978471755981, 0.022279785946011543, -0.06869856268167496, 0.08224950730800629, -0.047662362456321716, -0.03375767171382904, -0.07566186040639877, -0.034205976873636246, -0.10057291388511658, -0.0375787615776062, 0.04857233911752701, 0.07282178848981857, -0.030435711145401, 0.026843290776014328, -0.041623082011938095, -0.09277007728815079, -0.0799020305275917, -0.09768039733171463, -0.02011772058904171, 0.011184535920619965, 0.009967466816306114, 0.03500540554523468, 0.07489725947380066, 0.075099416077137, 0.002771858824416995, 0.028045140206813812, 0.07098007202148438, 0.033695802092552185, -0.06931082159280777, 0.037906136363744736, -0.05671614781022072, 0.041119806468486786, 0.05964868888258934, 0.10871540009975433, 0.05735015869140625, 0.023255081847310066, 0.05169011279940605, 0.10444436222314835, -0.03146130591630936, -0.07598797976970673, -0.10020346939563751, -0.00803969707340002, -0.037385400384664536, -0.11364299803972244, -0.001004847465083003, 0.016010357066988945, -0.06352613121271133, -0.010120002552866936, 0.0025302155409008265, -0.06679904460906982, -0.055425647646188736, 0.006268918979912996, 0.04724842309951782],
+ "VPADDDYrr":[-0.075274258852005, -0.02663862705230713, -0.07172881066799164, -0.01729765720665455, -0.037817809730768204, -0.061236776411533356, 0.07352712750434875, 0.0018025131430476904, -0.022824490442872047, 0.004576583858579397, -0.0020930517930537462, 0.055330727249383926, -0.04872176796197891, -0.010818485170602798, -0.06901930272579193, 0.06164901703596115, 0.03007938712835312, -0.06340790539979935, -0.08685699850320816, 0.054445501416921616, 0.013185516931116581, -0.05111595243215561, -0.00992963369935751, -0.051402848213911057, 0.00010313005623174831, 0.06479462236166, -0.010037668980658054, -0.020739097148180008, -0.017850711941719055, -0.025127343833446503, -0.03117978572845459, -0.08707072585821152, 0.0035710488446056843, 0.041283562779426575, 0.004129521083086729, -0.06766421347856522, 0.0617620088160038, 0.027935244143009186, 0.025865554809570312, 0.03197703883051872, 0.05979522690176964, 0.03951224684715271, 0.004281631670892239, -0.06386841088533401, -0.03323370963335037, -0.08049292862415314, 0.09074085205793381, 0.04243748262524605, 0.009225203655660152, -0.04438084736466408, -0.019864315167069435, -0.0018037764821201563, 0.0321308933198452, -0.047856055200099945, -0.019419685006141663, 0.011274772696197033, 0.04079793021082878, 0.012915421277284622, -0.018909506499767303, 0.057487163692712784, 0.032482609152793884, 0.04269595444202423, 0.008546878583729267, 0.027817377820611, 0.08071382343769073, -0.08275602757930756, 0.06990348547697067, 0.023380422964692116, -0.004179058596491814, -0.05143626034259796, 0.04130692780017853, -0.07335060089826584, -0.034917622804641724, 0.04897259920835495, 0.01889985054731369, -0.06380461156368256, -0.03423577919602394, 0.005144989117980003, -0.029487844556570053, 0.027317862957715988, 0.034373827278614044, -0.006171717774122953, -0.10156163573265076, -0.026783980429172516, -0.00875311903655529, -0.05822212994098663, 0.016355514526367188, 0.009985382668673992, -0.01675598882138729, -0.06947879493236542, -0.09468542039394379, -0.050993211567401886, 0.006553050130605698, 0.05212235823273659, 0.06760892271995544, 0.01234903559088707, 0.06143642216920853, 0.06937714666128159, -0.011773691512644291, 0.015789059922099113],
+ "VPADDDrm":[0.07074414193630219, -0.03541450574994087, 0.05306251719594002, 0.050825659185647964, 0.029638513922691345, -0.07591082155704498, -0.06999919563531876, -0.06972985714673996, -0.09834804385900497, 0.037022095173597336, -0.028080791234970093, 0.02923639863729477, 0.04523836821317673, 0.06624184548854828, -0.02014773339033127, 0.05501926690340042, -0.05001799762248993, 0.02875916101038456, 0.0728679895401001, -0.007687361910939217, -0.025250306352972984, 0.08645820617675781, 0.06075636297464371, 0.01900831051170826, 0.1057247519493103, -0.04256374388933182, 0.022825710475444794, 0.08798462152481079, -0.08780421316623688, -0.01479305885732174, 0.013152617029845715, 0.03223038464784622, -0.05390053614974022, 0.06964090466499329, -0.029562009498476982, -0.0763256847858429, -0.08331209421157837, 0.03185636177659035, -0.0782688707113266, -0.032827228307724, -0.02979106269776821, 0.03745295852422714, 0.1041724905371666, 0.0711500272154808, 0.045395467430353165, -0.030027614906430244, 0.027408985421061516, -0.07650161534547806, 0.027314236387610435, -0.026259232312440872, 0.044992271810770035, 0.06348558515310287, -0.06595004349946976, -0.002598781604319811, -0.08316574990749359, 0.024715177714824677, 0.026263531297445297, -0.016227612271904945, -0.016850687563419342, -0.05650497227907181, 0.07101821154356003, -0.0014240393647924066, -0.01626676879823208, -0.010280400514602661, 0.05580179765820503, -0.0020399976056069136, 0.04568999260663986, 0.009010819718241692, -0.03957301750779152, 0.08742021024227142, -0.03527263551950455, -0.025718795135617256, 0.029166564345359802, 0.09007355570793152, 0.009119300171732903, -0.05857892334461212, 0.0607173889875412, -0.10657699406147003, 0.05016655474901199, -0.021442173048853874, 0.07569455355405807, 0.006724444217979908, 0.03434831649065018, -0.06155714392662048, -0.0324014276266098, 0.039161551743745804, -0.09323692321777344, -0.03926368057727814, -0.013696287758648396, -0.03150439262390137, 0.03434480354189873, -0.026041461154818535, -0.05642228201031685, -0.0327732153236866, 0.07529055327177048, -0.00782565213739872, 0.01567193679511547, -0.04000244289636612, -0.035312194377183914, -0.10169219970703125],
+ "VPADDDrr":[0.021815067157149315, -0.01362939365208149, 0.1000523716211319, -0.08860385417938232, 0.006351475603878498, 0.03681949898600578, -0.032686587423086166, -0.004980894736945629, -0.010598293505609035, -0.03101394884288311, -0.03816235065460205, 0.003976226318627596, 0.03306136280298233, -0.022934751585125923, -0.045762091875076294, 0.0202464759349823, -0.021671496331691742, -0.024044379591941833, -0.0018817459931597114, 0.06617505848407745, 0.003574337111786008, 0.027806028723716736, -0.06556054204702377, -0.02710581198334694, 0.032772570848464966, 0.05691178888082504, 0.07514850050210953, 0.019204698503017426, 0.010506021790206432, 0.09470850229263306, -0.006426834035664797, 0.0071287136524915695, -0.08881504833698273, 0.030814385041594505, 0.0823371484875679, -0.08064162731170654, -0.03051578253507614, -0.07484544813632965, 0.016871768981218338, 0.037407658994197845, 0.014880864880979061, 0.06352163851261139, -0.010260645300149918, -0.0751623585820198, 0.09739097207784653, 0.023392507806420326, -0.038957469165325165, 0.010238687507808208, -0.020883925259113312, 0.09373565018177032, -0.02421141229569912, -0.0020326029043644667, -0.05130865424871445, -0.01602039858698845, 0.019453395158052444, 0.02875816635787487, 0.10340550541877747, 0.02523457445204258, -0.030006855726242065, -0.027860002592206, -0.0014999917475506663, -0.15079741179943085, -0.008559232577681541, 0.018343212082982063, -0.015893956646323204, -0.0838930532336235, 0.03179508447647095, 0.0282286386936903, 0.03629541024565697, -0.007018092088401318, 0.08189265429973602, 0.07857294380664825, 0.0186317041516304, 0.008725597523152828, 0.0011993130901828408, 0.02682121843099594, -0.012216435745358467, -0.07346703112125397, -0.018435660749673843, 0.05923512950539589, 0.02030261605978012, 0.0044959611259400845, 0.05022547394037247, 0.039223309606313705, 0.033687032759189606, -0.08640291541814804, -0.05333293229341507, 0.07654612511396408, 0.09512419998645782, 0.0019343964522704482, 0.008994732052087784, 0.006458038929849863, 0.006685370113700628, 0.02314831130206585, -0.026800978928804398, -0.02340557426214218, 0.073527991771698, 0.027809137478470802, -0.01731923781335354, 0.09397353231906891],
+ "VPADDQYrm":[0.10342314839363098, 0.026350365951657295, 0.030885746702551842, 0.0007625662256032228, -0.09268546849489212, 0.08939787745475769, -0.017835156992077827, 0.053709372878074646, -0.006121955346316099, 0.030424240976572037, 0.09661500155925751, 0.03619641810655594, 0.017943326383829117, 0.03558778762817383, -0.08926563709974289, 0.03447335958480835, -0.0630611851811409, 0.04432196542620659, -0.08087540417909622, 0.015803547576069832, 0.042254362255334854, 0.07813109457492828, -0.07704972475767136, -0.032396987080574036, 0.06274786591529846, -0.013140718452632427, -0.057427532970905304, 0.040098559111356735, -0.07511105388402939, -0.06324966251850128, 0.018608463928103447, -0.007562612649053335, 0.032444436103105545, -0.0865527093410492, 0.014544532634317875, 0.10172513127326965, -0.08639629185199738, 0.014174832962453365, -0.010285204276442528, 0.0210573747754097, 0.014880746603012085, 0.006798357702791691, 0.025552736595273018, -0.057092104107141495, -0.011796452105045319, -0.09593918919563293, -0.02554611675441265, 0.017204757779836655, 0.06646471470594406, 0.07478054612874985, -0.019460538402199745, -0.06682436168193817, -0.04577753692865372, -0.04898274689912796, 0.010481293313205242, 0.07301530987024307, -0.05562188848853111, -0.05164404585957527, -0.010049894452095032, -0.0012193103320896626, -0.06129750609397888, -0.042792920023202896, 0.015884727239608765, -0.012026495300233364, -0.07572455704212189, 0.06602277606725693, -0.01764138601720333, -0.048338908702135086, 0.055312152951955795, 0.07469204813241959, 0.06530831009149551, -0.020995132625102997, -0.04550779610872269, 0.0050550526939332485, -0.009011579677462578, -0.001625250093638897, -0.027409344911575317, 0.0436655692756176, -0.048257533460855484, 0.03113301657140255, -0.060667384415864944, 0.008690186776220798, -0.04452049359679222, 0.09967055171728134, -0.028593923896551132, 0.0003231951268389821, 0.021079150959849358, 0.04590103030204773, 0.03545307740569115, 0.08171150833368301, -0.028585733845829964, 0.05510867387056351, 0.07177061587572098, 0.02144208922982216, 0.02032672055065632, -0.06185311824083328, -0.051245685666799545, -0.021376624703407288, -0.08080604672431946, -0.014632648788392544],
+ "VPADDQYrr":[-0.04746493324637413, -0.020641732960939407, 0.019582809880375862, 0.024438856169581413, -0.0565180629491806, -0.05729202553629875, 0.07253178209066391, 0.05021888390183449, 0.002780697774142027, -0.007118527777493, -0.012181051075458527, 0.04700083285570145, -0.05481242388486862, 0.0012922341702505946, 0.056637343019247055, 0.037607211619615555, 0.00344557105563581, -0.04605570062994957, -0.0220763199031353, -0.030526036396622658, 0.023666631430387497, -0.051766011863946915, -0.03751867264509201, -0.020024416968226433, -0.030404239892959595, -0.08673880994319916, 0.05380801111459732, 0.07047801464796066, 0.08713005483150482, -0.016700543463230133, -0.03322092443704605, 0.014863768592476845, 0.09452419728040695, 0.017264321446418762, 0.033706992864608765, -0.06839196383953094, 0.034307628870010376, 0.11726763844490051, -0.006195330526679754, 0.08639788627624512, 0.04819121211767197, 0.015151255764067173, 0.015176823362708092, 0.05108494311571121, 0.04747283086180687, -0.04632816091179848, 0.010229679755866528, -0.01774088479578495, 0.016654526814818382, 0.017613494768738747, -0.022677050903439522, 0.030452219769358635, 0.0367535725235939, 0.0934072732925415, -0.0014004246331751347, -0.046974778175354004, 0.09138807654380798, -0.06108582019805908, -0.01762743666768074, 0.044680483639240265, 0.08171769976615906, -0.10051188617944717, 0.06665157526731491, 0.06763666868209839, 0.057860977947711945, 0.04312099888920784, -0.025487521663308144, 0.009457348845899105, -0.05889931693673134, 0.05311239883303642, -0.05436857044696808, -0.004297701641917229, -0.05996699258685112, 0.10057441890239716, -0.029395021498203278, -0.04396578669548035, -0.06137953698635101, -0.031270164996385574, 0.04239179566502571, 0.01077528391033411, -0.01953267864882946, -0.027561577036976814, 0.042446501553058624, -0.0305107980966568, 0.005863856989890337, 0.00406027864664793, -0.0030378862284123898, -0.0035029922146350145, 0.032657377421855927, -0.09600687026977539, -0.06453638523817062, 0.09201063960790634, -0.020092474296689034, -0.062604621052742, -0.0006724156555719674, 0.08945993334054947, 0.03047722950577736, 0.07975617796182632, 0.053785234689712524, -0.03171956166625023],
+ "VPADDQrm":[-0.08600685745477676, 0.0964706614613533, 0.013524797745049, -0.11212088167667389, -0.03519901633262634, -0.0064968992955982685, -0.03456190228462219, 0.08649681508541107, 0.01826116070151329, 0.03609758988022804, 0.059873905032873154, -0.0643870085477829, -0.09240083396434784, -0.06168666109442711, 0.022917261347174644, -0.034792132675647736, 0.021108269691467285, -0.07201744616031647, 0.04668257385492325, 0.02596704103052616, -0.015156594105064869, 0.0512373223900795, 0.08872109651565552, -0.10186520963907242, 0.06422241032123566, -0.09593500941991806, -0.029327167198061943, 0.031229529529809952, 0.08047880232334137, -0.01894695870578289, -0.06936129927635193, -0.0263237114995718, 0.007181531749665737, -0.05252661183476448, -0.03164786845445633, 0.025546450167894363, -0.013680142350494862, -0.018371466547250748, -0.05214313417673111, 0.0041181487031280994, 0.050091080367565155, 0.07953505963087082, -0.062360744923353195, -0.03719313442707062, -0.0821944922208786, -0.01949293725192547, -0.02325265109539032, 0.041689109057188034, 0.03814973309636116, 0.1067778468132019, 0.05672851577401161, -0.009179272688925266, -0.0163602102547884, 0.019658148288726807, -0.007938207127153873, -0.034147121012210846, -0.06145477294921875, 0.009231877513229847, -0.03477758541703224, 0.0790092721581459, -0.004826278891414404, 0.005208403803408146, -0.01829063519835472, -0.047041188925504684, -0.01286102645099163, -0.04985863342881203, 0.04605461657047272, -0.023843901231884956, 0.06781764328479767, 0.07401484251022339, -0.10889309644699097, 0.00669476855546236, 0.00521876523271203, 0.053503066301345825, -0.007798850070685148, 0.025088246911764145, 0.09850060939788818, 0.02378711849451065, -0.04286542534828186, -0.01941082254052162, -0.009876297786831856, -0.051399704068899155, 0.07985831052064896, 0.053699031472206116, -0.01680922321975231, 0.015842294320464134, -0.03353998064994812, -0.039270516484975815, 0.05821982026100159, 0.011887229047715664, -0.07825742661952972, 0.013673610053956509, -0.06416005641222, -0.02780005894601345, -0.035370536148548126, 0.038853567093610764, -0.019899696111679077, 0.05574832111597061, -0.01288865227252245, 0.042044609785079956],
+ "VPADDQrr":[-0.06308553367853165, -0.015706144273281097, -0.03434503450989723, 0.08767902851104736, -0.005240282975137234, 0.010747170075774193, -0.012380450963973999, 0.0481552928686142, 0.03048558533191681, 0.043962910771369934, 0.016670027747750282, 0.039522554725408554, 0.05250532925128937, 0.042821433395147324, 0.01067107543349266, 0.040622543543577194, 0.05465507134795189, 0.026415236294269562, 0.003154826583340764, -0.007178747095167637, -0.08862018585205078, 0.07475438714027405, 0.10662053525447845, 0.0438208132982254, 0.03529226779937744, -0.061932697892189026, 0.024625230580568314, -0.093700110912323, -0.013480144552886486, -0.017164917662739754, -0.06333647668361664, 0.035913433879613876, 0.05621558800339699, -0.006208136212080717, 0.04407062754034996, 0.04736427590250969, -0.009899343363940716, -0.049916353076696396, -0.04704419896006584, -0.07088314741849899, -0.05696908012032509, 0.09611018002033234, -0.010561642237007618, -0.054082900285720825, -0.023911532014608383, -0.044952794909477234, 0.027718447148799896, 0.04819103702902794, -0.037642303854227066, 0.04638119786977768, 0.04828781634569168, 0.02347242273390293, 0.048188529908657074, -0.06328921765089035, -0.030635032802820206, -0.005798266269266605, -0.015304859727621078, 0.01822337880730629, -0.08886881172657013, 0.008573981933295727, 0.04141905903816223, -0.04963470995426178, 0.029868483543395996, -0.06835722178220749, -0.013242923654615879, 0.06978929787874222, -0.026523880660533905, 0.09216070175170898, -0.020191440358757973, 0.10105375200510025, -0.03596336767077446, 0.027923690155148506, -0.06619108468294144, 0.07637403160333633, 0.0399261973798275, 0.043978530913591385, -0.005435197614133358, 0.06311865150928497, 0.01033017411828041, 0.06582049280405045, 0.08487717062234879, 0.012460146099328995, 0.0014065391151234508, 0.05496571585536003, 0.033305175602436066, -0.02108161896467209, -0.017832741141319275, -0.03497181460261345, 0.022598976269364357, 0.04267261177301407, -0.027669792994856834, -0.021471699699759483, -0.0697735846042633, 0.09363078325986862, -0.05492716282606125, 0.006933202967047691, -0.05329278111457825, -0.06330878287553787, 0.03187219053506851, 0.0049719722010195255],
+ "VPADDWYrm":[0.07171996682882309, -0.048066072165966034, 0.03372516110539436, 0.014257190749049187, -0.06734051555395126, 0.007397576235234737, -0.005965207703411579, -0.09572680294513702, -0.04939151555299759, -0.04200233891606331, 0.1078590378165245, -0.05085833743214607, 0.023048417642712593, -0.07477278262376785, -0.09510278701782227, 0.034136805683374405, -0.004011764656752348, 0.029887784272432327, 0.051976609975099564, -0.03182096406817436, -0.05352874845266342, 0.042536672204732895, 0.09501548111438751, -0.11245287954807281, -0.025315143167972565, 0.04884643107652664, -0.07461699098348618, 0.05671155825257301, -0.006603743880987167, 0.03132513910531998, -0.011194937862455845, 0.04286592826247215, -0.05938515067100525, 0.06324915587902069, 0.06150391697883606, 0.04900147393345833, 0.02716575562953949, -0.10654662549495697, 0.06914080679416656, -0.005581630393862724, 0.013140718452632427, -0.026911843568086624, -0.03542875126004219, 0.018253907561302185, 0.07919918745756149, 0.029787030071020126, -0.07697799801826477, 0.000886256922967732, 0.00975535623729229, 0.028930651023983955, 0.01227368414402008, -0.07061683386564255, 0.026334458962082863, -0.039235323667526245, -0.07747948169708252, 0.09088071435689926, -0.05957037955522537, -0.001465422916226089, 0.012944458052515984, 0.07347264140844345, 0.08949010074138641, 0.02080722525715828, -0.015314197167754173, 0.044521987438201904, -0.03518350049853325, 0.025329072028398514, -0.11465416848659515, -0.01926763541996479, -0.05482843145728111, 0.05746983736753464, -0.09018737822771072, -0.07607874274253845, 0.0016251120250672102, -0.06300722807645798, 0.07370230555534363, -0.03654191642999649, -0.03715946525335312, 0.027960849925875664, -0.004138221498578787, 0.09768186509609222, -0.013480176217854023, 0.10464634746313095, -0.02369554340839386, -0.05725841224193573, 0.0411861352622509, 0.023540062829852104, 0.04888400062918663, 0.06830713152885437, -0.01190599799156189, 0.0333804152905941, 0.04530985280871391, -0.028351321816444397, -0.007169755641371012, 0.10169912129640579, -0.08768191933631897, 0.037628915160894394, 0.07543352991342545, 0.08141061663627625, -0.08181045204401016, 0.10138300061225891],
+ "VPADDWYrr":[-0.027600614354014397, 0.08211508393287659, 0.022373516112565994, 0.015324464067816734, 0.07361899316310883, -0.08687271922826767, 0.017297284677624702, -0.04006190970540047, 0.00039901499985717237, 0.026755524799227715, 0.0032140936236828566, -0.054046642035245895, -0.03463507816195488, 0.024349313229322433, 0.0608169250190258, 0.0820046216249466, -0.003062287112697959, -0.08316416293382645, 0.09942401200532913, 0.037870924919843674, 0.00419042631983757, -0.00904450286179781, 0.06540440768003464, 0.058169227093458176, 0.031824756413698196, 0.014348002150654793, 0.005960649345070124, 0.049289483577013016, -0.027889929711818695, -0.09181351959705353, 0.020461296662688255, -0.007439868990331888, -0.049394641071558, 0.042868245393037796, 0.07222389429807663, 0.015678448602557182, 0.029612524434924126, -0.014351742342114449, -0.03791658952832222, 0.05548457056283951, -0.011852312833070755, -0.03970017284154892, 0.09886522591114044, -0.08368968218564987, -0.06757772713899612, -0.1054173931479454, 0.0630536824464798, 0.0236972589045763, 0.04509780555963516, -0.008633526973426342, 0.08722569793462753, -0.04668256267905235, 0.014601550064980984, 0.048802368342876434, 0.07682988792657852, -0.0017158088739961386, -0.020463908091187477, -0.013305933214724064, -0.036988575011491776, -0.03901028633117676, -0.04372464492917061, 0.08143823593854904, -0.11051546037197113, -0.020635191351175308, -0.10333864390850067, -0.10764097422361374, -0.04849774017930031, 0.08476008474826813, -0.007083449512720108, 0.029775651171803474, 0.011774255894124508, 0.020058074966073036, 0.07090386003255844, 0.01870683766901493, 0.06582777947187424, 0.042933523654937744, -0.030884047970175743, -0.07766297459602356, -0.08901477605104446, 0.05292334407567978, -0.05661617964506149, -0.05552564933896065, -0.06578636914491653, 0.01955438032746315, 0.06381689012050629, -0.0014979111729189754, 0.05411325767636299, -0.0518525205552578, 0.008338379673659801, 0.0881996601819992, 0.03291972726583481, -0.04245234653353691, 0.06201925128698349, 0.058236971497535706, 0.016302548348903656, 0.08498072624206543, -0.0028162042144685984, 0.001061765244230628, 0.03244498372077942, 0.016495702788233757],
+ "VPADDWrr":[-0.06873020529747009, -0.01856696605682373, -0.025491025298833847, -0.06508485972881317, 0.0609499029815197, 0.045685578137636185, 0.006561745423823595, 0.014732477255165577, 0.04075978696346283, 0.036553580313920975, 0.04774749279022217, 0.02861909754574299, -0.009271820075809956, 0.0034106296952813864, 0.011208120733499527, 0.04168245568871498, 0.030561568215489388, 0.03833380714058876, 0.0818617194890976, -0.016386153176426888, 0.0067800842225551605, 0.03103986568748951, 0.0039011433254927397, -0.023137841373682022, -0.09990736097097397, 0.030124597251415253, 0.004788275808095932, -0.06713785231113434, 0.05431196838617325, -0.002640846883878112, -0.008084348402917385, -0.06155107170343399, -0.0448194183409214, -0.035068329423666, -0.03281906247138977, -0.045462608337402344, 0.06199641153216362, -0.0853082537651062, 0.06123524159193039, 0.04540048539638519, 0.008406194858253002, 0.09295175224542618, -0.00897994264960289, 0.055230069905519485, -0.07168112695217133, 0.018861887976527214, -0.018945785239338875, 0.006131356116384268, -0.06222563609480858, 0.102088563144207, 0.04413161054253578, 0.07584566622972488, -0.019738178700208664, 0.09455563127994537, -0.10293380916118622, -0.0766102746129036, 0.03294926881790161, 0.02026493288576603, 0.023006083443760872, -0.04880611598491669, -0.07617954909801483, 0.07085233926773071, -0.03455423563718796, -0.021351516246795654, 0.015926465392112732, -0.04728804901242256, 0.05473486706614494, -0.05231628194451332, 0.05410375818610191, 0.027971873059868813, -0.024950625374913216, 0.08039622008800507, 0.04290296882390976, 0.005779053550213575, 0.07970096915960312, -0.02969568781554699, 0.021358590573072433, -0.026989193633198738, -0.08681254833936691, -0.002293620491400361, 0.024581873789429665, 0.0413668118417263, -0.07153437286615372, 0.07539805769920349, -0.0687476173043251, -0.058932192623615265, 0.08149798214435577, -0.03364681452512741, -0.001827454543672502, 0.04665552079677582, 0.04652406647801399, 0.01319696381688118, 0.04055928811430931, -0.03602750971913338, -0.04401019960641861, 0.05942327156662941, 0.06991047412157059, 0.04169802367687225, 0.030954720452427864, -0.005867635365575552],
+ "VPALIGNRYrri":[0.06967677175998688, 0.008584907278418541, -0.015108160674571991, -0.06787516921758652, -0.03537612408399582, -0.0749761238694191, -0.04222828894853592, -0.004002509638667107, 0.0245868731290102, 0.0344754122197628, 0.023151833564043045, 0.01623465120792389, 0.030689232051372528, -0.007215648423880339, 0.097975954413414, 0.0136969443410635, 0.08500980585813522, -0.05034196749329567, -0.033516306430101395, 0.000695957918651402, -0.0636720284819603, 0.025727150961756706, 0.030967552214860916, 0.01603630930185318, 0.051592711359262466, 0.061111629009246826, -0.019086893647909164, -0.05239086598157883, -0.022587571293115616, 0.09746191650629044, 0.025648264214396477, 0.07122914493083954, -0.02100604586303234, -0.04597416892647743, -0.029615657404065132, 0.010674066841602325, 0.05558174103498459, 0.020093701779842377, 0.06976548582315445, 0.06800364702939987, -0.01822930946946144, 0.034165333956480026, -0.10401812940835953, -0.012223453260958195, -0.07768148183822632, -0.050822511315345764, 0.07130899280309677, -0.011671949177980423, -0.0509270541369915, -0.06555399298667908, -0.07660502940416336, 0.062337443232536316, -0.029617615044116974, -0.006634380668401718, 0.061024993658065796, -0.02396351657807827, 0.038284432142972946, 0.07910152524709702, 0.03206590563058853, -0.005782183725386858, 0.031794533133506775, -0.057616062462329865, 0.021748347207903862, -0.03897653892636299, -0.01285630464553833, 0.07799747586250305, -0.10169744491577148, 0.04785691201686859, -0.00951313879340887, -0.0044345976784825325, 0.015258694998919964, 0.060291189700365067, 0.054626405239105225, -0.07816533744335175, 0.05546514689922333, 0.06351540982723236, 0.0812467411160469, 0.009539686143398285, 0.05980898067355156, 0.04111971706151962, -0.005069413688033819, -0.11052859574556351, -0.009771304205060005, 0.09751173853874207, -0.001057655201293528, -0.007922154851257801, 0.04142017662525177, -0.07589781284332275, -0.008670136332511902, -0.05388513579964638, -0.07674606144428253, 0.021202141419053078, -0.04910403490066528, -0.003798945341259241, 0.09376522898674011, 0.005077871959656477, 0.010111654177308083, -0.0958101898431778, -0.017157413065433502, -0.04747823625802994],
+ "VPALIGNRrri":[-0.009860650636255741, -0.07142972946166992, -0.01312651764601469, 0.036642320454120636, -0.005104556679725647, -0.08289399743080139, -0.018212033435702324, -0.053024712949991226, -0.02257307432591915, -0.027659697458148003, 0.05219344049692154, 0.07498115301132202, -0.021995684131979942, 0.04763180762529373, -0.05968944728374481, -0.011045983992516994, 0.042411740869283676, -0.02578837051987648, 0.05572491139173508, 0.07202037423849106, -0.05511647090315819, 0.026478955522179604, -0.10838644951581955, -0.024773236364126205, -0.0798853263258934, 0.021293124184012413, 0.04794071614742279, 0.005224780645221472, -0.033794328570365906, 0.05446645990014076, -0.046457089483737946, -0.01823946088552475, -0.06015545874834061, 0.11279038339853287, 0.06358183175325394, 0.0668909028172493, 0.040057335048913956, 0.0506335012614727, -0.050197601318359375, -0.036016158759593964, 0.07522463798522949, 0.06838778406381607, -0.10642661899328232, -0.0029738983139395714, -0.0463896282017231, -0.08797791600227356, 0.09242875128984451, -0.05758040025830269, -0.07019354403018951, -0.06257674098014832, 0.009021800011396408, -0.031090574339032173, -0.08011260628700256, 0.11014237999916077, -0.032755497843027115, -0.018499702215194702, 0.03281981498003006, -0.024320391938090324, 0.07394492626190186, 0.09723031520843506, 0.029774369671940804, 0.07228437066078186, -0.06020504981279373, 0.009658691473305225, 0.03715343400835991, -0.03697589784860611, 0.05791521817445755, -0.09206712245941162, -0.09242535382509232, 0.0284640584141016, 0.016437890008091927, 0.04857762157917023, 0.0441020205616951, -0.07530837506055832, 0.06201634928584099, 0.06832562386989594, -0.03966569900512695, 0.02777407132089138, -0.04234667122364044, -0.025913603603839874, -0.02807893045246601, -0.03601972386240959, -0.1030738428235054, -0.04503203555941582, -0.0640067458152771, 0.008728145621716976, -0.04069514572620392, -0.027931204065680504, -0.008727297186851501, 0.025958139449357986, -0.03034106455743313, 0.05380747839808464, -0.014235408045351505, 0.03254604712128639, -0.023881375789642334, -0.01118418201804161, 0.02081829123198986, -0.06598407030105591, -0.039469607174396515, -0.032696839421987534],
+ "VPANDNYrr":[0.018325859680771828, 0.029186058789491653, -0.0461498461663723, 0.0649385154247284, -0.0710056945681572, -0.08308353275060654, -0.0036242464557290077, -0.035576604306697845, -0.06839717924594879, 0.017254222184419632, -0.028661543503403664, -0.01618974842131138, -0.05283845588564873, 0.00440801028162241, -0.019013533368706703, 0.07670491933822632, 0.025954874232411385, -0.04647519811987877, -0.029942141845822334, -0.027533356100320816, -0.046930842101573944, 0.019306162372231483, 0.08048878610134125, 0.06084917485713959, -0.060187552124261856, 0.03712666407227516, -0.02973121963441372, 0.011641597375273705, 0.008868121542036533, -0.013552984222769737, 0.017977777868509293, -0.0237411055713892, -0.05166476219892502, 0.05260719358921051, 0.055878542363643646, -0.06469862163066864, 0.03663723170757294, -0.04601219296455383, -0.09695647656917572, -0.033564724028110504, 0.0007376946159638464, 0.026679839938879013, 0.000673953618388623, 0.03225501626729965, -0.06136554852128029, -0.006030058488249779, 0.022330543026328087, -0.04288466274738312, 0.09324081242084503, 0.0573979988694191, -0.03639548271894455, -0.03787601366639137, 0.01652507670223713, -0.09811394661664963, -0.003964139614254236, -0.03673332929611206, 0.0286270584911108, -0.08772104978561401, 0.047960150986909866, 0.030599815770983696, 0.04644058644771576, 0.01049345638602972, 0.05206006020307541, -0.025189867243170738, -0.05550384894013405, -0.042723748832941055, 0.06743864715099335, 0.012976895086467266, -0.002194387838244438, -0.03677486628293991, -0.022716594859957695, -0.024410203099250793, 0.05301755294203758, 0.028465455397963524, 0.05105869472026825, -0.07472856342792511, -0.009936627000570297, -0.0346868634223938, -0.0777190625667572, -0.113296277821064, -0.03840081766247749, -0.036112841218709946, 0.04865861311554909, 0.013213292695581913, -0.01014478038996458, -0.02272748202085495, 0.013148624449968338, -0.09600255638360977, 0.02350628934800625, -0.04156484082341194, -0.0860801413655281, 0.0475262813270092, 0.006953742355108261, 0.06704963743686676, 0.09294530004262924, 0.024727433919906616, -0.022393008694052696, -0.09999223798513412, 0.037838999181985855, -0.0011880568927153945],
+ "VPANDNrm":[0.010009699501097202, -0.0027152325492352247, 0.015481662005186081, -0.008245930075645447, -0.018561486154794693, -0.014256451278924942, -0.0034866330679506063, 0.029632817953824997, 0.08790051192045212, 0.020102253183722496, -0.015917807817459106, 0.050704315304756165, 0.007389429956674576, 0.08056022226810455, 0.01134293433278799, 0.08244157582521439, 0.008424394764006138, -0.03005967102944851, -0.009137053042650223, -0.06419707089662552, -0.06057344377040863, 0.04789276421070099, -0.002380274934694171, -0.047720909118652344, 0.003633763175457716, 0.04122394695878029, 0.010886061936616898, -0.09029130637645721, -0.0022376554552465677, -0.01737620122730732, 0.040018875151872635, -0.014452097937464714, -0.009403600357472897, 0.05914492532610893, -0.0677250549197197, -0.03438450023531914, -0.011003294959664345, 0.01089776773005724, -0.007166239898651838, -0.05925263464450836, -0.025467662140727043, 0.05552519112825394, -0.06015431880950928, -0.08290722221136093, -0.04930610954761505, -0.022737275809049606, -0.03718145191669464, -0.0479344017803669, 0.04546080529689789, 0.030657408758997917, -0.08536584675312042, -0.005210281349718571, 0.002137090777978301, -0.02463727630674839, -0.011822173371911049, -0.02712911367416382, -0.032738395035266876, 0.002611690666526556, -0.009461533278226852, -0.03336453437805176, -0.027962123975157738, 0.05782049894332886, -0.06839186698198318, -0.03798096254467964, -0.07232461124658585, -0.0297903623431921, 0.010303669609129429, 0.005255537573248148, -0.06396546214818954, -0.05599904805421829, 0.012968333438038826, 0.0007874873699620366, -0.04348954185843468, 0.041984472423791885, 0.05116565153002739, -0.015350239351391792, 0.046389225870370865, 0.04524022713303566, 0.031259287148714066, -0.044997088611125946, -0.1053251400589943, -0.07496403902769089, -0.035881951451301575, -0.015531536191701889, -0.045990195125341415, 0.07081026583909988, 0.023749535903334618, -0.042814578860998154, -0.0028627074789255857, 0.03914940357208252, -0.02288752794265747, 0.010917643085122108, 0.04420353099703789, -0.043867070227861404, -0.029776116833090782, 0.04420419782400131, -0.02287382446229458, -0.0034080236218869686, 0.0022842229809612036, -0.007582193240523338],
+ "VPANDNrr":[0.01966441236436367, -0.058901842683553696, 0.027733981609344482, -0.07061527669429779, 0.08715211600065231, -0.049156785011291504, 0.007962859235703945, -0.041123975068330765, -0.022857746109366417, 0.12627798318862915, 0.006661683786660433, -0.008328603580594063, 0.053494296967983246, -0.08340387791395187, 0.06530585885047913, -0.08729878813028336, -0.05904614180326462, 0.010920987464487553, -0.03600394353270531, 0.04570439085364342, 0.01836901530623436, -0.028950415551662445, -0.057506073266267776, 0.04940177500247955, 0.04297908768057823, 0.05387575924396515, -0.058561962097883224, 0.07488738745450974, 0.07371862977743149, 0.04897462576627731, 0.05599946901202202, -0.039600472897291183, 0.04359898343682289, 0.027070820331573486, 0.04566574841737747, -0.004729034379124641, -0.011581160128116608, 0.0009309164015576243, -0.08702405542135239, 0.025259507820010185, 0.046225666999816895, 0.050781186670064926, -0.00934622809290886, 0.06655751168727875, -0.013145290315151215, 0.054746516048908234, -0.11737025529146194, -0.08981025964021683, -0.009496185928583145, -0.06623170524835587, -0.047186046838760376, 0.004002009984105825, -0.009557835757732391, -0.06293310225009918, -0.03572404384613037, 0.021058281883597374, -0.03696710616350174, -0.11255907267332077, -0.014597064815461636, 0.036794230341911316, -0.022095073014497757, 0.0527886338531971, 0.06010954827070236, 0.07802847772836685, -0.017331132665276527, -0.012793406844139099, -0.006014377344399691, -0.04616402089595795, -0.024827303364872932, 0.07694795727729797, -0.02140626683831215, -0.007748677860945463, -0.055869776755571365, 0.027306916192173958, -0.013565213419497013, -0.0157739520072937, -0.014245713129639626, 0.01767725497484207, 0.005840915720909834, 0.08041974157094955, 0.03127420321106911, -0.04085395485162735, 0.03288974612951279, -0.07316019386053085, -0.027831049636006355, 0.08325384557247162, 0.051753830164670944, 0.048921335488557816, -0.005360716953873634, 0.012525814585387707, 0.03389639034867287, 0.016511423513293266, 0.009498964995145798, 0.04882027581334114, -0.004596618004143238, -0.0029467579443007708, 0.07738035172224045, 0.04482067748904228, 0.0006449350621551275, -0.023079223930835724],
+ "VPANDYrm":[0.014911153353750706, -0.04848853871226311, -0.024333151057362556, 0.08763879537582397, 0.0042233834974467754, -0.017300773411989212, -0.037280771881341934, -0.08100634813308716, 0.05722671374678612, 0.04920298606157303, -0.00930948369204998, 0.023379487916827202, -0.005613402463495731, -0.01475525088608265, -0.020226480439305305, -0.03008512407541275, -0.07439468801021576, -0.025137968361377716, -0.045215532183647156, -0.005220226943492889, -0.06026327237486839, 0.05374651402235031, 0.08433963358402252, 0.0315215028822422, -0.026253212243318558, 0.046492401510477066, 0.021002579480409622, -0.023551929742097855, -0.06885059177875519, 0.040783241391181946, -0.06971834599971771, -0.016265420243144035, -0.06021774932742119, 0.01716914400458336, -0.08400332182645798, -0.08668246120214462, 0.05201089382171631, -0.10074160993099213, 0.06251179426908493, -0.09121431410312653, 0.010844463482499123, -0.09421399235725403, -0.001881463103927672, -0.004682696424424648, 0.05764176696538925, -0.04007350280880928, -0.09025339782238007, -0.018558889627456665, -0.043533049523830414, -0.021276192739605904, -0.031461942940950394, -0.015496551990509033, 0.06595716625452042, -0.047818321734666824, -0.020132655277848244, 0.026180019602179527, 0.05023474246263504, -0.0416422002017498, -0.04724837839603424, 0.06447524577379227, -0.04282372072339058, 0.02995493821799755, 0.030724432319402695, -0.034749604761600494, -0.02566959336400032, -0.026754511520266533, 0.03843426704406738, -0.02714589051902294, 0.07692321389913559, -0.008394119329750538, 0.005360530689358711, 0.033842723816633224, 0.01651235669851303, 0.03322618082165718, 0.0027103768661618233, 0.0429655946791172, -0.05099955201148987, -0.021173536777496338, -0.07013017684221268, -0.04446282610297203, 0.004996726289391518, -0.024660665541887283, -0.032820284366607666, 0.03702295571565628, 0.012826010584831238, -0.005964756011962891, 0.059006497263908386, -0.03748639300465584, -0.03466075286269188, 0.0416712649166584, -0.09239193052053452, -0.04171305149793625, 0.001187073183245957, 0.0191059373319149, 0.021528664976358414, 0.01417461782693863, 0.012086296454071999, 0.059170424938201904, -0.02810555323958397, 0.05760424584150314],
+ "VPANDYrr":[0.066914863884449, 0.06308650970458984, 0.026450790464878082, 0.003261841367930174, -0.07421613484621048, -0.03328509256243706, 0.06353902071714401, 0.06466320902109146, -0.05879458412528038, 0.03981244936585426, -0.036683589220047, -0.0029833163134753704, -0.0653051808476448, -0.06956904381513596, -0.03015299141407013, 0.03547528013586998, 0.025733139365911484, -0.0572185218334198, -0.01044201385229826, -0.0019591220188885927, 0.006065784953534603, 0.03523422032594681, 0.030341297388076782, 0.0053770048543810844, 0.060450147837400436, -0.031388889998197556, -0.012553222477436066, 0.07088574022054672, 0.03323722258210182, -0.05808630958199501, 0.054875969886779785, -0.03208450973033905, 0.0663754865527153, -0.0399598553776741, 0.0427541583776474, -0.01603791117668152, 0.048121824860572815, 0.11349034309387207, 0.022615784779191017, 0.05218067765235901, -0.03395768254995346, 0.07163862884044647, 0.10746350139379501, 0.017397524788975716, -0.06390475481748581, -0.009443963877856731, 0.06809378415346146, 0.037194542586803436, -0.050830211490392685, -0.047065794467926025, 0.035318948328495026, -0.042473938316106796, -0.011968523263931274, 0.012890073470771313, -0.05206729471683502, -0.02856495790183544, 0.03622456640005112, -0.029988283291459084, -0.007263747043907642, -0.0010690466733649373, 0.07763040065765381, -0.010564422234892845, 0.02161908708512783, 0.009991981089115143, 0.05930377542972565, 0.04825180768966675, -0.026964616030454636, 0.013469273224473, -0.008437803946435452, -0.010914217680692673, -0.09582556784152985, -0.049176257103681564, -0.05043574050068855, 0.0006415941170416772, -0.005518161691725254, -0.0793062150478363, -0.027637861669063568, -0.03629925474524498, 0.011876951903104782, -0.054171424359083176, 0.07545867562294006, -0.06459206342697144, 0.03717188537120819, -0.027104320004582405, -0.006822895258665085, -0.04553493484854698, -0.006195825058966875, -0.0878087505698204, -0.0007152043981477618, -0.044732652604579926, 0.00412119971588254, -0.009096095338463783, -0.017013248056173325, -0.06729647517204285, 0.008713857270777225, -0.00515604205429554, 0.08998697251081467, -0.02588975615799427, -0.0016360018635168672, -0.0015775926876813173],
+ "VPANDrm":[-0.017775829881429672, 0.0573093481361866, -0.004148222506046295, -0.03998659551143646, 0.055799584835767746, 0.02319491282105446, -0.058877188712358475, 0.048989925533533096, -0.02103535830974579, -0.045692235231399536, 0.09041094779968262, 0.01237383484840393, -0.05707819014787674, 0.031233051791787148, 0.049963295459747314, -0.07534413039684296, 0.09182017296552658, 0.06324164569377899, -0.053306374698877335, -0.10498378425836563, -0.04195605218410492, -0.10864612460136414, -0.00033552764216437936, 0.046828024089336395, 0.033323559910058975, -0.010594094172120094, 0.0884992852807045, -0.025054993107914925, 0.06032205745577812, 0.0030304868705570698, 0.0013343157479539514, -0.04826688393950462, 0.06177011877298355, -0.01393677107989788, -0.02913082018494606, -0.0169760063290596, -0.03963986784219742, -0.004245629068464041, 0.016659418120980263, 0.04287544637918472, 0.025080585852265358, -0.088398277759552, -0.10847443342208862, -0.005110390949994326, -0.012243930250406265, -0.100448377430439, 0.011191765777766705, -0.07563502341508865, -0.030405215919017792, -0.008963164873421192, 0.01329498365521431, -0.06919904798269272, -0.02100503258407116, -0.03121352754533291, 0.016819052398204803, -0.006355227902531624, 0.021852342411875725, -0.11803260445594788, 0.06762157380580902, 0.01896916888654232, -0.01183114480227232, -0.03284575790166855, 0.091903455555439, 0.04823052138090134, 0.0022129733115434647, 0.011408097110688686, 0.03887994587421417, 0.009679745882749557, 0.04933910071849823, -0.04032854363322258, -0.06905697286128998, -0.12609456479549408, -0.062150053679943085, -0.054313745349645615, -0.05056747794151306, -0.10057605803012848, -0.030217966064810753, -0.06657159328460693, -0.10042577236890793, 0.043084364384412766, 0.05937022343277931, 0.02623865194618702, -0.036514684557914734, 0.00618376862257719, 0.023924462497234344, -0.09800421446561813, -0.01594848930835724, -0.08103925734758377, 0.06245855242013931, 0.014856395311653614, 0.04062986373901367, -0.07000473141670227, 0.06798206269741058, -0.010501144453883171, -0.03263520449399948, -0.037719253450632095, 0.0771014466881752, 0.06431640684604645, 0.04501175880432129, -0.06650587916374207],
+ "VPANDrr":[-0.03747197613120079, 0.07450021058320999, 0.029494650661945343, -0.08404074609279633, -0.005766022019088268, 0.05397474765777588, -0.0034076133742928505, -0.14556846022605896, -0.016194041818380356, 0.030094239860773087, -0.056363724172115326, -0.005086467135697603, -0.005921102594584227, 0.02598104067146778, -0.017532439902424812, 0.011689072474837303, -0.02030344121158123, -0.017977265641093254, -0.017370397225022316, -0.006235114298760891, -0.04563896730542183, -0.030442340299487114, -0.07630231976509094, 0.048928745090961456, 0.07540670037269592, -0.04758954048156738, 0.05790845304727554, 0.07637929916381836, 0.026953499764204025, 0.01865980587899685, 0.014765006490051746, -0.016378140076994896, -0.03379405289888382, 0.00018369023746345192, 0.01585962623357773, -0.046486739069223404, -0.02561618573963642, -0.06749267131090164, -0.050907865166664124, -0.02286609262228012, 0.08758009970188141, 0.10477731376886368, -0.01993381232023239, -0.07694350928068161, -0.010929624550044537, -0.00893433392047882, -0.031800393015146255, 0.022233903408050537, 0.09491490572690964, -0.023914841935038567, -0.05152933672070503, -0.023172564804553986, 0.06514295190572739, -0.06440094858407974, 0.11687790602445602, -0.0822896808385849, 0.03151422739028931, -0.08981359004974365, -0.02066859044134617, -0.02543584443628788, -0.013089812360703945, 0.024695176631212234, -0.041361432522535324, 0.052559223026037216, -0.0444156751036644, 0.023021770641207695, 0.02992626652121544, 0.04828980937600136, 0.0012403185246512294, 0.07002900540828705, 0.04729972034692764, 0.11641564220190048, -0.00402655266225338, -0.06185954809188843, -0.004667290486395359, -0.02745802141726017, -0.01137731783092022, -0.07587267458438873, -0.003976328298449516, 0.08512495458126068, 0.08381811529397964, -0.00769403949379921, -0.027911538258194923, 0.022174084559082985, 0.007040718570351601, 0.022061623632907867, -0.08641358464956284, 0.06916855275630951, 0.036568112671375275, -0.08297847956418991, -0.0034829953219741583, -0.06138472259044647, 0.005123774521052837, 0.014016957022249699, 0.08158214390277863, -0.0732690840959549, 0.09038115292787552, 0.05234046280384064, -0.05726414546370506, 0.01624053716659546],
+ "VPAVGBrr":[0.03631692752242088, -0.03491557762026787, -0.05400319769978523, 0.07195490598678589, 0.04477047920227051, 0.10080140084028244, -0.008106810040771961, 0.05238272249698639, 0.00036619071033783257, 0.10290537029504776, -0.058664627373218536, 0.03710559010505676, 0.020109035074710846, -0.01656787097454071, 0.03785501420497894, -0.017318274825811386, -0.01912934146821499, -0.07107716053724289, -0.025963447988033295, -0.0008661559550091624, 0.09598208218812943, 0.0483112707734108, 0.04717442765831947, -0.041183967143297195, -0.0071099684573709965, 0.028648046776652336, -0.0073464410379529, 0.003275579307228327, 0.02876574918627739, -0.05655018985271454, -0.05278177931904793, 0.0013802892062813044, 0.007152880541980267, 0.10302922874689102, -0.02162988670170307, 0.04181059077382088, -0.05011464282870293, 0.006352216005325317, -0.041646622121334076, 0.05415194854140282, -0.035207897424697876, -0.016428673639893532, -0.006035067606717348, 0.016550421714782715, -0.03302590921521187, 0.0031581956427544355, 0.0421118438243866, -0.036962926387786865, 0.0016620373353362083, -0.0014058940578252077, -0.05504971742630005, 0.01526777446269989, -0.04820632562041283, 0.0006372040370479226, -0.08368798345327377, 0.039943598210811615, 0.035464849323034286, -0.009169766679406166, 0.09229415655136108, -0.025775283575057983, -0.046984221786260605, -0.08196376264095306, -0.013320491649210453, -0.0848611369729042, -0.02846341021358967, 0.007784795016050339, 0.016691191121935844, -0.07395094633102417, -0.018414178863167763, 0.015343660488724709, 0.023029085248708725, -0.014037074521183968, -0.05731558799743652, 0.029754038900136948, 0.01781788095831871, 0.03146094083786011, 0.10340726375579834, -0.003578383242711425, 0.01901431195437908, 0.024763429537415504, -0.005089899525046349, 0.011901807971298695, 0.01348602119833231, 0.02302694506943226, 0.027885884046554565, 0.0634782686829567, -0.05123617872595787, 0.07111995667219162, 0.0021892704535275698, -0.10229272395372391, 0.018898503854870796, 0.011004479601979256, -0.04361211881041527, -0.007230524905025959, 0.0016446926165372133, 0.09068592637777328, -0.021576644852757454, 0.06972507387399673, -0.04082842171192169, 0.00640961155295372],
+ "VPBLENDDYrmi":[0.031350746750831604, -0.10664559155702591, -0.015052391216158867, 0.056663576513528824, -0.04819357395172119, -0.005398245994001627, -0.003373584244400263, 0.08800707012414932, -0.039318833500146866, -0.03408809006214142, -0.061434756964445114, -0.008774075657129288, 0.00795279536396265, 0.07229514420032501, 0.010472466237843037, 0.10628435015678406, -0.040484167635440826, 0.0007183772977441549, 0.043666940182447433, 0.06795024871826172, 0.08233588933944702, 0.07103285193443298, -0.09949446469545364, 0.08778026700019836, 0.007564963307231665, 0.05990546941757202, 0.03801637515425682, -0.00030411541229113936, -0.00820037629455328, 0.0407760925590992, -0.06816796958446503, -0.011401386931538582, -0.0065930914133787155, -0.01971442997455597, 0.003927264362573624, 0.013058802112936974, 0.02281547337770462, -0.0427614264190197, 0.08016673475503922, 0.00936532486230135, 0.03544425964355469, 0.013666773214936256, -0.04838854447007179, -0.10144370049238205, 0.05109843984246254, 0.003736410290002823, 0.03442351520061493, 0.03368602693080902, -0.03201040253043175, 0.0051977201364934444, 0.08835630863904953, 0.024714495986700058, -0.05094968527555466, -0.07371851801872253, -0.04216389358043671, -0.023367853835225105, -0.034439388662576675, 0.07352699339389801, -0.01506677083671093, -0.054264698177576065, 0.010389826260507107, 0.03804384171962738, -0.0005573768867179751, 0.051810864359140396, -0.042134106159210205, -0.014782612212002277, 0.000576685240957886, -0.02532823383808136, 0.05508246272802353, -0.009132478386163712, 0.032229356467723846, 0.021555835381150246, 0.014972666278481483, 0.05853520333766937, 0.07069328427314758, 0.00019753394008148462, -0.04265759885311127, 0.025162238627672195, 0.03748954087495804, -0.09202463924884796, -0.07452259212732315, -0.037967607378959656, 0.06913519650697708, 0.04110821709036827, 0.031604111194610596, 0.009387973695993423, 0.00873495638370514, -0.029380157589912415, -0.009542879648506641, -0.005628590472042561, -0.05764809995889664, -0.0034735656809061766, -0.025404516607522964, 0.10295279324054718, -0.01569455862045288, 0.0428575836122036, 0.03646700456738472, 0.052227627485990524, -0.06943768262863159, 0.013476389460265636],
+ "VPBLENDDYrri":[-0.06402859091758728, -0.0141838900744915, -0.09682168066501617, -0.005158883053809404, 0.06660182774066925, 0.10086428374052048, 0.05773862451314926, 0.02408040314912796, 0.039695870131254196, 0.008349188603460789, 0.08599375188350677, 0.14554797112941742, -0.0667361244559288, -0.017332013696432114, -0.03819018974900246, 0.03671751543879509, 0.05793746933341026, -0.002389234723523259, 0.04216804727911949, 0.07542521506547928, 0.047125302255153656, -0.05201259255409241, -0.02010243386030197, 0.0058949654921889305, 0.07967807352542877, -0.09979948401451111, 0.07310783118009567, -0.04547489807009697, 0.025813177227973938, -0.00410205265507102, -0.10769205540418625, -0.01880360208451748, 0.04885797202587128, -0.0029997120145708323, 0.08858752995729446, -0.041061218827962875, 0.07308805733919144, -0.07595432549715042, 0.024992387741804123, -0.016552090644836426, -0.00611075246706605, 0.01708676852285862, -0.05824333801865578, -0.037285465747117996, 0.061644118279218674, -0.017024539411067963, 0.10083884000778198, 0.008827204816043377, 0.05779941380023956, -0.05175026133656502, 0.020317433401942253, -0.01861845701932907, -0.019349224865436554, -0.06810693442821503, -0.0011828666320070624, -0.03167683258652687, -0.06770865619182587, -0.06556842476129532, 0.010772202163934708, 0.05676625296473503, 0.025171538814902306, -0.023977600038051605, 0.06441020965576172, 0.1169142946600914, -0.041270624846220016, 0.037475183606147766, 0.043973859399557114, -0.029673168435692787, 0.02922438643872738, 0.07863713800907135, 0.007013872731477022, 0.024869466200470924, -0.05614985525608063, -0.03127225860953331, -0.11638624966144562, -0.01042079459875822, -0.0769285336136818, 0.02134530618786812, -0.0807388499379158, -0.01236618310213089, -0.05945489555597305, -0.03756419196724892, 0.08010604977607727, -0.05200674757361412, -0.00038820516783744097, -0.11061026901006699, -0.036265648901462555, 0.0020867709536105394, 0.045341458171606064, -0.04185333102941513, -0.020062999799847603, 0.10023850947618484, 0.08900367468595505, 0.006574093829840422, 0.06026165187358856, -0.013048050925135612, -0.017812879756093025, -0.025144392624497414, 0.029939861968159676, 0.05897083878517151],
+ "VPBLENDDrmi":[0.06586368381977081, 0.07217096537351608, 0.03171725198626518, -0.02321016602218151, -0.03983333334326744, -0.06499224156141281, -0.019185863435268402, 0.04705892130732536, 0.0014672123361378908, -0.008235236629843712, -0.003597942879423499, 0.01000555232167244, 0.01395171694457531, -0.03226591274142265, -0.0038791182450950146, -0.06844085454940796, -0.013718030415475368, -0.030265899375081062, -0.07652731239795685, 0.031436167657375336, -0.0028968604747205973, 0.03663858026266098, -0.024834387004375458, -0.03200417011976242, -0.05992439389228821, -0.06002402678132057, 0.01643713191151619, 0.0631408840417862, 0.019660161808133125, 0.05249049887061119, -0.08207841217517853, -0.0376867800951004, 0.08507253974676132, -0.07528391480445862, -0.021189458668231964, 0.02346232160925865, -0.047525517642498016, -0.09335903078317642, 0.003081928240135312, 0.010324402712285519, 0.03957569971680641, -0.04635710269212723, -0.00647467328235507, -0.09561313688755035, 0.006139879114925861, 0.01448904164135456, 0.0662984549999237, -0.01893003284931183, -0.02795702964067459, 0.056872569024562836, 0.03382090851664543, -0.03284600004553795, 0.021808089688420296, 0.021430810913443565, -0.019530072808265686, 0.036534134298563004, -0.030030207708477974, -0.02879282459616661, 0.046728502959012985, -0.030693745240569115, 0.022390710189938545, 0.06920487433671951, -0.03403930366039276, 0.03436331823468208, -0.01912052184343338, 0.0687420591711998, -0.06300296634435654, 0.016159776598215103, -0.052745137363672256, 0.010047831572592258, -0.04012759029865265, -0.031934987753629684, 0.051138829439878464, 0.020728345960378647, -0.01683734357357025, -0.038029152899980545, -0.0046723270788788795, -0.044629618525505066, 0.059890974313020706, 0.027485370635986328, -0.02855035662651062, 0.011284018866717815, -0.05295620113611221, 0.08222933858633041, -0.020102987065911293, 0.09811705350875854, -0.07041524350643158, -0.023101212456822395, 0.0019193750340491533, 0.05361994728446007, -0.018448350951075554, 0.09117264300584793, -0.0711301937699318, 0.005826139822602272, -0.06982646882534027, -0.03978898748755455, 0.06908240169286728, -0.02275630086660385, 0.06072482094168663, 0.0149723244830966],
+ "VPBLENDDrri":[0.01558615267276764, 0.013470442034304142, 0.09376263618469238, 0.0003732315090019256, 0.02812678925693035, 0.05480330437421799, 0.05543377995491028, 0.0025384442415088415, -0.07684427499771118, 0.07635816931724548, 0.07377339154481888, 0.0038112096954137087, -0.02790168486535549, -0.04286294803023338, 0.04478845372796059, -0.05198482424020767, 0.012474574148654938, -0.07837717235088348, 0.011907176114618778, 0.05937540531158447, -0.02522956393659115, 0.018529292196035385, -0.017371200025081635, 0.014049813151359558, -0.054062481969594955, -0.00572638213634491, 0.0010560656664893031, -0.04929935187101364, 0.010249863378703594, 0.026071853935718536, -0.04269183427095413, -0.04463544115424156, 0.029913239181041718, -0.018367478623986244, 0.06664645671844482, -0.07239354401826859, 0.004314098507165909, -0.10758448392152786, -0.053972937166690826, 0.07615173608064651, 0.02152734249830246, -0.03349810466170311, 0.018645208328962326, -0.06929587572813034, -0.04300811514258385, 0.04076215624809265, 0.052219830453395844, -0.050898477435112, -0.00433047441765666, 0.03377600386738777, -0.0308116115629673, 0.06972290575504303, 0.0575655959546566, -0.059156548231840134, -0.035036277025938034, -0.0009642821387387812, -0.017392823472619057, 0.024384930729866028, -0.02303735911846161, -0.04463835433125496, 0.005485482048243284, -0.07107676565647125, 0.04654759541153908, 0.06065899506211281, 0.028843827545642853, -0.026659687981009483, 0.013709018006920815, 0.009361445903778076, -0.07874583452939987, 0.0001682840083958581, 0.05170600116252899, 0.06565845012664795, 0.06069210544228554, 0.0343196764588356, -0.04746895283460617, 0.038265250623226166, -0.05050952732563019, 0.02508118376135826, -0.042809631675481796, 0.07980512082576752, 0.0063325185328722, -0.051678236573934555, 0.0776483342051506, 0.018790578469634056, -0.0036498820409178734, -0.09335202723741531, -0.05356308072805405, 0.07324682921171188, -0.026596426963806152, -0.052997320890426636, -0.020670732483267784, -0.08310361206531525, 0.04732060432434082, 0.05800197646021843, 0.00018510944209992886, -0.0016328943893313408, 0.11207438260316849, 0.037903569638729095, -0.04300355911254883, -0.03195122629404068],
+ "VPBLENDVBYrm":[-0.04862797632813454, -0.005891394801437855, -0.04331373795866966, 0.066853366792202, 0.006577361840754747, 0.08448801934719086, 0.0024252999573946, 0.05952969193458557, -0.01267869584262371, 0.09086257964372635, 0.011052427813410759, -0.07346851378679276, 0.020767251029610634, -0.04125271365046501, 0.079597108066082, -0.004817519802600145, 0.057982414960861206, -0.09997349232435226, -0.02131684683263302, -0.04174192249774933, 0.0606745108962059, 0.02554323337972164, 0.04263089969754219, -0.07911437749862671, -0.043847259134054184, 0.00017981389828491956, -0.03010738268494606, 0.05238838493824005, -0.10799811780452728, -0.04305044934153557, 0.014504646882414818, -0.06281533092260361, -0.04736269265413284, 0.03501390665769577, -0.06579534709453583, -0.03933710232377052, -0.028165733441710472, -0.054065149277448654, 0.07266272604465485, 0.0007248200126923621, -0.02507416345179081, 0.017184434458613396, -0.005406123120337725, -0.011413740925490856, -0.02502070926129818, 0.011088176630437374, -0.046755678951740265, 0.027129078283905983, -0.02482147142291069, 0.07230591028928757, 0.06823600828647614, -0.04595125466585159, 0.08927147090435028, -0.07400646060705185, 0.01606287620961666, -0.025110488757491112, 0.046251390129327774, -0.06870894134044647, -0.033142492175102234, 0.06061362102627754, 0.01551111601293087, 0.048214081674814224, -0.00037940507172606885, 0.028289170935750008, 0.056504007428884506, 0.007061914075165987, -0.082593634724617, 0.0061982362531125546, 0.03871013596653938, -0.08634443581104279, -0.019721560180187225, 0.07532860338687897, -0.010125638917088509, -0.09681879729032516, 0.06936276704072952, 0.02994944527745247, -0.034846093505620956, 0.09656118601560593, 0.03651745989918709, 0.08192741125822067, -0.0813639760017395, -0.012001275084912777, 0.10260133445262909, -0.03278206288814545, 0.08030160516500473, 0.049891117960214615, 0.03064899891614914, -0.08298137784004211, -0.05394257605075836, -0.021966438740491867, -0.05757087096571922, 0.05729300156235695, 0.025913869962096214, 0.08416953682899475, 0.060715578496456146, -0.0876055359840393, 0.025244491174817085, -0.01680690236389637, 0.0035630229394882917, -0.04766887053847313],
+ "VPBLENDVBYrr":[-0.01440434530377388, 0.061976201832294464, 0.02889081835746765, -0.09485090523958206, 0.013506190851330757, 0.06518968939781189, -0.07368969172239304, 0.007735219784080982, 0.04362029582262039, 0.09563659131526947, 0.012883068062365055, 0.018739750608801842, -0.022006304934620857, 0.04940905421972275, 0.03793415427207947, -0.021404147148132324, 0.026473136618733406, 0.03705117478966713, -0.049610402435064316, -0.05354953557252884, -0.039298128336668015, 0.08681496977806091, -0.005666043143719435, -0.03251883015036583, 0.07388412952423096, -0.04936652258038521, -0.04016757756471634, -0.01645982824265957, 0.03727874159812927, -0.017489127814769745, 0.014293067157268524, 0.015097691677510738, 0.08698613196611404, 0.08771302551031113, 0.025730101391673088, 0.08431041985750198, 0.01420475821942091, 0.0063378456979990005, 0.10736973583698273, -0.042311910539865494, -0.03495507314801216, -0.040297962725162506, -0.016664499416947365, 0.00583843607455492, -0.07296281307935715, -0.029449723660945892, 0.07476675510406494, 0.012908022850751877, 0.05671950429677963, 0.0316154845058918, -0.033644575625658035, 0.009468728676438332, 0.02823026292026043, -0.0131816565990448, -0.10656357556581497, -0.06638234108686447, -0.02710707113146782, -0.04257521405816078, -0.09450992196798325, -0.038177698850631714, -0.052729543298482895, 0.035790346562862396, -0.010545537807047367, -0.09321616590023041, -0.08148375153541565, -0.01201577577739954, -0.09448465704917908, 0.07399756461381912, 0.09800808131694794, -0.0104080680757761, 0.07326696068048477, 0.03269720450043678, -0.06421900540590286, -0.08203694224357605, 0.04244578629732132, 0.002255770843476057, 0.024314139038324356, -0.002555110724642873, -0.008877239190042019, 0.05630893632769585, 0.01243785209953785, 0.06115749850869179, -0.07971514761447906, -0.053631491959095, 0.08321075141429901, -0.06048126518726349, 0.023957932367920876, 0.011699161492288113, -0.01267069298774004, -0.019048407673835754, 0.010209732688963413, 0.08867216855287552, 0.003792684758082032, -0.10712415724992752, -0.023991243913769722, 0.0730719268321991, 0.016669245436787605, -0.023000357672572136, -0.058029498904943466, -0.055422477424144745],
+ "VPBLENDVBrr":[0.04347844049334526, 0.07097408175468445, 0.029871610924601555, -0.06400838494300842, -0.001956086838617921, -0.06096882373094559, 0.07391802966594696, 0.03813464567065239, 0.024936847388744354, -0.02588173933327198, 0.06019973382353783, -0.004403244704008102, 0.05092562362551689, -0.001399182598106563, 0.07362842559814453, 0.04823394492268562, 0.009955192916095257, -0.12213394045829773, 0.08004312217235565, -0.03293280303478241, 0.038770414888858795, -0.030445652082562447, -0.04949723184108734, 0.016648707911372185, 0.0022026468068361282, 0.05099368095397949, 0.02819742262363434, 0.011437472887337208, -0.07694143801927567, 0.007672331295907497, 0.039268746972084045, -0.023759083822369576, 0.023947715759277344, 0.005104938521981239, -0.06970957666635513, 0.03318081423640251, 0.04239826276898384, -0.022310437634587288, -0.05457755923271179, -0.034099992364645004, 0.0159173384308815, 0.05576923489570618, -0.03886541351675987, -0.023089181631803513, 0.0755256786942482, -0.003813067451119423, -0.046811845153570175, -0.05781073495745659, 0.031015321612358093, 0.01945810765028, -0.03191744163632393, 0.13135960698127747, -0.027633707970380783, -0.09656403958797455, 0.08044493943452835, 0.006094514857977629, -0.013675959780812263, -0.06530406326055527, -0.0023564593866467476, -0.024692794308066368, -0.03097684681415558, -0.10038511455059052, 0.0736425369977951, -0.00088779121870175, 0.02945275418460369, 0.038029108196496964, -0.024704517796635628, 0.03189902752637863, -0.06589377671480179, -0.09971331804990768, -0.015601019375026226, -0.08527793735265732, 0.017330236732959747, 0.0038464677054435015, -0.05455859377980232, 0.013399248011410236, -0.02909357100725174, -0.008825773373246193, -0.0546465665102005, 0.04043234512209892, 0.01122784148901701, -0.010915997438132763, -0.08270305395126343, -0.0019995311740785837, 0.057880304753780365, 0.07522004097700119, 0.037689872086048126, 0.010252106934785843, 0.0017773613799363375, 0.042062997817993164, -0.0657723918557167, -0.1338881403207779, -0.02150629460811615, 0.028755363076925278, 0.03980907425284386, -0.051197443157434464, -0.038885071873664856, -0.020559590309858322, 0.06174858659505844, -0.014355311170220375],
+ "VPBLENDWYrri":[-0.0228729285299778, -0.08980553597211838, 0.04025698080658913, -0.08239243179559708, 0.016725147143006325, -0.05003775656223297, 0.062355492264032364, 0.05694791302084923, -0.003930492792278528, -0.02238672412931919, 0.06573829799890518, 0.029307475313544273, 0.07734312862157822, -0.05621625855565071, -0.03145958110690117, -0.005186186172068119, 0.007162217516452074, 0.06184260547161102, -0.03327641636133194, 0.03463079780340195, 0.057447399944067, 0.007564305327832699, 0.03883454576134682, 0.08213527500629425, 0.006113782059401274, -0.03275157883763313, -0.031217020004987717, -0.01869281195104122, -0.0062501272186636925, 0.025737987831234932, 0.05825053155422211, 0.017777111381292343, -0.07775793969631195, 0.01968066580593586, 0.030576229095458984, -0.05612412095069885, -0.033304184675216675, -0.017958005890250206, -0.0608924962580204, -0.024337435141205788, -0.010913881473243237, -0.02127467840909958, 0.06807832419872284, -0.033910349011421204, 0.03126971423625946, 0.004672613460570574, -0.05515825375914574, 0.0003382194263394922, 0.008015093393623829, 0.016456324607133865, -0.011215882375836372, -0.04800187423825264, 0.0003790835617110133, -0.08577369898557663, -0.0877222865819931, 0.01595265232026577, -0.05041425675153732, -0.03539281710982323, -0.011911498382687569, -0.026541948318481445, 0.038471076637506485, 0.03257524594664574, 0.09626328945159912, -0.013773426413536072, 0.005912022665143013, -0.045133307576179504, 0.05802830681204796, -0.030771467834711075, 0.05103127658367157, -0.07510652393102646, 0.031136570498347282, -0.007267300505191088, -0.04562704637646675, -0.02425985038280487, -0.04691426455974579, 0.012081730179488659, -0.06408078968524933, -0.053399618715047836, 0.04748481884598732, 0.017518989741802216, -0.07374180853366852, 0.08875637501478195, 0.06100259721279144, 0.09119485318660736, -0.060368143022060394, -0.05869518220424652, 0.0363021157681942, -0.028033576905727386, 0.030835025012493134, 0.030143102630972862, -0.015522625297307968, -0.011935853399336338, -0.066572405397892, -0.030731497332453728, 0.0036492578219622374, 0.05255232751369476, 0.012138714082539082, 0.06934802234172821, 0.028450872749090195, 0.05072567239403725],
+ "VPBLENDWrri":[0.012250786647200584, 0.08340578526258469, 0.010059632360935211, 0.07517598569393158, -0.09238270670175552, -0.10505224019289017, 0.043900635093450546, 0.010797637514770031, -0.03343828767538071, -0.030560767278075218, -0.00818728283047676, 0.020697301253676414, 0.029876142740249634, -0.07722695171833038, 0.0009113180567510426, 0.06418753415346146, -0.011096807196736336, 0.05332034081220627, -0.08028487116098404, 0.06910259276628494, -0.004311395343393087, -0.00747087923809886, -0.04873513802886009, -0.0799502432346344, 0.02185002714395523, -0.024266580119729042, -0.02667871117591858, -0.01622447371482849, -0.030519044026732445, -0.02081219293177128, 0.030619025230407715, 0.004442973993718624, 0.02609526552259922, 0.03315357491374016, -0.024398723617196083, -0.07447056472301483, 0.015318872407078743, -0.09106850624084473, 0.010869818739593029, -0.012111222371459007, -0.008806686848402023, -0.08674658089876175, -0.05766214430332184, 0.02070075087249279, -0.06442657858133316, 0.00221235235221684, -0.03582122176885605, -0.038132645189762115, -0.008394943550229073, 0.0556102991104126, 0.029993411153554916, -0.03731543570756912, -0.006284828297793865, 0.04838162288069725, -0.04045717418193817, 0.003037947230041027, 0.02264634519815445, -0.00575738400220871, -0.002027891343459487, 0.02660137601196766, 0.05915848910808563, 0.003139409003779292, 0.05099973455071449, -0.07292937487363815, 0.054406967014074326, -0.05704616755247116, 0.014853864908218384, -0.038722749799489975, -0.021384907886385918, 0.04330078139901161, 0.028802471235394478, 0.0978040099143982, -0.05073201656341553, -0.06586171686649323, 0.043333083391189575, 0.031094279140233994, 0.08958625048398972, 0.01570369116961956, -0.07962588965892792, 0.08197673410177231, 0.004736399743705988, -0.013487997464835644, -0.0040120817720890045, 0.06283789128065109, -0.04178256914019585, -0.007815525867044926, 0.07867853343486786, -0.004845266696065664, 0.03440103307366371, -0.05602673441171646, -0.06875285506248474, -0.01846102997660637, 0.09767831116914749, 0.030644316226243973, 0.0053934818133711815, -0.048378609120845795, -0.025463374331593513, -0.010073556564748287, -0.05964590981602669, 0.03307775780558586],
+ "VPBROADCASTBYrm":[0.08135443925857544, -0.007302007172256708, -0.051999352872371674, 0.04529627040028572, -0.009143928065896034, -0.0609031543135643, 0.01689121685922146, -0.005895714741200209, 0.06226796656847, -0.03923966363072395, -0.04492579400539398, -0.06838253885507584, -0.03431304171681404, 0.04772558808326721, -0.004854677245020866, 0.017538519576191902, -0.04863053932785988, -0.013486605137586594, -0.025906218215823174, -0.05197674036026001, -0.021125037223100662, 0.015654850751161575, -0.06952035427093506, -0.08757416158914566, 0.057651303708553314, 0.04155260697007179, -0.008217008784413338, 0.016879118978977203, -0.08525976538658142, -0.025807684287428856, -0.026290200650691986, -0.04642112925648689, 0.024664150550961494, 0.024840781465172768, -0.09120883792638779, 0.058348286896944046, 0.006815101020038128, 0.01679198443889618, -0.02346368506550789, -0.0008343348745256662, 0.01723676174879074, -0.04194783791899681, 0.04024413228034973, 0.005441450979560614, -0.0005050337058492005, -0.05686675384640694, 0.04912358522415161, -0.07521778345108032, -0.009397782385349274, 0.03585002198815346, -0.01768462546169758, -0.041763003915548325, -0.055448565632104874, -0.046341877430677414, 0.0751112625002861, 0.07763026654720306, -0.04282039403915405, 0.055752526968717575, 0.013182595372200012, -0.04625795781612396, -0.016746969893574715, 0.01776156760752201, -0.04538888856768608, 0.029260778799653053, 0.045538537204265594, -0.01708843745291233, 0.11076995730400085, 0.07490475475788116, 0.011305631138384342, 0.021669339388608932, 0.050794512033462524, -0.08475586771965027, -0.004376549739390612, -0.008228291757404804, 0.0330730564892292, -0.058328401297330856, -0.042128343135118484, -0.0224625114351511, -0.0646071657538414, -0.05186403542757034, 0.06070839613676071, 0.1028936356306076, -0.003172367112711072, -0.07344619184732437, -0.056908201426267624, 0.06003697216510773, -0.018528712913393974, 0.0178958922624588, -0.0015056772390380502, 0.03554670512676239, 0.022559184581041336, -0.0064264931716024876, -0.06770344823598862, 0.03741275146603584, 0.010301790200173855, -0.009850015863776207, -0.018656732514500618, -0.0397527702152729, -0.04655647277832031, -0.09223826974630356],
+ "VPBROADCASTBYrr":[0.09067964553833008, 0.023561378940939903, -0.0014208874199539423, 0.02205706760287285, 0.02707301825284958, -0.007431739009916782, 0.0678475946187973, -0.02507336623966694, -0.014926138333976269, -0.07400429248809814, 0.052189070731401443, 0.06125178188085556, -0.05030638724565506, 0.019507650285959244, -0.03347788751125336, -0.0001245215826202184, 0.00276418449357152, -0.09284744411706924, -0.08442318439483643, 0.0603366456925869, -0.07215604186058044, -0.00557731045410037, 0.025822332128882408, 0.005721231922507286, -0.041979607194662094, -0.049996063113212585, -0.06767651438713074, 0.05464478209614754, -0.008698184974491596, 0.014300789684057236, -0.043306607753038406, -0.02095322124660015, 0.06399568915367126, 0.03559089079499245, -0.0140034519135952, -0.021029725670814514, 0.0630471482872963, 0.023163529112935066, -0.029127126559615135, 0.07763827592134476, 0.03175055608153343, -0.08542142063379288, 0.019919905811548233, 0.061509665101766586, 0.012140610255300999, -0.043373651802539825, 0.010307575576007366, -0.06310480833053589, 0.004084746353328228, -0.037221070379018784, -0.06602250039577484, -0.08755022287368774, -0.01782960072159767, 0.020890409126877785, 0.04909344017505646, -0.007891417481005192, 0.018351493403315544, 0.02351486124098301, 0.023354018107056618, 0.029927611351013184, -0.05320630967617035, -0.07809121161699295, 0.0023856516927480698, -0.01824606955051422, 0.03908372297883034, 0.005247643683105707, 0.08008932322263718, -0.0541679710149765, -0.02718941681087017, -0.03878001123666763, 0.02107350341975689, 0.049767278134822845, 0.02097678743302822, -0.024992074817419052, 0.00026315668947063386, 0.030638329684734344, -0.0030636063311249018, 0.03557298332452774, -0.06368810683488846, -0.09026625007390976, -0.03441886976361275, -0.0379740372300148, 0.04521096125245094, 0.04743579030036926, -0.0520312637090683, -0.04511945694684982, -0.04023292660713196, -0.06691143661737442, -0.011174660176038742, 0.046111151576042175, 0.042360126972198486, -0.008243059739470482, -0.019135266542434692, 0.007669033017009497, -0.0027257115580141544, -0.0707646831870079, -0.008750488981604576, 0.05412853881716728, -0.009517904371023178, 0.03538457676768303],
+ "VPBROADCASTBrm":[0.04068240523338318, -0.0993368849158287, -0.02994452230632305, 0.020820530131459236, 0.0218599122017622, -0.002734630135819316, 0.043102387338876724, 0.03723711520433426, 0.06772585958242416, 0.03685170039534569, -0.0653543621301651, 0.025609711185097694, 0.005934009328484535, 0.02828405424952507, -0.027439270168542862, 0.038021448999643326, 0.10091184079647064, -0.008691024035215378, -0.07487732917070389, -0.022470559924840927, -0.03475075960159302, 0.0799301266670227, -0.009805014356970787, -0.0749836415052414, 0.09357362240552902, 0.01882604882121086, 0.021669059991836548, 0.004220420494675636, -0.09542569518089294, -0.013042951002717018, -0.02689974382519722, -0.049178726971149445, 0.050139691680669785, 0.034440528601408005, -0.009179807268083096, 0.03765679895877838, 0.005265956278890371, 0.004707778804004192, -0.00013301425497047603, 0.004866872448474169, -0.024753252044320107, 0.05785169079899788, -0.059527330100536346, -0.024854153394699097, 0.09750118851661682, -0.0005568211199715734, -0.09768904745578766, 0.0659797415137291, 0.004170576576143503, -0.08323725312948227, 0.02801550179719925, 0.005853550974279642, -0.06796915829181671, 0.03266787901520729, -0.008526989258825779, -0.06766927242279053, 0.06243317946791649, -0.05117728188633919, -0.03158973902463913, 0.012294736690819263, 0.07274241000413895, 0.07069583982229233, -0.015539824031293392, -0.05320318415760994, 0.002927811350673437, -0.03338214010000229, 0.08206011354923248, 0.01494558434933424, -0.04416313022375107, 0.046680204570293427, -0.023708531633019447, -0.02848711796104908, -0.0014180181315168738, 0.061332881450653076, -0.008926770649850368, 0.10911770164966583, -0.03139008954167366, -0.06765593588352203, -0.060619279742240906, -0.010777109302580357, -0.10550115257501602, 0.098235122859478, 0.013330047950148582, 0.028434980660676956, 0.0026867890264838934, -0.032347436994314194, -0.05313902720808983, 0.05096430703997612, -0.0022469700779765844, 0.010970736853778362, -0.045480042695999146, -0.016761308535933495, 0.04483943060040474, -0.07210452109575272, 0.06178666651248932, 0.06700334697961807, 0.001968788681551814, 0.046893853694200516, -0.03820651397109032, 0.04436970874667168],
+ "VPBROADCASTBrr":[-0.06143716350197792, -0.038324493914842606, 0.08370581269264221, -0.04359183460474014, -0.07465459406375885, -0.05064551532268524, -0.02184060588479042, 0.05885328724980354, 0.05586201325058937, 0.07013735920190811, 0.018298611044883728, 0.03612693026661873, 0.007560389582067728, -0.00686667999252677, 0.029598083347082138, -0.041949283331632614, 0.007060418836772442, 0.011841698549687862, 0.03063986450433731, -0.01588248461484909, -0.06617873162031174, 0.009331301786005497, -0.06566772609949112, 0.012746249325573444, -0.04591400548815727, 0.09979398548603058, -0.07781527191400528, -0.06986559927463531, 0.01638466864824295, 0.062238819897174835, -0.040464647114276886, -0.026133229956030846, -0.004494846798479557, -0.03854063153266907, -0.0766352191567421, 0.106991246342659, 0.00280620064586401, -0.012399706058204174, -0.08956056833267212, 0.01612478867173195, 0.014130859635770321, 0.032424625009298325, 0.01207447238266468, -0.10190077871084213, -0.02045403979718685, 0.029491007328033447, 0.036848410964012146, 0.05579080805182457, -0.03724260255694389, -0.06469457596540451, -0.01169426366686821, -0.007884728722274303, -0.04161961376667023, -0.014899177476763725, -0.07811077684164047, 0.022837599739432335, 0.06899406760931015, 0.04483645409345627, -0.04780961945652962, -0.006852577440440655, -0.045542556792497635, 0.002180177951231599, 0.03981110081076622, -0.0632328987121582, -0.05879293754696846, -0.09059996902942657, 0.04456429183483124, -0.02600114792585373, 0.03462010249495506, -0.020856093615293503, 0.027231769636273384, -0.0048443921841681, -0.06753356009721756, 0.06932758539915085, -0.022050097584724426, -0.10121769458055496, -0.08635085076093674, -0.019394023343920708, -0.06945264339447021, 0.07169132679700851, -0.037093307822942734, 0.0198969766497612, 0.013162742368876934, -0.03390522673726082, -0.05503895506262779, -0.07213148474693298, -0.05983549356460571, -0.04080291464924812, -0.021273983642458916, 0.07004063576459885, -0.028893712908029556, -0.019650449976325035, 0.04935435950756073, 0.07845428586006165, -0.013997451402246952, -0.07534487545490265, -0.004299691878259182, -0.007610319647938013, -0.041965682059526443, -0.061734139919281006],
+ "VPBROADCASTDYrm":[-0.06950388103723526, -0.0028966746758669615, -0.01698211394250393, 0.01196269690990448, 0.011735957115888596, -0.029725464060902596, 0.05420354753732681, -0.0021415736991912127, -0.011028814129531384, -0.019248832017183304, -0.03369370475411415, -0.0569361187517643, -0.13716484606266022, 0.10208217799663544, -0.03360062837600708, 0.006189214996993542, 0.0178519319742918, -0.0155131034553051, 0.008939957246184349, -0.006132503505796194, -0.010893752798438072, -0.06918974965810776, -0.0562492273747921, 0.02768215537071228, -0.049552757292985916, 0.03291543945670128, 0.05490858107805252, -0.02076360397040844, -0.033866703510284424, -0.058586858212947845, -0.009425796568393707, 0.024551767855882645, 0.06776490062475204, -0.039337027817964554, 0.024763111025094986, 0.10779011249542236, 0.04320705682039261, -0.003291209926828742, -0.007847156375646591, 0.05901964381337166, 0.08293027430772781, 0.004899417515844107, -0.09090525656938553, 0.00828341394662857, 0.028288206085562706, 0.05829913914203644, 0.015689583495259285, 0.10653221607208252, -0.009211208671331406, 0.0303493645042181, 0.001415011938661337, 0.010832053609192371, -0.050349052995443344, 0.013383627869188786, 0.005876858253031969, 0.05972995609045029, 0.06519493460655212, -0.039061665534973145, 0.019541222602128983, 0.0711800754070282, 0.0014316948363557458, 0.0613691471517086, -0.01155090518295765, 0.04345399886369705, 0.12401436269283295, -0.022462164983153343, -0.09801661968231201, 0.01860196702182293, 0.026089945808053017, 0.027187921106815338, -0.01955442689359188, 0.0015302521642297506, -0.021242639049887657, 0.010100538842380047, -0.07420526444911957, -0.11028170585632324, 0.00621910160407424, -0.00740462401881814, -0.04424896091222763, -0.07720402628183365, 0.010453813709318638, 0.0184745192527771, -0.06913090497255325, -0.1020294800400734, 0.034365151077508926, 0.06523110717535019, -0.019264085218310356, 0.03588976338505745, 0.0015411932254210114, -0.01955934800207615, 0.05144718661904335, -0.0855843797326088, 0.15239021182060242, 0.022493675351142883, 0.02660210058093071, -0.07989821583032608, -0.028502531349658966, -0.032724592834711075, 0.07430552691221237, 0.04970741644501686],
+ "VPBROADCASTDYrr":[-0.06374076008796692, -0.01969544216990471, 0.014401114545762539, -0.07150928676128387, 0.02826511487364769, 0.09359154850244522, 0.004696256015449762, 0.001514588133431971, -0.059237170964479446, 0.06546685844659805, -0.08312811702489853, -0.0017745072254911065, 0.06446515768766403, 0.07648786157369614, -0.04907767474651337, 0.02478644624352455, -0.06172381341457367, 0.055021464824676514, -0.004882718902081251, 0.013581656850874424, 0.01327658724039793, -0.11081653833389282, 0.04986320063471794, 0.07477833330631256, 0.037599384784698486, 0.001971074379980564, 0.043901361525058746, 0.009955726563930511, 0.060705237090587616, -0.030704254284501076, 0.00496031204238534, 0.04608361795544624, 0.05134207382798195, 0.005056868307292461, 0.010732854716479778, -0.07707536220550537, 0.03018830344080925, 0.05532267689704895, -0.010520229116082191, 0.006264810916036367, 0.09002934396266937, 0.022025924175977707, -0.052505750209093094, 0.08044378459453583, -0.005502928514033556, -0.08255621790885925, -0.021138343960046768, -0.10815124958753586, -0.0011735344305634499, 0.0338878333568573, 0.010187854059040546, 0.05852120742201805, 0.03394009545445442, -0.08057564496994019, -0.03229188174009323, -0.009091464802622795, -0.030341999605298042, -0.07469257712364197, -0.028519097715616226, 0.01976841688156128, -0.0437355600297451, 0.01716656982898712, 0.05483115464448929, 0.030089979991316795, 0.029143134132027626, -0.04333367571234703, -0.03810498118400574, -0.10960165411233902, -0.020213713869452477, -0.05149580538272858, -0.02870998904109001, 0.0431399941444397, 0.017379222437739372, 0.04302697628736496, 0.011744755320250988, -0.02867881767451763, 0.0016606311546638608, -0.033512718975543976, -0.0039035368245095015, 0.034936919808387756, 0.08015958964824677, -0.021076448261737823, -0.05757083743810654, -0.030427996069192886, -0.01167574804276228, -0.13632945716381073, -0.002606840804219246, 0.02886469103395939, -0.05343974381685257, 0.04134051874279976, 0.05141690373420715, 0.06028290092945099, 0.09738177806138992, 0.011214345693588257, -0.10438637435436249, -0.012343323789536953, -0.10174523293972015, -0.05060502514243126, -0.05147982016205788, -0.022884199395775795],
+ "VPBROADCASTDrm":[-0.06063514202833176, 0.028861192986369133, -0.07716377824544907, -0.03289702907204628, -0.014373050071299076, 0.04159099981188774, -0.08687979727983475, -0.005605416838079691, -0.11128553748130798, -0.04304825887084007, 0.02398933283984661, 0.027878407388925552, -0.029923120513558388, 0.02566715143620968, 0.007249412126839161, 0.01993025466799736, 0.06634840369224548, -0.06405115872621536, -0.012125437147915363, -0.030210120603442192, -0.020031282678246498, -0.019102565944194794, -0.050389260053634644, 0.07363618165254593, -0.05826443061232567, -0.03902405500411987, -0.022492630407214165, 0.07991380244493484, -0.03453044220805168, -0.03896545618772507, 0.006294045131653547, 0.15583373606204987, 0.019420942291617393, 0.0017928705783560872, 0.02710079774260521, -0.02107931300997734, -0.052890341728925705, 0.012775872834026814, -0.014665474183857441, -0.0227985642850399, 0.017686810344457626, -0.042391229420900345, 0.0934680700302124, -0.008188332431018353, 0.11281115561723709, 0.06763095408678055, -0.009106278419494629, 0.10049645602703094, -0.005835640709847212, -0.04073215648531914, -0.03217392414808273, 0.01881391555070877, -0.01794280670583248, -0.020735951140522957, -0.037141166627407074, -0.025487739592790604, -0.027406200766563416, -0.04204742610454559, 0.01855413243174553, -0.028136229142546654, 0.01990620791912079, 0.009214420802891254, -0.010764624923467636, 0.03650980442762375, -0.048360180109739304, -0.024574540555477142, 0.03334198519587517, 0.04151041805744171, -0.0010741063160821795, -0.0019878619350492954, -0.11880995333194733, 0.0026939648669213057, 0.012701103463768959, -0.05010812357068062, -0.0264115072786808, -0.046512704342603683, 0.026419704779982567, 0.04395095258951187, -0.03085060976445675, 0.0548592247068882, 0.03663933649659157, 0.02832661382853985, -0.0555054247379303, 0.07884318381547928, 0.023251261562108994, -0.024722358211874962, -0.024754144251346588, 0.012475228868424892, -0.011707676574587822, -0.01037602499127388, 0.010773620568215847, 0.01678738184273243, 0.051173798739910126, -0.017933843657374382, -0.05171945318579674, -0.06259531527757645, -0.02611490525305271, 0.0243240799754858, -0.03729957714676857, -0.02849818952381611],
+ "VPBROADCASTDrr":[0.012697282247245312, -0.04454948008060455, -0.10094991326332092, 0.04009218141436577, -0.014569277875125408, 0.08115864545106888, -0.04752262309193611, -0.0578293539583683, 0.10532691329717636, -0.0030035856179893017, -0.026454538106918335, -0.009009094908833504, 0.046808771789073944, 0.0023964494466781616, -0.001604506280273199, 0.007357006426900625, 0.04965716227889061, -0.053903281688690186, -0.04207026958465576, 0.07761261612176895, 0.0008996902033686638, -0.020915452390909195, -0.06504352390766144, 0.00533217703923583, -0.0952361598610878, 0.010068508796393871, 0.03239252418279648, 0.045770999044179916, -0.004818532150238752, -0.026069600135087967, 0.0012099442537873983, -0.08448754996061325, 0.06513846665620804, -0.05731818079948425, 0.062423404306173325, 0.09141495078802109, 0.031660690903663635, -0.00852938275784254, -0.05185117945075035, 0.04623348265886307, 0.07102899253368378, 0.015508890151977539, 0.12678483128547668, 0.015800440683960915, -0.011477679014205933, 0.005828440189361572, -0.004766737576574087, 0.007498824503272772, -0.015972694382071495, -0.04671303555369377, 0.027027677744627, -0.01967436634004116, -0.02632642164826393, 0.09899711608886719, -0.041739948093891144, 0.1014188602566719, 0.10445564240217209, -0.03487790748476982, 0.06735047698020935, -0.04414226487278938, -0.030155012384057045, -0.033089570701122284, -0.05851765722036362, 0.025404609739780426, 0.026334526017308235, -0.004838297609239817, 0.019547244533896446, 0.07454376667737961, 0.0073006898164749146, -0.04274805635213852, -0.029184415936470032, -0.08680099993944168, 0.03988930210471153, -0.014201032929122448, 0.025365132838487625, -0.04814399033784866, -0.007060222793370485, -0.08077756315469742, -0.039547815918922424, -0.05243901535868645, -0.012105228379368782, -0.021885531023144722, 0.07468782365322113, 0.022216644138097763, 0.02514515444636345, -0.06568456441164017, -0.04670652747154236, 0.052912287414073944, -0.09893614053726196, -0.06514529883861542, 0.036446407437324524, 0.03069261647760868, 0.012016993947327137, -0.024291574954986572, -0.1025395467877388, 0.03841065615415573, -0.039890874177217484, 0.10918121039867401, 0.05085340887308121, -0.04823620989918709],
+ "VPBROADCASTQYrm":[-0.08967826515436172, -0.0009381883428432047, -0.0028095943853259087, -0.04088690131902695, 0.06464304029941559, 0.03497400879859924, 0.05485638231039047, -0.005909901577979326, 0.03497006744146347, -0.03116455487906933, 0.02365911938250065, -0.018541518598794937, -0.07967307418584824, -0.050592560321092606, -0.04410072788596153, 0.07691850513219833, -0.02081896923482418, 0.02169732190668583, -0.025760943070054054, 0.05400523170828819, -0.0011058696545660496, -0.11689479649066925, -0.05003216490149498, 0.07778620719909668, 0.021945348009467125, -0.008888118900358677, -0.0016670407494530082, -0.035935766994953156, -0.029675312340259552, -0.09263157099485397, -0.1245095506310463, 0.07086779177188873, -0.07147033512592316, 0.0688404068350792, 0.023547247052192688, -0.008445264771580696, 0.0025361361913383007, 0.0039424230344593525, 0.029295288026332855, -0.029579777270555496, -0.027904517948627472, -0.04413840174674988, -0.022692684084177017, -0.0020631272345781326, -0.1315632313489914, 0.04452682286500931, 0.08263394236564636, -0.04797868803143501, 0.015076353214681149, 0.012957269325852394, 0.0012559352908283472, -0.012266868725419044, 0.008484438061714172, 0.06280894577503204, 0.005698577035218477, 0.06657768785953522, 0.04889078810811043, -0.03970184922218323, 0.06514906883239746, -0.020308038219809532, 0.0008186036138795316, -0.004902516026049852, -0.037339821457862854, 0.04113030806183815, 0.04162361100316048, 0.00804288312792778, -0.0648757591843605, -0.025517653673887253, -0.01921984553337097, 0.01942082867026329, 0.07282384485006332, 0.006594255566596985, 0.07616782188415527, -0.01976032741367817, 0.03761162608861923, -0.013440503738820553, 0.0070942300371825695, -0.03658480942249298, -0.040447477251291275, -0.02682059071958065, 0.050910744816064835, 0.021037554368376732, -0.09797769039869308, 0.017963286489248276, 0.02266691066324711, -0.038332488387823105, -0.09155551344156265, -0.12226535379886627, 0.005737831816077232, 0.012038699351251125, 0.07479556649923325, 0.01575007103383541, 0.059925880283117294, -0.034598302096128464, -0.05778491124510765, 0.024302836507558823, -0.002510932506993413, -0.009292425587773323, -0.05018429458141327, -0.034384679049253464],
+ "VPBROADCASTQYrr":[-0.05965295806527138, -0.031085023656487465, 0.036698050796985626, -0.038382887840270996, -0.04958432912826538, -0.09082819521427155, 0.010302698239684105, -0.04007289931178093, -0.02466176077723503, -0.023173097521066666, 0.010771619156002998, 0.0835520401597023, 0.06943394243717194, -0.005720481742173433, -0.03295551612973213, 0.04317403957247734, -0.080851711332798, 0.08940321952104568, -0.023022811859846115, 0.033464688807725906, -0.019555117934942245, -0.04080162197351456, -0.04280637204647064, 0.017531314864754677, 0.04774491488933563, -0.07189182937145233, -0.019188212230801582, 0.00044762049219571054, 0.058034878224134445, -0.029929451644420624, -0.05870563164353371, -0.02569333091378212, 0.06546209752559662, -0.011200008913874626, 0.010473372414708138, -0.07581458240747452, 0.10242681950330734, -0.04990839213132858, 0.08679202198982239, 0.010621442459523678, 0.07508573681116104, 0.067201167345047, 0.05962711200118065, -0.043017663061618805, 0.038028232753276825, 0.05457324907183647, -0.10041246563196182, -0.010198372416198254, -0.005769866518676281, -0.07318484038114548, 0.055137719959020615, -0.048459507524967194, 0.019570762291550636, 0.038004931062459946, 0.07779524475336075, -0.1063397154211998, -0.038930345326662064, -0.043708451092243195, -0.07234524190425873, -0.03990554064512253, -0.026613228023052216, -0.10892046988010406, -0.00785108469426632, -0.06373265385627747, -0.06082628667354584, 0.02697451040148735, 0.09112187474966049, 0.024963075295090675, 0.02879452332854271, 0.015109384432435036, -0.054664403200149536, -0.009478016756474972, -0.016497893258929253, -0.04724748432636261, -0.038890328258275986, -0.016375591978430748, 0.06847494840621948, 0.08804075419902802, 0.0705963596701622, 0.037830378860235214, 0.01428970880806446, -0.023138955235481262, 0.11589282006025314, -0.030610501766204834, -0.09256589412689209, -0.005894803907722235, 0.06100543215870857, -0.022230973467230797, 0.014325667172670364, 0.01670018956065178, -0.016559096053242683, 0.04463659226894379, 0.10492045432329178, 0.024832895025610924, 0.0014842823147773743, -0.010274398140609264, -0.06145048141479492, -0.0008138681296259165, 0.021494006738066673, 0.053461089730262756],
+ "VPBROADCASTQrm":[0.061915408819913864, 0.06825298815965652, -0.004050637595355511, 0.03813677281141281, 0.04233178868889809, -0.08435758948326111, -0.02210874855518341, -0.08081399649381638, -0.05230402573943138, 0.02497207187116146, -0.002147096209228039, -0.004373874049633741, -0.03672900050878525, 0.06411198526620865, 0.016686350107192993, 0.04305374622344971, 0.08832662552595139, 0.0013098298804834485, 0.01600048318505287, 0.025755900889635086, -0.06678260117769241, 0.06454137712717056, 0.04039715230464935, -0.06593505293130875, -0.02001854032278061, -0.10012653470039368, -0.011470532976090908, 0.11276812106370926, 0.05804457142949104, -0.03925570845603943, -0.09361647069454193, 0.06371229887008667, -0.03993251919746399, -0.04184835031628609, 0.06530614197254181, -0.02493802271783352, -0.096711665391922, 0.037180740386247635, -0.08202795684337616, -0.01098948810249567, -0.028089381754398346, 0.02639005146920681, -0.09432366490364075, 0.0014045732095837593, -0.047711264342069626, -0.042020004242658615, 0.018707770854234695, -0.04253796115517616, -0.0419476181268692, -0.021579792723059654, 0.024996334686875343, -0.05385743826627731, 0.0359254814684391, -0.08642968535423279, 0.02396119385957718, 0.08658135682344437, -0.020804397761821747, -0.02772578038275242, -0.04504823684692383, 0.009164280258119106, -0.1001729890704155, 0.01759743131697178, -0.0028454577550292015, 0.033492572605609894, 0.005263769067823887, -0.016702070832252502, 0.06743299961090088, 0.07703383266925812, -0.07617771625518799, 0.08724264800548553, -0.06123245880007744, 0.08022750914096832, -0.010682864114642143, -0.06372298300266266, -0.02978219836950302, -0.0023010221775621176, 0.010984647087752819, -0.01840934157371521, -0.023635394871234894, 0.08897869288921356, -0.015209916047751904, -0.08673785626888275, 0.008950606919825077, -0.03075176477432251, -0.020956657826900482, 0.10581378638744354, 0.01279828604310751, -0.027111461386084557, -0.058103885501623154, 0.023321008309721947, 0.013436537235975266, 0.05313532054424286, -0.0722012147307396, 0.014345661737024784, -0.02979102171957493, -0.02239016629755497, -0.07880346477031708, -0.10042836517095566, -0.05266374349594116, -0.0654732808470726],
+ "VPBROADCASTQrr":[0.0054760342463850975, 0.05564543977379799, -0.02424473501741886, 0.02785077691078186, 0.07080741226673126, -0.05933356657624245, -0.09911751747131348, 0.045080531388521194, 0.013902358710765839, 0.041068535298109055, -0.03214195370674133, 0.01527327485382557, 0.038401976227760315, 0.003541249316185713, -0.0323217399418354, 0.01094771083444357, -0.08070668578147888, 0.05738404765725136, -0.05698990076780319, 0.017308397218585014, 0.012284104712307453, 0.022432930767536163, -0.012848934158682823, -0.07698064297437668, 0.013321544975042343, 0.01627226732671261, -0.024286948144435883, -0.020386304706335068, 0.01352235022932291, 0.046191126108169556, -0.06236671283841133, -0.05179372802376747, -0.0007180164684541523, -0.08633871376514435, 0.08682217448949814, -0.0111691327765584, -0.037110041826963425, 0.07913906127214432, 0.02519604004919529, -0.04712643474340439, -0.035110652446746826, -0.05992577597498894, -0.04324988275766373, 0.005218473728746176, 0.07806910574436188, -0.04654655605554581, 0.08134855329990387, -0.0964733138680458, -0.021739019080996513, 0.006217389367520809, 0.026588592678308487, -0.055903360247612, -0.06845403462648392, -0.034330129623413086, 0.08769047260284424, 0.028107719495892525, 0.01883159764111042, -0.014902736991643906, -0.0041451225988566875, 0.004242300987243652, 0.05989363044500351, 0.05550305172801018, 0.05564841628074646, 0.06616165488958359, -0.00865971390157938, 0.09066985547542572, 0.004175299312919378, 0.03059844672679901, 0.050431836396455765, -0.01644546538591385, -0.03741486370563507, -0.027056729421019554, 0.06551619619131088, 0.029609546065330505, -0.08200404047966003, -0.01588871143758297, 0.031222928315401077, 0.023645836859941483, 0.009001797065138817, -0.03758200630545616, 0.05205119028687477, 0.05498155951499939, -0.029196372255682945, 0.03364754095673561, -0.04903526231646538, 0.03851209580898285, -0.06707839667797089, 0.06249083951115608, 0.011815913021564484, 0.029797624796628952, -0.033083684742450714, 0.013137506321072578, -0.006502865348011255, 0.015133801847696304, 0.027934249490499496, 0.0023613146040588617, 0.0031503152567893267, 0.048547904938459396, -0.05415698140859604, -0.10350289195775986],
+ "VPBROADCASTWYrm":[0.02884223684668541, 0.05794701725244522, 0.022789418697357178, 0.043558795005083084, -0.02104244753718376, -0.042339786887168884, 0.024623291566967964, 0.021715544164180756, -0.0226664487272501, 0.03668199107050896, -0.019970707595348358, -0.08034797012805939, -0.0031304184813052416, 0.0640559270977974, -0.05866416171193123, 0.04788864776492119, 0.03282822296023369, -0.08957821130752563, 0.05890742689371109, 0.0754266157746315, -0.03734584152698517, -0.07706830650568008, -0.05744163319468498, -0.05652938038110733, 0.014393055811524391, -0.06915716081857681, -0.048613764345645905, 0.0640416145324707, 0.051082074642181396, 0.017135603353381157, -0.023392416536808014, 0.040564604103565216, -0.020374655723571777, -0.05962773784995079, -0.01943894661962986, -0.020363301038742065, -0.0038824575021862984, -0.010698472149670124, 0.04727024585008621, 0.042771805077791214, 0.016377147287130356, -0.013206287287175655, 0.036020807921886444, -0.089613176882267, 0.011500964872539043, 0.013473084196448326, 0.054377663880586624, -0.05375075712800026, -0.06931036710739136, 0.06252342462539673, -0.04279281944036484, -0.05656921863555908, -0.08034113049507141, 0.015187118202447891, -0.08992088586091995, 0.029799649491906166, -0.001473684562370181, -0.03191286697983742, 0.045959364622831345, 0.028129367157816887, 0.019073255360126495, 0.003183230059221387, -0.07001251727342606, -0.08819121867418289, 0.0746522769331932, 0.01815435104072094, -0.09126590937376022, 0.04671510308980942, 0.03380591794848442, 0.05480401590466499, 0.02167884260416031, 0.03317459672689438, 0.028404053300619125, 0.028215456753969193, -0.02634788304567337, 0.048780664801597595, 0.04880635812878609, 0.018677115440368652, 0.009867270477116108, 0.09787900000810623, -0.018628224730491638, 0.015332577750086784, 0.01968507282435894, -0.033535826951265335, -0.013692542910575867, 0.08223354071378708, 0.028796622529625893, -0.048692166805267334, 0.008542063646018505, -0.026026904582977295, -0.01733916997909546, 0.001628178171813488, 0.037651851773262024, -0.004528491757810116, -0.062018316239118576, -0.08351638168096542, 0.014547184109687805, -0.09377513080835342, 0.05411573126912117, 0.07012037187814713],
+ "VPBROADCASTWYrr":[-0.026657776907086372, -0.01627604477107525, 0.10210206359624863, -0.08019454032182693, 0.02987605705857277, 0.11781631410121918, 0.04117138683795929, 0.02473152056336403, -0.05931168794631958, 0.026446394622325897, 0.01467890664935112, 0.03818754106760025, -0.08653818070888519, 0.03885340690612793, -0.04872671887278557, 0.03453077748417854, -0.06448834389448166, -0.04634883254766464, -0.007142651826143265, 0.051440950483083725, 0.0107117285951972, -0.014262285083532333, -0.040882937610149384, 0.016680726781487465, 0.06752925366163254, 0.031992312520742416, 0.07951401174068451, -0.017897192388772964, 0.06402016431093216, -0.033680956810712814, 0.02613328956067562, -0.02438570000231266, -0.07645915448665619, 0.00713524641469121, -0.001091343117877841, -0.07744035869836807, -0.03828643634915352, 0.042109157890081406, 0.08667044341564178, 0.040885575115680695, -0.046895161271095276, 0.08910616487264633, 0.016652889549732208, -0.07217908650636673, -0.010954589582979679, -0.021535221487283707, -0.004510128404945135, -0.016040753573179245, -0.0013336418196558952, -0.09987299144268036, 0.021600009873509407, 0.03678799793124199, 0.07315396517515182, 0.005662728101015091, 0.05753803625702858, -0.05033155530691147, 0.02540457807481289, -0.059644825756549835, 0.004528053104877472, 0.0017269605305045843, -0.01703833043575287, 0.019734466448426247, 0.0037481719627976418, 0.03968801721930504, -0.114322729408741, -0.07877331972122192, -0.005965310614556074, 0.026501409709453583, 0.010772548615932465, -0.06152891367673874, 0.012258170172572136, -0.09301948547363281, 0.0905778706073761, -0.017561431974172592, 0.012529059313237667, -0.007174246478825808, 0.004858323372900486, 0.04713667556643486, -0.0029938681982457638, -0.06944592297077179, 0.056158341467380524, 0.05201054736971855, 0.07281888276338577, 0.002342523541301489, 0.07659977674484253, -0.022964052855968475, 0.02512933313846588, -0.06839795410633087, -0.03935186192393303, 0.07522700726985931, -0.04520503431558609, -0.020587267354130745, 0.11004269868135452, -0.07430576533079147, -0.007820568978786469, 0.08580555021762848, -0.0620926134288311, -0.017870599403977394, 0.043544068932533264, -0.034632548689842224],
+ "VPBROADCASTWrm":[0.026830920949578285, 0.06380722671747208, -0.029628966003656387, 0.004781276918947697, 0.0729823037981987, -0.006238222122192383, 0.033571284264326096, 0.04149113968014717, 0.04312974587082863, -0.08657801896333694, 0.0010360912419855595, 0.025321487337350845, 0.0286860354244709, 0.006904618814587593, 0.016553420573472977, -0.005236765369772911, -0.020129209384322166, 0.0021778023801743984, 0.033322423696517944, -0.030670130625367165, -0.051327239722013474, -0.044649019837379456, 0.02657518908381462, 0.05800890550017357, -0.08247634768486023, 0.06742805242538452, -0.02734246477484703, -0.048374395817518234, -0.023197753354907036, -0.04548381268978119, -0.011119377799332142, 0.09372439980506897, -0.031954340636730194, -0.014363745227456093, -0.03203783556818962, 0.019866494461894035, -0.005592105444520712, 0.053973764181137085, -0.03932246193289757, 0.0018674660241231322, -0.020974051207304, -0.028090916574001312, -0.058019112795591354, 0.017529260367155075, 0.0810256376862526, -0.10457254201173782, 0.033177271485328674, -0.08728957921266556, 0.006851037498563528, 0.044281311333179474, -0.0025757921393960714, -0.07449045777320862, 0.01438038982450962, 0.008667376823723316, -0.019303537905216217, 0.011557183228433132, -0.0525171123445034, -0.003654420841485262, 0.060605958104133606, -0.10815147310495377, -0.03861294686794281, -0.0028458540327847004, 0.005330259911715984, 0.048283178359270096, 0.02535441145300865, -0.011768193915486336, 0.03690808266401291, -0.040889672935009, -0.05250025913119316, -0.011417066678404808, 0.07956894487142563, -0.05001586675643921, 0.026804564520716667, 0.049962855875492096, -0.05334681645035744, 0.041873324662446976, -0.02156604640185833, -0.0380060076713562, -0.09613398462533951, 0.08580553531646729, -0.0778474360704422, 0.006288232281804085, -0.054085440933704376, -0.05418005213141441, 0.029912762343883514, 0.046209052205085754, -0.013870645314455032, -0.03221145272254944, -0.015855465084314346, 0.011857131496071815, 0.07333705574274063, -0.08952431380748749, -0.03136283904314041, 0.06372696161270142, -0.035197749733924866, 0.022728772833943367, 0.04439447075128555, -0.011405052617192268, 0.00866222009062767, 0.004406895954161882],
+ "VPBROADCASTWrr":[-0.09858541935682297, 0.0567975752055645, -0.008299605920910835, -0.003176892176270485, 0.016139548271894455, -0.05269048362970352, -0.07279843091964722, -0.03598978742957115, 0.03785691037774086, 0.06057164818048477, 0.09140351414680481, 0.04024717956781387, 0.009768376126885414, -0.05051729828119278, 0.010535119101405144, 0.011759516783058643, 0.08342119306325912, 0.040437668561935425, 0.09140446037054062, -0.08264868706464767, -0.011019532568752766, -0.019168777391314507, -0.051374051719903946, 0.08709119260311127, 0.0054784477688372135, -0.009196745231747627, 0.053934164345264435, 0.02061387151479721, -0.011436333879828453, 0.011609110049903393, 0.07460560649633408, 0.02566511370241642, -0.03783325105905533, -0.10270141810178757, 0.0626206025481224, 0.047640811651945114, -0.005884400103241205, -0.06413440406322479, -0.05321596935391426, 0.04578394815325737, -0.020250855013728142, 0.013041236437857151, 0.09910101443529129, -0.018030665814876556, -0.04563942551612854, -0.03509755805134773, -0.04045676440000534, 0.040644094347953796, -0.05046723037958145, -0.014299220405519009, 0.06349650025367737, -0.08235383778810501, 0.012739204801619053, -0.03635198250412941, -0.030113810673356056, -0.004707579966634512, 0.013240724802017212, 0.0492938868701458, -0.058052148669958115, -0.03018748201429844, 0.05754093825817108, 0.020030036568641663, 0.09265636652708054, 0.009622698649764061, -0.00822268147021532, 0.005608736537396908, 0.064959816634655, -0.04639821499586105, 0.0063840714283287525, -0.019344577565789223, -0.04629993066191673, -0.02031645178794861, 0.06232103332877159, -0.042298972606658936, -0.04132169112563133, 0.08092774450778961, 0.0817488506436348, 0.002853760728612542, -0.10081424564123154, -0.038196343928575516, -0.04197597876191139, -0.01889820210635662, -0.08988013118505478, -0.10919202864170074, 0.008037813007831573, 0.013843407854437828, 0.05964002385735512, 0.00840764120221138, -0.006184222176671028, -0.060061678290367126, -0.07846663892269135, -0.05507137253880501, 0.05798046663403511, 0.09461464732885361, -0.0795942023396492, 0.04636605456471443, 0.010361099615693092, -0.07673946768045425, -0.02580452337861061, 0.005887791980057955],
+ "VPCMPEQBYrm":[-0.01250450685620308, 0.04434787482023239, -0.003019017167389393, -0.07682673633098602, -0.0723457783460617, -0.03700972720980644, -0.08171165734529495, 0.08670925348997116, -0.002279855776578188, 0.04402737319469452, -0.01895824261009693, 0.02592788264155388, -0.04519239440560341, -0.03840072825551033, 0.016814999282360077, 0.034960027784109116, 0.08886754512786865, 0.034901611506938934, -0.06579118221998215, 0.010716794058680534, -0.018891416490077972, 0.00633168825879693, 0.1038561537861824, -0.03784726560115814, 0.07365623861551285, 0.04244204983115196, 0.08020725846290588, -0.02561449073255062, 0.001999808242544532, -0.06213413178920746, -0.0320841409265995, -0.027232585474848747, 0.06698699295520782, 0.04741135612130165, 0.07947775721549988, -0.022679679095745087, -0.032695092260837555, -0.07704021036624908, -0.01607544533908367, 0.04139912500977516, 0.03640206158161163, -0.00790366344153881, 0.023209506645798683, -0.0011521518463268876, -0.0012882767478004098, -0.003462222870439291, -0.0034987216349691153, -0.02146965079009533, -0.03279440104961395, 0.04613681510090828, -0.06703551858663559, 0.07784811407327652, 0.10382556170225143, 0.02026110701262951, 0.02829620987176895, 0.03388221189379692, 0.06425762921571732, 0.009796705096960068, -0.0024110893718898296, 0.004390649031847715, 0.03194389119744301, -0.007593391463160515, -0.04750526696443558, 0.0630120187997818, 0.059098172932863235, -0.07272856682538986, -0.057500455528497696, 0.04148849844932556, -0.037721190601587296, 0.008661793544888496, 0.054886430501937866, -0.02129395678639412, -0.05855485424399376, -0.07737705856561661, 0.0320214107632637, 0.03175394982099533, -0.0010583546245470643, 0.08481383323669434, 0.08857246488332748, 0.027575183659791946, 0.0358944907784462, -0.055255599319934845, 0.023258162662386894, -0.046868033707141876, -0.07937837392091751, 0.03557618334889412, 0.025109414011240005, 0.10720549523830414, -0.007629771716892719, 0.04947913810610771, -0.07687828689813614, 0.07761573046445847, -0.01960115134716034, 0.030277080833911896, -0.018562372773885727, 0.005167139228433371, -0.08249832689762115, -0.017890529707074165, -0.009106914512813091, 0.010522441007196903],
+ "VPCMPEQBYrr":[-0.027382969856262207, -0.04239685833454132, 0.03344316408038139, 0.03834481164813042, -0.039252083748579025, -0.08263091742992401, -0.07127896696329117, -0.014258017763495445, 0.03042253665626049, 0.03649839013814926, -0.007881997153162956, -0.019494924694299698, -0.00016856929869391024, 0.10151760280132294, 0.015269673429429531, -0.08404622972011566, -0.00480601005256176, 0.0009740423411130905, -0.048734150826931, -0.010559228248894215, 0.02021389827132225, -0.031055934727191925, 0.0010709934867918491, -0.07635007798671722, -0.07615382969379425, 0.030137773603200912, -0.02717679738998413, 0.09193313121795654, 0.062315843999385834, -0.05345332622528076, 0.07583576440811157, 0.0010256690438836813, -0.06507124751806259, 0.030697545036673546, 0.046618930995464325, -0.035670921206474304, -0.027021441608667374, 0.005157540552318096, -0.07889723777770996, 0.025142649188637733, -0.035674743354320526, -0.005471325479447842, -0.0008484291611239314, 0.008046960458159447, -0.04852459579706192, 0.09752614796161652, -0.012124241329729557, -0.04504283890128136, 0.09506452083587646, -0.005385627970099449, -0.003946678712964058, 0.07050170004367828, 0.08251208066940308, -0.08579769730567932, -0.08216484636068344, -0.009154539555311203, -0.05604289099574089, 0.027987787500023842, 0.008704054169356823, -0.04522671550512314, 0.0516628697514534, -0.01153574138879776, -0.08911382406949997, 0.06983984261751175, 0.06565006822347641, 0.006112049333751202, 0.05666302517056465, 0.033216170966625214, 0.02739408053457737, 0.03241700306534767, 0.06697878241539001, -0.05246002599596977, 0.04078100621700287, 0.031978920102119446, 0.09168136864900589, 0.034927185624837875, 0.05938123166561127, -0.05592945218086243, -0.062083128839731216, 0.033743590116500854, 0.027470331639051437, 0.06297434866428375, 0.016208020970225334, 0.025721317157149315, -0.07750418782234192, -0.03292398899793625, -0.11023146659135818, 0.07787567377090454, 0.012848973274230957, -0.011985362507402897, -0.001347857411019504, 0.049838680773973465, -0.05285639688372612, -0.05782829597592354, -0.016182949766516685, 0.07782601565122604, 0.012179012410342693, -0.0435495562851429, 0.01485145092010498, -0.05718156695365906],
+ "VPCMPEQBrm":[0.014104090631008148, -0.04250308871269226, 0.09134656935930252, 0.04984581097960472, 0.05765341967344284, -0.046988487243652344, -0.03720784932374954, -0.011431670747697353, 0.017117461189627647, -0.03765410557389259, -0.039298463612794876, -0.03261014074087143, -0.04495621472597122, -0.027860300615429878, -0.05552178621292114, 0.009362840093672276, 0.03234311565756798, 0.06396506726741791, -0.08324973285198212, -0.08091636747121811, -0.014976024627685547, -0.01630777306854725, 0.10723202675580978, 0.019760388880968094, -0.021468810737133026, 0.04297596961259842, 0.07995020598173141, -0.0822148248553276, 0.04705797880887985, -0.05922776833176613, 0.009379802271723747, 0.029244881123304367, -0.03017292730510235, -0.09269274771213531, -0.026365814730525017, -0.07269658893346786, 0.006851241458207369, -0.07895809412002563, -0.07198025286197662, 0.017930541187524796, 0.06764942407608032, -0.022888213396072388, 0.023844117298722267, 0.010471262037754059, -0.07552116364240646, -0.041778672486543655, 0.052077703177928925, -0.07915694266557693, -0.055033497512340546, 0.07085190713405609, -0.014923188835382462, -0.05977310240268707, -0.08361753821372986, 0.08461147546768188, 0.07411526888608932, -0.010959288105368614, -0.01180959865450859, -0.05124935135245323, -0.002282750094309449, 0.03056333027780056, 0.029285376891493797, -0.008207175880670547, -0.019194863736629486, 0.05232946574687958, 0.0024035403039306402, -0.050021491944789886, 0.005854712333530188, 0.015871655195951462, 0.003014076268300414, -0.01398842129856348, 0.06360990554094315, -0.0026058151852339506, 0.06864896416664124, -0.06184251233935356, 0.01179173681885004, -0.07175831496715546, -0.009275111369788647, -0.004444715101271868, 0.08097223192453384, -0.007022025529295206, 0.022995207458734512, -0.08892682194709778, 0.03587741404771805, -0.015736572444438934, -0.0301524605602026, 0.06739966571331024, 0.07705147564411163, -0.06846033036708832, -0.0684308186173439, 0.058521002531051636, -0.0085134981200099, 0.011149157769978046, 0.045273516327142715, 0.07965003699064255, 0.08363045006990433, 0.02052503265440464, 0.01381039246916771, -0.07484594732522964, -0.05708470195531845, 0.01552795059978962],
+ "VPCMPEQBrr":[0.08219585567712784, 0.029479369521141052, -0.0005859785596840084, -0.020388871431350708, -0.021907230839133263, -0.010709834285080433, -0.0739213079214096, -0.097418874502182, 0.038960643112659454, -0.020392192527651787, -0.05348866805434227, -0.06093863397836685, -0.057377807796001434, 0.045260798186063766, -0.01970117725431919, 0.05804189294576645, 0.03769480809569359, -0.052525587379932404, 0.02333316206932068, -0.0013179576490074396, -0.0005233868723735213, -0.011398262344300747, -0.047533586621284485, -0.0068359095603227615, 0.03811297565698624, -0.09994787722826004, -0.04928571730852127, -0.057011500000953674, 0.06218741089105606, 0.06990683078765869, 0.020626965910196304, 0.0007061577634885907, -0.056317199021577835, 0.06791853159666061, -0.019133130088448524, 0.06929091364145279, -0.07316780835390091, 0.06678377836942673, -0.038183022290468216, 0.025577425956726074, 0.08361168950796127, -0.02963743545114994, -0.06896501034498215, -0.010607952252030373, -0.023393917828798294, 0.09956569224596024, -0.02139965072274208, -0.016932504251599312, -0.045738354325294495, 0.05765431374311447, -0.013123802840709686, -0.01486598327755928, 0.06516505777835846, -0.008806568570435047, 0.004271520767360926, 0.06191420927643776, 0.01487818080931902, 0.006033073645085096, -0.04517432674765587, 0.07834597676992416, 0.02377421222627163, 0.02478409931063652, -0.06462235003709793, 0.01702040247619152, 0.008635424077510834, 0.026804711669683456, -0.0471540167927742, -0.010873953811824322, 0.06114485114812851, -0.017954528331756592, 0.01619008369743824, -0.0224912092089653, -0.03541749343276024, 0.03976162523031235, -0.08020758628845215, 0.08098482340574265, 0.07024289667606354, 0.057285066694021225, -0.05772853642702103, 0.0972209945321083, -0.06398114562034607, 0.04947999492287636, -0.04519537463784218, -0.04585618898272514, -0.03092402219772339, 0.041995368897914886, 0.03423936292529106, -0.05141257867217064, 0.07071059942245483, -0.09311249107122421, 0.04737957566976547, 0.01352359913289547, -0.019203126430511475, -0.03978068381547928, 0.016629526391625404, -0.07480894029140472, -0.015970854088664055, 0.05329325795173645, 0.007216435391455889, 0.06727929413318634],
+ "VPCMPEQDYrm":[0.004565403331071138, -0.05132685974240303, 0.05517362058162689, 0.07845515012741089, 0.020752642303705215, 0.02164389006793499, -0.015476975589990616, 0.08301179856061935, 0.06316392123699188, 0.05401258543133736, -0.07728694379329681, 0.036290694028139114, 0.007855302654206753, 0.08153926581144333, -0.00523002166301012, 0.06361116468906403, 0.05621437728404999, 0.06678614765405655, -0.034116946160793304, 0.04371201992034912, -0.032825369387865067, 0.11411518603563309, -0.06950421631336212, 0.06550344824790955, -0.04832672327756882, -0.037470802664756775, 0.05267913639545441, 0.027081361040472984, 0.025154756382107735, -0.1012187972664833, 0.04042942821979523, 0.0505426749587059, -0.060064446181058884, -0.03827808424830437, -0.0436372384428978, 0.025360634550452232, 0.014925096184015274, 0.04404868558049202, 0.0028316134121268988, -0.03223789855837822, 0.07062163203954697, 0.006843397859483957, 0.036985304206609726, 0.019111808389425278, -0.057768918573856354, 0.026560554280877113, -0.06170332059264183, 0.019328072667121887, -0.04310686141252518, 0.04256165400147438, 0.09154582023620605, -0.05175796151161194, -0.004225783050060272, 0.00499741593375802, -0.02501060999929905, -0.041272953152656555, -0.03330188989639282, 0.047844547778367996, -0.019672172144055367, -0.09675208479166031, 0.013384450227022171, 0.008006799034774303, 0.05915340408682823, -0.08935937285423279, 0.03347671777009964, 0.07553442567586899, -0.012467988766729832, -0.11277851462364197, 0.03733690455555916, 0.00109024066478014, -0.009358039125800133, -0.03958671912550926, 0.054401643574237823, 0.03740870952606201, 0.0993640124797821, -0.08399547636508942, 0.03343044966459274, 0.010584543459117413, -0.03961710259318352, 0.10898371785879135, -0.0356549471616745, -0.082667775452137, -0.060570891946554184, 0.003646956756711006, -0.0804043784737587, -0.009331809356808662, 0.0084516117349267, -0.07449324429035187, 0.10785913467407227, -0.005787799600511789, 0.09893760830163956, 0.032823413610458374, -0.03339197486639023, -0.10406605154275894, 0.10205719619989395, -0.04537443444132805, 0.03108971379697323, -0.03956747427582741, 0.02212921530008316, -0.03841622546315193],
+ "VPCMPEQDYrr":[-0.016861340031027794, -0.03760857135057449, 0.015352616086602211, -0.04424215480685234, 0.04038659855723381, 0.023339714854955673, -0.012550676241517067, 0.07431291043758392, 0.0046930210664868355, 0.0133329713717103, -0.052937258034944534, -0.03830663487315178, -0.015245278365910053, 0.08152259886264801, -0.04519904777407646, 0.04623575136065483, 0.043370045721530914, 0.010148964822292328, -0.0645449161529541, -0.07099669426679611, 0.0759059488773346, -0.0556403249502182, 0.05878303945064545, 0.07927361875772476, -0.02301216498017311, -0.05019822716712952, 0.006049532443284988, -0.07239890843629837, -0.04490414634346962, -0.06342747807502747, 0.08668903261423111, -0.009636631235480309, 0.060934461653232574, 0.049413081258535385, 0.04065655916929245, -0.027326399460434914, 0.06847488135099411, 0.039973847568035126, 0.07635576277971268, -0.057608623057603836, -0.046618133783340454, 0.08544213324785233, 0.021525789052248, 0.027568794786930084, 0.04886331036686897, 0.022616080939769745, 0.02062230184674263, -0.06029733270406723, 0.058524761348962784, 0.023424236103892326, 0.08422524482011795, -0.00040272960904985666, -0.017187468707561493, -0.03277727961540222, -0.1032390296459198, 0.021560024470090866, 0.005758596118539572, 0.04540325328707695, 0.04071968421339989, 0.04384833946824074, 0.0303959958255291, -0.07585863023996353, 0.08756281435489655, 0.08996311575174332, 0.05341409891843796, 0.006229017395526171, -0.02691478282213211, -0.05383448302745819, 0.06228429451584816, -0.026953577995300293, -0.045237280428409576, 0.017680341377854347, 0.06336325407028198, 0.0452096126973629, 0.05617596581578255, 0.0014773349976167083, -0.028272664174437523, 0.003665828611701727, 0.06085187941789627, -0.01748541370034218, 0.06292754411697388, 0.012856623157858849, 0.020722240209579468, 0.037358686327934265, -0.06542320549488068, 0.002062690444290638, -0.013441001065075397, 0.06627350300550461, 0.017650140449404716, 0.06960170716047287, -0.047647878527641296, -0.042484935373067856, 0.05670065060257912, 0.06333601474761963, 0.07386966794729233, 0.038081057369709015, -0.01389753445982933, -0.003090287558734417, -0.01584312506020069, 0.07529091089963913],
+ "VPCMPEQDrm":[-0.07375849783420563, 0.03529687225818634, 0.04015624150633812, 0.05722811445593834, 0.0028507455717772245, 0.019062861800193787, 0.03740788251161575, 0.058954354375600815, 0.03436160087585449, 0.014948460273444653, 0.022632550448179245, -0.01490099262446165, -0.104958675801754, -0.0014683268964290619, 0.03216452896595001, 0.09466005861759186, 0.03726118803024292, -0.02812807634472847, 0.08357909321784973, 0.006114272400736809, -0.05535650998353958, -0.0025444631464779377, 0.015630438923835754, 0.05721417814493179, -0.011795786209404469, 0.02834000624716282, -0.06462303549051285, 0.0462615080177784, -0.07023505866527557, 0.0674908384680748, 0.0542299784719944, -0.054904792457818985, 0.004543670918792486, 0.019060689955949783, -0.0286472886800766, 0.07427488267421722, -0.04168558493256569, -0.03884701430797577, -0.020015399903059006, 0.024317432194948196, -0.006261154543608427, 0.04667406901717186, 0.02303200215101242, 0.0368819423019886, -0.0563541017472744, -0.07769549638032913, 0.04186616465449333, -0.04364728927612305, -0.002720422111451626, -7.856122101657093e-05, -0.02692013420164585, -0.07359811663627625, 0.09370400011539459, -0.011052916757762432, 0.07875646650791168, 0.055063605308532715, 0.048574913293123245, -0.06009237468242645, -0.06930283457040787, -0.029535742476582527, -0.012587255798280239, -0.01976477913558483, -0.040916599333286285, 0.0969332829117775, -0.05803566053509712, 0.025758543983101845, 0.02982516400516033, -0.011617771349847317, -0.11078085005283356, -0.021870389580726624, -0.0791657492518425, -0.04400792345404625, -0.10213588923215866, 0.037139832973480225, 0.002440247917547822, -0.03898058459162712, -0.014039818197488785, 0.03628459572792053, -0.0040800366550683975, -0.01245209202170372, -0.04520928114652634, 0.015495678409934044, -0.037040021270513535, -0.014436743222177029, -0.05067075043916702, 0.06572651118040085, -0.050651293247938156, -0.0533827468752861, 0.011457112617790699, -0.007828688248991966, 0.013251285068690777, 0.05689435452222824, -0.06260854750871658, -0.11091805249452591, 0.026796111837029457, -0.03718094527721405, 0.011316604912281036, 0.05682210624217987, 0.06365038454532623, 0.09384675323963165],
+ "VPCMPEQDrr":[-0.013909496366977692, -0.03884793445467949, 0.007312903646379709, 0.022359153255820274, -0.018412306904792786, -0.06033136323094368, -0.008067998103797436, 0.02927062101662159, 0.009585483931005001, 0.03910605609416962, 0.010650990530848503, 0.01824158802628517, 0.01311376690864563, 0.024391507729887962, 0.0406329482793808, 0.02738308720290661, 0.007335464004427195, -0.023965902626514435, -0.06425262242555618, -0.002394359325990081, -0.0762726366519928, 0.02460390143096447, -0.038938071578741074, 0.017714984714984894, -0.008756227791309357, 0.014378261752426624, 0.026757223531603813, -0.03328905627131462, -0.09024272114038467, 0.03277904540300369, 0.010468829423189163, -0.005054917186498642, 0.049863044172525406, 0.029303524643182755, 0.029532188549637794, -0.09516723453998566, 0.06841812282800674, 0.073778435587883, 0.09436691552400589, 0.05999306961894035, -0.060734596103429794, -0.07389064133167267, 0.050219643861055374, -0.04882141202688217, 0.02293016016483307, -0.03304828330874443, 0.010974285192787647, -0.008070173673331738, -0.02585354819893837, 0.07968728989362717, -0.07974863797426224, 0.028187133371829987, 0.021900897845625877, 0.007307623978704214, -0.006466337013989687, -0.03810075670480728, 0.01846589334309101, -0.01053626462817192, -0.008929954841732979, 0.06142933666706085, -0.049439653754234314, 0.04032708704471588, 0.010727456770837307, -0.0019786423072218895, -0.0730530172586441, 0.0055372221395373344, -0.08026603609323502, -0.03612351045012474, -0.05942855775356293, -0.026636047288775444, 0.06570614129304886, 0.0373787023127079, 0.07541412860155106, -0.05522133782505989, -0.013913343660533428, 0.052310116589069366, 0.09679239243268967, 0.05797063931822777, -0.0214631799608469, 0.012594214640557766, -0.06384941190481186, 0.10769414901733398, 0.028851673007011414, 0.030002623796463013, -0.038057491183280945, -0.02893681265413761, -0.0326814204454422, 0.026347165927290916, 0.08472036570310593, 0.023136887699365616, -0.02698691003024578, 0.02278684638440609, -0.05458732321858406, 0.056187018752098083, -0.005391138605773449, -0.031784918159246445, -0.0038654503878206015, 0.04453180730342865, 0.006710454821586609, -0.055804912000894547],
+ "VPCMPEQQYrm":[0.016832849010825157, 0.07841602712869644, 0.015890808776021004, -0.016047753393650055, 0.006651850417256355, -0.06003843620419502, 0.028736842796206474, 0.04221923276782036, 0.04299298673868179, 0.03360799327492714, 0.02138829231262207, -0.03799919784069061, 0.058667875826358795, 0.0204082652926445, -0.025041166692972183, -0.04591280221939087, -0.04893945902585983, -0.06261035799980164, 0.019024882465600967, -0.03226962313055992, -0.005295070819556713, 0.06039433181285858, -0.03580489009618759, -0.08518033474683762, -0.09374672174453735, 0.009770284406840801, -0.014265604317188263, 0.08312320709228516, 0.08877648413181305, 0.02642243541777134, -0.02373070828616619, 0.015798434615135193, -0.06652893126010895, 0.0433184877038002, 0.031162764877080917, 0.09536141157150269, 0.011802124790847301, -0.052646081894636154, 0.034222546964883804, 0.06023373827338219, -0.0604112334549427, 0.05946528911590576, 0.022204920649528503, 0.01404555793851614, -0.018326526507735252, -0.02098473720252514, -0.062042172998189926, 0.05138242244720459, 0.05010513588786125, -0.018680328503251076, -0.012006066739559174, -0.014814415015280247, -0.011603712104260921, -0.06299378722906113, -0.05936357006430626, 0.07116055488586426, 0.046795327216386795, 0.03142762929201126, -0.03826593607664108, -0.07441845536231995, 0.008223788812756538, 0.020864518359303474, 0.016088999807834625, 0.06491376459598541, -0.0008271787082776427, -0.051778100430965424, -0.09242944419384003, 0.08056271821260452, -0.03141876682639122, -0.04485431686043739, 0.006733808200806379, -0.0593375563621521, -0.05847054719924927, 0.004440649878233671, -0.07572242617607117, 0.06831251829862595, 0.0033348994329571724, -0.04023412615060806, -0.02596890926361084, -0.04575261101126671, 0.09776033461093903, -0.004364983644336462, -0.05604061484336853, 0.02647559717297554, 0.039422616362571716, 0.021896475926041603, 0.058850131928920746, 0.0011194946710020304, -0.07929687947034836, -0.0024783003609627485, 0.0379931814968586, -0.09695767611265182, -0.024361003190279007, -0.07337699085474014, 0.031185798346996307, -0.03332819789648056, -0.00870260689407587, 0.0064049577340483665, 0.0037905131466686726, -0.08822277188301086],
+ "VPCMPEQQYrr":[0.06290028244256973, -0.031537365168333054, 0.028454015031456947, -0.11295615136623383, -0.06138233467936516, -0.01834196038544178, -0.03407975658774376, -0.047137390822172165, 0.0807112604379654, -0.010241658426821232, -0.09434223920106888, 0.021638620644807816, -0.05977308005094528, 0.008453357964754105, -0.015317115001380444, 0.044237732887268066, 0.004824118688702583, 0.003313695080578327, -0.020562641322612762, -0.008851787075400352, 0.025140635669231415, 0.02714361436665058, 0.023996740579605103, -0.029803892597556114, -0.07986811548471451, 0.028046080842614174, 0.0011325693922117352, -0.07573769241571426, 0.025543421506881714, -0.01949266716837883, -0.09965620189905167, 0.10549962520599365, 0.08948343992233276, 0.06207585707306862, -0.0284852497279644, -0.01796850562095642, -0.009040817618370056, -0.04368205741047859, 0.05930515006184578, -0.011033233255147934, 0.07438647001981735, 0.021990662440657616, 0.08964773267507553, 0.06310506910085678, -0.10501527786254883, -0.008698692545294762, 0.09272941201925278, 0.0037682405672967434, -0.009472747333347797, 0.01863289251923561, -0.04595252871513367, 0.03542175143957138, -0.004081507213413715, 0.022470815107226372, -0.06603165715932846, -0.024941615760326385, -0.001733573735691607, -0.054498255252838135, -0.011330579407513142, 0.032944321632385254, 0.008755083195865154, 0.08385203778743744, -0.04772009700536728, -0.05166255682706833, -0.04589955136179924, 0.025087786838412285, 0.07738447934389114, -0.10019171237945557, 0.05002514272928238, 0.03938961774110794, -0.09177594631910324, 0.09823187440633774, -0.036750830709934235, 0.023222222924232483, 0.061733245849609375, -0.07873019576072693, 0.053152985870838165, -0.055801939219236374, 0.011315763927996159, -0.03907062113285065, -0.015658874064683914, 0.000799493514932692, 0.05335678160190582, -0.058801017701625824, 0.029131338000297546, 0.07428929209709167, 0.03135212883353233, -0.11065089702606201, 0.018974818289279938, 0.019163958728313446, -0.10636276006698608, 0.07897067070007324, 0.06282135099172592, 0.04276323318481445, 0.029205847531557083, 0.021496403962373734, 0.06701356172561646, 0.007984822615981102, -0.0360373854637146, -0.05451139435172081],
+ "VPCMPEQQrm":[0.005222437437623739, 0.08655734360218048, 0.06200309097766876, -0.0009980384493246675, 0.0972716435790062, -0.021011024713516235, -0.04784468561410904, 0.035446763038635254, 0.03814636170864105, -0.010775242932140827, 0.04113016650080681, 0.09118419140577316, 0.05435294285416603, -0.0682736486196518, 0.0464586578309536, 0.008035916835069656, -0.0281969103962183, -0.05084635689854622, 0.03527357801795006, 0.01729079708456993, -0.013682576827704906, -0.061680302023887634, 0.06272707134485245, -0.07044586539268494, -0.013622961938381195, -0.0781141147017479, 0.08873703330755234, 0.007766169961541891, 0.03347552940249443, 0.0075708734802901745, 0.060012925416231155, -0.0025258129462599754, 0.07641880959272385, 0.04217703640460968, 0.08710908889770508, 0.002050875686109066, -0.034104812890291214, -0.08338034898042679, -0.022796299308538437, 0.023799259215593338, -0.013171601109206676, 0.011985382065176964, -0.05799166113138199, 0.02424410544335842, -0.09201879799365997, -0.042965177446603775, 0.10172905027866364, 0.0449603833258152, 0.01405313890427351, -0.08108730614185333, -0.01642528548836708, -0.0425713025033474, -0.00900918710976839, -0.02887999638915062, 0.03699668124318123, -0.011142916046082973, 0.005475860089063644, 0.020874856039881706, 0.09816785901784897, 0.04321468248963356, 0.06843862682580948, 0.0608254000544548, 0.05154035985469818, 0.02771308831870556, -0.07701943069696426, -0.011172080412507057, 0.01186433807015419, -0.01475316658616066, 0.0793926790356636, -0.012165844440460205, 0.031775712966918945, 0.09598290920257568, 0.09699639678001404, 0.07055309414863586, -0.10030075162649155, 0.03968336060643196, -0.06372558325529099, -0.004084242507815361, 0.02665732242166996, -0.008803858421742916, -0.059502676129341125, -0.030308913439512253, -0.0655173510313034, -0.04668799042701721, -0.01994260773062706, -0.08227968215942383, 0.04436931386590004, 0.06322909891605377, 0.0313231460750103, -0.06964188069105148, 0.025760753080248833, 0.031992316246032715, -0.03434596210718155, -0.036500707268714905, 0.011417882516980171, -0.06919164955615997, -0.09551448374986649, -0.0007790135568939149, 0.04569678381085396, -0.039005864411592484],
+ "VPCMPEQQrr":[-0.01691598631441593, -0.04930255934596062, -0.0554426908493042, 0.05039066821336746, -0.008347001858055592, 0.03417706489562988, 0.025624582543969154, 0.0746697336435318, 0.08687113225460052, -0.02739676460623741, -0.037179622799158096, 0.028787853196263313, -0.08478015661239624, 0.016859345138072968, -0.04419023171067238, -0.03088981844484806, -0.009956654161214828, 0.06792810559272766, 0.020499585196375847, 0.024578828364610672, 0.03883702680468559, -0.0354868620634079, -0.027212541550397873, -0.05686625465750694, -0.09353755414485931, 0.018649572506546974, -0.05164894089102745, -0.0078676613047719, -0.01803257316350937, 0.028466537594795227, 0.02159072272479534, -0.03276560828089714, 0.09363196045160294, 0.027478596195578575, -0.022501669824123383, 0.03317871689796448, -0.052296292036771774, -0.06292269378900528, -0.0869092345237732, -0.01889006607234478, -0.05355328321456909, -0.10332056879997253, -0.023174891248345375, 0.01735800690948963, 0.02531459555029869, 0.051975734531879425, -0.09117814898490906, -0.08928771317005157, -0.038250379264354706, -0.03396504744887352, -0.002036640653386712, 0.0471438504755497, 0.03216936066746712, 0.00962638296186924, -0.09661716222763062, 0.09768351912498474, -0.007659482769668102, 0.009128570556640625, -0.08649001270532608, 0.03786313533782959, -0.023599494248628616, -0.04260227084159851, 0.044932764023542404, -0.08997803926467896, 0.058839090168476105, 0.004260750487446785, 0.04526783898472786, -0.07548552006483078, 0.006167413201183081, 0.014337578788399696, 0.01706097461283207, 0.04046887159347534, 0.0026154587976634502, 0.006977569777518511, -0.08153987675905228, 0.03557597100734711, 0.03107467107474804, -0.08677101135253906, 0.0007385293720290065, 0.05748870596289635, 0.029485754668712616, 0.10238576680421829, 0.02621094137430191, -0.028994020074605942, 0.005019778851419687, -0.04005317762494087, 0.03943648561835289, -0.0063466657884418964, 0.04177636280655861, 0.050844792276620865, 0.07337947934865952, -0.011339165270328522, 0.08574273437261581, -0.060267411172389984, -0.00973473023623228, -0.02414911426603794, 0.0018800976686179638, -0.049734458327293396, -0.05612703040242195, 0.09314940124750137],
+ "VPCMPEQWYrr":[0.01795482076704502, -0.057782094925642014, -0.02961389720439911, -0.07471582293510437, -0.03516345098614693, -0.007319451775401831, 0.004533674102276564, -0.032739948481321335, 0.03637629747390747, 0.04455902427434921, -0.051999758929014206, -0.04705110192298889, -0.050116166472435, 0.012295294553041458, 0.047253116965293884, 0.04799354821443558, 0.09211225807666779, 0.02753351628780365, -0.07975225150585175, -0.0001807423250284046, -0.03947090730071068, -0.05484996363520622, 0.03024880588054657, -0.10690032690763474, -0.033185701817274094, -0.026255197823047638, -0.05978374928236008, 0.0037028694059699774, -0.07263421267271042, -0.06900589913129807, -0.005012943875044584, 0.04671197384595871, -0.04626687616109848, -0.015662843361496925, 0.05780047923326492, -0.01641876809298992, -0.03886540234088898, 0.04882168024778366, -0.06893482059240341, 0.02807067334651947, 0.06410902738571167, -0.02387559972703457, -0.0016931964782997966, -0.09242177754640579, -0.049958158284425735, -0.025822632014751434, -0.03117101453244686, 0.070916086435318, -0.04091041535139084, 0.11097582429647446, 0.029951825737953186, -0.06312273442745209, -0.09797386825084686, -0.052824538201093674, -0.019237369298934937, -0.05111880227923393, 0.09523670375347137, 0.02742265909910202, 0.06501363962888718, -0.05958188325166702, 0.035506196320056915, -0.015343750827014446, -0.030360477045178413, -0.03983641415834427, 0.009200352244079113, -0.06069973111152649, -0.09358049184083939, 0.0026192539371550083, 0.06632757931947708, 0.05234939977526665, 0.0215440783649683, -0.012155517935752869, -0.048491619527339935, -0.004232697654515505, -0.046501584351062775, 0.06860233843326569, -0.03284970298409462, 0.023769665509462357, 0.03860167786478996, 0.035901013761758804, 0.04591628164052963, 0.003296035109087825, -0.11108605563640594, -0.039732541888952255, -0.07069750130176544, 0.06330505013465881, -0.02707773819565773, -0.03561420738697052, 0.03128882870078087, -0.016308512538671494, -0.03288078308105469, 0.018142633140087128, 0.000243300455622375, -0.08712076395750046, -0.03352844715118408, -0.015740524977445602, -0.06993751972913742, -0.09248746931552887, 0.01386041846126318, -0.06271383911371231],
+ "VPCMPEQWrm":[-0.02028084546327591, -0.08502868562936783, -0.0046438295394182205, 0.02454177662730217, 0.08945367485284805, -0.08923052251338959, -0.03907979279756546, -0.0331915020942688, 0.0543709434568882, 0.06607428193092346, -0.006873209495097399, -0.03159479796886444, 0.00505377072840929, 0.001695131533779204, -0.008611147291958332, 0.050220996141433716, 0.05274978652596474, -0.003108452772721648, 0.09025013446807861, -0.06562096625566483, 0.10210605710744858, 0.07379021495580673, -0.02049730159342289, 0.06378643959760666, 0.08912051469087601, -0.05133018270134926, 0.025029078125953674, -0.06627324223518372, 0.0010314338142052293, -0.06265370547771454, -0.017104996368288994, -0.05727806314826012, -0.00822417251765728, 0.00442383112385869, 0.057742565870285034, 0.011679311282932758, 0.0575152263045311, -0.081175796687603, 0.07150901108980179, -0.07021011412143707, -0.032419122755527496, 0.02127733826637268, -0.059752050787210464, -0.02198890410363674, -0.10391398519277573, 0.04301610216498375, 0.06737973541021347, -0.0015014802338555455, -0.07194744050502777, -0.045203108340501785, 0.03830355033278465, 0.022460127249360085, 0.029506932944059372, -0.02603357657790184, 0.02361096628010273, 0.04554545879364014, -0.04003547877073288, 0.017895014956593513, 0.018739884719252586, -0.057428989559412, -0.0033513784874230623, 0.06598984450101852, 0.05925162136554718, -0.09110789000988007, -0.06192220374941826, -0.05678936839103699, 0.0166204534471035, -0.0522707924246788, 0.026649758219718933, -0.02891523949801922, 0.01084937620908022, 0.09198486804962158, -0.00968005321919918, 0.06919194757938385, -0.007822709158062935, -0.04744598641991615, 0.011738123372197151, -0.10536949336528778, 0.09579493850469589, -0.00391538068652153, 0.007288938853889704, 0.011438784189522266, -0.02746213786303997, 0.0007939487113617361, 0.0035182887222617865, 0.09701012074947357, 0.0955442264676094, 0.025569293648004532, 0.04459477588534355, 0.02305655926465988, 0.0028267421294003725, 0.05522295460104942, 0.07841403037309647, 0.06499966979026794, 0.03451903909444809, -0.028282305225729942, -0.008031083270907402, -0.03049163520336151, -0.03531324863433838, -0.00808995496481657],
+ "VPCMPEQWrr":[0.07377982884645462, -0.06256750226020813, 0.031153695657849312, -0.07945320010185242, 0.07710263878107071, -0.057598721235990524, -0.05317240208387375, -0.007519126869738102, 0.05701474845409393, 0.08441189676523209, 0.048237353563308716, -0.0695107951760292, -0.043191712349653244, -0.02050752379000187, -0.03289589285850525, 0.10386557132005692, -0.0590360127389431, -0.005988855846226215, 0.005499307531863451, 0.06690478324890137, 0.07442927360534668, -0.07936207205057144, 0.03148329630494118, -0.07019677013158798, 0.06847494095563889, 0.037541747093200684, 0.049304742366075516, -0.01737302355468273, 0.10016932338476181, -0.013957194983959198, 0.04449496045708656, 0.018803903833031654, -0.04779704660177231, 0.007404236122965813, 0.08558955788612366, -0.0038236696273088455, 0.06609591841697693, -0.004565296694636345, -0.028522416949272156, -0.016841651871800423, -0.09728837758302689, -0.03171176835894585, 0.09114600718021393, -0.02440662309527397, 0.039355386048555374, 0.008249432779848576, -0.08117000758647919, -0.09257135540246964, -0.06407345086336136, 0.02884392999112606, 0.027992332354187965, 0.007759179919958115, -0.0178521741181612, -0.03275467827916145, -0.025670701637864113, -0.016796154901385307, -0.02445463091135025, -0.053086064755916595, 0.06016562879085541, -0.06414329260587692, -0.0130967628210783, -0.01628074049949646, -0.04081211984157562, 0.05416814982891083, -0.043192241340875626, -0.01150789950042963, -0.04835914820432663, -0.032638560980558395, -0.0527070015668869, 0.03882816061377525, -0.0018268279964104295, 0.07674496620893478, 0.019762029871344566, 0.04510941356420517, 0.04226433113217354, -0.0036055250093340874, 0.039798855781555176, -0.053976405411958694, -0.021371940150856972, -0.04492245987057686, 0.02025195024907589, 0.02921030856668949, -0.03190146014094353, 0.008337024599313736, -0.014948864467442036, -0.06047936901450157, 0.009410565719008446, -0.06152116134762764, -0.01849476806819439, -0.04894822835922241, -0.06035184487700462, 0.03951320797204971, -0.024745726957917213, -0.05661366507411003, 0.07877308130264282, 0.014873014762997627, -0.09083857387304306, 0.021585658192634583, 0.01595059037208557, 0.019207680597901344],
+ "VPCMPGTBrr":[-0.0017833949532359838, 0.02014475129544735, -0.0017500543035566807, 0.07426220923662186, -0.04932460933923721, -0.02416694164276123, 0.05943303927779198, 0.06281562894582748, 0.039494000375270844, 0.007011376321315765, 0.010493246838450432, -0.03773137927055359, -0.00067310337908566, -0.05220247805118561, 0.005609945394098759, -0.06533592939376831, -0.09780680388212204, 0.08681875467300415, -0.07633023709058762, 0.006572892423719168, 0.019288718700408936, -0.005017563700675964, 0.07228656858205795, -0.028960859403014183, -0.06690298020839691, -0.01811489276587963, -0.017015334218740463, -0.044426050037145615, -0.001203163294121623, 0.04139192774891853, 0.07572250813245773, -0.03982771933078766, 0.004993228707462549, 0.006640060804784298, 0.03189249709248543, -0.055116940289735794, 0.06844519078731537, -0.04960239306092262, 0.05241408199071884, 0.04924715682864189, 0.06810390204191208, 0.02053540199995041, -0.024022145196795464, -0.06645599007606506, 0.017088836058974266, -0.031653907150030136, 0.07963958382606506, 0.028210105374455452, 0.04048008844256401, -0.027835479006171227, -0.0839758962392807, -0.007322665303945541, 0.019576622173190117, 0.05348421633243561, 0.018056480213999748, -0.05738768354058266, 0.02066841721534729, -0.011955806985497475, 0.035917725414037704, -0.012235692702233791, -0.03622937947511673, 0.01976945996284485, -0.023272553458809853, -0.009555633179843426, 0.01007670909166336, 0.024300746619701385, 0.05786227807402611, -0.016746921464800835, -0.034586675465106964, 0.07164644449949265, 0.007264033425599337, 0.024189775809645653, -0.05541491508483887, 0.07662763446569443, -0.07439056783914566, -0.03038044646382332, -0.09264877438545227, 0.02762502059340477, 0.03478360176086426, 0.0375533364713192, 0.005957014858722687, 0.038726333528757095, -0.01979784481227398, 0.09484723955392838, 0.05444055423140526, 0.02479078248143196, -0.06916585564613342, 0.018078919500112534, -0.022319994866847992, 0.06450603902339935, -0.01363734807819128, 0.04433102533221245, -0.005493681877851486, 0.09050443023443222, -0.07368572056293488, -0.031859904527664185, 0.04409577697515488, 0.01327810063958168, -0.02005506493151188, 0.016639340668916702],
+ "VPCMPGTDYrr":[-0.040134623646736145, -0.05923110246658325, 0.019593913108110428, 0.025799496099352837, -0.06958277523517609, -0.049350712448358536, 0.06535973399877548, -0.01399157289415598, -0.053669560700654984, -0.01491989940404892, 0.032917145639657974, -0.07014656811952591, -0.070530004799366, -0.01300889067351818, -0.002709596650674939, -0.09653512388467789, 0.03782001882791519, -0.08104807883501053, -0.014283827506005764, 0.08886587619781494, 0.0215408056974411, 0.005278828553855419, -0.02593563310801983, -0.02806274965405464, -0.0427323542535305, -0.06594299525022507, -0.014217231422662735, -0.08919863402843475, -0.08148441463708878, 0.04035719111561775, -0.09008949995040894, 0.017579570412635803, 0.07429211586713791, -0.07864213734865189, 0.018024735152721405, -0.048388902097940445, 0.01481031347066164, -0.06535790115594864, 0.02965865097939968, 0.09461840987205505, 0.038263361901044846, -0.056040383875370026, -0.039358120411634445, 0.0045831045135855675, 0.08338123559951782, 0.03377731516957283, 0.07796718180179596, 0.03662813454866409, 0.07968275249004364, -0.05645091086626053, -0.04215142875909805, -0.06201721727848053, 0.0006787446327507496, -0.07347578555345535, -0.021188903599977493, 0.058488890528678894, -0.08820647746324539, -0.07811249047517776, -0.056340575218200684, 0.00455161789432168, -0.07223869860172272, 0.005116250831633806, -0.03215097635984421, 0.069832444190979, -0.0645972192287445, 0.09521274268627167, 0.06892310827970505, 0.047675661742687225, 0.050391584634780884, 0.0017042525578290224, 0.030279770493507385, -0.03284936025738716, -0.032119203358888626, 0.014461200684309006, -0.02575354278087616, -0.06739738583564758, 0.08113262802362442, 0.013296868652105331, -0.07655665278434753, -0.03269476816058159, 0.028917700052261353, -0.05631832405924797, -0.03375707566738129, -0.052105776965618134, 0.08176939934492111, 0.00012682433589361608, -0.06398427486419678, -0.10422543436288834, 0.04043591767549515, -0.014196249656379223, 0.10216204077005386, -0.0162441935390234, 0.035413190722465515, 0.08612184226512909, -0.009408291429281235, 0.026064010336995125, -0.09028202295303345, 0.0992898941040039, -0.01650399900972843, 0.07150175422430038],
+ "VPCMPGTDrr":[-0.02421143464744091, 0.03922980651259422, 0.005848112981766462, -0.06093649938702583, -0.003619810566306114, -0.0033943122252821922, -0.02543402463197708, -0.019328270107507706, -0.00848899595439434, 0.001249114517122507, -0.009651686064898968, -0.03457462787628174, -0.06367004662752151, -0.05123181641101837, 0.0137899499386549, 0.09918102622032166, 0.012038960121572018, -0.012650629505515099, 0.0815846249461174, 0.04106193035840988, 0.042267970740795135, 0.058181282132864, 0.020842641592025757, 0.055272478610277176, -0.0858994871377945, -0.03177547827363014, -0.07804180681705475, -0.010843285359442234, 0.09444920718669891, -0.0034111030399799347, -0.05977490916848183, 0.08188620209693909, -0.05172403156757355, -0.09753070026636124, 0.06097578629851341, 0.011690015904605389, -0.0844234898686409, 0.06208954378962517, 0.04255889356136322, -0.05606330186128616, -0.07389577478170395, -0.10896414518356323, 0.06977441906929016, -0.04865238815546036, 0.056648124009370804, 0.0729859247803688, 0.03109273873269558, -0.04287503659725189, 0.03827296197414398, 0.041986823081970215, 0.044455889612436295, -0.09305203706026077, 0.06816977262496948, 0.015195406973361969, -0.0018196423770859838, -0.04839112609624863, -0.031192492693662643, -0.021653909236192703, 0.08971849828958511, -0.08620449900627136, -0.05558700114488602, -0.02689102478325367, -0.027755172923207283, 0.07569969445466995, -0.006642027758061886, 0.003233185037970543, 0.06394311040639877, -0.04705941304564476, -0.08981733024120331, 0.06476196646690369, 0.04869161918759346, -0.08202449232339859, 0.008352252654731274, -0.016056770458817482, -0.03183576464653015, 0.06764896214008331, 0.0480659157037735, -0.09092219173908234, 0.03852446749806404, 0.04060278832912445, -0.05102705955505371, -0.05335913598537445, 0.03607965260744095, 0.0664571151137352, -0.05675738677382469, -0.07290327548980713, 0.04749133065342903, -0.06997939944267273, 0.06144193187355995, -0.018192864954471588, 0.019641246646642685, 0.011519118212163448, -0.05877165496349335, 0.05649593845009804, -0.057777050882577896, 0.019626809284090996, -0.0021167888771742582, -0.04934152588248253, -0.03213891014456749, -0.037255458533763885],
+ "VPCMPGTQYrm":[0.05525200441479683, 0.06000542640686035, -0.027986422181129456, 0.04922177270054817, -0.11055981367826462, 0.008373293094336987, 0.014823601581156254, 0.04100970923900604, -0.008895869366824627, -0.06294268369674683, 0.05298799276351929, -0.09413787722587585, -0.023408586159348488, 0.03156445920467377, -0.03147782012820244, -0.02544308267533779, -0.06183363497257233, -0.07923174649477005, 0.10501416027545929, 0.010204154066741467, -0.05936736986041069, 0.0008671252871863544, -0.033903516829013824, -0.03563639894127846, 0.05632292106747627, -0.027465812861919403, 0.0015602607745677233, 0.005047662183642387, -0.09902234375476837, -0.07669626921415329, -0.057957973331213, 0.036811817437410355, -0.03245845437049866, -0.006790549959987402, 0.060397155582904816, -0.004007245413959026, 0.04875149205327034, 0.014843646436929703, 0.02610439993441105, 0.034157007932662964, 0.0005598088609986007, 0.004236788488924503, 0.006154569331556559, -0.019910909235477448, -0.04091416299343109, -0.06949146091938019, 0.019128143787384033, -0.03126763179898262, -0.04617594927549362, -0.06374145299196243, -0.007372729014605284, -0.10224855691194534, -0.04372391104698181, -0.08504390716552734, 0.010252702049911022, 0.008688492700457573, 0.05892321839928627, -0.021233713254332542, -0.017734436318278313, -0.042059525847435, 0.013140804134309292, 0.0506618432700634, -0.06731386482715607, -0.06779652088880539, -0.06803274154663086, 0.0550575889647007, -0.011142333038151264, -0.06936207413673401, 0.027934737503528595, 0.04228944331407547, -0.0361509770154953, 0.028500234708189964, -0.043413180857896805, 0.0164046473801136, -0.06137017905712128, -0.055054035037755966, -0.06545436382293701, -0.013899381272494793, 0.06493277102708817, 0.01898699626326561, -0.0070525952614843845, 0.018816843628883362, 0.0341598205268383, 0.08020775765180588, 0.017354710027575493, -0.08239995688199997, -0.027773417532444, 0.03475421294569969, -0.05739222839474678, 0.036979950964450836, 0.09027858823537827, -0.09362075477838516, -0.07179896533489227, -0.00584406079724431, 0.06564334034919739, 0.006373959593474865, -0.022867079824209213, -0.045546624809503555, -0.10312969237565994, -0.06692275404930115],
+ "VPCMPGTQYrr":[0.02464171312749386, 0.02599433809518814, 0.029891787096858025, -0.11319444328546524, -0.10617877542972565, 0.041838936507701874, -0.04070793464779854, 0.014099611900746822, -0.06397349387407303, 0.10416458547115326, 0.039554860442876816, -0.009490474127233028, 0.00957335066050291, 0.03291457146406174, -0.09910471737384796, 0.09147495776414871, 0.04935046657919884, -0.055096693336963654, -0.02021622844040394, -0.029668733477592468, -0.06143457069993019, -0.008298974484205246, 0.08937692642211914, -0.029525617137551308, 0.08037608861923218, 0.0017493210034444928, 0.009322496131062508, 0.020878029987215996, -0.02978259138762951, -0.031131234019994736, -0.08047587424516678, -0.07253935188055038, -0.03118692710995674, 0.027182331308722496, -0.011378694325685501, 0.05733763054013252, 0.10392963141202927, -0.01504040788859129, 0.004758075345307589, -0.042820096015930176, 0.02499478869140148, -0.00022237539815250784, 0.001724919187836349, 0.02350747026503086, 0.1261170208454132, -0.0073885610327124596, 0.1001572459936142, -0.019762355834245682, -0.010084682144224644, 0.04513363167643547, -0.015862219035625458, 0.012148037552833557, 0.024504777044057846, -0.04574381932616234, -0.042288973927497864, 0.007351761218160391, 0.010396741330623627, 0.028800733387470245, 0.039739176630973816, 0.051148127764463425, 0.031208856031298637, -0.028787128627300262, -0.001796018797904253, -0.013954651542007923, 0.09694230556488037, 0.013963717967271805, 0.081271693110466, 0.025473540648818016, 0.04409557953476906, 0.007320864591747522, 0.02808944322168827, -0.05803303048014641, -0.050722621381282806, 0.04768149554729462, -0.04845793545246124, 0.052289120852947235, 0.034000568091869354, 0.0797378346323967, 0.040527138859033585, -0.010041015222668648, -0.048806872218847275, -0.014924068935215473, -0.044351816177368164, 0.007713210303336382, 0.011449563317000866, -0.04412394389510155, 0.007578003685921431, -0.10779409855604172, 0.020708831027150154, -0.06716297566890717, 0.08635946363210678, 0.0064958385191857815, -0.0018033377127721906, 0.0423988401889801, -0.008678554557263851, 0.028054142370820045, 0.08930421620607376, 0.06181306764483452, 0.10632304847240448, -0.011238432489335537],
+ "VPCMPGTQrr":[0.05269108712673187, 0.006081686355173588, 0.03999162092804909, 0.044505730271339417, 0.09824030846357346, 0.09587087482213974, -0.05145137012004852, 0.04506227746605873, 0.05344904959201813, -0.06520957499742508, 0.00694229593500495, -0.0314585417509079, 0.06426486372947693, -0.0922650694847107, -0.08137901872396469, 0.024440133944153786, 0.011150706559419632, 0.007970873266458511, -0.05365607514977455, -0.06601554900407791, 0.09934672713279724, 0.044879794120788574, -0.014825490303337574, -0.06166939437389374, 0.08091775327920914, -0.03284479305148125, -0.028871959075331688, -0.02306322008371353, 0.05470147728919983, -0.03561075031757355, 0.0027526658959686756, 0.05322004109621048, 0.01358348224312067, -0.030315062031149864, 0.0316731296479702, -0.007710437290370464, 0.0417729914188385, 0.0028156887274235487, 0.02795160748064518, -0.013540735468268394, -0.010292685590684414, 0.05104430392384529, 0.028369780629873276, -0.07541944831609726, 0.006736184936016798, -0.050356488674879074, 0.013951457105576992, 0.07695487886667252, 0.02050258405506611, 0.042361386120319366, 0.05147771164774895, 0.08001429587602615, -0.030625030398368835, 0.05448998138308525, -0.010046867653727531, 0.004947923589497805, 0.0574769526720047, 0.02032354287803173, -0.08545053750276566, -0.03641975298523903, -0.0920572355389595, 0.0057153245434165, -0.0761290118098259, -0.006151555571705103, 0.07494839280843735, 0.06819053739309311, 0.09981835633516312, -0.019336631521582603, 0.04982074722647667, 0.05681443214416504, -0.04361794516444206, -0.04091520607471466, -0.0642002522945404, -0.011324498802423477, -0.04564177989959717, 0.01297923643141985, 0.04471628740429878, -0.036545515060424805, 0.03058236837387085, 0.039241112768650055, -0.08460906147956848, 0.06964367628097534, -0.10036926716566086, 0.10017184913158417, -0.023834848776459694, -0.062061309814453125, 0.07615311443805695, 0.016402769833803177, -0.003969864454120398, 0.05636216327548027, -0.037524763494729996, -0.09369553625583649, -0.0201275572180748, -0.0074216099455952644, 0.04211851581931114, 0.015348057262599468, 0.03927160054445267, -0.05568591132760048, 0.02816396951675415, -0.028113065287470818],
+ "VPERM":[-0.05784714221954346, -0.04960421472787857, 0.053011685609817505, -0.004351654555648565, 0.08298458904027939, -0.014183580875396729, -0.01703161932528019, 0.010565904900431633, 0.0819106251001358, 0.042144980281591415, -0.02939078025519848, 0.04521939530968666, 0.08907091617584229, -0.03768128156661987, 0.014382126741111279, -0.08649294823408127, 0.030996020883321762, 0.0465649738907814, 0.07804924994707108, 0.013494456186890602, 0.056972626596689224, -0.051398757845163345, 0.0018981656758114696, -0.0040528494864702225, 0.031282149255275726, 0.01798124983906746, 0.03715795651078224, -0.08383969217538834, 0.0011733529390767217, 0.04286512732505798, -0.04389946162700653, -0.005600051023066044, -0.04287207871675491, -0.05507318302989006, -0.012133411131799221, 0.07140420377254486, 0.01886255107820034, 0.07509322464466095, 0.07105124741792679, -0.048736970871686935, -0.022527527064085007, -0.027491290122270584, 0.01381696667522192, -0.00475412467494607, -0.04797365516424179, 0.0018031660001724958, 0.08674710243940353, -0.0351681150496006, 0.026010654866695404, 0.05431167781352997, -0.0147328469902277, 0.010683955624699593, -0.031660206615924835, -0.03774997591972351, -0.019440313801169395, 0.06419701129198074, 0.08716227859258652, -0.00958512257784605, 0.00817485898733139, 0.05092383548617363, -0.02262778952717781, 0.0043876273557543755, -0.06642571836709976, 0.046251535415649414, 0.046040117740631104, 0.037991881370544434, -0.030417218804359436, -0.012188916094601154, 0.05007103458046913, 0.0008463246049359441, 0.0054508293978869915, 0.012952692806720734, 0.051945723593235016, -0.06438539177179337, 0.020401641726493835, 0.034978464245796204, 0.023710953071713448, 0.016543995589017868, 0.01342446357011795, -0.014397858642041683, 0.046880487352609634, 0.06190075725317001, -0.06562499701976776, 0.05747358873486519, -0.054099731147289276, 0.019694456830620766, -0.061092499643564224, -0.06487880647182465, -0.0090256342664361, 0.012347102165222168, 0.005991729442030191, 0.005013156216591597, -0.01652354560792446, -0.0823851227760315, -0.006025303155183792, -0.07077193260192871, 0.012613344006240368, 0.08698374032974243, -0.07272513955831528, 0.00966092012822628],
+ "VPERMDYrm":[0.00894676148891449, -0.07637030631303787, 0.05545440688729286, 0.1101393848657608, 0.043746378272771835, -0.009009841829538345, -0.06676165759563446, -0.044991616159677505, 0.0710403323173523, -0.02931836247444153, -0.07116858661174774, -0.07645106315612793, 0.05639054253697395, 0.09393475204706192, -0.03316124528646469, 0.03604890778660774, 0.08464731276035309, 0.016558850184082985, -0.0641995295882225, 0.0033998279832303524, 0.07276008278131485, 0.05282453075051308, -0.056304603815078735, -0.0833330824971199, 0.07590965181589127, -0.03130977228283882, 0.003229747526347637, -0.020377598702907562, 0.024170497432351112, 0.023278428241610527, -0.06667999178171158, 0.07943838089704514, -0.05034712329506874, 0.10869085788726807, -0.031024187803268433, -0.03257185220718384, -0.02524126134812832, 0.017099259421229362, -0.040593426674604416, 0.08774275332689285, -0.04431946948170662, 0.013951009139418602, -0.050238437950611115, -0.018823442980647087, 0.0494072251021862, -0.05388667806982994, -0.06833819299936295, 0.058923833072185516, 0.0821574479341507, -0.08642629534006119, 0.008047245442867279, -0.03368386626243591, -0.011758601292967796, 0.04924231767654419, -0.030245041474699974, 0.017476394772529602, -0.025001714006066322, -0.013611843809485435, 0.028695905581116676, 0.09188170731067657, 0.033850640058517456, -0.018725059926509857, -0.07899022102355957, -0.008216907270252705, -0.009235184639692307, 0.09475012868642807, 0.03777569159865379, 0.07216088473796844, -0.0818668082356453, 0.034479882568120956, 0.030375640839338303, -0.008643532171845436, 0.020353157073259354, -0.056496813893318176, 0.02826591394841671, 0.06794478744268417, -0.03967060521245003, 0.02956523932516575, -0.01852254755795002, 0.027332205325365067, -0.03041517734527588, -0.0010293019004166126, -0.03648336976766586, 0.031623996794223785, -0.040633272379636765, -0.03195357695221901, 0.08699122816324234, 0.012060017324984074, 0.003369641723111272, 0.017903268337249756, 0.04418034851551056, -0.0026132159400731325, -0.025289718061685562, 0.0913812443614006, -0.06879307329654694, 0.03581392019987106, -0.0575895756483078, -0.04135407507419586, 0.02658248133957386, 0.07713264226913452],
+ "VPERMDYrr":[0.004112413618713617, 0.043115001171827316, 0.10124439746141434, -0.0037735754158347845, 0.05165908858180046, 0.021507158875465393, 0.0996309220790863, -0.03544756770133972, 0.017453549429774284, -0.011402140371501446, 0.04027833789587021, -0.029680609703063965, -0.07514927536249161, -0.0656452625989914, -0.026065446436405182, 0.018736207857728004, 0.011938510462641716, -0.02091393992304802, -0.028728026896715164, 0.038874655961990356, 0.02139723300933838, -0.11017242819070816, -0.02159280702471733, -0.031116528436541557, -0.042276911437511444, -0.055093083530664444, 0.03200828284025192, -0.004027191549539566, 0.01090819388628006, -0.026278551667928696, -0.03995653986930847, 0.01654980517923832, -0.06346128135919571, -0.08701915293931961, 0.0007230134797282517, 0.03295423462986946, 0.06744850426912308, 0.01637953519821167, -0.06969788670539856, 0.09358840435743332, 0.07645945996046066, 0.02784898318350315, 0.06979544460773468, 0.04719267040491104, -0.0640377625823021, -0.02523932047188282, 0.0708865150809288, -0.03707028552889824, 0.10052859783172607, -0.06644396483898163, -0.03888588771224022, 0.03144793584942818, 0.001414976199157536, -0.029903290793299675, -0.028450755402445793, 0.08878421783447266, 0.02035849541425705, -0.0439850389957428, 0.07661694288253784, -0.01086435280740261, 0.032530225813388824, -0.09322978556156158, 0.04141063615679741, -0.025398913770914078, 0.11566487699747086, -0.01583915203809738, 0.08041750639677048, -0.04309948906302452, 0.06331613659858704, -0.10797813534736633, -0.0916316881775856, 0.043391067534685135, -0.020783407613635063, -0.02772444859147072, 0.09011730551719666, 0.04296768456697464, -0.07352839410305023, -0.03658432513475418, 0.023588616400957108, 0.046673066914081573, -0.026830004528164864, 0.00946279801428318, -0.05928758904337883, -0.03216185048222542, -0.042051784694194794, -0.03757047280669212, -0.04688407480716705, 0.0018969897646456957, 0.030738428235054016, -0.09707337617874146, 0.007583078928291798, 0.039418477565050125, 0.01876489445567131, 0.08917398750782013, 0.06470116972923279, 0.08250720053911209, -0.0314188152551651, -0.07021018117666245, 0.0018643802031874657, 0.049578357487916946],
+ "VPERMILPDYri":[0.08503656089305878, 0.054006654769182205, -0.03235863521695137, -0.022557448595762253, -0.0232697706669569, -0.02140229009091854, 0.06067527458071709, -0.02868792973458767, 0.03588373586535454, -0.027659917250275612, -0.0080213388428092, 0.09172870963811874, 0.03428785130381584, -0.053170062601566315, 0.020799143239855766, -0.0393071249127388, 0.020024186000227928, 0.04586414992809296, 0.0443376861512661, 0.020165933296084404, -0.07371684163808823, 0.05280284211039543, 0.04599627107381821, -8.578776032663882e-05, -0.0377216562628746, 0.006765557918697596, -0.010097822174429893, -0.00448434054851532, 0.02539675496518612, -0.027443643659353256, 0.02369672991335392, 0.049199268221855164, 0.020731765776872635, 0.04268012195825577, 0.016357218846678734, -0.031034475192427635, 0.07312348484992981, -0.032046254724264145, 0.05176924169063568, 0.050005409866571426, -0.04336775094270706, -0.08185530453920364, -0.06564007699489594, -0.030878745019435883, 0.05492682382464409, 0.05890593305230141, -0.00999307818710804, 0.007928580045700073, 0.011218519881367683, 0.0028381969314068556, 0.008910653181374073, -0.016223764047026634, 0.08195138722658157, 0.001614278182387352, -0.01432750839740038, -0.04541437700390816, -0.005836849100887775, 0.0014990057097747922, 0.01971643976867199, -0.004680191166698933, 0.04715695232152939, 0.012328154407441616, -0.0034625232219696045, 0.0217470470815897, -0.009845715016126633, 0.018136994913220406, 0.02085333876311779, -0.005680263973772526, -0.004744885489344597, -0.07251560688018799, -0.08918028324842453, 0.03206225857138634, 0.04070959985256195, -0.038900043815374374, -0.004591154400259256, 0.061935361474752426, -0.02109888568520546, 0.10952410846948624, -0.1028679609298706, 0.10496746003627777, 0.07316145300865173, -0.04044297710061073, -0.051954060792922974, -0.05160278081893921, 0.005660707131028175, 0.057610757648944855, 0.09609085321426392, 0.06100192293524742, 0.011713872663676739, 0.015760798007249832, -0.021882837638258934, 0.0612664595246315, -0.03385574370622635, 0.05225290358066559, 0.10522910952568054, 0.062355175614356995, -0.028525957837700844, 0.018081501126289368, 0.03238673508167267, 0.00920373760163784],
+ "VPERMILPDmi":[0.03226002678275108, -0.08349305391311646, 0.03338336572051048, 0.09477703273296356, -0.0824144035577774, 0.022738926112651825, -0.00237853336147964, 0.07023750990629196, -0.0207233764231205, -0.02934880740940571, -0.009153335355222225, 0.012350506149232388, 0.03098755143582821, 0.015483617782592773, 0.006937209516763687, 0.03703845292329788, 0.023835238069295883, -0.105000339448452, 0.10083578526973724, 0.00928170420229435, -0.001913305139169097, -0.02665375918149948, -0.006513883825391531, -0.08315742760896683, 0.03945924714207649, 0.030190296471118927, 0.04827691987156868, -0.001153214368969202, 0.005636387038975954, -0.013265654444694519, 0.002072865143418312, -0.012429382652044296, 0.019492683932185173, 0.022208262234926224, -0.08644381165504456, -7.766540511511266e-05, -0.0005432800389826298, 0.012154117226600647, -0.03289273753762245, 0.05151822417974472, -0.0835312157869339, -0.02875349298119545, -0.08010193705558777, 0.011188876815140247, -0.07923707365989685, -0.052968841046094894, -0.036958854645490646, 0.013537822291254997, 0.07750939577817917, -0.025411158800125122, -0.009531956166028976, -0.08257025480270386, -0.06165445223450661, -0.04240470379590988, -0.03003121353685856, -0.0482146330177784, -0.049129895865917206, 0.0566934272646904, 0.025379611179232597, -0.01920226402580738, 0.018152562901377678, 0.0018621154595166445, -0.08439259976148605, 0.03895128518342972, -0.005257994402199984, -0.00014206978084985167, -0.023106111213564873, 0.10434449464082718, -0.013471552170813084, 0.03479554504156113, 0.02467912994325161, 0.07426346093416214, -0.09783201664686203, -0.09049583971500397, 0.02934017963707447, -0.051244914531707764, -0.04519248753786087, 0.04521818831562996, -0.07323125004768372, -0.005085119511932135, -0.03277871757745743, 0.043202437460422516, 0.022775545716285706, -0.036676421761512756, -0.07690127938985825, -0.02338363043963909, 0.03858401998877525, -0.01110011525452137, -0.08053932338953018, 0.05418788641691208, -0.09369585663080215, -0.0003425508039072156, 0.0182917769998312, 0.02251828834414482, -0.010754724964499474, -0.09286153316497803, 0.02564343996345997, -0.04721154272556305, 0.05364495515823364, -0.0017944821156561375],
+ "VPERMILPDri":[0.08672834932804108, 0.02605447731912136, -0.09032799303531647, -0.029966795817017555, -0.04313437640666962, -0.05219800025224686, 0.05909840762615204, 0.031502123922109604, -0.053477298468351364, -0.04260725528001785, -0.03158200532197952, 0.02678406424820423, -0.00446989294141531, 0.07573702186346054, -0.03375602141022682, -0.04350779205560684, 3.7859295844100416e-05, -0.000844417663756758, -0.0014985540183261037, -0.07175736874341965, 0.008449041284620762, 0.024931151419878006, 0.040991101413965225, 0.00021113920956850052, -0.019844049587845802, 0.03485345095396042, 0.1275089532136917, 0.000946128333453089, 0.09322620183229446, 0.07461678236722946, -0.025541217997670174, -0.08412778377532959, 0.09604606032371521, -0.060897164046764374, 0.08973134309053421, -0.07873542606830597, 0.02340361475944519, -0.01932479813694954, -0.016744831576943398, -0.009979970753192902, 0.052456095814704895, -0.020590640604496002, -0.047150205820798874, 0.025862382724881172, 0.010555720888078213, 0.11676638573408127, -0.012251428328454494, -0.03127052262425423, 0.025095246732234955, -0.10086522251367569, -0.005967209115624428, 0.058907557278871536, -0.039350830018520355, -0.01999419741332531, 0.048756252974271774, -0.03680211678147316, 0.00246052211150527, 0.11999243497848511, 0.06235499680042267, -0.011823078617453575, -0.0010706876637414098, -0.036144107580184937, -0.010799967683851719, -0.06426405161619186, -0.04350491613149643, -0.021668508648872375, 0.042051881551742554, 0.02489984594285488, -0.0012644152157008648, -0.037591129541397095, 0.019934041425585747, -0.1299145370721817, -0.02947661280632019, -0.04417561739683151, 0.12130772322416306, 0.028087297454476357, 0.07603242248296738, 0.0010114276083186269, -0.009079928509891033, 0.015845540910959244, 0.08925919979810715, 0.03734380379319191, 0.05284469574689865, 0.03743668273091316, 0.011849479749798775, -0.027149902656674385, -0.02140646241605282, 0.04736980423331261, 0.03150060027837753, 0.06850864738225937, 0.08235228806734085, -0.0068961819633841515, 0.03664737194776535, -0.03491686284542084, 0.01576295867562294, 0.08132057636976242, 0.07763008773326874, 0.0022105302195996046, -0.059187646955251694, -0.01057814434170723],
+ "VPERMILPSYmi":[0.014957252889871597, -0.0709383487701416, -0.0023200204595923424, 0.008779340423643589, -0.012339653447270393, -0.06877129524946213, -0.036881666630506516, 0.026754306629300117, 0.03294844925403595, 0.024691961705684662, -0.03489487245678902, 0.007507333066314459, 0.08823105692863464, 0.04776586964726448, -0.04863095283508301, 0.01399223692715168, -0.038982365280389786, 0.0330425389111042, -0.022152749821543694, -0.045677900314331055, -0.023327261209487915, 0.013514694757759571, 0.0192266833037138, 0.055405955761671066, -0.06663712114095688, 0.012256477028131485, 0.0037529899273067713, 0.006889993324875832, -0.04169267788529396, -0.09102627635002136, 0.06785282492637634, -0.0035665477626025677, -0.10377319902181625, -0.020275035873055458, -0.09429624676704407, 0.02834412455558777, 0.018165776506066322, -0.037953488528728485, 0.0470847450196743, 0.04409463703632355, 0.03220851719379425, -0.06327329576015472, 0.0464058443903923, -0.03627753630280495, -0.02478068880736828, -0.04908411577343941, 0.09366778284311295, -0.05973866954445839, -0.07163269072771072, -0.056435808539390564, -0.034407999366521835, 0.04795117303729057, 0.03431004658341408, 0.03536996245384216, -0.026522846892476082, 0.06730939447879791, 0.04555883631110191, 0.003115772269666195, -0.03470052778720856, -0.024132488295435905, -0.0890558660030365, -0.038950275629758835, 0.07063107192516327, 0.04157811775803566, -0.026952272281050682, -0.06400533020496368, 0.08876622468233109, 0.10574430972337723, 0.07303550839424133, 0.09451716393232346, -0.0016362337628379464, -0.00736297806724906, 0.09325884282588959, -0.014373233541846275, -0.0010579039808362722, -0.060386911034584045, 0.006228082347661257, 0.038687266409397125, -0.05532839521765709, -0.10760010778903961, -0.0034857874270528555, 0.026791255921125412, -0.022588199004530907, 0.06679477542638779, 0.0017058864468708634, -0.08298113197088242, -0.022456705570220947, -0.03247810900211334, 0.04224587604403496, 0.0004919369239360094, -0.0201224684715271, 0.05599408969283104, -0.018630504608154297, -0.04885180667042732, -0.052570659667253494, 0.06565308570861816, 0.01967625319957733, -0.06086147204041481, -0.012794447131454945, 0.02458883635699749],
+ "VPERMILPSYri":[-0.0330670140683651, 0.0940895825624466, -0.010327949188649654, 0.06794154644012451, -0.06979240477085114, -0.009018881246447563, -0.06457454711198807, 0.05948183685541153, 0.03909239172935486, -0.054760660976171494, -0.0034588249400258064, -0.07989408075809479, 0.028757018968462944, -0.08537684381008148, -0.009968689642846584, -0.015808172523975372, 0.058964937925338745, 0.06629133969545364, 0.02615159936249256, 0.009798247367143631, -0.003493403783068061, 0.0456625260412693, -0.028365490958094597, -0.042940396815538406, 0.042436037212610245, -0.0053824568167328835, 0.03612184897065163, -0.025973832234740257, -0.015138189308345318, -0.030617719516158104, 0.0012381701963022351, 0.04436301440000534, 0.014616400934755802, 0.0630292296409607, -0.002047190209850669, 0.05300315096974373, 0.01982840895652771, -0.026781082153320312, -0.02359776943922043, -0.043129440397024155, 0.0132445078343153, 0.0236547589302063, -0.033258501440286636, -0.06156527251005173, -0.01937849260866642, -0.07671596854925156, -0.06741384416818619, 0.0620083250105381, -0.05302893742918968, 0.05333614721894264, 0.04796665161848068, 0.027870802208781242, -0.001960702706128359, -0.0758284255862236, -0.06193011999130249, 0.05706163868308067, -0.017361676320433617, 0.05724316090345383, -0.09661699831485748, 0.07886314392089844, -0.041500844061374664, 0.007344001438468695, 0.0326523557305336, 0.060296542942523956, 0.014556318521499634, 0.04885684326291084, 0.046021029353141785, -0.04298345372080803, -0.016293974593281746, 0.020421916618943214, -0.005320758558809757, -0.019750351086258888, -0.06729394197463989, 0.038021620362997055, -0.04802248254418373, -0.046736184507608414, 0.002278093481436372, 0.005489539820700884, -0.05682329460978508, 0.0717492625117302, 0.04286149889230728, 0.09983363002538681, -0.0338132381439209, -0.009534008800983429, 0.04689215496182442, -0.059731606394052505, -0.010494615882635117, -0.06465860456228256, 0.04877147823572159, -0.01882239803671837, -0.019174525514245033, 0.021177297458052635, 0.029486030340194702, -0.030638262629508972, -0.07101641595363617, -0.007236415520310402, 0.024384193122386932, -0.019476955756545067, -0.0005504727596417069, 0.01365065947175026],
+ "VPERMILPSmi":[-0.05841616913676262, -0.0012640118366107345, -0.01828978955745697, 0.014267560094594955, 0.011805516667664051, -0.009309006854891777, -0.05400310829281807, -0.02460823766887188, 0.010715223848819733, 0.008488445542752743, 0.06090546026825905, 0.09004765003919601, 0.09020272642374039, -0.016277724876999855, -0.07435153424739838, 0.005681359674781561, -0.04622213542461395, -0.055834751576185226, -0.06655310094356537, -0.06511793285608292, -0.005989579018205404, -0.0026078850496560335, 0.04630141705274582, 0.042655326426029205, -0.02413051575422287, -0.01820017769932747, 0.01805415190756321, -0.051177978515625, -0.06736673414707184, -0.019768817350268364, -0.07670149207115173, -0.10644588619470596, 0.033102937042713165, 0.037079934030771255, 0.006057185120880604, -0.07384507358074188, -0.019749239087104797, 0.11111091822385788, -0.015568792819976807, -0.003340245923027396, -0.04759703204035759, 0.06469958275556564, 0.0485781729221344, -0.0221954807639122, 0.023646574467420578, -0.053604066371917725, -0.02807709015905857, 0.016335593536496162, 0.030294230207800865, -0.005442696623504162, -0.025979159399867058, 0.01490445900708437, -0.09183141589164734, -0.03159882873296738, 0.0484931543469429, -0.0257819052785635, -0.01357475109398365, 0.05109801143407822, -0.012449711561203003, -0.01197764091193676, -0.05866784229874611, -0.13072364032268524, 0.08073796331882477, 0.001187473419122398, -0.010230114683508873, 0.0798669382929802, -0.05309867486357689, 0.005428188480436802, -0.0167522132396698, -0.05316067859530449, -0.027179662138223648, -0.01632547378540039, 0.09830646961927414, 0.020060336217284203, -0.051675207912921906, -0.0751517117023468, -0.06019512191414833, 0.012363898567855358, -0.11528538167476654, -0.06632950156927109, 0.07362475246191025, -0.03391212224960327, 0.05885240435600281, -0.044757943600416183, 0.011494966223835945, -0.021485252305865288, -0.0019305612659081817, 0.06048694998025894, -0.028265630826354027, -0.0017349595436826348, 0.011628808453679085, 0.025620630010962486, 0.04608721658587456, -0.03863779455423355, -0.008193695917725563, -0.01531485840678215, 0.040925219655036926, 0.011858491227030754, -0.037136856466531754, -0.003517474513500929],
+ "VPERMILPSri":[0.007306283805519342, 0.02568727359175682, -0.02139263041317463, -0.010415349155664444, -0.029873153194785118, 0.051228005439043045, 0.09936431795358658, 0.10265294462442398, -0.020165709778666496, -0.008458522148430347, -0.01013297587633133, -0.008113219402730465, 0.08639556169509888, -0.03301627188920975, -0.04849483072757721, 0.06311380118131638, -0.02936108224093914, -0.09298808127641678, 0.07715649157762527, -0.02889033406972885, 0.02944505587220192, -0.04123979061841965, -0.04763928800821304, 0.029082270339131355, -0.10633781552314758, -0.04661347717046738, -0.036777179688215256, -0.030042283236980438, -0.018527986481785774, -0.022411411628127098, 0.05412246659398079, -0.031826846301555634, -0.08958780765533447, 0.06897677481174469, -0.027856439352035522, -0.03663816303014755, -0.10201138257980347, 0.08040881901979446, 0.01693507842719555, 0.0463106669485569, 0.03293637931346893, -0.0422881543636322, -0.006743788253515959, -0.08483757823705673, -0.00370121281594038, 0.09042234718799591, -0.11622312664985657, -0.01613096334040165, 0.07005225867033005, -0.04452359676361084, -0.03645951673388481, 0.019298963248729706, -0.08700412511825562, 0.07043593376874924, 0.10701587051153183, -0.07168935984373093, -0.05117204785346985, -0.09318054467439651, 0.07842278480529785, -0.016054455190896988, -0.08671768754720688, -0.019986914470791817, -0.011744092218577862, -0.045290879905223846, 0.04610510170459747, 0.14055225253105164, -0.06676643341779709, -0.027931680902838707, -0.003642069874331355, -0.026741206645965576, 0.030743295326828957, 0.0009838362457230687, 0.01844429224729538, -0.06827420741319656, -0.05666337162256241, -0.016375688835978508, -0.012342912144958973, 0.05448497459292412, -0.04503760486841202, 0.05328026041388512, 0.006633156444877386, 0.05013232305645943, 0.020351115614175797, -0.008764865808188915, -0.025098996236920357, -0.09025132656097412, 0.07881314307451248, 0.026163684204220772, -0.010887282900512218, -0.09524331241846085, 0.07470011711120605, -0.012817195616662502, 0.0029813635628670454, 0.032575711607933044, 0.04234777018427849, -0.01724814996123314, -0.02790556475520134, -0.023511681705713272, -0.02337087318301201, -0.010746082291007042],
+ "VPERMPDYmi":[-0.06477951258420944, -0.08551512658596039, 0.05813436582684517, -0.04813368618488312, 0.07285600155591965, -0.035010822117328644, 0.002628566464409232, -0.05075032636523247, 0.02993975207209587, -0.046512216329574585, -0.0056958310306072235, 0.051994483917951584, -0.0451517291367054, 0.04237695783376694, -0.02222057618200779, 0.024349743500351906, -0.037224989384412766, -0.07459809631109238, -0.045910052955150604, 0.01829029619693756, -0.0025571584701538086, 0.07503055036067963, -0.015094494447112083, -0.04396721348166466, 0.004106505773961544, -0.06761347502470016, 0.06554269790649414, -0.08394697308540344, -0.055265162140131, -0.039837829768657684, 0.10367828607559204, 0.058450616896152496, 0.02537800557911396, -0.060476746410131454, 0.08911466598510742, 0.0073957787826657295, -0.05286683142185211, -0.02633703127503395, 0.030048662796616554, -0.08877912163734436, 0.03348560258746147, 0.019390087574720383, -0.06516262143850327, 0.028715908527374268, -0.04392966255545616, -0.024664301425218582, -0.01640813797712326, 0.020860642194747925, -0.037221673876047134, -0.021269649267196655, 0.033325161784887314, 0.046033576130867004, -0.028131941333413124, -0.0396714061498642, 0.013482612557709217, 0.05164770409464836, -0.05368228256702423, -0.09428314119577408, 0.07014795392751694, -0.08379535377025604, 0.01984776183962822, 0.09681888669729233, 0.004650355316698551, -0.04839983582496643, 0.07080650329589844, 0.09640595316886902, 0.05934801697731018, -0.02086901292204857, -0.03285026550292969, 0.07943487912416458, -0.018316565081477165, 0.049612391740083694, 0.0043045878410339355, -0.05451981723308563, 0.01730608195066452, 0.03556070476770401, -0.04055996984243393, 0.025424480438232422, 0.0607922188937664, -0.05930563062429428, -0.05620352178812027, -0.06539647281169891, 0.060336869210004807, 0.013256454840302467, 0.11027772724628448, 0.05177682265639305, -0.042435724288225174, -0.06721162796020508, 0.014610878191888332, 0.00988024566322565, -0.03440830484032631, 0.020604804158210754, -0.036001238971948624, -0.06542254984378815, -0.06120564788579941, -0.05163509026169777, -0.005320324562489986, 0.05618485435843468, -0.010960549116134644, 0.018819324672222137],
+ "VPERMPDYri":[-0.06304474920034409, -0.0020052017644047737, 0.12381381541490555, 0.004266079515218735, -0.05759352073073387, -0.030304867774248123, -0.094988152384758, -0.005421818699687719, -0.024080632254481316, -0.04011465981602669, 0.053125470876693726, 0.03212669864296913, 0.035784762352705, -0.01555973757058382, -0.11144768446683884, -0.03251553699374199, -0.0067880949936807156, -0.00034359857090748847, -0.02045525424182415, 0.06362525373697281, 0.01187355536967516, -0.004205441568046808, 0.00029964157147333026, 0.005338768940418959, 0.00451119989156723, 0.0683860331773758, 0.01795061118900776, -0.0769677609205246, -0.048784688115119934, -0.07287640869617462, -0.04538929834961891, -0.011389808729290962, 0.017945388332009315, -0.018568387255072594, 0.0374964214861393, -0.07503262907266617, 0.08347611874341965, -0.023272307589650154, 0.04267429560422897, -0.08718220144510269, 0.03661620244383812, 0.06310470402240753, -0.09354598820209503, 0.004093513824045658, -0.004817117005586624, 0.10611750930547714, 0.011458521708846092, -0.028476156294345856, 0.024437066167593002, 0.019349467009305954, -0.08020375669002533, -0.029717739671468735, -0.017206961289048195, 0.013710272498428822, 0.005870289169251919, -0.02641146071255207, -0.026014821603894234, -0.05085624381899834, -0.04859486594796181, -0.014708492904901505, 0.008452154695987701, -0.023778090253472328, 0.1030682697892189, -0.060103029012680054, -0.07819923013448715, -0.008431391790509224, 0.0796784833073616, -0.07772128283977509, 0.029745126143097878, -0.07944691926240921, -0.012076149694621563, 0.0004921990330331028, -0.10766352713108063, 0.012861046940088272, 0.011941329576075077, 0.032189544290304184, 0.018363207578659058, -0.023088213056325912, -0.04447326809167862, -0.04507914185523987, -0.014842536300420761, -0.02175663784146309, 0.02447640709578991, -0.05997637286782265, 0.00818585604429245, 0.01645941101014614, -0.020800983533263206, 0.03206324577331543, 0.011086056008934975, -0.016754552721977234, 0.07514642924070358, -0.06076527014374733, 0.002147131599485874, -0.06525500863790512, 0.031282298266887665, 0.08188793808221817, -0.10783728957176208, -0.04912324994802475, -0.024099387228488922, 0.0060739219188690186],
+ "VPERMPSYrm":[-0.0019270165357738733, 0.031185906380414963, 0.001982553629204631, -0.09943688660860062, -0.01014829333871603, -0.02635243535041809, -0.0553818941116333, -0.11451171338558197, 0.05214959755539894, 0.061775535345077515, 0.02385004237294197, -0.02248723991215229, -0.026235802099108696, 0.06323223561048508, -0.037248753011226654, -0.07662703096866608, 0.0228032935410738, -0.00914075504988432, -0.04972277209162712, -0.010869728401303291, 0.030831418931484222, -0.008994648233056068, 0.020710419863462448, 0.011407879181206226, 0.07625509053468704, 0.0277938861399889, -0.02944784052670002, -0.05078543722629547, -0.0034665947314351797, 0.010731898248195648, -0.0167270265519619, -0.056151993572711945, -0.076638363301754, -0.006928549148142338, -0.03894639015197754, -0.04540568217635155, -0.049150723963975906, -0.004429155495017767, 0.01126756239682436, 0.05937036871910095, 0.02717125602066517, -0.0024231162387877703, -0.0064491452649235725, 0.07144204527139664, -0.017086772248148918, 0.03787738084793091, 0.07121511548757553, -0.04337630048394203, -0.061820659786462784, -0.011108877137303352, 0.015611644834280014, 0.04074348881840706, 0.06335531920194626, -0.045007526874542236, 0.11082475632429123, -0.08685647696256638, -0.023150483146309853, -0.002981953090056777, -0.021894417703151703, -0.05208069086074829, 0.004652009811252356, -0.059739477932453156, -0.015786999836564064, -0.03805552423000336, 0.05854065343737602, 0.03675699979066849, -0.03169303759932518, 0.008395439945161343, 0.024727990850806236, 0.022872650995850563, -0.0061163208447396755, -0.10753609985113144, -0.0559045784175396, -0.03486556559801102, -0.07589071244001389, 0.008948937058448792, -0.04862160235643387, -0.030388757586479187, -0.0015183460200205445, -0.01597636751830578, -0.02116536721587181, -0.007895233109593391, 0.07213755697011948, 0.04629410058259964, 0.02416083589196205, -0.0019711621571332216, -0.007622221019119024, -0.0805516317486763, -0.016237948089838028, 0.08503996580839157, 0.04901792109012604, 0.012334697879850864, -0.07964613288640976, -0.08793800324201584, 0.04170020669698715, 0.043484535068273544, 0.000518751738127321, 0.004461516160517931, 0.021584469825029373, 0.0071594733744859695],
+ "VPERMPSYrr":[-0.07568423449993134, 0.0006768899620510638, -0.03362633287906647, 0.05857672169804573, 0.018883265554904938, 0.09680644422769547, -0.061397600919008255, 0.038511816412210464, 0.0005398965440690517, -0.0001449276169296354, 0.05646742880344391, 0.0029904295224696398, 0.08406350761651993, 0.056453876197338104, 0.046964939683675766, 0.0030797612853348255, -0.07165928184986115, 0.07756392657756805, 0.0237641129642725, 0.012361356057226658, -0.02833026833832264, 0.032969824969768524, 0.009150456637144089, -0.008897361345589161, -0.020771127194166183, -0.05901898816227913, -0.004116194788366556, 0.011953515000641346, -0.03268486261367798, -0.06867263466119766, -0.06377533078193665, -0.02360803447663784, 0.051746491342782974, 0.007239878177642822, 0.040637191385030746, 0.0026560949627310038, -0.07280062884092331, -0.06755299121141434, 0.09840462356805801, 0.006002914626151323, 0.02924741990864277, 0.001543465070426464, -0.02368813194334507, 0.024720804765820503, 0.03137363865971565, 0.09375973790884018, 0.03590903803706169, 0.023618439212441444, 0.0005649423692375422, -0.04676368087530136, 0.0206704530864954, -0.04912351444363594, 0.05705098807811737, 0.0424002967774868, -0.03267132490873337, -0.03145502880215645, 0.00855088047683239, 0.011130276136100292, -0.016827987506985664, 0.037200070917606354, -0.0512121357023716, -0.07510704547166824, 0.018294557929039, 0.08328350633382797, 0.045760538429021835, -0.04156741499900818, 0.08863888680934906, 0.06631644070148468, -0.030390191823244095, 0.08506418764591217, -0.022934528067708015, -0.021303482353687286, 0.07015323638916016, 0.055591363459825516, -0.06142991781234741, 0.07319870591163635, -0.016113342717289925, -0.0720270574092865, 0.034167252480983734, -0.05348853021860123, 0.05898809805512428, -0.06980040669441223, 0.030136607587337494, 0.05857573077082634, 0.016817379742860794, 0.03153528645634651, -0.007237534504383802, -0.024357089772820473, 0.04803506284952164, -0.005177012179046869, -0.03296703100204468, -0.03425757959485054, 0.04657004773616791, 0.016006294637918472, -0.0015785059658810496, 0.05626453086733818, 0.031167516484856606, -0.07783666998147964, -0.1016056090593338, 0.007900342345237732],
+ "VPERMQYmi":[0.06264606863260269, -0.0030814798083156347, 0.025960218161344528, -0.11619559675455093, 0.028098849579691887, -0.07285089045763016, -0.019428841769695282, 0.04356638342142105, 0.0018350465688854456, 0.03240511193871498, -0.03978230059146881, -0.10597579926252365, 0.057586345821619034, -0.0033417127560824156, 0.06044473126530647, -0.08653361350297928, -0.02592460997402668, -0.04383525252342224, -0.008556527085602283, -0.06926679611206055, 0.05930979922413826, -0.05892693251371384, 0.03688415512442589, -0.07263972610235214, -0.04457399249076843, 0.0020909488666802645, -0.07607430964708328, -0.006564566399902105, -0.016788601875305176, 0.018239961937069893, 0.07305745780467987, -0.10198122262954712, -0.025884298607707024, -0.07750952243804932, -0.02464166097342968, 0.009700222872197628, -0.0931716039776802, -0.038361068814992905, -0.03989171236753464, -0.06121418625116348, 0.09302633255720139, -0.07940545678138733, 0.024589233100414276, -0.004144067410379648, -0.011402573436498642, -0.043409090489149094, -0.05777183547616005, 0.020380688831210136, 0.055008940398693085, 0.08565568178892136, 0.04798976331949234, -0.10183035582304001, 0.04707999527454376, -0.044112611562013626, -0.0007266225293278694, -0.10842560231685638, -0.08935954421758652, 0.058176085352897644, 0.046717919409275055, 0.007714468985795975, 0.037116099148988724, -0.014897437766194344, -0.04381856322288513, 0.05509903281927109, -0.01630432717502117, -0.09174952656030655, 0.08235681802034378, -0.02170238457620144, 0.011050249449908733, 0.0207541361451149, 0.010251588188111782, 0.04066834598779678, -0.09842398017644882, 0.034463923424482346, 0.050613000988960266, 0.037529345601797104, 0.050913918763399124, -0.06298067420721054, -0.03308719024062157, -0.008107890374958515, -0.04400026425719261, 0.060255032032728195, 0.08398374170064926, -0.0029469311702996492, 0.10571029037237167, 0.0010402315529063344, 0.020166724920272827, -0.03488417714834213, 0.08656960725784302, 0.00185107602737844, 0.0847189873456955, -0.0345965214073658, 0.06742320954799652, 0.06319469213485718, 0.047021135687828064, -0.0897863432765007, 0.08171338587999344, -0.022355325520038605, 0.015608925372362137, -0.056769777089357376],
+ "VPERMQYri":[-0.06562481820583344, 0.07364028692245483, -0.008944226428866386, 0.03993121162056923, 0.004689869005233049, -0.038021333515644073, 0.0021654500160366297, -0.10950497537851334, -0.013043159618973732, 0.03292515501379967, 0.06520681083202362, -0.00495130056515336, -0.02267145924270153, 0.028600510209798813, -0.02927929349243641, 0.07517898827791214, -0.017030222341418266, -0.08430309593677521, -0.02088458277285099, -0.0384645015001297, -0.02365816757082939, 0.00907717365771532, 0.0032429369166493416, 0.011096424423158169, 0.04748974367976189, -0.007031677290797234, -0.03642137348651886, -0.00596276018768549, 0.021158209070563316, 0.06092571094632149, -0.11112728714942932, -0.07768628001213074, 0.002435819711536169, 0.055294349789619446, 0.028998035937547684, -0.040917038917541504, -0.022423312067985535, -0.02950461581349373, -0.12107101082801819, -0.05649759620428085, -0.045938387513160706, 0.06881550699472427, -0.035193849354982376, -0.038612451404333115, 0.038830146193504333, -0.007308770902454853, 0.035782381892204285, -0.03279348835349083, -0.018198030069470406, 0.04872966557741165, -0.016976358368992805, -0.0006027090712450445, -0.08083119243383408, 0.031010057777166367, -0.02030940167605877, 0.022440927103161812, 0.000924105232115835, -0.05563272535800934, 0.0714292824268341, 0.05578244477510452, 0.04658885672688484, -0.0124945268034935, -0.11118301749229431, 0.08108178526163101, 0.024446146562695503, 0.05864996463060379, -0.05844540148973465, 0.006764536257833242, -0.0928502157330513, 0.014340661466121674, -0.07306017726659775, 0.11984018981456757, 0.008833329193294048, -0.038088906556367874, 0.02036982774734497, -0.014789651148021221, 0.022296342998743057, -0.025004461407661438, 0.008660518564283848, -0.014952939935028553, -0.0908183753490448, -0.050902459770441055, 0.010713981464505196, -0.02982809953391552, 0.043796002864837646, 0.018960898742079735, -0.004060274455696344, -0.12704117596149445, 0.006250433623790741, 0.010153522714972496, 0.06361627578735352, -0.044615488499403, 0.0032694984693080187, -0.06996802985668182, 0.023023994639515877, 0.03472030907869339, 0.053651370108127594, -0.008850718848407269, -0.08826814591884613, 0.026809748262166977],
+ "VPEXTRBrr":[-0.09301742911338806, 0.09000962227582932, -0.06882914155721664, 0.006356321275234222, 0.07403785735368729, 0.005616906099021435, 0.03377985581755638, -0.05239439383149147, 0.04881136119365692, -0.04475002735853195, -0.03634098917245865, -0.028223341330885887, 0.026068992912769318, -0.0049540880136191845, 0.013779141008853912, 0.042924635112285614, -0.0071466355584561825, -0.04911151900887489, -0.012643378227949142, 0.030198238790035248, -0.04357093200087547, 0.010727732442319393, 0.014204468578100204, -0.04853268340229988, -0.03794415667653084, 0.033164605498313904, 0.03256155550479889, 0.010214230045676231, 0.0700058564543724, 0.04577958211302757, 0.015510599128901958, 0.01640382595360279, 0.012078718282282352, 0.037279315292835236, -0.0694790631532669, 0.04507662355899811, 0.017115479335188866, -0.04432711377739906, 0.031102729961276054, 0.06525187939405441, -0.10024797916412354, 0.09388212114572525, -0.07446401566267014, -0.008302217349410057, -0.04283467307686806, 0.011947466060519218, 0.0318015031516552, -0.02258887328207493, 0.046665482223033905, -0.024694053456187248, -0.04343797639012337, -0.012212101370096207, 0.010622876696288586, 0.04795866459608078, 0.09842103719711304, -0.03430286422371864, 0.03778648376464844, -0.03654886409640312, -0.07593400031328201, 0.08225929737091064, 0.00313354074023664, -0.0076704081147909164, 0.013163561932742596, -0.046832554042339325, 0.039129555225372314, -0.024956466630101204, 0.024780720472335815, -0.01656736060976982, 0.025222189724445343, 0.06873010098934174, -0.04187227413058281, 0.0030971900559961796, -0.042410340160131454, -0.044035088270902634, -0.04500579461455345, 0.006798225454986095, -0.03320863097906113, 0.0607641227543354, 0.00304550607688725, -0.022644761949777603, -0.06373190134763718, -0.0897722989320755, -0.011282239109277725, 0.07916530966758728, 0.07930725812911987, 0.07061183452606201, 0.03908518701791763, -0.011222966015338898, -0.0394761897623539, 0.06718526035547256, 0.029512465000152588, 0.06691917777061462, 0.025648294016718864, 0.09523440152406693, -0.05384037271142006, -0.073085255920887, 0.00824047066271305, -0.00821063481271267, 0.002472005086019635, 0.04843101650476456],
+ "VPEXTRDmr":[-0.04530031234025955, 0.03352966904640198, 0.031479161232709885, 0.038510728627443314, -0.08979140222072601, -0.005811617244035006, 0.04605937749147415, 0.008112790994346142, 0.09832382947206497, -0.013481426984071732, 0.0054598404094576836, -0.04730518162250519, -0.014785585924983025, 0.004268603399395943, -0.014956755563616753, 0.014224331825971603, -0.10598555207252502, -0.06141246482729912, -0.0069687082432210445, 0.06293433904647827, -0.04675612226128578, 0.025385690852999687, 0.0010458157630637288, -0.01294265128672123, 0.00835757702589035, 0.07512018084526062, 0.05170571804046631, -0.005719701759517193, -0.10546402633190155, -0.10028408467769623, -0.08285965770483017, 0.06904098391532898, 0.0114436661824584, -0.024186475202441216, -0.10062283277511597, -0.034335266798734665, -0.03117174282670021, 0.06335913389921188, 0.04422300308942795, -0.004322780761867762, -0.09354739636182785, 0.012840853072702885, -0.08151297271251678, 0.01568463258445263, 0.04197310283780098, -0.0636264905333519, 0.0399455763399601, 0.07657822966575623, -0.022433049976825714, -0.1043771281838417, -0.016294872388243675, 0.06399545818567276, 0.02906959317624569, 0.025883954018354416, 0.022932715713977814, 0.02869795821607113, 0.08696839958429337, 0.055426500737667084, 0.013817720115184784, 0.016732627525925636, 0.044932395219802856, -0.02017963118851185, -0.0648207888007164, 0.0329124853014946, 0.00040497028385289013, 0.008760251104831696, -0.04020684212446213, -0.04907933995127678, -0.03476998209953308, 0.004163219593465328, -0.020065223798155785, 0.05942536145448685, -0.08527706563472748, 0.075511135160923, 0.009924624115228653, 0.024139469489455223, -0.070445217192173, -0.0040825107134878635, 0.004520343616604805, -0.02885100059211254, -0.04715854674577713, 0.0020206498447805643, 0.026750899851322174, -0.001622245297767222, -0.004897785373032093, 0.02265775576233864, 0.02946070022881031, -0.01553675439208746, 0.002686009742319584, -0.10971609503030777, -0.013058990240097046, -0.083439901471138, -0.022841734811663628, 0.07216886430978775, -0.07291942089796066, -0.0779324397444725, -0.06452617049217224, 0.058096639811992645, 0.03411931172013283, 0.05928368121385574],
+ "VPEXTRDrr":[-0.029502281919121742, 0.051164161413908005, 0.0292219128459692, 0.03560735285282135, 0.030870355665683746, 0.0287266094237566, 0.0024176205042749643, -0.13248714804649353, 0.024345025420188904, -0.02625373750925064, 0.16099588572978973, -0.048281218856573105, 0.029098430648446083, -0.07207216322422028, 0.08823433518409729, -0.008154469542205334, -0.03248266875743866, -0.009497802704572678, -0.016256961971521378, -0.054532743990421295, 0.0017097507370635867, 0.07769869267940521, 0.09317101538181305, 0.05640566721558571, -0.061167795211076736, -0.00858745351433754, -0.00015419245755765587, 0.044048555195331573, 0.06394951045513153, 0.01846284791827202, 0.0004022287321276963, 0.02203681506216526, 0.10226041078567505, -0.06046389415860176, 0.11751106381416321, -0.0776614174246788, 0.004784706514328718, 0.05351153761148453, 0.04828870669007301, 0.010411444120109081, -0.04587942361831665, -0.0825456753373146, -0.018370242789387703, -0.1019059270620346, -0.0021098351571708918, 0.055224206298589706, -0.026284148916602135, 3.445456241024658e-05, -0.03386826068162918, 0.024685481563210487, 0.0316026397049427, 0.0380883514881134, 0.08069494366645813, -0.014812389388680458, -0.038835182785987854, -0.0075648813508450985, -0.04329778254032135, -0.020890865474939346, 0.10448313504457474, -0.04614211246371269, -0.0017903151456266642, -0.03571005165576935, -0.10757513344287872, 0.03745786100625992, -0.0022610921878367662, -0.023558199405670166, -0.012619375251233578, 0.027052273973822594, 0.059536390006542206, 0.07723522931337357, -0.08328259736299515, 0.0007941082585602999, -0.018478840589523315, -0.016017897054553032, -0.050893284380435944, -0.01326450239866972, -0.09285593777894974, 0.0069090924225747585, -0.042900871485471725, -0.005311599466949701, 0.0664292648434639, -0.029563220217823982, 0.03250283747911453, 0.05556190386414528, 0.05806939676403999, 0.08436189591884613, -0.0008892671321518719, 0.01619342342019081, -0.01416053157299757, 0.0033338628709316254, -0.033025506883859634, 0.01637769117951393, -0.008884118869900703, -0.017978103831410408, -0.03805721923708916, 0.008888250216841698, 0.06649113446474075, 0.04236292466521263, -0.0219588503241539, 0.04034002125263214],
+ "VPEXTRQmr":[-0.02549722045660019, -0.08372361212968826, 0.024448923766613007, 0.10493045300245285, -0.06952410191297531, 0.07507656514644623, -0.06999985873699188, -0.06913646310567856, -0.03430195525288582, -0.0824006050825119, 0.0053128451108932495, 0.005484047811478376, -0.0005152732483111322, 0.027382900938391685, 0.015649503096938133, -0.08354196697473526, -0.08116235584020615, -0.02880267985165119, -0.013113399967551231, -0.09304848313331604, 0.032319121062755585, 0.02068101428449154, 0.03259200230240822, -0.04638248682022095, 0.001775510492734611, -0.0329156294465065, -0.05435629561543465, -0.04843265935778618, -0.001320481300354004, -0.059574950486421585, 0.0539628267288208, 0.0004724757163785398, 0.03914570435881615, 0.058343641459941864, -0.04652945697307587, 0.0812254324555397, -0.033486660569906235, -0.05510761961340904, -0.03775004670023918, 0.012031746096909046, -0.02147115021944046, -0.07605447620153427, -0.04894070327281952, 0.04377575218677521, -0.06250655651092529, 0.07131987810134888, -0.03958790376782417, -0.07021262496709824, 0.09327113628387451, -0.07055740058422089, -0.08659965544939041, 0.03294427692890167, 0.06352252513170242, 0.0705605149269104, -0.0044701602309942245, 0.024557236582040787, 0.03181769698858261, 0.003697924315929413, 0.027122724801301956, -0.09716257452964783, 0.0024662099312990904, -0.07907595485448837, -0.03635284677147865, 0.0261747557669878, 0.005930182058364153, -0.005982684437185526, 0.006889038719236851, -0.08155210316181183, 0.009429329074919224, -0.09921980649232864, 0.042798906564712524, 0.02229747548699379, -0.04787256196141243, 0.07381972670555115, -0.01477925106883049, 0.024609360843896866, -0.02341589517891407, -0.1024504005908966, 0.015092490240931511, -0.029880113899707794, 0.005436726845800877, 0.028847746551036835, 0.0573757141828537, 0.07800408452749252, -0.003909844905138016, -0.07504869252443314, -0.06753434985876083, -0.022023385390639305, -0.04320509731769562, 0.05168282240629196, 0.020554861053824425, -0.007205041125416756, 0.00021683910745196044, 0.045884471386671066, 0.04118373245000839, 0.019275642931461334, -0.023863933980464935, -0.015888329595327377, -0.09102267026901245, 0.08945907652378082],
+ "VPEXTRQrr":[-0.01672757789492607, 0.06709719449281693, -0.018678756430745125, 0.031378939747810364, -0.08725656569004059, -0.02561630867421627, -0.08969803154468536, 0.0009939068695530295, 0.011858057230710983, 4.195785368210636e-05, 0.025933636352419853, -0.07664229720830917, 0.05333219841122627, 0.07207461446523666, 0.008314513601362705, 0.03204229101538658, -0.06297407299280167, 0.06437791138887405, 0.056396666914224625, -0.03930212929844856, 0.052512142807245255, 0.029032964259386063, 0.0562271885573864, 0.02286951057612896, -0.07632887363433838, -0.06663744896650314, 0.06550614535808563, 0.058136772364377975, 0.04882148653268814, -0.03586002066731453, 0.006349538918584585, 0.05894867330789566, -0.042592987418174744, 0.011311952956020832, 0.019668007269501686, 0.06657925993204117, 0.01927945576608181, 0.06358858942985535, 0.07057468593120575, -0.05902261659502983, -0.05698290094733238, 0.08754238486289978, -0.053931135684251785, 0.01552694384008646, 0.013450701721012592, -0.024099377915263176, -0.02958213910460472, -0.0166653823107481, -0.05163876339793205, 0.055954281240701675, -0.025563355535268784, 0.032914962619543076, -0.09438557922840118, 0.050357893109321594, 0.02423616126179695, 0.03283055126667023, -0.08235998451709747, 0.07130590826272964, -0.011776053346693516, 0.09136058390140533, 0.06771718710660934, 0.014967228285968304, 0.05451417714357376, 0.022417651489377022, 0.046038366854190826, 0.04777321219444275, 0.02335953339934349, 0.017616331577301025, 0.018225539475679398, -0.07070405781269073, 0.059765223413705826, -0.0907590240240097, 0.0721888542175293, -0.07500005513429642, 0.022984405979514122, -0.06205964460968971, -0.022236857563257217, -0.08170095086097717, -0.008218374103307724, -0.008679844439029694, 0.046258535236120224, 0.052332013845443726, 0.008751627057790756, 0.029897386208176613, 0.020114656537771225, -0.011568893678486347, 0.019851872697472572, -0.040924251079559326, 0.00928578246384859, 0.09051341563463211, 0.006388881243765354, -0.06480588763952255, 0.03721969947218895, 0.098190076649189, 0.09675029665231705, 0.09651590883731842, 0.003907515201717615, 0.058851633220911026, 0.061358556151390076, -0.01474086008965969],
+ "VPEXTRWmr":[0.0762985348701477, -0.07625845074653625, 0.06822606921195984, 0.05065450817346573, -0.05287649482488632, -0.021911723539233208, -0.0032616585958749056, 0.034421008080244064, 0.09012597799301147, 0.0047738379798829556, -0.07835680991411209, 0.07151790708303452, -0.03466403856873512, -0.0532558374106884, 0.01442419271916151, 0.036160197108983994, 0.06551433354616165, 0.028189634904265404, 0.058929864317178726, 0.02930629625916481, 0.06829418241977692, 0.02848854474723339, 0.028219101950526237, -0.0698196068406105, 0.016171632334589958, 0.03151218593120575, 0.03333509713411331, 0.04203343763947487, 0.03991951048374176, -0.019320590421557426, -0.041735824197530746, 0.04513314738869667, 0.0016243854770436883, -0.008189735002815723, -0.03044808655977249, -0.013857254758477211, -0.07179957628250122, 0.04601447656750679, 0.038726650178432465, -0.010332724079489708, -0.015556246042251587, -0.006259697023779154, -0.0773567482829094, -0.03192909434437752, 0.0028101929929107428, -0.023785095661878586, 0.009443405084311962, 0.04307367652654648, -0.027143098413944244, 0.052180200815200806, -0.009127247147262096, -0.011775621213018894, 0.038775958120822906, -0.08158811181783676, 0.05505361035466194, 0.07615263015031815, -0.011888368986546993, -0.03824663907289505, 0.06014396995306015, -0.00937036145478487, -0.04975075274705887, 0.07398723810911179, -0.011962945573031902, 0.001797263976186514, 0.04598676413297653, 0.03208478167653084, 0.023265471681952477, -0.030424904078245163, -0.08401226997375488, 0.026398466899991035, 0.04357622191309929, -0.021940598264336586, 0.10069814324378967, 0.006967418827116489, 0.07129985094070435, 0.04964815825223923, -0.07299800962209702, -0.04150267317891121, 0.040334030985832214, 0.0025691851042211056, -0.02144101820886135, 0.004304225090891123, -0.051729340106248856, 0.010540704242885113, 0.013574008829891682, 0.023544562980532646, 0.03459221124649048, 0.08763103932142258, -0.009239297360181808, 0.04071991145610809, -0.04899617284536362, -0.09382745623588562, 0.03164637088775635, -0.041102658957242966, 0.07308122515678406, 0.03514079377055168, 0.017017191275954247, -0.0009024381870403886, -0.05607641860842705, 0.07719928026199341],
+ "VPEXTRWrr":[-0.0060310945846140385, 0.009901875630021095, 0.008451966568827629, 0.010944164358079433, 0.060244496911764145, -0.012294570915400982, -0.03578300029039383, -0.04048458859324455, 0.003185618668794632, -0.001524115214124322, 0.003963533788919449, 0.0075745596550405025, -0.08780520409345627, -0.027384918183088303, -0.05875712260603905, 0.06415622681379318, 0.038358766585588455, -0.010032899677753448, 0.04708203300833702, 0.044426266103982925, 0.00021077784185763448, 0.025214314460754395, -0.005829975940287113, -0.04290911927819252, 0.05730365961790085, -0.0477677583694458, -0.016220398247241974, 0.10186571627855301, 0.003952693194150925, 0.06437958031892776, 0.08648736029863358, 0.0038994222413748503, -0.007498379796743393, -0.10510605573654175, -0.017450328916311264, 0.02529621310532093, 0.04231322929263115, 0.012792950496077538, 0.04287542402744293, -0.007220578845590353, -0.0014748061075806618, 0.07441079616546631, 0.002208105521276593, -0.019373277202248573, -0.029720664024353027, 0.06099509447813034, 0.02703474462032318, -0.024244001135230064, 0.04073002189397812, -0.005923909600824118, -0.0519036203622818, -0.06206589937210083, 0.0950995534658432, -0.046306949108839035, -0.09526462852954865, -0.06572412699460983, 0.04442649334669113, -0.030527524650096893, -0.034074265509843826, -0.06498395651578903, 0.04609653353691101, -0.016857484355568886, 0.027257084846496582, 0.011865389533340931, -0.008128494024276733, -0.03562087565660477, -0.00893241073936224, 0.071871317923069, 0.038114309310913086, 0.061452023684978485, 0.004031460732221603, -0.0038555082865059376, -0.09207388758659363, 0.012969832867383957, 0.039822712540626526, -0.0385408028960228, -0.001480010338127613, 0.04770132526755333, 0.035505905747413635, 0.028866171836853027, 0.002920500934123993, -0.009424646385014057, -0.012078775092959404, -0.027756264433264732, -0.10426139831542969, 0.025190476328134537, -0.032369110733270645, -0.011029407382011414, -0.01980256661772728, 0.00513274222612381, -0.05602250620722771, 0.03288503736257553, -0.06069695204496384, -0.07584954053163528, -0.020477760583162308, 0.020021192729473114, 0.00825495459139347, 0.03579148277640343, 0.10220608115196228, 0.04778629541397095],
+ "VPINSRBrm":[0.06948164850473404, -0.09061668068170547, 0.024563634768128395, 0.031142612919211388, -0.04226823151111603, 0.051077283918857574, 0.0798218846321106, 0.017277102917432785, 0.03863540291786194, 0.04623854532837868, 0.04981965944170952, -0.018801860511302948, -0.055130086839199066, -0.05032798647880554, -0.039366714656353, 0.05589572712779045, 0.04556632414460182, 0.04690980911254883, 0.05154465511441231, 0.050773680210113525, -0.012520214542746544, -0.07132667303085327, 0.03626521676778793, 0.009922505356371403, -0.01958358846604824, 0.0617145411670208, 0.06816109269857407, 0.003257051343098283, -0.021146539598703384, -0.03759940341114998, -0.00047556450590491295, 0.028097424656152725, -0.03034801594913006, -0.07234406471252441, -0.05862729996442795, -0.0020857166964560747, 0.07835035026073456, 0.05004281550645828, 0.027829965576529503, 0.015407062135636806, -0.02662588469684124, 0.02047882229089737, 0.03783946856856346, 0.00855936761945486, -0.05120228976011276, -0.0475776307284832, 0.030144140124320984, -0.0558197982609272, -0.06123092770576477, -0.03067075088620186, -0.03836948797106743, -0.025349808856844902, -0.025296736508607864, -0.010955565609037876, -0.01320456899702549, 0.0021929279901087284, -0.04035038501024246, 0.024271929636597633, 0.005912624299526215, -0.01776990108191967, -0.008065757341682911, 0.025889409705996513, 0.0649881511926651, 0.10604478418827057, 0.012136600911617279, 0.010065296664834023, 0.09962014108896255, 0.00036003379500471056, 0.037514857947826385, 0.0032868231646716595, 0.012786522507667542, -0.03319309279322624, 0.05821193382143974, 0.0043721492402255535, 0.04150934889912605, -0.03530753031373024, -0.024550803005695343, -0.04416101425886154, -0.02615213207900524, -0.09227538853883743, -0.02458137273788452, -0.06148060783743858, -0.0135005759075284, 0.0909792110323906, 0.025289643555879593, -0.014192224480211735, -0.018142055720090866, -0.02786051295697689, 0.021487213671207428, -0.004798953887075186, 0.014385628513991833, -0.054137177765369415, -0.06572176516056061, -0.0740831270813942, -0.015446930192410946, -0.030091380700469017, 0.04847131669521332, 0.08770780265331268, 0.07708526402711868, 0.0441579706966877],
+ "VPINSRBrr":[0.06361710280179977, 0.03659125417470932, -0.05288508161902428, 0.04022024944424629, -0.10092276334762573, -0.011098083108663559, 0.013597643002867699, 0.08057034015655518, -0.061443861573934555, 0.04680687561631203, 0.004005073104053736, 0.017270173877477646, 0.038949742913246155, 0.030938200652599335, 0.022398019209504128, 0.04273414611816406, -0.033972419798374176, -0.07041903585195541, 0.07782838493585587, -0.010380727238953114, 0.06644012778997421, -0.008641347289085388, 0.08210842311382294, 0.012210972607135773, 0.0686868205666542, -0.04381563514471054, -0.016233958303928375, 0.0043896036222577095, -0.047274213284254074, -0.04856227710843086, -0.058060742914676666, -0.060842711478471756, -0.016386421397328377, 0.021377405151724815, 0.005799988284707069, 0.04189923033118248, -0.0268007330596447, -0.053196512162685394, 0.04054485261440277, -0.035249266773462296, -0.05668303370475769, 0.0795728787779808, -0.04648857191205025, 0.015589945949614048, -0.06200091540813446, 0.01415978278964758, 0.06514719873666763, 0.07254862785339355, -0.0010278112022206187, -0.015132841654121876, -0.06459172815084457, -0.07161525636911392, -0.07294067740440369, -0.08624331653118134, 0.017086032778024673, 0.017347007989883423, -0.057936154305934906, -0.07736758887767792, 0.011837414465844631, 0.09533355385065079, -0.01365048810839653, -0.019940968602895737, 0.05405353382229805, -0.029137684032320976, 0.019196806475520134, 0.033819448202848434, -0.02730231173336506, -0.009095236659049988, 0.06592614203691483, 0.0397883839905262, -0.028818506747484207, 0.053366027772426605, -0.048200592398643494, 0.0031167257111519575, 0.04390996694564819, -0.009186244569718838, 0.0618131086230278, 0.02911505103111267, 0.047493744641542435, 0.06174825131893158, 6.557756569236517e-05, 0.040848515927791595, 0.09594642370939255, -0.09636487811803818, 0.02513171173632145, 0.04868073761463165, 0.03757975250482559, -0.029151469469070435, -0.008252430707216263, -0.055754806846380234, -0.021573679521679878, -0.0023668634239584208, -0.052578940987586975, 0.051773715764284134, 0.08503059297800064, 0.02982993982732296, -0.032440897077322006, 0.09911660104990005, -0.045516349375247955, -0.06436315178871155],
+ "VPINSRDrm":[-0.06429634988307953, -0.05782194435596466, 0.05768734961748123, -0.05745108798146248, 0.022226985543966293, -0.04427541047334671, 8.313837315654382e-05, 0.0514354333281517, 0.09930101782083511, 0.03315948322415352, -0.011984478682279587, -0.010523722507059574, -0.07397762686014175, -0.09923256933689117, -0.05441858991980553, -0.026301417499780655, -0.022667517885565758, 0.02225256897509098, 0.024447649717330933, 0.004900528583675623, 0.10537265241146088, 0.018481174483895302, 0.037434522062540054, 0.05736808106303215, 0.027547791600227356, -0.08034447580575943, 0.042923182249069214, 0.03741054609417915, 0.07720150798559189, -0.035785824060440063, 0.05356400087475777, 0.003956270404160023, -0.0493939109146595, 0.0005575160030275583, -0.050111860036849976, 0.04703091084957123, -0.030613446608185768, -0.028540153056383133, -0.003437792882323265, -0.020533312112092972, 0.10217252373695374, -0.04084233194589615, -0.06863340735435486, -0.04489151015877724, -0.05534672364592552, -0.007270515896379948, -0.010844923555850983, 0.06186220422387123, 0.002338381949812174, -0.00613327044993639, -0.05806584283709526, 0.021418003365397453, 0.10263849049806595, 0.07949213683605194, 0.009355174377560616, -0.06514734774827957, 0.042919620871543884, 0.03634486347436905, -0.010432911105453968, 0.03670984134078026, 0.06942000240087509, -0.018658684566617012, -0.03855154290795326, -0.024883847683668137, -0.046910397708415985, -0.01403567474335432, -0.022714726626873016, 0.05966959521174431, 0.03155830502510071, -0.005585986189544201, -0.07631807029247284, 0.007710814476013184, 0.0748191550374031, 0.09402577579021454, -0.07652883976697922, -0.030043859034776688, -0.007522032130509615, -0.08820608258247375, 0.09750255942344666, -0.06949635595083237, -0.0758371651172638, 0.008409639820456505, 0.024627335369586945, 0.051569562405347824, 0.07232445478439331, 0.019420193508267403, 0.08374602347612381, 0.011861727572977543, 0.07505807280540466, -0.012893244624137878, 0.08094435185194016, 0.03483887016773224, 0.038925766944885254, -0.03393556550145149, 0.09394855797290802, 0.029085056856274605, -0.032458726316690445, -0.07801970839500427, -0.020146209746599197, 0.050400689244270325],
+ "VPINSRDrr":[-0.06371645629405975, -0.025080185383558273, -0.039961278438568115, 0.007584958802908659, -0.006195808760821819, -0.008240500465035439, 0.06185295432806015, -0.007461883127689362, 0.0722697302699089, -0.04301127418875694, 0.015265483409166336, -0.0907442569732666, -0.055514153093099594, -0.0150340236723423, -0.07736057788133621, 0.09108056128025055, 0.05342957749962807, -0.04914701357483864, -0.03419024124741554, -0.08224178105592728, 0.04753686860203743, 0.04301474988460541, 0.046261440962553024, -0.05469343438744545, -0.10833701491355896, -0.007479884196072817, -0.03881696239113808, -0.017577840015292168, -0.024121183902025223, -0.038953930139541626, -0.042562197893857956, 0.03461890295147896, -0.04157823324203491, -0.07204228639602661, 0.010694252327084541, -0.01759716309607029, 0.07165456563234329, 0.04330488294363022, 0.07669616490602493, 0.07336030155420303, -0.0813756138086319, -0.03491678461432457, -0.02892882190644741, -0.006746483035385609, 0.005844850558787584, 0.03915472701191902, -0.06722656637430191, -0.04337838664650917, -0.09040394425392151, -0.011836254969239235, -0.020775461569428444, -0.027978666126728058, 0.05953120440244675, 0.02164594456553459, -0.022999268025159836, -0.06969679147005081, -0.07341250777244568, 0.04031936451792717, -0.056148920208215714, -0.02392537333071232, 0.01232309639453888, 0.01440943032503128, -0.0074914321303367615, 0.017912451177835464, -0.033703502267599106, 0.025968601927161217, -0.016210172325372696, 0.028014836832880974, 0.05015777051448822, 0.02663724683225155, 0.0065519982017576694, 0.04366344213485718, 0.08691097050905228, -0.059848811477422714, -0.01095881499350071, 0.008668946102261543, 0.0440831296145916, -0.04874546080827713, -0.096756711602211, 0.040678683668375015, 0.01788710616528988, -0.046821270138025284, 0.023242665454745293, -0.013658358715474606, -0.07116576284170151, 0.0020816077012568712, 0.03444293886423111, -0.002200040966272354, 0.015290321782231331, 0.01802096888422966, 0.0955381765961647, -0.02167227491736412, -0.035799622535705566, 0.028950849547982216, 0.08173009008169174, 0.04646753892302513, -0.05541619658470154, -0.0053918673656880856, 0.04985707625746727, -0.018042059615254402],
+ "VPINSRQrm":[-0.043417997658252716, -0.058855537325143814, -0.04830743744969368, 0.06081750616431236, -0.02565024606883526, 0.04474085569381714, -0.01113670039921999, 0.04927758872509003, -0.012978637591004372, 0.04400083050131798, 0.04755886644124985, -0.024182088673114777, 0.017833350226283073, -0.059046611189842224, 0.04801003634929657, 0.021921878680586815, -0.025345413014292717, -0.07356686890125275, -0.0010013931896537542, -0.1062365472316742, -0.0077779702842235565, -0.04630185663700104, 0.002003359142690897, -0.04091890901327133, -0.06882819533348083, 0.016331685706973076, -0.057785920798778534, 0.02101966366171837, -0.048863694071769714, 0.021502893418073654, 0.02198847010731697, 0.03675476461648941, 0.006970847491174936, -0.02238098718225956, 0.007128897588700056, 0.06944408267736435, -0.047515638172626495, 0.08138056844472885, -0.04904373362660408, 0.03454475477337837, 0.02735901065170765, 0.058667998760938644, -0.046503759920597076, -0.03080574795603752, 0.02270117774605751, -0.05193069577217102, -0.03722177445888519, 0.02450452372431755, 0.003962941933423281, -0.07058712840080261, -0.04664113000035286, 0.04828840121626854, 0.08034276962280273, -0.0209621824324131, 0.0005250908434391022, -0.05611494928598404, 0.03636058419942856, 0.0076406956650316715, -0.03517777845263481, 0.011862975545227528, -0.04282355681061745, 0.056243542581796646, 0.07085975259542465, 0.05986906215548515, 0.033961497247219086, 0.07155574858188629, 0.017744220793247223, -0.00028874535928480327, -0.010725054889917374, 0.007294671609997749, 0.023506348952651024, -0.09193699061870575, 0.06523288041353226, 0.04587458819150925, -0.08965256065130234, -0.08276482671499252, 0.014584354124963284, -0.05390273779630661, -0.05525986850261688, -0.06834229081869125, -0.05213606357574463, 0.10124219208955765, -0.021433690562844276, -0.04670776054263115, 0.053630296140909195, 0.0010132597526535392, 0.0002624440239742398, -0.009742858819663525, -0.04428684711456299, 0.09317123144865036, 0.0704827830195427, 0.03505599498748779, 0.07314592599868774, 0.06010877713561058, 0.013290859758853912, -0.023757783696055412, -0.03772403672337532, -0.0288259144872427, -0.022730151191353798, -0.07956642657518387],
+ "VPINSRQrr":[-0.04782036319375038, 0.013900015503168106, 0.08515454828739166, 0.038396161049604416, -0.013984511606395245, 0.051043469458818436, 0.0037507088854908943, 0.018889769911766052, -0.04702846333384514, -0.05043235048651695, -0.033497828990221024, -0.035161443054676056, 0.03787323087453842, -0.09384826570749283, -0.03708403557538986, -0.02656630240380764, -0.04232267662882805, -0.03917834907770157, -0.07901909947395325, -0.08797158300876617, 0.03905403986573219, 0.07488376647233963, 0.029151417315006256, -0.0009431232465431094, -0.03152665123343468, 0.0025628372095525265, -0.11100209504365921, 0.06398964673280716, 0.02653822861611843, 0.0529540590941906, 0.050609562546014786, -0.0010503629455342889, -0.0010378819424659014, -0.04924106225371361, 0.062327802181243896, 0.0712575912475586, 0.030933380126953125, 0.09954903274774551, 0.10006774216890335, -0.03292106091976166, -0.05808345973491669, -0.038946397602558136, 0.03835968300700188, -0.1095929965376854, 0.07235628366470337, -0.0374285988509655, 0.08819693326950073, -0.019566815346479416, 0.09191743284463882, 0.02575663849711418, -0.038028568029403687, -0.05925048515200615, 0.07509035617113113, -0.0415894091129303, -0.036106500774621964, 0.04813424497842789, -0.015442747622728348, -0.01584615930914879, 0.08503837883472443, 0.01109988521784544, -0.0977720096707344, 0.07772902399301529, 0.060290075838565826, -0.09912021458148956, -0.015602055005729198, 0.010460385121405125, 0.05320983752608299, -0.0483134388923645, -0.05007071793079376, -0.06967175006866455, -0.04739147424697876, 0.01284055132418871, 0.05181698873639107, 0.02040928415954113, 0.10357508808374405, 0.09130237251520157, -0.014077682979404926, -0.05056857690215111, 0.06556186079978943, 0.06046159192919731, -0.0018498549470677972, 0.022317998111248016, -0.04686303064227104, 0.0033858967944979668, 0.0555785596370697, 0.10778313875198364, -0.009246395900845528, 0.02993199974298477, 0.018631724640727043, 0.006687632296234369, 0.04238862171769142, -0.0922432392835617, 0.013783939182758331, 0.0696210190653801, 0.08057333528995514, 0.1133841723203659, 0.028097402304410934, 0.10633833706378937, -0.028162455186247826, 0.06507789343595505],
+ "VPINSRWrm":[-0.00546642579138279, -0.0694933608174324, -0.0016224357532337308, -0.024076590314507484, -0.0526355616748333, 0.03707357496023178, 0.06138807535171509, -0.04406927898526192, -0.03389326483011246, -0.053817953914403915, 0.029427755624055862, -0.03804659843444824, -0.04694543406367302, 0.0013043368235230446, 0.01670280285179615, 0.0005244754138402641, 0.05809401348233223, -0.0602751187980175, 0.041651420295238495, 0.02654924802482128, -0.06694840639829636, 0.020889895036816597, 0.012186390347778797, -0.0563376247882843, -0.06948420405387878, -0.06679163128137589, -0.010757709853351116, 0.02637103758752346, 0.016950028017163277, -0.00742998905479908, 0.02481141872704029, -0.07667435705661774, -0.04121949523687363, 0.022671889513731003, 0.03636476770043373, -0.032493602484464645, 0.01696629822254181, 0.06599321216344833, 0.08154673874378204, 0.05654662847518921, -0.042793042957782745, -0.10297250002622604, -0.10305081307888031, 0.02347477339208126, -0.0349125936627388, -0.056015826761722565, -0.09704350680112839, -0.05787941440939903, -0.04894881322979927, -0.09888404607772827, 0.06160271167755127, 0.007934083230793476, -0.012699955143034458, 0.022036835551261902, -0.026595477014780045, 0.05352218076586723, 0.05976990982890129, -0.0236931424587965, 0.032439760863780975, -0.03700704127550125, 0.0486750602722168, 0.014383828267455101, 0.09054455161094666, 0.03904402628540993, 0.08304116874933243, -0.047511130571365356, -0.0005736329476349056, -0.010299061425030231, -0.04277379810810089, 0.024174440652132034, -0.024516845121979713, 0.04235056787729263, -0.05959824100136757, 0.03582552447915077, -0.055312544107437134, -0.02397032640874386, -0.10808911919593811, -0.08344671130180359, 0.059583570808172226, -0.04398452118039131, 0.016976144164800644, -0.004623862449079752, 0.043282266706228256, -0.03394455835223198, -0.09201351553201675, 0.011491334065794945, 0.027949972078204155, -0.04367220029234886, 0.07409510016441345, 0.04750463366508484, -0.033739808946847916, 0.024780649691820145, -0.04621877148747444, -0.09560088813304901, 0.04936087876558304, -0.024701301008462906, 0.027460912242531776, 0.058843836188316345, 0.09716840088367462, -0.01892843283712864],
+ "VPINSRWrr":[-0.010067791678011417, 0.08799172192811966, 0.010890154168009758, 0.05619356408715248, -0.07913325726985931, -0.09142187982797623, -0.061301339417696, -0.007798680569976568, 0.04995023459196091, -0.005166540388017893, -0.009075311943888664, -0.06374437361955643, -0.08959059417247772, -0.0022305804304778576, 0.07860005646944046, -0.015517189167439938, 0.09441135823726654, 0.029366495087742805, -0.07281491160392761, -0.029776841402053833, 0.0037663003895431757, 0.04474436491727829, 0.013596850447356701, -0.021220456808805466, 0.015479625202715397, 0.0509709008038044, -0.03245360404253006, 0.05657818913459778, 0.09239757061004639, 0.06438025087118149, 0.04248276725411415, 0.07526177912950516, -0.0645633116364479, -0.021002650260925293, 0.1043776199221611, -0.10115183144807816, 0.0512462854385376, 0.05429776757955551, 0.050375115126371384, 0.015724893659353256, -0.09442637115716934, -0.025409681722521782, -0.00703428965061903, 0.01986081525683403, -0.0014209835790097713, 0.049397874623537064, -0.02258383110165596, 0.05152253061532974, -0.014305894263088703, -0.06993154436349869, -0.04804852604866028, -0.07214602082967758, -0.05122074857354164, 0.018263721838593483, -0.02569158747792244, -0.07677780091762543, 0.04017803072929382, 0.0019495128653943539, -0.04831789433956146, -0.0032763443887233734, -0.06805188953876495, -0.04697394371032715, -0.054136332124471664, -0.050984811037778854, 0.038574546575546265, 0.08651192486286163, -0.01999572105705738, -0.02172841876745224, 0.030186224728822708, -0.08583292365074158, 0.05404183268547058, -0.007252854760736227, -0.021997682750225067, -0.060897257179021835, 0.038179945200681686, 0.0300259031355381, 0.018671292811632156, -0.05407044291496277, 0.029798496514558792, 0.0012119418242946267, -0.05179160088300705, -0.015230560675263405, -0.09399939328432083, -0.026336442679166794, 0.050411153584718704, 0.06740076094865799, 0.005110326688736677, 0.004522852599620819, -0.05596799775958061, 0.004774995613843203, -0.029928244650363922, 0.029700007289648056, 0.05148908495903015, -0.0005384755204431713, 0.02180684544146061, 0.025727251544594765, 0.031307559460401535, -0.10280238837003708, 0.018303215503692627, 0.03996413201093674],
+ "VPMADDWDYrr":[-0.008685130625963211, -0.03451811149716377, -0.04588271677494049, 0.03647593781352043, 0.044116366654634476, -0.03408852964639664, -0.05592672526836395, -0.016782062128186226, -0.0399261936545372, -0.06779412180185318, -0.05209527537226677, -0.056951578706502914, 0.01887241192162037, -0.057908784598112106, -0.04082135111093521, 0.0780433639883995, 0.04694056138396263, 0.003478214144706726, 0.04626166447997093, -0.027001332491636276, 0.08186075836420059, -0.046025827527046204, -0.031001517549157143, -0.0350792221724987, -0.05658112093806267, -0.09172149002552032, -0.09856255352497101, -0.015731647610664368, 0.06176357343792915, 0.01438269391655922, -0.010479799471795559, 0.024643201380968094, -0.0011202717432752252, -0.034883901476860046, 0.04706422612071037, 0.051421381533145905, -0.04581489413976669, 0.04686006158590317, -0.019448172301054, -0.0981535091996193, 0.09565027803182602, -0.011667141690850258, -0.014682382345199585, -0.056422892957925797, -0.007776171900331974, -0.020319251343607903, 0.05870824679732323, 0.05267523601651192, -0.021021239459514618, -0.0005124362069182098, 0.02544119767844677, 0.08205673098564148, 0.03574719280004501, -0.028636543080210686, -0.05290895327925682, 0.025027409195899963, -0.029723869636654854, 0.04810599237680435, -0.052208151668310165, 0.06834922730922699, -0.005834773648530245, 0.038857314735651016, -0.030409174039959908, -0.02300095185637474, 0.048199668526649475, 0.029350826516747475, 0.06285294145345688, -0.042453836649656296, 0.0439029298722744, 0.049987923353910446, 0.0753636285662651, 0.014270073734223843, -0.07645706832408905, 0.05496072769165039, -0.03890666738152504, -0.010052704252302647, -0.026681743562221527, 0.062027789652347565, 0.01870645582675934, 0.043539274483919144, -0.0676552802324295, -0.07833953946828842, 0.04831838607788086, 0.06604719907045364, -0.02766905538737774, -0.010281561873853207, -0.05105161666870117, -0.03443459793925285, 0.011392856948077679, 0.002619001315906644, -0.07464711368083954, 0.03946048021316528, -0.042826130986213684, -0.032407280057668686, 0.0476849302649498, -0.0169084332883358, -0.027785051614046097, -0.0020934559870511293, -0.04650797322392464, 0.09412465989589691],
+ "VPMASKMOVDYmr":[-0.09222883731126785, 0.08357890695333481, 0.0865093544125557, -0.003091877792030573, -0.009473403915762901, -0.003152581863105297, 0.02346980944275856, 0.012661647982895374, -0.00740903802216053, -0.056456852704286575, 0.08036500215530396, 0.09921522438526154, 0.027145665138959885, -0.03435976803302765, 0.047460660338401794, 0.0034740492701530457, 0.0276083555072546, 0.04699026420712471, -0.05414832755923271, 0.035584017634391785, -0.07798986881971359, 0.09368644654750824, -0.07015912979841232, 0.06310036033391953, -0.05953550338745117, -0.012392083182930946, 0.024339385330677032, -0.05649137124419212, -0.0439225435256958, 0.026415202766656876, -0.062485095113515854, -0.0009551655384711921, -0.044126566499471664, 0.08779618889093399, 0.07849390059709549, -0.0807730033993721, -0.0481848418712616, -0.06924351304769516, 0.09388286620378494, 0.03625880181789398, -0.03176182880997658, 0.007163734175264835, -0.04287061467766762, -0.007554682437330484, 0.02306649647653103, 0.025500217452645302, -0.0358126200735569, 0.03657786175608635, 0.044473204761743546, -0.07851631939411163, 0.06380919367074966, 0.05175219476222992, 0.036791034042835236, 0.020773330703377724, 0.037965722382068634, -0.00850737001746893, -0.07635091990232468, 0.07456108182668686, 0.021393580362200737, 0.07307780534029007, 0.003062265459448099, -0.04981478303670883, -0.015031496994197369, 0.05712724104523659, -0.05249172821640968, 0.05049825832247734, -0.03858194872736931, -0.02722296118736267, -0.06150895729660988, -0.08884356915950775, 0.01836269348859787, -0.027478113770484924, 0.07570867985486984, 0.07091592997312546, -0.04118311032652855, -0.06653044372797012, -0.011484799906611443, 0.026965893805027008, 0.034982576966285706, 0.009244132786989212, -0.08514249324798584, 0.04662159085273743, -0.052848830819129944, -0.09506365656852722, 0.06616874784231186, -0.021704206243157387, -0.10656898468732834, 0.05766788125038147, 0.0735928937792778, 0.0895400419831276, 0.10146632790565491, 0.045501407235860825, -0.03315185755491257, 0.013041841797530651, 0.01050474587827921, 0.02722952701151371, -0.056253764778375626, 0.10641567409038544, 0.041704438626766205, -0.061002638190984726],
+ "VPMASKMOVDYrm":[-0.03860277682542801, -0.04818972200155258, 0.08037948608398438, -0.08539552241563797, -0.0023872090969234705, -0.024698279798030853, 0.0688442811369896, 0.06415622681379318, -0.01783670112490654, 0.01567116193473339, -0.024956114590168, 0.015567665919661522, 0.011689446866512299, -0.030655251815915108, -0.04423287883400917, 0.025233373045921326, -0.037785604596138, 0.02999652363359928, -0.09998533874750137, 0.06492689251899719, -0.07542083412408829, -0.0790192186832428, 0.07150864601135254, 0.06002010777592659, -0.048585403710603714, -0.055247578769922256, 0.03928007930517197, -0.011667082086205482, -0.10937682539224625, 0.018520191311836243, 0.10222423076629639, 0.009961167350411415, 0.010806665755808353, -0.02907188981771469, -0.03265593573451042, 0.012950929813086987, -0.012668785639107227, 0.10058773308992386, 0.06339504569768906, 0.06692579388618469, 0.02437247708439827, -0.020571893081068993, -0.018390532582998276, 0.0021694444585591555, -0.020885959267616272, -0.02696983516216278, 0.021898148581385612, 0.08554599434137344, 0.05506154149770737, 0.08993202447891235, -0.034346092492341995, 0.03785709664225578, 0.0068325139582157135, 0.002601538086310029, -0.027608860284090042, 0.00602310337126255, 0.000518664310220629, -0.03258664533495903, -0.028367584571242332, 0.10281059145927429, 0.04070059582591057, -0.046098824590444565, 0.07815263420343399, -0.0024988180957734585, -0.02139992080628872, -0.019174860790371895, -0.09206731617450714, -0.013955087400972843, 0.08112850785255432, -0.0907507911324501, 0.014243888668715954, -0.016396649181842804, -0.09849754720926285, -0.042032402008771896, -0.012645621784031391, 0.03599357604980469, -0.046347446739673615, 0.008533078245818615, -0.09115302562713623, 0.03849785029888153, 0.023157818242907524, 0.06881710141897202, -0.04943999648094177, 0.0418536439538002, -0.04951011389493942, 0.0026878390926867723, -0.03861035034060478, 0.006987709552049637, -0.0008926828159019351, 0.0825316309928894, 0.024771099910140038, 0.07832012325525284, -0.01864200457930565, 0.00688148383051157, 0.043326567858457565, 0.09332779794931412, -0.053694672882556915, 0.051090896129608154, -0.04805348441004753, -0.03029005602002144],
+ "VPMASKMOVQYmr":[0.047546252608299255, -0.028658362105488777, 0.06264732778072357, 0.07139917463064194, -0.0336502306163311, -0.01999223232269287, 0.03072543442249298, -0.03290615603327751, -0.04364083707332611, 0.06644071638584137, -0.05268440768122673, -0.04208832234144211, 0.010839239694178104, -0.05095934122800827, -0.03575520217418671, 0.10368204116821289, 0.03366776928305626, 0.02476394549012184, 0.03354089334607124, 0.02120591141283512, 0.03693626821041107, 0.023627087473869324, 0.06319800019264221, 0.006287222262471914, -0.06288290023803711, -0.04234637692570686, -0.0026656175032258034, 0.018869340419769287, 0.02230244129896164, 0.032176628708839417, -0.0352189801633358, 0.0011927455198019743, 0.037172023206949234, 0.0058784205466508865, -0.04976531118154526, 0.026548488065600395, 0.015672041103243828, -0.07638446241617203, -0.003349561709910631, 0.050350964069366455, -0.08545896410942078, 0.04969948157668114, 0.02270771563053131, -0.014584465883672237, 0.08639112114906311, -0.023156601935625076, -0.061503876000642776, -0.048239920288324356, 0.005107651464641094, -0.0163177028298378, 0.0367860347032547, -0.06917829066514969, 0.02335219830274582, -0.05436763912439346, 0.01961834542453289, 0.023584527894854546, 0.03454509750008583, 0.027888962998986244, -0.06158163771033287, -0.1105021983385086, -0.08862576633691788, 0.033791735768318176, -0.04150666296482086, 0.036198195070028305, -0.029158124700188637, -0.004656386096030474, -0.012295641005039215, 0.08410977572202682, 0.08846168965101242, 0.012783275917172432, -0.03200726956129074, 0.02435125969350338, 0.04690863564610481, 0.0019230133621022105, -0.004264728631824255, -0.0031866692006587982, -0.03516533970832825, 0.03050987981259823, 0.08628702908754349, 0.0931326150894165, -0.03005237504839897, 0.00023884809343144298, -0.05280590429902077, -0.03920191898941994, -0.041124265640974045, 0.015798179432749748, 0.02651243656873703, -0.024420548230409622, -0.09705929458141327, 0.014259252697229385, 0.06371185928583145, -0.026978690177202225, -0.10426086187362671, 0.022218603640794754, -0.02631371095776558, -0.1082843467593193, -0.019029907882213593, 0.008160612545907497, 0.011037534102797508, -0.06376037746667862],
+ "VPMASKMOVQYrm":[-0.018023263663053513, 0.07631609588861465, 0.05451636388897896, 0.05145213007926941, 0.0016110693104565144, -0.05699659138917923, -0.02096795104444027, 0.011464033275842667, -0.09148959070444107, 0.06902536749839783, 0.019782019779086113, 0.04955363646149635, 0.08665214478969574, 0.06075890734791756, 0.05001630261540413, 0.05311897397041321, 0.03930525481700897, -0.058961931616067886, 0.0350397564470768, 0.008838608860969543, 0.07025942206382751, 0.02901080809533596, 0.01454251166433096, -0.011447586119174957, -0.03350724279880524, -0.00757543696090579, 0.008671808987855911, 0.024887990206480026, 0.06196930259466171, 0.03688054159283638, 0.022665200755000114, -0.00986563228070736, 0.03757626563310623, -0.016202842816710472, 0.026614602655172348, 0.029166024178266525, -0.04651879891753197, -0.011859552003443241, 0.08112414181232452, 0.0186302587389946, -0.0029269929509609938, -0.039798155426979065, -0.0004939156351611018, 0.04455985128879547, 0.06272480636835098, -0.08896184712648392, -0.09059635549783707, 0.03906242921948433, 0.04125094413757324, -0.04037961736321449, -0.031246930360794067, -0.00658885994926095, 0.04507511109113693, 0.058012738823890686, 0.07971019297838211, -0.08729533851146698, -0.008391023613512516, 0.01122625358402729, -0.03287710249423981, -0.05169788375496864, 0.010730179958045483, 0.008228210732340813, 0.05638089403510094, -0.03712218254804611, 0.0331563800573349, 0.05733294412493706, 0.012264990247786045, 0.015168961137533188, 0.023562239482998848, 0.03234793245792389, -0.04600571095943451, 0.05723511427640915, 0.0627673789858818, 0.0001046776887960732, -0.06510865688323975, 0.024875910952687263, 0.07329699397087097, -0.057227227836847305, -0.0319935604929924, 0.021322399377822876, -0.005791602190583944, 0.06270024925470352, 0.024138474836945534, 0.06875105202198029, 0.032258205115795135, 0.009807482361793518, 0.029888246208429337, -0.052386458963155746, 0.042023152112960815, -0.01896863803267479, -0.09093918651342392, -0.015281520783901215, -0.0016941813519224524, 0.10435336083173752, -0.01479797437787056, 0.027031060308218002, -0.019526900723576546, -0.00052116863662377, 0.04012991860508919, 0.08702227473258972],
+ "VPMAXSDYrr":[-0.09182450920343399, -0.008531440980732441, 0.0032415282912552357, 0.03387076035141945, 0.0686497837305069, 0.0024630981497466564, -0.06818708032369614, -0.0025782238226383924, -0.037640202790498734, -0.04410284012556076, 0.06440719962120056, -0.08243823051452637, 0.004415104165673256, 0.009161489084362984, -0.08471470326185226, -0.011225145310163498, 0.006452016066759825, -0.02376500330865383, 0.03245016932487488, -0.03875076398253441, -0.030813278630375862, 0.028052162379026413, 0.05990508571267128, -0.02283359505236149, 0.04835846647620201, -0.08405935764312744, 0.05044831708073616, -0.05004469305276871, -0.05672970041632652, 0.026988491415977478, 0.011450736783444881, -0.035409100353717804, -0.021035613492131233, 0.03786856308579445, 0.0787566527724266, 0.06151319295167923, 0.03825225681066513, 0.09782904386520386, 0.07935383170843124, 0.026476997882127762, -0.05019437521696091, -0.09933192282915115, -0.05193428695201874, -0.028760913759469986, 0.051247935742139816, 0.016737109050154686, 0.03620360419154167, -0.09949572384357452, -0.01948656514286995, -0.05024009197950363, -0.024206822738051414, 0.09095015376806259, -0.0018785663414746523, 0.009980743750929832, -0.04424184560775757, -0.057929862290620804, -0.05506635829806328, 0.0388968326151371, 0.028691541403532028, -0.036956313997507095, -0.011327738873660564, -0.011187281459569931, 0.03533197194337845, -0.012419248931109905, 0.018004804849624634, -0.04010820388793945, -0.0069257477298378944, -0.06696401536464691, 0.09028419107198715, -0.08379728347063065, 0.054624635726213455, 0.009849505499005318, 0.04511241987347603, 0.00941991526633501, -0.019761264324188232, -0.015936005860567093, -0.08194804936647415, -0.053127750754356384, -0.005048910155892372, -0.07299528270959854, 0.08175971359014511, -0.04821718484163284, -0.023523513227701187, -0.026505431160330772, 0.02548646181821823, 0.03929562494158745, 0.048517558723688126, 0.022662529721856117, -0.05586184561252594, 0.08349334448575974, 0.01750156469643116, 0.02896781452000141, -0.004071229137480259, 0.07037345319986343, 0.032711707055568695, -0.04758813977241516, 0.07475683093070984, -0.09897901862859726, 0.029903201386332512, 0.008974574506282806],
+ "VPMAXSDrr":[0.0975039079785347, 0.012078911066055298, -0.0036961082369089127, 0.11010675132274628, -0.024627700448036194, -0.010464060120284557, 0.05756756663322449, 0.056204844266176224, -0.05607026070356369, -0.061168938875198364, -0.0013827751390635967, 0.0425320640206337, -0.07210450619459152, -0.045006778091192245, 0.022775402292609215, 0.08418238162994385, 0.01046877633780241, 0.031723059713840485, 0.025080787017941475, -0.05792320519685745, 0.06624529510736465, 0.01543970312923193, -0.09872713685035706, -0.04044698178768158, 0.05465959012508392, 0.07153123617172241, -0.0416472889482975, -0.05857117101550102, -0.02375735715031624, 0.10215387493371964, 0.06800056248903275, -0.022198695689439774, -0.013061641715466976, 0.03008849360048771, -0.035197172313928604, 0.046851690858602524, 0.05978860706090927, 0.05218684300780296, 0.011585618369281292, 0.10841000825166702, 0.0020306874066591263, 0.049398474395275116, -0.04399856552481651, -0.0947665199637413, -0.040653616189956665, 0.04146088659763336, -0.014673575758934021, -0.04973382130265236, -0.0521807000041008, -0.009655751287937164, -0.04417547211050987, 0.06025860458612442, 0.06977769732475281, 0.0850353017449379, 0.04059584066271782, 0.055977124720811844, 0.05653635784983635, 0.04089305177330971, -0.06607461720705032, -0.0320754274725914, -0.0682910829782486, -0.010870877653360367, 0.07739928364753723, 0.01841999776661396, 0.05470311641693115, 0.02201608382165432, -0.008551476523280144, 0.028730714693665504, 0.010504912585020065, -0.002607278060168028, 0.012179392389953136, -0.044503103941679, 0.003722753608599305, 0.07924336194992065, -0.11141448467969894, -0.052191659808158875, 0.013266993686556816, 0.014682671055197716, 0.04353218153119087, -0.1017204225063324, -0.09828170388936996, -0.03025413677096367, 0.01858574151992798, -0.028148939833045006, -0.01573556661605835, 0.062349896878004074, 0.004031167831271887, 0.03194679319858551, -0.04620245844125748, -0.08914884179830551, -0.00626226793974638, -0.021237298846244812, -0.04921959713101387, 0.08717407286167145, -0.03353634476661682, -0.03685435280203819, -0.05995568633079529, 0.04559733346104622, 0.01680862531065941, -0.02535788156092167],
+ "VPMAXUBYrr":[-0.014978130348026752, -0.06515570729970932, 0.0355333648622036, -0.11178214848041534, 0.01097457017749548, -0.007474713027477264, -0.008046260103583336, -3.598896000767127e-05, 0.0035042038653045893, 0.0015644477680325508, -0.07374728471040726, -0.08504365384578705, 0.019361713901162148, 0.06250336766242981, -0.05082009360194206, 0.017847321927547455, -0.0613798052072525, -0.013908001594245434, 0.007735311519354582, -0.021391987800598145, -0.037625107914209366, 0.014848733320832253, 0.03296932578086853, -0.06572996079921722, 0.02797486074268818, -0.012494074180722237, -0.03318246081471443, 0.01906602829694748, 0.08451824635267258, -0.051131218671798706, 0.06782098114490509, 0.03484267741441727, -0.02017434686422348, -0.008984046056866646, -0.04689567908644676, -0.037182483822107315, -0.07459741085767746, -0.03573636710643768, 0.07609657198190689, 0.023460321128368378, -0.008082736283540726, 0.0619637556374073, -0.10197194665670395, -0.06498111039400101, -0.041688740253448486, 0.02959124743938446, 0.04573611542582512, 0.08406530320644379, -0.06576717644929886, -0.05289263650774956, -0.02106369286775589, -0.007093400228768587, 0.04919660463929176, 0.01660691387951374, 0.03823550045490265, -0.022957991808652878, 0.0367959588766098, 0.02826339192688465, -0.026436159387230873, 0.0687798485159874, -0.05098653957247734, -0.041156962513923645, -0.06478603929281235, -0.06604223698377609, -0.0395999439060688, 0.08689858764410019, -0.04686548188328743, 0.09225793182849884, 0.0015689932042732835, 0.0720009058713913, 0.07440462708473206, 0.04778261482715607, 0.09165506064891815, -0.07984276860952377, 0.036532867699861526, 0.03433790057897568, 0.10373152047395706, -0.036607254296541214, -0.013052753172814846, 0.0008463070844300091, -0.06288759410381317, -0.03996173292398453, -0.06542810052633286, 0.04286932945251465, 0.04964735731482506, -0.07890329509973526, 0.02404046431183815, -0.03387821093201637, -0.0349600687623024, -0.004528941586613655, 0.015359992161393166, 0.026845697313547134, -0.022136380895972252, -0.012017049826681614, 0.002732700901106, -0.01543886587023735, -0.048166800290346146, 0.01623397134244442, 0.10815861076116562, 0.07455660402774811],
+ "VPMAXUBrr":[0.05187857523560524, -0.01531811524182558, 0.046036817133426666, 0.04353347793221474, -0.058756981045007706, -0.07465116679668427, 0.019209280610084534, -0.04062274470925331, -0.08105316758155823, 0.02194235287606716, 0.07710842788219452, 0.018890511244535446, -0.00825441163033247, -0.012591592036187649, 0.013257503509521484, 0.04034680500626564, -0.0002536393003538251, -0.01984044723212719, -0.059887200593948364, 8.833578613121063e-05, 0.09821157157421112, 0.0038613921497017145, -0.031095227226614952, -0.033434636890888214, 0.045413337647914886, -0.04057672619819641, -0.025368239730596542, -0.0038130953907966614, 0.05961686000227928, 0.04256436601281166, 0.00396745977923274, 0.05248897150158882, -0.06667949259281158, 0.011368883773684502, -0.03456638380885124, 0.06322324275970459, -0.01687694527208805, -0.08467847853899002, -0.0672323927283287, -0.03825199231505394, 0.08324620872735977, 0.09972801804542542, -0.00745838787406683, -0.09334447979927063, -0.01767852157354355, -0.045017924159765244, 0.004585643298923969, 0.02898157387971878, -0.10781516134738922, -0.026070917025208473, -0.016724208369851112, -0.04125414416193962, 0.0654788538813591, -0.09714832901954651, -0.05139949545264244, 0.09173140674829483, -0.007217109203338623, -0.027633938938379288, 0.037268947809934616, 0.04849725589156151, 0.038909509778022766, -0.08434543013572693, 0.010380735620856285, 0.0688602477312088, 0.024472322314977646, -0.02250196784734726, 0.0037763279397040606, -0.05558111146092415, -0.061076369136571884, 0.019630191847682, -0.05045837163925171, 0.08723627775907516, -0.10988880693912506, -0.05431852117180824, 0.0556664764881134, 0.057103417813777924, -0.03028188832104206, 0.10351719707250595, 0.06469868123531342, -0.035145342350006104, 0.07908587902784348, -0.015472406521439552, 0.023887399584054947, 0.04910590499639511, -0.06410600244998932, 0.10092207789421082, 0.02994581125676632, 0.020368805155158043, -0.02566886693239212, -0.037925828248262405, -0.016246583312749863, 0.005745713599026203, -0.04934537410736084, 0.025865836068987846, 0.03180469200015068, -0.021349670365452766, -0.028426053002476692, -0.017488688230514526, 0.08374812453985214, 0.007067656144499779],
+ "VPMAXUDYrm":[0.014397098682820797, 0.06943928450345993, -0.04599291831254959, -0.05140843987464905, 0.039315078407526016, 0.009436029009521008, 0.010033597238361835, 0.0016527529805898666, 0.04959440603852272, -0.01771729439496994, 0.0863352045416832, 0.06592853367328644, -0.02583606354892254, -0.020889895036816597, 0.039701707661151886, -0.014390911906957626, 0.036126237362623215, 0.04050268232822418, -0.05803673714399338, -0.05645562335848808, 0.07397566735744476, 0.04019792750477791, 0.005282465368509293, 0.0025457905139774084, 0.068470299243927, 0.0017774308798834682, 0.04356785863637924, 0.04959806799888611, -0.014200637117028236, 0.009059140458703041, 0.03154134005308151, -0.08028407394886017, 0.017490873113274574, -0.04076745733618736, -0.013535014353692532, 0.014524601399898529, 0.014940403401851654, -0.08774576336145401, -0.04309045523405075, -0.013254945166409016, 0.00746291596442461, 0.046653151512145996, 0.008883202448487282, -0.010308051481842995, 0.026931647211313248, -0.041990432888269424, 0.02614201419055462, 0.07310628145933151, 0.018170086666941643, -0.05029840022325516, 0.006567249074578285, -0.08436529338359833, -0.009104466065764427, 0.001907442812807858, -0.0009541683830320835, -0.056172940880060196, 0.020238865166902542, -0.0409693606197834, -0.032962530851364136, 0.07114284485578537, -0.036639388650655746, -0.012837502174079418, 0.007916360162198544, 0.02637685090303421, -0.03628917410969734, -0.017652440816164017, 0.006194761022925377, -0.037161827087402344, -0.04894459247589111, 0.04315061494708061, 0.006697290111333132, 0.03553321212530136, 0.09674392640590668, -0.0034254081547260284, -0.06114992871880531, 0.09729598462581635, -0.014873571693897247, 0.08513012528419495, 0.02651619352400303, -0.042776286602020264, 0.03531545773148537, -0.10235068947076797, -0.06891236454248428, 0.07658213376998901, -0.0460340715944767, -0.06036697328090668, 0.0028559488710016012, -0.03397560119628906, 0.027742089703679085, 0.09577208012342453, 0.02123171277344227, -0.027704503387212753, -0.03815484791994095, -0.07254329323768616, 0.07706968486309052, -0.1075294241309166, -0.02460567280650139, 0.0015263077802956104, 0.021270832046866417, -0.0947868824005127],
+ "VPMAXUDYrr":[-0.01502767764031887, 0.05387146398425102, -0.030245251953601837, 0.01802399381995201, 0.024784862995147705, 0.022104615345597267, -0.024384712800383568, -0.010272379964590073, 0.06703975796699524, 0.013792987912893295, -0.04959205538034439, 0.018689196556806564, 0.007665692828595638, 0.022464046254754066, 0.08829445391893387, 0.03990709409117699, -0.03287316858768463, -0.026273412629961967, -0.05363854765892029, 0.0039769322611391544, -0.033361367881298065, 0.06735724210739136, -0.07926107197999954, -0.08416532725095749, 0.09981396794319153, 0.011187785305082798, -0.03824453055858612, 0.03564763441681862, -0.10284016281366348, -0.008370419964194298, -0.0550021268427372, -0.009847367182374, -0.025735072791576385, 0.009408262558281422, -0.038569461554288864, -0.07317501306533813, -0.05087389424443245, 0.04609221965074539, -0.03642193600535393, 0.1079641655087471, 0.012534784153103828, 0.01472222525626421, 0.05131230503320694, -0.04220312461256981, 0.10237148404121399, -0.007022522389888763, -0.060429446399211884, -0.04865240305662155, -0.0019782953895628452, -0.023613620549440384, -0.0010642152046784759, 0.012495468370616436, -0.057973477989435196, 0.014066084288060665, 0.007806355599313974, -0.058348994702100754, 0.04001491144299507, -0.04679230600595474, 0.08787128329277039, -0.03830341622233391, -0.05511656403541565, 0.019690832123160362, -0.07614768296480179, -0.021921196952462196, 0.006228686310350895, -0.06038188934326172, -0.017495563253760338, -0.06571146845817566, 0.0904301330447197, 0.011679318733513355, -0.07733958214521408, 0.026062317192554474, 0.09516288340091705, 0.03035205602645874, -0.031804125756025314, 0.02767845429480076, 0.0809396505355835, 0.03619980439543724, 0.10029304027557373, 0.031702831387519836, -0.0149765033274889, -0.023575128987431526, -0.055803168565034866, 0.021336358040571213, -0.06460181623697281, -0.0387248657643795, 0.08136120438575745, -0.023406341671943665, 0.016410520300269127, 0.0441831536591053, 0.037966538220644, 0.01758924499154091, 0.011472390033304691, 0.0612582266330719, 0.03325613960623741, 0.0648290142416954, 0.021068213507533073, -0.022057827562093735, 0.011493911035358906, 0.06444069743156433],
+ "VPMAXUDrm":[-0.04589064419269562, 0.030452849343419075, 0.003428943222388625, -0.06237492337822914, -0.08162804692983627, -0.004989100154489279, -0.04226995259523392, -0.013111133128404617, -0.04872298613190651, 0.051610276103019714, -0.003977576736360788, 0.017867065966129303, 0.02014783024787903, 0.09029603749513626, 0.034150801599025726, 0.03340904787182808, 0.025309905409812927, 0.07018772512674332, 0.020283086225390434, 0.02281154878437519, 0.037147156894207, 0.06599708646535873, 0.05113103985786438, 0.0007387317018583417, -0.019173484295606613, -0.016504572704434395, 0.04501555114984512, 0.021624650806188583, 0.009922809898853302, -0.018559399992227554, -0.058242350816726685, -0.005704103969037533, 0.06201905012130737, -0.05167536064982414, 0.015987137332558632, 0.09277299791574478, -0.04515551030635834, 0.04751037061214447, -0.07080424576997757, -0.0012231043074280024, 0.005629846826195717, 0.05180605128407478, 0.04343712702393532, -0.03164564445614815, -0.057778168469667435, 0.008971338160336018, 0.07315903902053833, 0.006948229391127825, 0.05154772475361824, -0.05976280942559242, 0.027547739446163177, 0.007523298263549805, 0.030409006401896477, -0.015593585558235645, -0.06194257363677025, 0.07531469315290451, -0.047472402453422546, -0.0498056523501873, -0.045754678547382355, 0.04711880907416344, 0.035565976053476334, 0.04700610414147377, 0.017300032079219818, -0.0575365349650383, -0.050326377153396606, 0.015754541382193565, -0.0976305603981018, 0.04087158665060997, -0.07554551213979721, -0.033153291791677475, 0.01525062881410122, 0.02352558635175228, 0.05544786900281906, 0.014042132534086704, 0.014283704571425915, 0.10304520279169083, 0.05279189720749855, -0.013789010234177113, -0.0841321125626564, 0.0422496534883976, 0.03133111819624901, 0.01847812719643116, -0.06839445978403091, -0.04286767914891243, -0.03650710731744766, 0.017420310527086258, 0.04002377763390541, 0.007847807370126247, 0.1028161570429802, -0.023756278678774834, 0.0014826951082795858, 0.04206742346286774, -0.022753657773137093, -0.0002663501654751599, 0.08384178578853607, -0.03353068232536316, -0.014499778859317303, -0.06622199714183807, -0.002679009223356843, -0.04099108651280403],
+ "VPMAXUDrr":[0.023684468120336533, 0.09151491522789001, -0.06080358102917671, 0.040116261690855026, -0.0698915496468544, 0.09143049269914627, 0.014570523053407669, -0.01228311937302351, 0.016725195571780205, -0.0005995178944431245, 0.05009516701102257, -0.03332504257559776, -0.057874035090208054, -0.030883168801665306, 0.08228252828121185, 0.03210780397057533, -0.08378800004720688, -0.0006369830807670951, 0.03552728891372681, -0.08113683015108109, 0.03028862737119198, -0.06325118988752365, -0.08647894859313965, 0.10081352293491364, 0.008271656930446625, 0.0864512249827385, -0.0020763857755810022, -0.036653630435466766, -0.10848184674978256, 0.010385558940470219, 0.04241947457194328, -0.014219735749065876, -0.0008359649800695479, -0.03169679641723633, -0.025365859270095825, -0.0933343842625618, -0.027741912752389908, -0.06204502657055855, -0.07385671138763428, 0.07767374813556671, 0.05082748830318451, 0.0626717209815979, 0.038831230252981186, -0.0032859258353710175, 0.014569749124348164, 0.005938628688454628, -0.037464942783117294, -0.11051313579082489, 0.00860864669084549, 0.037740275263786316, 0.025782868266105652, -0.03965718299150467, 0.007643329445272684, -0.07372735440731049, -0.0584845244884491, -0.015963900834321976, 0.016251642256975174, 0.005038295406848192, -0.02805391326546669, -0.05445854738354683, 0.022823529317975044, 0.028316466137766838, -0.013892429880797863, 0.08457363396883011, -0.0029800599440932274, 0.04682864248752594, -0.06197052076458931, 0.08177710324525833, 0.07651907205581665, 0.008828920312225819, -0.06839380413293839, -0.022163087502121925, 0.004927927628159523, 0.039781659841537476, 0.01925678551197052, -0.036564044654369354, 0.06909489631652832, 0.07252917438745499, -0.07835115492343903, -0.0022887943778187037, -0.04635754972696304, -0.07633271813392639, 0.005842000246047974, -0.04113483056426048, -0.07316436618566513, 0.023800432682037354, -0.03916764259338379, -0.03090359829366207, -0.04626122862100601, -0.009940163232386112, -0.05214518681168556, 0.030706411227583885, -0.022625289857387543, -0.062293849885463715, -0.029892699792981148, 0.024273082613945007, -0.06322470307350159, 0.025956299155950546, 0.019810667261481285, -0.06538349390029907],
+ "VPMINSDYrm":[-0.024782121181488037, -0.02572650834918022, 0.08753065764904022, -0.08632241189479828, 0.005099015310406685, -0.01553699467331171, -0.008542289026081562, 0.002409241395071149, 0.05404626578092575, 0.0835433229804039, -0.035737358033657074, 0.05341513454914093, 0.0003729833697434515, -0.029853207990527153, -0.012198557145893574, 0.03015108034014702, -0.02751842699944973, -0.0758877694606781, 0.05764393508434296, 0.04413509741425514, -0.021495116874575615, -0.05402171611785889, 0.1047993078827858, -0.11058084666728973, -0.04382993280887604, 0.041552964597940445, 0.0007389515521936119, 0.04524286463856697, 0.06515292078256607, 0.03228510543704033, -0.023005753755569458, -0.06740602850914001, -0.04612955451011658, 0.004877809435129166, 0.10847018659114838, -0.09580124914646149, -0.07530273497104645, 0.10067668557167053, 0.06308731436729431, 0.05493108928203583, -0.05042867362499237, 0.027054965496063232, 0.0002063923457171768, 0.02783834934234619, -0.05455661192536354, -0.030282581225037575, 0.04011063650250435, 0.06649936735630035, 0.03672041371464729, -0.09762026369571686, -0.02581574209034443, 0.06364507973194122, -0.08384168893098831, -0.08876442909240723, -0.09574894607067108, 0.03567955642938614, 0.0638650506734848, -0.07441812008619308, 0.03862243518233299, 0.08142783492803574, 0.014741781167685986, 0.046280387789011, 0.05621117725968361, -0.038944587111473083, -0.1104002520442009, -0.015645695850253105, 0.018734268844127655, -0.0741811990737915, 0.08337954431772232, 0.025222739204764366, 0.054035771638154984, 0.008637200109660625, -0.020861953496932983, -0.007056353148072958, -0.050501614809036255, -0.05989481881260872, 0.04474159702658653, -0.001364945201203227, -0.03854673355817795, 0.020421896129846573, -0.016115134581923485, 0.0786433145403862, 0.017128759995102882, -0.05596034601330757, 0.023604895919561386, 0.03027946688234806, 0.010692431591451168, 0.07593619078397751, 0.08190862834453583, 0.04109254851937294, 0.006914774887263775, -0.025699900463223457, -0.0015385719016194344, -0.08126667886972427, -0.03617847338318825, 0.035480909049510956, 0.006648387759923935, -0.05009894445538521, -0.008998737670481205, 0.03711261227726936],
+ "VPMINSDYrr":[0.03389124199748039, -0.030811401084065437, -0.0028431809041649103, 0.007660867180675268, 0.031167542561888695, -0.029606789350509644, -0.00999427493661642, 0.0039329309947788715, 0.0661892220377922, 0.02645408920943737, -0.023817209526896477, 0.020027076825499535, 0.030215125530958176, 0.012330626137554646, 0.024472767487168312, -0.06892137229442596, 0.05384448915719986, -0.03035423532128334, 0.08330955356359482, -0.05268479138612747, -0.07647448033094406, -0.034798916429281235, 0.00999409705400467, -0.01551593467593193, 0.002237241715192795, -0.00980858039110899, -0.013625141233205795, -0.10397855192422867, -0.0700860545039177, 0.025416014716029167, 0.06912258267402649, -0.0718502625823021, 0.03596873581409454, 0.021869957447052002, 0.022634468972682953, 0.07394503802061081, 0.10557956248521805, -0.10495910793542862, 0.029130607843399048, 0.024990178644657135, -0.033609870821237564, -0.05073853209614754, -0.039215896278619766, -0.09500512480735779, -0.003516995348036289, 0.00345333362929523, -0.023361310362815857, 0.05962085723876953, -0.05482817068696022, 0.07411854714155197, 0.03573416918516159, 6.4131454564630985e-06, 0.09681485593318939, 0.06946959346532822, -0.09691321849822998, -0.008978398516774178, -0.010751944035291672, 0.06371505558490753, -0.0900084599852562, -0.05617208033800125, -0.02182781882584095, -0.06427920609712601, -0.05472882464528084, 0.0368528738617897, -0.10661212354898453, -0.038011420518159866, 0.023682912811636925, -0.09900648146867752, -0.005410653539001942, 0.07676008343696594, 0.033564064651727676, -0.09125065803527832, 1.8215378077002242e-05, -0.07851911336183548, 0.024639084935188293, 0.07877573370933533, 0.10233856737613678, 0.09319394081830978, 0.028068402782082558, 0.0498693585395813, 0.0035005640238523483, -0.047936417162418365, -0.0007035420276224613, -0.029457304626703262, 0.00034288648748770356, -0.09722639620304108, -0.060315705835819244, -0.09402432292699814, -0.030013827607035637, 0.04183414578437805, 0.07240103930234909, 0.025736689567565918, 0.0584266297519207, -0.0287587009370327, -0.00632247282192111, 0.03259216621518135, -0.05956341698765755, -0.055659446865320206, -0.021627172827720642, 0.07339350879192352],
+ "VPMINSDrr":[0.007617800030857325, -0.02608734369277954, -0.09371697157621384, 0.05558842048048973, -0.07035171985626221, -0.019582847133278847, 0.05511998012661934, 0.02106059528887272, -0.06884527206420898, 0.005564477294683456, -0.08060009032487869, -0.031463801860809326, 0.02520895190536976, -0.0190369114279747, -0.014314684085547924, -0.0191094521433115, 0.054481908679008484, 0.057896777987480164, 0.007427878677845001, -0.011096801608800888, -0.08053917437791824, -0.01274870801717043, -0.05354158207774162, -0.05523066967725754, 0.04988573491573334, 0.07748139649629593, -0.037489451467990875, -0.01690402254462242, 0.054009031504392624, 0.02950594201683998, 0.014476170763373375, -0.0005015414208173752, -0.035126205533742905, 0.10379304736852646, 0.07770289480686188, 0.08137291669845581, -0.06944189220666885, -0.03431958332657814, 0.038540638983249664, -0.07701554149389267, 0.07600122690200806, 0.00411942508071661, -0.005450797267258167, -0.04944264143705368, -0.028024032711982727, -0.06276560574769974, -0.02622896060347557, -0.031790003180503845, -0.042798738926649094, -0.04410502314567566, -0.050104860216379166, 0.03153586387634277, -0.009655188769102097, 0.024033593013882637, -0.010938048362731934, 0.049166951328516006, 0.04248504340648651, -0.01689048483967781, -0.02472197823226452, 0.020152287557721138, -0.06376656144857407, -0.03341948240995407, 0.0023885357659310102, -0.030804922804236412, -0.07898784428834915, -0.017777061089873314, 0.020809493958950043, -0.054513584822416306, -0.0122919837012887, -0.046492405235767365, 0.021166842430830002, -0.008871467784047127, 0.07645881921052933, 0.022402619943022728, -0.08182544261217117, 0.030087754130363464, -0.0025946570094674826, 0.025209175422787666, -0.021377045661211014, -0.05249490216374397, 0.05660487711429596, -0.06434458494186401, 0.007753781042993069, -0.05984137952327728, 0.0771159678697586, -0.053508203476667404, -0.06697846949100494, -0.03438934311270714, 0.06371048092842102, -0.001351604936644435, 0.050427865236997604, 0.02948411926627159, -0.08844395726919174, 0.023650281131267548, 0.06738665699958801, -0.00684105372056365, -0.017891624942421913, -0.0077733309008181095, 0.009028011001646519, 0.07783310860395432],
+ "VPMINUDYrr":[0.008470435626804829, 0.019327880814671516, 0.049369677901268005, 0.098402239382267, -0.011934159323573112, -0.08840163797140121, -0.05710536986589432, 0.026761367917060852, 0.08726677298545837, 0.03116963990032673, 0.011580263264477253, 0.04718691483139992, 0.03121764026582241, -0.05722741782665253, -0.00021883619774598628, 0.018976978957653046, 0.03762073069810867, -0.011696761474013329, 0.011077403090894222, 0.019783485680818558, 0.06529117375612259, -0.0006359147373586893, -0.06415387243032455, -0.054092198610305786, -0.04096011817455292, 0.013486151583492756, -0.01431078091263771, 0.08303098380565643, -0.051553722470998764, -0.027368104085326195, 0.017620354890823364, -0.010414416901767254, -0.08445931226015091, -0.041760582476854324, 0.048495009541511536, -0.07988202571868896, 0.09012551605701447, -0.05442339554429054, -0.09405124932527542, 0.01933535747230053, 0.061813339591026306, -0.017501259222626686, 0.029829196631908417, 0.0474550798535347, 0.015018290840089321, 0.011245443485677242, 0.0013462771894410253, -0.08167970180511475, 0.07936521619558334, 0.006549229379743338, -0.000779774272814393, 0.003915355075150728, -0.04467819258570671, -0.013986245729029179, -0.028902985155582428, -0.014184245839715004, -0.05837342143058777, 0.011035049334168434, -0.008471138775348663, 0.02273624576628208, -0.03310396522283554, 0.10337582975625992, -0.08749867230653763, 0.05304694548249245, -0.08058981597423553, 0.016235414892435074, -0.015087086707353592, 0.00412271823734045, 0.09895280003547668, 0.07316871732473373, 0.003519786521792412, 0.012314935214817524, -0.02589602768421173, -0.08919643610715866, 0.03879689425230026, 0.04241298511624336, 0.018389014527201653, -0.06494735926389694, 0.015466726385056973, 0.024577712640166283, 0.0418241024017334, 0.004839847330003977, -0.02225101925432682, -0.10448713600635529, -0.08934088796377182, -0.0127107547596097, -0.009799627587199211, -0.09506629407405853, -0.06485725194215775, -0.0072538540698587894, 0.055991679430007935, -0.039581187069416046, -0.07155568897724152, 0.05169522017240524, -0.004609260708093643, 0.03611471876502037, 0.015109619125723839, -0.026347758248448372, 0.029415011405944824, 0.07625111937522888],
+ "VPMINUDrm":[-0.0445038378238678, 0.05259144678711891, -0.05287179723381996, -0.01593494601547718, -0.0035808500833809376, 0.01865229196846485, 0.005625270307064056, 0.0179892685264349, 0.007843580096960068, -0.05530905723571777, 0.01227119192481041, 0.007482590153813362, -0.015335830859839916, -0.025607770308852196, 0.07428530603647232, 0.06070032715797424, -0.06600763648748398, 0.06724504381418228, 0.015575752593576908, 0.09729485958814621, 0.004167240113019943, 0.10123384743928909, 0.008060128428041935, -0.10100369155406952, -0.02188347838819027, -0.02887706458568573, 0.026916123926639557, 0.01618107780814171, -0.03950493782758713, -0.0026022372767329216, -0.02347811870276928, -0.05380234867334366, 0.006907666102051735, -0.06859054416418076, 0.015354965813457966, 0.012549091130495071, -0.07314101606607437, 0.06988023221492767, -0.025211276486516, -0.09653524309396744, -0.06174743175506592, 0.023632219061255455, 0.05762285739183426, -0.009296326898038387, 0.03176888823509216, -0.049650344997644424, 0.02668129652738571, 0.04129486531019211, 0.046626221388578415, 0.08167625963687897, 0.0443587563931942, -0.029220787808299065, -0.053102947771549225, 0.019220836460590363, 0.04883095249533653, 0.027038412168622017, -0.05883188918232918, 0.040433164685964584, -0.029904985800385475, 0.008227263577282429, -0.004258055239915848, -0.018420392647385597, -0.07728446274995804, -0.05879084765911102, -0.00418110704049468, 0.07812346518039703, -0.09884552657604218, -0.011324277147650719, -0.08219895511865616, -0.04399590566754341, 0.0033149891532957554, 0.039276085793972015, 0.04412667825818062, 0.059640903025865555, 0.005261133890599012, -0.03105725161731243, 0.018530717119574547, -0.030801735818386078, 0.05911668762564659, -0.040195759385824203, -0.08354301005601883, 0.0860375389456749, -0.018222937360405922, -0.07211434841156006, -0.052726808935403824, 0.01926328055560589, 0.04536321386694908, -0.005016593262553215, 0.09617902338504791, -0.014704975299537182, -0.03682946041226387, -0.03244839608669281, 0.04246435686945915, -0.015659149736166, 0.002155307214707136, 0.06966918706893921, 0.03936050459742546, -0.07878533005714417, -0.007892357185482979, -0.06259170174598694],
+ "VPMINUDrr":[0.04861215129494667, 0.06752432137727737, 0.06215321645140648, 0.013081062585115433, 0.0794384703040123, -0.02852245792746544, 0.0760495737195015, -0.0006598411710001528, -0.05592324212193489, 0.03117750585079193, 0.06816206127405167, -0.008194690570235252, -0.010476509109139442, 0.043105896562337875, 0.05378967523574829, 0.006210873369127512, 0.08961880952119827, 0.03657664731144905, 0.0019327164627611637, -0.09130146354436874, 0.05753273144364357, -0.06613476574420929, 0.010308134369552135, -0.032094478607177734, 0.08447536826133728, -0.004726621322333813, 0.0313538983464241, -0.07740709185600281, -0.04419809579849243, 0.02109699323773384, 0.03417714685201645, 0.016949273645877838, -0.04535628482699394, 0.027069106698036194, -0.09631028026342392, -0.06912095099687576, -0.0713493824005127, -0.02318131923675537, 0.07973888516426086, 0.013428931124508381, -0.04975936934351921, 0.06412359327077866, -0.0014118903782218695, -0.008570149540901184, -0.08224134147167206, 0.07672034204006195, 0.003101208945736289, 0.013164631091058254, -0.008963920176029205, -0.009174834005534649, 0.041069112718105316, 0.056508585810661316, -0.01579553447663784, 0.003432856174185872, -0.0367383249104023, -0.06308815628290176, -0.01249986607581377, -0.07975663244724274, 0.0698818489909172, -0.035618238151073456, 0.020316334441304207, 0.016348054632544518, 0.012781836092472076, -0.06516703218221664, -0.004702153615653515, -0.09030690044164658, 0.05527826398611069, 0.051429037004709244, 0.05013561248779297, -0.05536417290568352, 0.013998988084495068, -0.03015034832060337, -0.069257453083992, -0.016538182273507118, -0.0982825756072998, 0.09025971591472626, -0.0405743308365345, -0.07182277739048004, -0.04116084426641464, 0.08405105024576187, 0.047978244721889496, -0.0927535817027092, 0.046712905168533325, -0.0568222738802433, -0.06412573903799057, 0.027942851185798645, 0.05667808651924133, 0.02179672196507454, 0.04002204164862633, 0.058293186128139496, -0.06383223086595535, -0.0921543762087822, -0.042680688202381134, 0.045161157846450806, -0.007749882992357016, -0.08216435462236404, -0.035534050315618515, 0.013067166320979595, -0.008735697716474533, -0.00785116571933031],
+ "VPMINUWYrr":[-0.019703172147274017, -0.06785642355680466, 0.00186724413651973, 0.07964558154344559, 0.059150829911231995, 0.058190520852804184, 0.04836508631706238, -0.06864165514707565, -0.0261808130890131, 0.0570211224257946, 0.06762544065713882, 0.08134283125400543, -0.019461138173937798, -0.008764623664319515, 0.0025576502084732056, 0.04576723277568817, 0.05319981649518013, 0.03567540645599365, -0.04056292027235031, 0.027098657563328743, 0.020290784537792206, 0.040739092975854874, -0.06322218477725983, 0.0038688580971211195, -0.01754230260848999, -0.02491915412247181, 0.07241375744342804, 0.06845694780349731, -0.08013258129358292, 0.06640570610761642, -0.005538829602301121, 0.0456460639834404, -0.01943661831319332, 0.0469028614461422, -0.06392104178667068, 0.030562883242964745, -0.03486636281013489, -0.059023793786764145, -0.04121268913149834, -0.011593027040362358, 0.03898490220308304, -0.002403939375653863, 0.013863093219697475, -0.04689104110002518, 0.042606618255376816, -0.09548541903495789, -0.06652648746967316, 0.012029813602566719, -0.04463861137628555, -0.06302236765623093, 0.023767976090312004, -0.021717730909585953, 0.0016523479716852307, 0.00036046028253622353, -0.04178725555539131, -0.03393922373652458, 0.018083851784467697, -0.010925829410552979, -0.06979990005493164, -0.0735165998339653, -0.021121839061379433, 0.04595586284995079, 0.006863664835691452, 0.06041678413748741, -0.01989661157131195, -0.00901702605187893, 0.04539630189538002, 0.04632182419300079, 0.03069004788994789, 0.043060701340436935, -0.027135811746120453, 0.027113543823361397, 0.01838279888033867, 0.007134261541068554, 0.08698415011167526, 0.03691968321800232, 0.10732237249612808, -0.0360606424510479, 0.04959385097026825, 0.018168069422245026, -0.0860336422920227, 0.05619777739048004, -0.004383840598165989, 0.030071288347244263, 0.09663628041744232, 0.10302996635437012, 0.008027080446481705, 0.06984815746545792, 0.0024561807513237, -0.016658751294016838, 0.03816388174891472, -0.06398007273674011, -0.018170587718486786, 0.08658850938081741, -0.11113648861646652, -0.03178878873586655, -0.07224510610103607, 0.07594440132379532, 0.02799767255783081, 0.022363530471920967],
+ "VPMOVMSKBrr":[-0.0298143420368433, -0.04111015051603317, 0.024904625490307808, 0.1109822690486908, -0.09880836308002472, -0.009644202888011932, 0.0017116123344749212, -0.0412619411945343, 0.05840040743350983, -0.09934212267398834, -0.04624512419104576, 0.01705876551568508, -0.023051287978887558, 0.1038215383887291, -0.025373496115207672, -0.008493357338011265, -0.06990387290716171, 0.06208353117108345, 0.026667151600122452, 0.02031259424984455, -0.0007343753823079169, -0.034774329513311386, 0.07180202752351761, 0.07443026453256607, -0.09713395684957504, -0.024914467707276344, -0.06399371474981308, 0.05868326500058174, -0.006088132504373789, -0.0025603428948670626, 0.061035238206386566, 0.01364622451364994, -0.0076111312955617905, -0.0557255782186985, -0.11073006689548492, 0.007980925031006336, 0.02840808406472206, 0.04388115182518959, -0.10493601113557816, 0.023942064493894577, 0.04237711802124977, 0.0418245904147625, 0.006150337867438793, -0.010166764259338379, 0.01958753913640976, 0.03219284862279892, 0.0904175266623497, -0.03578418865799904, -0.02919623628258705, 0.09511932730674744, -0.00282710837200284, -0.01876702718436718, -0.05154448002576828, -0.023438062518835068, 0.03990240767598152, -0.06682354211807251, -0.03305521234869957, -0.03346062824130058, 0.022932592779397964, 0.06283415108919144, 0.03041597083210945, 0.012276820838451385, 0.025249795988202095, 0.013952353037893772, -0.06598155200481415, 0.01648775115609169, 0.0325472466647625, -0.0786563977599144, 0.03585806116461754, 0.05105653777718544, 0.0784727931022644, 0.04765097796916962, 0.05965465307235718, 0.02063404582440853, 0.06439056992530823, 0.06273917108774185, 0.04535945877432823, 0.029236534610390663, -0.03411500155925751, -0.0758499801158905, 0.05345604568719864, -0.10572125762701035, -0.024339044466614723, 0.11069264262914658, 0.06480788439512253, 0.08192311972379684, 0.008326084353029728, 0.014578400179743767, 0.003088653553277254, -0.013183481059968472, 0.0238270852714777, -0.07759428024291992, -0.012839062139391899, -0.07679246366024017, 0.04344132915139198, 0.09032579511404037, 0.014042742550373077, -0.05557332932949066, 0.000996662420220673, 0.0009485892369411886],
+ "VPMOVSXBDYrm":[0.02626546286046505, 0.030930982902646065, 0.01258925348520279, 0.09230451285839081, -0.019527487456798553, -0.006612362340092659, -0.03362925723195076, -0.02219819836318493, -0.0919552594423294, -0.021237937733530998, 0.07034429162740707, 0.07188992947340012, 0.030534597113728523, -0.04161883145570755, 0.004881821107119322, -0.0015016325050964952, -0.040990591049194336, 0.029078498482704163, -0.10814117640256882, -0.08462203294038773, 0.060354262590408325, 0.042365167289972305, 0.06946353614330292, -0.019548363983631134, 0.02696233056485653, 0.016032861545681953, -0.03412558510899544, -0.07062625885009766, -0.07194586098194122, -0.06419526785612106, 0.08075082302093506, -0.01890598051249981, -0.03231140598654747, 0.06196817755699158, -0.004999193362891674, 0.04916847497224808, -0.010554422624409199, 0.059449683874845505, -0.007314806804060936, -0.013007459230720997, 0.0199129655957222, -0.010652721859514713, 0.05080395191907883, -9.483246685704216e-06, -0.04479489102959633, 0.004017388913780451, -0.08119797706604004, -0.00798165611922741, -0.029616577550768852, 0.043226100504398346, 0.04246573522686958, 0.005626367870718241, -0.016762197017669678, 0.06932707130908966, 0.10538051277399063, 0.03399485722184181, 0.07926949858665466, -0.03675749525427818, -0.01611003279685974, 0.07312748581171036, -0.07579980790615082, 0.0005232753464952111, 0.022162599489092827, 0.07160428166389465, 0.0325666144490242, -0.022038619965314865, 0.07976168394088745, 0.0185824166983366, -0.028034016489982605, -0.005599485244601965, 0.08598511666059494, 0.024835770949721336, -0.0615830272436142, 0.023448124527931213, 0.05502632260322571, 0.0734185203909874, -0.0549238957464695, -0.019785786047577858, 0.05131705850362778, -0.09623812884092331, -0.003153780475258827, -0.07671035826206207, -0.04713829606771469, 0.03297281637787819, -0.03887496888637543, -0.04639925807714462, -0.07644385099411011, -0.07172250002622604, 0.01645064726471901, 0.015161814168095589, 0.006546099204570055, -0.052588123828172684, -0.04918218031525612, -0.019117653369903564, 0.07571951299905777, -0.08180364221334457, -0.006015378050506115, -0.060859180986881256, -0.0402759425342083, -0.005480794236063957],
+ "VPMOVSXBDYrr":[0.10303004831075668, -0.07617323845624924, 0.008627036586403847, 0.05265314131975174, -0.02450452744960785, -0.07534807920455933, 0.0026540267281234264, -0.01630566269159317, -0.06645812094211578, 0.011270121671259403, -0.06338907778263092, -0.018855251371860504, 0.03410963714122772, 0.06215571239590645, -0.04078676551580429, 0.07383736968040466, 0.004538448993116617, 0.01455669105052948, 0.022693023085594177, -0.03003874607384205, -0.00972449965775013, 0.04401024058461189, 0.01065669022500515, -0.025651982054114342, -0.03376449644565582, -0.06653208285570145, -0.0590456984937191, 0.06933210790157318, -0.039813701063394547, -0.002418993739411235, 0.002663366962224245, 0.05409875512123108, 0.0009275618940591812, 0.05378768965601921, 0.07827600091695786, 0.04551669582724571, 0.05964795872569084, 0.040188927203416824, 0.04721277952194214, -0.08292076736688614, -0.08463744819164276, -0.02673535794019699, 0.0005149269127286971, 0.026509080082178116, 0.002032941672950983, -0.051163200289011, 0.022825099527835846, 0.001944872783496976, 0.01275620050728321, 0.024403847754001617, 0.031850554049015045, -0.0340757891535759, 0.07656875252723694, 0.053367435932159424, 0.008852471597492695, -0.014850452542304993, 0.04738300293684006, -0.060016240924596786, -0.08971456438302994, 0.04236775264143944, 0.004283292684704065, 0.044733136892318726, -0.08046552538871765, 0.0757509171962738, -0.012006114237010479, -0.042986441403627396, -0.0308670774102211, 0.05473368987441063, 0.031027911230921745, -0.07241806387901306, -0.037109311670064926, -0.004357499536126852, 0.050036609172821045, -0.020103594288229942, -0.050715651363134384, -0.05109668895602226, 0.02935836836695671, 0.026418225839734077, -0.004748138599097729, -0.053111687302589417, 0.03516160696744919, -0.049452681094408035, -0.10622779279947281, -0.05830351263284683, -0.06914540380239487, 0.02020074985921383, -0.06693468242883682, -0.05001946538686752, -0.09173431992530823, -0.0031306217424571514, 0.09775875508785248, 0.013123709708452225, -0.019439680501818657, 0.008150625973939896, 0.0513237789273262, -0.006602559704333544, 0.03913578763604164, -0.0674005076289177, -0.011985627934336662, 0.07415277510881424],
+ "VPMOVSXBDrm":[-0.03334552049636841, 0.10511592030525208, 0.051649898290634155, 0.09170184284448624, 0.03985895216464996, -0.06475894153118134, 0.04433122277259827, -0.07150125503540039, -0.036540400236845016, 0.056729402393102646, -0.056423623114824295, 0.01334655936807394, 0.051924578845500946, 0.0058595286682248116, 0.006430548615753651, -0.08793200552463531, 0.04044261947274208, 0.08507466316223145, -0.10391897708177567, 0.021145125851035118, 0.03712163120508194, 0.01706007681787014, 0.044573187828063965, 0.09632319957017899, -0.06812449544668198, 0.042537230998277664, 0.02890976518392563, 0.061531003564596176, -0.021330730989575386, 0.017717862501740456, 0.024236928671598434, 0.013587256893515587, -0.03635108843445778, 0.07207818329334259, 0.04433980956673622, -0.07586418837308884, 0.005673638544976711, -0.03200323134660721, 0.028651252388954163, -0.09897847473621368, 0.05892553552985191, -0.06519683450460434, 0.010649610310792923, -0.07084504514932632, -0.020441744476556778, 0.009011749178171158, 0.02682489901781082, -0.054744500666856766, 0.08599403500556946, 0.029743004590272903, -0.06440398842096329, 0.07987616956233978, -0.011907756328582764, 0.03305140137672424, 0.0025707220192998648, -0.05452091991901398, 0.006487660109996796, 0.06798268854618073, -0.07974620163440704, 0.06054960936307907, -0.09114528447389603, -0.00751403346657753, 0.05443590134382248, 0.10062090307474136, 0.03760237246751785, -0.008913797326385975, -0.011471351608633995, -0.0998014584183693, 0.0005053191562183201, -0.03753966838121414, 0.046304792165756226, 0.07108152657747269, 0.006608569994568825, 0.08727577328681946, -0.05361783504486084, 0.04175069183111191, 0.057770855724811554, 0.019126255065202713, -0.04279487580060959, -0.008732500486075878, -0.01382550410926342, 0.013563793152570724, -0.018669307231903076, -0.0644947811961174, 0.11421418190002441, 0.02865469641983509, 0.07715917378664017, -0.0097833052277565, -0.06286726891994476, -0.033661603927612305, -0.051233064383268356, -0.0011294401483610272, 0.047568172216415405, -0.0027631991542875767, -0.022089926525950432, 0.005078375339508057, 0.06479030847549438, -0.007418829016387463, 0.09449692070484161, -0.03688129410147667],
+ "VPMOVSXBDrr":[0.006987009663134813, 0.021144941449165344, 0.002453174442052841, 0.05635088309645653, -0.06560798734426498, -0.02124626748263836, -0.03833892568945885, 0.0005335677997209132, 0.022624652832746506, -0.049195241183042526, 0.03433080017566681, 0.021278752014040947, 0.0351918488740921, 0.009071474894881248, -0.05789763852953911, -0.05251403525471687, -0.022010983899235725, 0.04124119505286217, -0.04330170899629593, 0.042467884719371796, -0.05942688509821892, -0.025751546025276184, 0.014370459131896496, 0.09966158121824265, -0.07952708750963211, -0.002723290352150798, 0.02771255001425743, 0.03388984128832817, 0.005765730515122414, -0.04479881376028061, 0.10351275652647018, 0.03976314514875412, 0.03496913984417915, -0.094729483127594, -0.059779807925224304, 0.015455280430614948, -0.01996510848402977, -0.016832880675792694, -0.10673770308494568, 0.0627569630742073, -0.02184251695871353, -0.06357446312904358, 0.019928541034460068, -0.009852655231952667, 0.0655505582690239, -0.07469169795513153, -0.03806915879249573, -0.03491877019405365, 0.08495039492845535, 0.02792101353406906, 0.009819913655519485, -0.012525146827101707, -0.09954442828893661, -0.02543339505791664, 0.08728838711977005, -0.020719973370432854, -0.021784484386444092, -0.03698436915874481, 0.020234039053320885, -0.029677782207727432, -0.02988169528543949, -0.03089727647602558, 0.04095609858632088, -0.01100229099392891, -0.02396044135093689, -0.028006045147776604, 0.02653520181775093, -0.0018624140648171306, -0.03800258785486221, 0.0540587492287159, -0.037197474390268326, 0.060321222990751266, -0.062033750116825104, 0.01992102712392807, 0.019797522574663162, -0.10651612281799316, -0.05769477039575577, 0.01831604354083538, 0.07585618644952774, -0.041923582553863525, -0.0319472998380661, 0.01536776963621378, -0.025565585121512413, -0.013687072321772575, 0.04368855804204941, 0.07931903749704361, 0.028751440346240997, 0.007385704200714827, -0.05162869766354561, -0.03011799417436123, -0.09485368430614471, 0.04423493146896362, -0.085227832198143, 0.014290490187704563, -0.004693282302469015, 0.029785694554448128, 0.005964373238384724, -0.008474288508296013, -0.07460088282823563, -0.04881693050265312],
+ "VPMOVSXBQYrm":[0.09707588702440262, -0.08928340673446655, -0.06659579277038574, 0.0559941828250885, -0.08068914711475372, 0.025445764884352684, 0.029406975954771042, -0.03134278208017349, 0.1025979295372963, -0.025295956060290337, 0.08261065185070038, 0.00041981213144026697, 0.03682351112365723, 0.05778714641928673, 0.022712916135787964, -0.09046274423599243, -0.08334551751613617, 0.05573929846286774, 0.08825482428073883, -0.02671668492257595, -0.005928886588662863, 0.05947151780128479, 0.00023463560501113534, 0.06273697316646576, 0.02169109135866165, 0.06235303729772568, -0.005551603622734547, -0.06752379983663559, -0.029619578272104263, -0.03938015550374985, 0.016352733597159386, 0.02506544254720211, 0.050150107592344284, -0.00624904315918684, 0.01229321863502264, -0.08504971116781235, 0.04441089928150177, 0.03559718653559685, -0.06808812916278839, 0.009286703541874886, -0.05537192523479462, -0.04177575185894966, 0.0589953176677227, 0.004702787380665541, -0.014958684332668781, -0.10006553679704666, -0.028523219749331474, 0.03788153827190399, 0.0431784950196743, -0.019435923546552658, -0.02819283865392208, -0.04288696497678757, 0.030419085174798965, -0.06774634122848511, -0.05414283275604248, -0.06461607664823532, -0.045952990651130676, -0.04849270358681679, -0.03819162771105766, -0.03504898026585579, 0.05232725664973259, -0.013964248821139336, -0.037194859236478806, -0.0014597774716094136, -0.04894132912158966, 0.031062807887792587, 0.01440372969955206, 0.050567060708999634, -0.02743019536137581, 0.08251607418060303, 0.1016404926776886, 0.05522704869508743, 0.03547751158475876, 0.011662117205560207, -0.03128658980131149, 0.05643770843744278, -0.07312295585870743, -0.03698291629552841, -0.0512303002178669, -0.08983922749757767, -0.003149536671116948, 0.002568549010902643, 0.058834102004766464, 0.05764680728316307, 0.034400805830955505, 0.030833810567855835, -0.06663680076599121, 0.0580604262650013, 0.016292495653033257, -0.07617786526679993, 0.006262579467147589, -0.005590036045759916, -0.060373976826667786, -0.030729006975889206, -0.017720794305205345, -0.1043982282280922, -0.055735327303409576, 0.0007033644360490143, -0.08217979967594147, -0.03314543887972832],
+ "VPMOVSXBQYrr":[-0.01851506344974041, 0.05494895204901695, -0.01641986519098282, 0.04347946494817734, 0.025534775108098984, -0.04421335086226463, 0.005086213815957308, 0.011382387019693851, 0.0330992229282856, 0.01739104837179184, 0.031053004786372185, -0.02573169581592083, 0.04568940028548241, 0.03552790358662605, -0.05875570699572563, -0.040543533861637115, -0.08346577733755112, 0.029178060591220856, -0.08170486241579056, 0.08128461241722107, -0.021038835868239403, 0.0279945507645607, 0.0024518058635294437, -0.05807069316506386, 0.01284766010940075, 0.014605268836021423, 0.04796497896313667, 0.0443681925535202, 0.029908597469329834, 0.08649048954248428, -0.03871168568730354, 0.06039951741695404, -0.07913969457149506, 0.02349698171019554, -0.026881976053118706, 0.02843991108238697, 0.10751945525407791, -0.025288904085755348, 0.054653748869895935, -0.011118218302726746, 0.08127416670322418, -0.02514781802892685, -0.0025459369644522667, -0.012326128780841827, 0.05427773669362068, -0.026747165247797966, 0.02034824527800083, -0.05073856934905052, -0.011405679397284985, -0.04017441347241402, 0.007848802953958511, -0.02926024980843067, -0.0164039246737957, -0.05057070776820183, 0.04327085614204407, -0.050523675978183746, 0.0027997989673167467, 0.010650139302015305, -0.024823768064379692, 0.04407471418380737, 0.10412676632404327, 0.027700958773493767, -0.052847616374492645, 0.058271415531635284, 0.000704755075275898, 0.0003818660043179989, 0.04606220871210098, -0.06397133320569992, -0.06685373187065125, -0.010869395919144154, 0.026633575558662415, 0.08936599642038345, -0.05467354506254196, -0.054852332919836044, 0.04551735892891884, -0.0518060140311718, 0.060751382261514664, 0.06062093377113342, -0.03229374438524246, 0.03189692273736, 0.03645264729857445, -0.01588422805070877, -0.050055067986249924, -0.0064775580540299416, -0.024324951693415642, -0.05061675235629082, -0.09342100471258163, 0.0620565190911293, -0.02040339633822441, 0.059756647795438766, 0.01558661088347435, 0.08564402908086777, -0.024064628407359123, 0.057850196957588196, -0.0050026969984173775, 0.05731215700507164, -0.005351823754608631, -0.015119940973818302, 0.035310789942741394, 0.06925894320011139],
+ "VPMOVSXBWYrm":[0.01800818368792534, -0.014272847212851048, -0.033777978271245956, 0.027423428371548653, 0.04937652125954628, 0.07808960229158401, 0.027981722727417946, -0.02193761244416237, -0.053843606263399124, 0.0035459687933325768, -0.0007903778459876776, 0.07198940217494965, -0.06649453192949295, -0.01696203276515007, -0.07021976262331009, -0.04951099306344986, 0.09507053345441818, 0.026040440425276756, 0.025809410959482193, -0.023291414603590965, 0.012979879043996334, 0.08235759288072586, -0.03641192242503166, -0.06340619921684265, 0.0605645626783371, 0.0666024386882782, -0.02742745727300644, 0.04643091559410095, 0.07311110943555832, 0.07612297683954239, -0.00563321728259325, -0.026336751878261566, -0.059675659984350204, 0.055285364389419556, -0.050954367965459824, -0.0620814673602581, -0.07590428739786148, -0.02825564332306385, 0.07779555767774582, 0.020012149587273598, 0.0377386175096035, -0.03814464434981346, -0.032937921583652496, -0.03527388721704483, -0.009114241227507591, 0.03273260220885277, 0.052782922983169556, 0.09267997741699219, -0.029485516250133514, 0.00957679282873869, 0.0718231052160263, -0.06671681255102158, 0.004689051304012537, 0.002591368043795228, 0.004564680624753237, -0.05554596334695816, -0.03860286623239517, -0.05831955373287201, -0.021922321990132332, -0.04516027122735977, 0.08276284486055374, -0.015130424872040749, -0.03615379333496094, 0.09318500012159348, 0.04161682352423668, 0.036877650767564774, -0.0487617664039135, 0.015109678730368614, 0.022223779931664467, -0.004283663351088762, 0.09635981172323227, 0.04509291425347328, -0.09443581104278564, -0.09611687809228897, 0.04104453697800636, 0.08354637771844864, -0.021491333842277527, 0.06980451941490173, 0.019213514402508736, 0.036859918385744095, 0.09941976517438889, 0.06939741224050522, 0.10530057549476624, -0.07992246001958847, -0.030336709693074226, -0.017874522134661674, -0.04504422843456268, -0.035661984235048294, -0.05335628613829613, -0.017534689977765083, 0.0829513743519783, 0.0819367840886116, -0.10807177424430847, 0.03564731404185295, -0.09995968639850616, 0.07178542017936707, -0.033289019018411636, 0.012773070484399796, -0.030336422845721245, 0.004958196543157101],
+ "VPMOVSXBWrr":[-0.0756327211856842, -0.0902794897556305, -0.05699710175395012, 0.04588506743311882, 0.018924493342638016, 0.012311545200645924, 0.02447447180747986, 0.08429870009422302, 0.03837881609797478, -0.06337790936231613, -0.029066340997815132, 0.025180114433169365, 0.01704615168273449, 0.03057331033051014, -0.05770062282681465, -0.011199187487363815, 0.011313489638268948, 0.049797769635915756, -0.09339722990989685, 0.027911143377423286, 0.010548400692641735, 0.01492516603320837, 0.08791572600603104, -0.0957832857966423, -0.014860281720757484, -0.06085833162069321, -0.004023946821689606, 0.06442250311374664, -0.015768133103847504, 0.07408823817968369, -0.09081441909074783, -0.06996690481901169, -0.07854367047548294, 0.03284364566206932, -0.041504062712192535, 0.013237714767456055, 0.006841647904366255, 0.022656258195638657, -0.03302750736474991, 0.007661005482077599, -0.04486896097660065, 0.006308273877948523, -0.029036177322268486, 0.04225301370024681, -0.019792946055531502, -0.011409400962293148, 0.06779691576957703, 0.06578035652637482, -0.0054962825961411, -0.00840959046036005, -0.06321502476930618, 0.020365489646792412, 0.001326013240031898, 0.031073613092303276, -0.0014758919132873416, -0.0005926828016526997, -0.07305391877889633, -0.009472188539803028, 0.07720009982585907, 0.07027474790811539, 0.07816570997238159, -0.012824810110032558, -0.07581574469804764, 0.07423073053359985, 0.05353042855858803, -0.054161228239536285, 0.01532412227243185, 0.04856962338089943, -0.04168480262160301, -0.015994282439351082, 0.03874165937304497, -0.07046522945165634, 0.0033435968216508627, -0.0777127742767334, 0.07373789697885513, 0.07747073471546173, -0.06338910758495331, 0.06822075694799423, 0.015438927337527275, -0.05614277720451355, -0.05380966514348984, 0.03872912749648094, 0.0833493024110794, -0.014908183366060257, -0.04792706295847893, -0.06676653027534485, -0.020030194893479347, -0.008837913163006306, -0.04309613257646561, -0.0004440585325937718, 0.04586704447865486, -0.008535872213542461, -0.019935932010412216, -0.07727638632059097, 0.07783152163028717, 0.012344030663371086, -0.012554042041301727, 0.08297380059957504, -0.0037563596852123737, 0.0002191267703892663],
+ "VPMOVSXDQYrm":[0.04634154215455055, 0.04385993629693985, -0.04434755817055702, 0.025850890204310417, -0.06224009022116661, 0.00887047778815031, 0.014595958404242992, -0.05246458575129509, -0.03164190053939819, 0.06324025988578796, 0.03181987255811691, 0.014402284286916256, 0.054326269775629044, 0.03106713853776455, 0.03587706759572029, 0.0015646266983821988, 0.06037818640470505, 0.012425823137164116, -0.006235315464437008, -0.02611624076962471, -0.055818717926740646, -0.07733204960823059, 0.09229186177253723, 0.00332024903036654, -0.007581095676869154, -0.04874686524271965, -0.07990703731775284, -0.0497019924223423, -0.03503451868891716, 0.04711345210671425, 0.0986257866024971, 0.08158241957426071, -0.10870449990034103, -0.07089163362979889, 0.07000407576560974, -0.027489271014928818, 0.0759589672088623, -0.10794977098703384, -0.0030370017047971487, 0.037751149386167526, -0.007007712963968515, -0.05658089369535446, 0.10014701634645462, 0.08645620942115784, 0.0729188323020935, -0.005450008437037468, -0.00808238796889782, -0.07491720467805862, 0.010523028671741486, 0.014577384106814861, 0.03252241387963295, 0.06967279314994812, -0.06800572574138641, 0.010960943065583706, 0.019445694983005524, 0.053610820323228836, 0.041845694184303284, 0.017239408567547798, -0.026160746812820435, 0.03556254878640175, 0.01619764044880867, 0.04688165709376335, 0.055083949118852615, -0.0420558787882328, 0.06411942094564438, -0.04361537843942642, 0.10171566158533096, 0.018452132120728493, 0.010321618989109993, 0.07642179727554321, 0.07575544714927673, -0.03197402134537697, 0.027823127806186676, -0.05818337947130203, -0.09809909760951996, 0.0168730728328228, -0.09955643862485886, 0.03687571361660957, 0.09287723153829575, 0.08399508148431778, -0.08647680282592773, -0.07716904580593109, -0.0772038921713829, -0.014368169009685516, -0.09648370742797852, 0.002224766882136464, -0.0015394119545817375, 0.02910517156124115, -0.04434583708643913, 0.042425885796546936, 0.043072409927845, -0.0015305753331631422, 0.026772696524858475, 0.0124379713088274, 0.04366021975874901, 0.05339466407895088, -0.00326356734149158, -0.03482871875166893, 0.025498224422335625, -0.08712100982666016],
+ "VPMOVSXDQYrr":[-0.010221544653177261, -0.009228509850800037, 0.0599074587225914, -0.03865065798163414, 0.04910874739289284, 0.10199730843305588, 0.08105960488319397, 0.004100958816707134, 0.005512179806828499, -0.01392640545964241, 0.007302768994122744, -0.01485490333288908, -0.08047721534967422, 0.06716631352901459, -0.06008010730147362, -0.09990477561950684, 0.006508242338895798, 0.05719873309135437, 0.0022580046206712723, 0.0064508202485740185, 0.0856897160410881, 0.047480106353759766, 0.0017438555369153619, -0.022869985550642014, -0.10948412120342255, -0.035066697746515274, 0.03778299689292908, -0.002519094618037343, 0.036589596420526505, -0.10180812329053879, 0.03977776691317558, 0.06546619534492493, 0.05096324533224106, 0.02683849073946476, 0.02300063893198967, 0.0774468332529068, -0.02087140455842018, -0.006884137634187937, -0.035947635769844055, 0.02779051661491394, -0.052971478551626205, -0.01649138703942299, 0.05471879988908768, 0.0016847163205966353, -0.04132803529500961, -0.044648922979831696, 0.004910299554467201, -0.06088114157319069, 0.03165017068386078, 0.04063960537314415, 0.060868989676237106, 0.033528394997119904, -0.008970214053988457, 0.04858812317252159, 0.018710702657699585, 0.03446149826049805, -0.05786632373929024, -0.0108566889539361, 0.004719132091850042, 0.07797596603631973, 0.06900527328252792, -0.00652890233322978, 0.027808988466858864, -0.014920935034751892, 0.02036127820611, -0.0027855858206748962, -0.0026669951621443033, -0.016592515632510185, 0.001920117880217731, -0.08979588747024536, 0.07902830839157104, 0.08794354647397995, 0.042490940541028976, 0.08482230454683304, 0.04014988988637924, -0.03627362847328186, -0.020285530015826225, 0.026378851383924484, 0.024523885920643806, -0.0909004658460617, -0.05397069826722145, 0.06641622632741928, 0.03680112212896347, 0.049255311489105225, 0.012279879301786423, 0.10091721266508102, 0.03186376765370369, 0.013952602632343769, 0.08764422684907913, -0.06499388813972473, 0.016539379954338074, 0.029392298310995102, -0.0471266470849514, -0.022795727476477623, 0.06875007599592209, 0.0071353912353515625, -0.0426843985915184, -0.01637405715882778, 0.09787273406982422, 0.08213168382644653],
+ "VPMOVSXDQrm":[-0.008579238317906857, -0.012546700425446033, -0.014106228947639465, -0.038940805941820145, 0.00558357173576951, 0.08613187819719315, 0.04901766777038574, 0.03999859094619751, 0.09701931476593018, 0.029777007177472115, 0.05038628354668617, -0.06245977431535721, 0.055390845984220505, -0.06906944513320923, -0.051255762577056885, -0.09279684722423553, 0.06840479373931885, 0.019408678635954857, 0.03652041032910347, 0.0868457481265068, 0.03824545815587044, -0.01596740633249283, -0.09274012595415115, -0.0344572514295578, -0.07681691646575928, -0.0975322350859642, -0.025865718722343445, 0.052030500024557114, -0.013390877284109592, -0.041135404258966446, -0.020947281271219254, 0.02504580281674862, -0.04921823367476463, 0.04356911778450012, -0.07269719243049622, 0.006860450375825167, 0.06367005407810211, -0.05639021098613739, 0.07261113077402115, -0.04638400301337242, 0.03564285859465599, 0.0974268689751625, 0.032527800649404526, 0.007181629538536072, 0.056182634085416794, -0.008294587954878807, -0.07017922401428223, 0.04819620028138161, -0.010491084307432175, -0.0415329672396183, 0.019945306703448296, 0.02725245989859104, 0.02223038300871849, 0.012662770226597786, -0.07717640697956085, -0.03312048688530922, -0.009225236251950264, 0.06120535358786583, 0.053150370717048645, -0.019768668338656425, 0.043798305094242096, 0.0356687530875206, -0.0421840138733387, 0.003225995460525155, 0.06114733964204788, 0.01048059482127428, -0.008732618764042854, 0.04156913980841637, 0.05700647830963135, -0.06131299212574959, 0.06658586859703064, 0.015319225378334522, 0.023798851296305656, 0.023962389677762985, -0.03464021161198616, 0.07781417667865753, 0.038545701652765274, -0.061393074691295624, -0.056381531059741974, -0.0030289755668491125, 0.08752438426017761, -0.027435963973402977, 0.017060117796063423, -0.0631246492266655, -0.031300485134124756, 0.043069370090961456, -0.07781494408845901, 0.008637038990855217, -0.07041463255882263, -0.04460727795958519, 0.019965235143899918, 0.06846468895673752, 0.021928798407316208, -0.04081325605511665, -0.00016580187366344035, -0.06682424992322922, -0.017382357269525528, -0.03981839865446091, 0.07906334102153778, -0.032529786229133606],
+ "VPMOVSXDQrr":[-0.0349409356713295, 0.03822048380970955, -0.03350348025560379, 0.06864077597856522, 0.045776769518852234, 0.021316275000572205, -0.03453316539525986, -0.004581502638757229, 0.0018529902445152402, 0.0097043476998806, -0.10220113396644592, -0.07786736637353897, -0.062466543167829514, 0.08503315597772598, 0.024311166256666183, -0.0003718375228345394, -0.10803746432065964, -0.0010440967744216323, -0.05887562781572342, 0.03180462867021561, -0.05772612243890762, -0.003482748754322529, -0.007338170427829027, 0.09568660706281662, 0.03965781256556511, -0.0696733295917511, 0.08977507799863815, 0.0933602824807167, -0.07405655831098557, 0.0291261225938797, 0.05172091722488403, 0.02709321118891239, -0.022162379696965218, 0.06087646633386612, -0.04909120127558708, -0.08768303692340851, 0.006550658494234085, 0.036853086203336716, -0.012377931736409664, 0.07197480648756027, -0.007772925775498152, 0.06546330451965332, -0.0683027058839798, 0.005818245001137257, 0.012535842135548592, 0.013819737359881401, -0.07957912981510162, 0.05923135578632355, -0.041210390627384186, 0.027473924681544304, -0.03909106180071831, -0.0334128811955452, -0.04089438542723656, 0.01660955883562565, -0.0017360546626150608, -0.037274256348609924, -0.008634311147034168, 0.03850207105278969, 0.03376961871981621, 0.09640257060527802, 0.021425064653158188, -0.0002520021516829729, 0.013066398911178112, 0.011873085051774979, 0.006757670547813177, -0.05136436969041824, 0.03681865707039833, -0.053777795284986496, 0.11123104393482208, -0.07490077614784241, 0.0039037768729031086, 0.010772108100354671, -0.022386621683835983, 0.04002727195620537, 0.03832915797829628, -0.044295668601989746, -0.08352512866258621, 0.04634898900985718, 0.040274083614349365, -0.001263304497115314, 0.06408543884754181, -0.00881695095449686, 0.06237252801656723, 0.048206593841314316, -0.07232191413640976, -0.044808704406023026, -0.06150336191058159, 0.01379935722798109, 0.04073042795062065, -0.017247822135686874, -0.0527501106262207, -0.002964582061395049, -0.055541250854730606, -0.009154795669019222, 0.05101504176855087, -0.044597726315259933, 0.009196347557008266, -0.0237859059125185, 0.010384554974734783, -0.0766807347536087],
+ "VPMOVSXWDYrm":[-0.0527556948363781, 0.06713782250881195, 0.014458691701292992, -0.09863004088401794, 0.06709228456020355, 0.029913632199168205, -0.07502881437540054, 0.012766060419380665, -0.030018262565135956, 0.013177898712456226, -0.044675953686237335, 0.026001663878560066, 0.053041551262140274, -0.09656058996915817, -0.04406004771590233, 0.0174530278891325, -0.08362217992544174, -0.031825218349695206, -0.07869023829698563, -0.08806472271680832, 0.03666388988494873, 0.026970474049448967, 0.0013762774178758264, -0.0002551217330619693, 0.02922631800174713, -0.10411614924669266, -0.043962836265563965, 0.06315238773822784, -0.04993961751461029, 0.08988906443119049, 0.07486134767532349, 0.01647329144179821, -0.007862376049160957, 0.005368452984839678, 0.023626212030649185, -0.02238568477332592, 0.06182708963751793, -0.09078691899776459, 0.028277669101953506, 0.093192920088768, 0.03700737655162811, -0.04608730599284172, 0.06584560126066208, -0.022869376465678215, -0.011088469997048378, -0.046910546720027924, -0.014604518190026283, 0.019963469356298447, -0.034319307655096054, 0.04182425141334534, 0.0023267727810889482, 0.003548447275534272, 0.011661818251013756, 0.04697944596409798, 0.009096983820199966, -0.006932027637958527, -0.0563087984919548, -0.005757999140769243, 0.060674089938402176, 0.03419804945588112, 0.004916199948638678, -0.07702985405921936, -0.05076340213418007, -0.09724791347980499, 0.026189049705863, 0.07694505900144577, -0.06863276660442352, -0.023462655022740364, 0.013187042437493801, -0.028187567368149757, -0.033328767865896225, -0.05397294834256172, -0.04577716439962387, -0.05918658524751663, 0.01815214939415455, 0.030265728011727333, -0.05017508566379547, 0.010438400320708752, -0.07367360591888428, -0.08017329126596451, -0.04223397374153137, 0.06920744478702545, 0.007268049754202366, -0.012711710296571255, 0.06089987978339195, 0.07210301607847214, -0.012238899245858192, 0.019841337576508522, -0.07688687741756439, 0.011590001173317432, 0.062136564403772354, -0.0784904733300209, -0.10460823029279709, 0.008665976114571095, -0.053692497313022614, 0.06336884945631027, -0.06459350138902664, 0.0665501207113266, 0.012380432337522507, -0.07892503589391708],
+ "VPMOVSXWDYrr":[-0.011492464691400528, -0.09016651660203934, -0.07146085798740387, -0.0009862163569778204, -0.01361763570457697, -0.062086205929517746, 0.025504419580101967, 0.014581050723791122, 0.021921275183558464, -0.06010087952017784, 0.014054184779524803, -0.06359599530696869, -0.012149956077337265, 0.04462618753314018, 0.04749336466193199, 0.06948098540306091, -0.07191143184900284, 0.042638905346393585, -0.0754031166434288, -0.07293520122766495, 0.06409696489572525, 0.0031972136348485947, 0.023665757849812508, 0.0714217945933342, 0.03427891433238983, -0.06231563910841942, 0.017953947186470032, -0.02199409157037735, -0.01670827716588974, 0.05662013962864876, 0.0003385735908523202, 0.040793225169181824, -0.07758037000894547, -0.030300891026854515, 0.02965737320482731, -0.0005181401502341032, -0.053406406193971634, -0.04866522550582886, -0.029383599758148193, 0.030958333984017372, 0.004468968138098717, -0.019136426970362663, -0.0008500228868797421, 0.025208555161952972, 0.054114289581775665, -0.09325927495956421, 0.021143389865756035, 0.05092034488916397, 0.02367028035223484, 0.023061605170369148, -0.05910712480545044, 0.07992780208587646, 0.0901486724615097, -0.02056417427957058, 0.10411371290683746, 0.05258585885167122, -0.019697636365890503, -0.010108567774295807, -0.046456459909677505, -0.027633095160126686, 0.052075278013944626, -0.029223168268799782, -0.00888608954846859, -0.08758137375116348, 0.09070990234613419, -0.04882010817527771, 0.04510166496038437, -0.08301330357789993, 0.05156782269477844, -0.009754741564393044, 0.0690864771604538, -0.04159117862582207, 0.006691148970276117, -0.01401906181126833, 0.06060007959604263, -0.08375514298677444, -0.05191357433795929, -0.00016382121248170733, -0.0419168584048748, -0.08227657526731491, -0.08587905764579773, -0.04112076014280319, 0.001179724931716919, -0.008677998557686806, 0.023266194388270378, 0.049282945692539215, 0.08894556015729904, 0.09371969848871231, 0.06542278081178665, 0.0352044515311718, 0.03773043304681778, -0.006089397240430117, -0.00010615213250275701, -0.0006531248218379915, 0.005697766784578562, 0.02435970865190029, -0.028867818415164948, 0.01649697870016098, -0.043936584144830704, 0.03843090310692787],
+ "VPMOVSXWDrm":[0.09116487950086594, -0.08630385249853134, -0.04741648584604263, 0.07369907945394516, -0.05045453831553459, -0.007209436036646366, -0.046892523765563965, 0.026141664013266563, 0.0005941599956713617, 0.0046090600080788136, 0.008160118944942951, 0.09884480386972427, 0.01888168416917324, 0.05017320066690445, 0.007837779819965363, 0.03505074977874756, 0.02694711647927761, -0.00473361648619175, 0.09849303215742111, -0.002370088128373027, 0.05121537297964096, 0.02767312340438366, -0.010324615053832531, -0.032420676201581955, 0.005623365752398968, 0.018138715997338295, 0.0234316848218441, 0.06144110858440399, -0.02195199392735958, -0.026425834745168686, -0.07601393014192581, 0.06777156889438629, 0.08816460520029068, -0.05945378541946411, -0.059317924082279205, 0.07072005420923233, 0.06996352970600128, 0.029668288305401802, 0.05200681462883949, -0.01626943051815033, 0.024312710389494896, 0.09524443000555038, 0.05418442189693451, 0.06391450762748718, 0.06761034578084946, 0.0569441132247448, -0.012390751391649246, 0.079369455575943, -0.022325575351715088, 0.017665214836597443, -0.04022581875324249, -0.005648641847074032, 0.03334878012537956, 0.009186078794300556, -0.06481041014194489, -0.07608114928007126, -0.05727032199501991, 0.05624059960246086, -0.0020186370238661766, 0.062331341207027435, -0.0012954286066815257, 0.011062875390052795, -0.015485847368836403, -0.04175018519163132, -0.1082615926861763, 0.07254395633935928, 0.022035738453269005, 0.03558075800538063, -0.02478061430156231, 0.003884204663336277, -0.09449443966150284, 0.02353036031126976, -0.03896665945649147, 0.04989428073167801, 0.004417027346789837, -0.011040415614843369, -0.047841597348451614, 0.04167550802230835, 0.08436764776706696, -0.01809142716228962, 0.07172101736068726, -0.060586363077163696, -0.07551001012325287, 0.02746422216296196, -0.003585136728361249, 0.02971073053777218, 0.01899995468556881, 0.0022519100457429886, -0.09588491171598434, 0.03173401951789856, -0.09218920767307281, 0.008084718137979507, 0.029768433421850204, -0.09322760254144669, -0.08043337613344193, -0.015539336949586868, -0.0016057840548455715, -0.0715176984667778, 0.01976514421403408, -0.07723678648471832],
+ "VPMOVSXWDrr":[-0.07943359762430191, -0.06570650637149811, -0.049419622868299484, 0.07376653701066971, 0.014324049465358257, 0.01529351994395256, -0.05299636349081993, 0.09336196631193161, -0.04048127308487892, -0.025230806320905685, 0.027267388999462128, 0.0017328648827970028, -0.03761288896203041, 0.01569080911576748, -0.02921237424015999, 0.0897606611251831, -0.02499637007713318, -0.04862358421087265, 0.056482769548892975, -0.05905195325613022, 0.0719398781657219, -0.018351631239056587, -0.032346565276384354, -0.024321792647242546, 0.053884536027908325, 0.06806881725788116, 0.00692678103223443, -0.028986511752009392, -0.06923121958971024, -0.04995452240109444, -0.037808410823345184, -0.0014671249082311988, -0.058510392904281616, 0.01351635530591011, 0.07723418623209, 0.08938083052635193, 0.019067121669650078, 0.029481563717126846, -0.10132686793804169, 0.015356920659542084, -0.07052832096815109, 0.08740581572055817, -0.03630899637937546, -0.008562920615077019, -0.0017269013915210962, -0.05599105730652809, 0.035121530294418335, 0.04650302603840828, 0.012683643959462643, -0.05430416017770767, 0.019850274547934532, 0.02812969498336315, -0.0036909477785229683, 0.0015757540240883827, -0.03532129526138306, -0.029383720830082893, -0.042627379298210144, 0.07324232161045074, -0.06667841970920563, 0.060954052954912186, 0.06160322204232216, 0.04414157196879387, -0.03876011073589325, -0.0041870535351336, -0.014310034923255444, 0.0031998567283153534, 0.04147655889391899, 0.009814177639782429, -0.002756531583145261, -0.01852680929005146, -0.029070725664496422, -0.06266942620277405, -0.035385508090257645, 0.0427633672952652, -0.04170922935009003, 0.07254105061292648, -0.08608073741197586, -0.0829717144370079, -0.008858948945999146, -0.07540293782949448, -0.03246206045150757, 0.06489292532205582, -0.02963053248822689, -0.03643486276268959, -0.003637337125837803, 0.038454074412584305, -0.06805791705846786, -0.05357372388243675, -0.05360592156648636, 0.025553666055202484, 0.046389129012823105, 0.07603614032268524, -0.031146353110671043, 0.011473055928945541, 0.045545537024736404, -0.006742613390088081, 0.003967300523072481, 0.06126346066594124, 0.01375654898583889, -0.016572188585996628],
+ "VPMOVSXWQYrm":[-0.01815458945930004, 0.07260701060295105, 0.022716304287314415, -0.08704473078250885, 0.016423214226961136, 0.015002842992544174, -0.037638891488313675, 0.05793502554297447, 0.05482994765043259, 0.01373520027846098, -0.01762007176876068, -0.040134888142347336, -0.03246095031499863, -0.05457363650202751, -0.037301670759916306, -0.018827615305781364, 0.08445397019386292, 0.07169473171234131, -0.03952564299106598, -0.09501864016056061, -0.062192972749471664, 0.025184232741594315, 0.02247084677219391, -0.06459898501634598, -0.03691679984331131, 0.07466068863868713, -0.014877988025546074, -0.0001611518964637071, -0.08837711066007614, -0.0711740031838417, -0.03737316653132439, -0.000318389997119084, -0.04894980788230896, -0.04753374308347702, -0.06115936115384102, 0.026313820853829384, 0.04613040015101433, 0.05670047551393509, 0.06239132583141327, 0.012215047143399715, -0.013043188489973545, 0.0526549331843853, 0.03020539879798889, -0.021968863904476166, 0.021864429116249084, 0.01888018101453781, -0.07705103605985641, -0.07759249955415726, -0.05745313689112663, -0.08071557432413101, -0.07786531001329422, 0.04598049074411392, -0.014690269716084003, -0.017987200990319252, -0.04016656428575516, -0.06723421812057495, 0.01930282823741436, -0.09772296994924545, -0.08725206553936005, 0.01858948916196823, 0.0251371581107378, 0.04078442230820656, -0.0165905449539423, -0.09790048748254776, -0.021708089858293533, -0.051267702132463455, -0.10298563539981842, 0.004877364728599787, -0.006760131102055311, -0.06530673056840897, -0.007549996022135019, -0.01756230555474758, -0.046359188854694366, 0.0440756119787693, 0.04172058030962944, 0.023768046870827675, 0.04936520755290985, -0.08654021471738815, -0.00556442653760314, 0.0030314428731799126, -0.0743078961968422, -0.05645054206252098, -0.04247553274035454, 0.08488905429840088, -0.08803350478410721, -0.07086427509784698, 0.03537560626864433, 0.00786537304520607, 0.07147038727998734, -0.024815335869789124, -0.019240671768784523, 0.017449865117669106, -0.07286212593317032, -0.009553274139761925, 0.06580871343612671, 0.08121846616268158, 0.03144020959734917, -0.058242399245500565, 0.0035578743554651737, 0.06491007655858994],
+ "VPMOVZXBDYrm":[0.09987471252679825, 0.06913682818412781, -0.04914054274559021, -0.07517864555120468, 0.0016494067385792732, 0.02427220344543457, 0.04339459538459778, -0.05623835697770119, -0.02313963510096073, -0.05396220460534096, 0.10659658163785934, 0.03795478120446205, -0.011262157000601292, -0.0030898686964064837, 0.03398018330335617, 0.04844702407717705, -0.009685850702226162, -0.05714789777994156, 0.00853810552507639, 0.05488304793834686, 0.06805463135242462, -0.0009386161691509187, 0.003247293410822749, 0.039862848818302155, 0.002495238557457924, 0.07128343731164932, -0.0011039054952561855, 0.0032081720419228077, -0.04765936732292175, 0.03813619166612625, 0.061311837285757065, 0.0012453680392354727, -0.09998373687267303, 0.03542521223425865, 0.011782265268266201, -0.049783263355493546, 0.01400782074779272, 0.08534973114728928, -0.01145994383841753, -0.045337602496147156, -0.026538072153925896, -0.05321212485432625, -0.08604175597429276, 0.03783091902732849, 0.016789553686976433, -0.06791207194328308, -0.011636603623628616, 0.033851079642772675, 0.034155745059251785, -0.016941597685217857, 0.014564325101673603, 0.0588720329105854, 0.015804197639226913, -0.01973266713321209, -0.06792602688074112, -0.06015457957983017, -0.06376916915178299, -0.0491371676325798, -0.03937799483537674, -0.004898181650787592, -0.07730989903211594, 0.0570165179669857, -0.07803069800138474, 0.0423552468419075, -0.08309183269739151, -0.015300281345844269, 0.019791502505540848, -0.004812575876712799, 0.023581035435199738, 0.08553057909011841, 0.0975031778216362, 0.07576268911361694, 0.06890814006328583, -0.08688746392726898, -0.062181275337934494, 0.03629186004400253, 0.03652159124612808, -0.06497498601675034, -0.011099004186689854, -0.0898577943444252, 0.04414859041571617, -0.09413281083106995, 0.026465460658073425, 0.02490008994936943, -0.09143353998661041, 0.013312947936356068, 0.07391804456710815, -0.06388285756111145, -0.0007114409236237407, 0.024530455470085144, 0.10270716995000839, 0.060157377272844315, -0.06866251677274704, -0.05679314211010933, -0.06113889813423157, -0.0715218037366867, -0.07601448893547058, 0.056281473487615585, 0.023815946653485298, -0.04352184757590294],
+ "VPMOVZXBDYrr":[-0.08914314955472946, -0.03355066105723381, 0.04205804690718651, -0.061739008873701096, -0.0075299120508134365, -0.032585348933935165, 0.01591012068092823, 0.0009684063261374831, -0.014550250954926014, 0.109865203499794, 0.08617178350687027, -0.001742440857924521, -0.004650890827178955, -0.05886172130703926, -0.04966704919934273, -0.01882246695458889, 0.026564763858914375, -0.08435117453336716, -0.09326066076755524, 0.06665165722370148, 0.050993580371141434, 0.03990977630019188, -0.03929774835705757, 0.04014609381556511, -0.10516703873872757, 0.029013602063059807, 0.10060378164052963, -0.06282253563404083, -0.06818778812885284, -0.039536505937576294, 0.0627797394990921, -0.06166941672563553, -0.02163867838680744, 0.010291997343301773, -0.008941851556301117, -0.06788042187690735, 0.05336065962910652, 0.020325737074017525, -0.06894227862358093, 0.017917096614837646, 0.03550278767943382, 0.06069602444767952, 0.030953148379921913, -0.022641437128186226, -0.013044504448771477, -0.003572178538888693, 0.03284359350800514, 0.05732210353016853, -0.06820139288902283, 0.05111664533615112, -0.11589221656322479, 0.04841561242938042, 0.05707995593547821, -0.06134691834449768, 0.030230088159441948, 0.024759691208600998, 0.04111991822719574, 0.005417770706117153, -0.02684047445654869, -0.0035468225833028555, 0.018322525545954704, -0.07924360036849976, 0.052647944539785385, 0.019509412348270416, 0.03896676376461983, 0.04284140467643738, 0.04480176046490669, -0.08246281743049622, 0.03152338042855263, -0.017448682337999344, -0.05056385323405266, -0.0027970322407782078, 0.00884834211319685, 0.0939534455537796, 0.026748277246952057, 0.05030829459428787, -0.03381313756108284, -0.011631671339273453, 0.06110907346010208, 0.0425710529088974, 0.009561370126903057, -0.020566632971167564, -0.015876613557338715, -0.031234709545969963, 0.05681683495640755, 0.06656261533498764, 0.02123698778450489, -0.07203596085309982, 0.003807717002928257, -0.06591689586639404, -0.06475912779569626, -0.06295792013406754, 0.06124444678425789, 0.05341820418834686, 0.05232110247015953, -0.011544500477612019, 0.03764242306351662, 0.09579873085021973, 0.08757041394710541, -0.022310230880975723],
+ "VPMOVZXBDrm":[-0.07060973346233368, -0.09334896504878998, 0.08776029944419861, 0.07551966607570648, 0.03526366129517555, 0.0018778827507048845, -0.044432852417230606, -0.03452472761273384, 0.1093047484755516, -0.03819616138935089, -0.04810392111539841, 0.004394244868308306, -0.010251175612211227, -0.056015823036432266, 0.018439261242747307, 0.02139870822429657, -0.07410743832588196, -0.040426623076200485, 0.0409223847091198, -0.017279764637351036, -0.02878105640411377, 0.08900807052850723, 0.012777461670339108, 0.057992734014987946, 0.03210032358765602, -0.02581307850778103, 0.0044405474327504635, -0.06062684208154678, 0.031114550307393074, -0.047501832246780396, -0.029723601415753365, 0.029043888673186302, -0.04765314981341362, -0.05475962162017822, -0.06457576900720596, 0.06077343970537186, 0.06664346158504486, 0.09250224381685257, -0.08311551809310913, 0.05496961250901222, -0.0014505669241771102, -0.06257672607898712, -0.045504000037908554, -0.08882017433643341, 0.025824248790740967, -0.05925978720188141, 0.05808308348059654, -0.0646490678191185, -0.0702807605266571, 0.010277465917170048, -0.0758482813835144, -0.04716562479734421, 0.04342716187238693, 0.014314038679003716, 0.012528055347502232, 0.06404420733451843, 0.025830915197730064, -0.0559535026550293, 0.09098745137453079, 0.019664788618683815, 0.054349493235349655, -0.032550763338804245, 0.01054914016276598, 0.0021614746656268835, -0.06568149477243423, -0.02897915430366993, 0.07802985608577728, 0.04447992891073227, 0.04698547348380089, -0.09451140463352203, 0.052614785730838776, 0.053081609308719635, -0.00608872389420867, -0.009826545603573322, 0.048223428428173065, -0.011082337237894535, -0.038775425404310226, 0.06998954713344574, 0.013640555553138256, 0.04776032269001007, 0.019406912848353386, -0.043291933834552765, 0.06714531779289246, 0.028565077111124992, 0.010582814924418926, 0.023949535563588142, 0.01807669922709465, 0.05668610334396362, -0.009743533097207546, 0.010523778386414051, 0.037137944251298904, 0.01898486539721489, 0.05235530063509941, 0.06340852379798889, 0.0004607378214132041, -0.04788560792803764, 0.05127246305346489, 0.024365024641156197, -0.04883429408073425, 0.0022018873132765293],
+ "VPMOVZXBDrr":[0.013505378738045692, 0.09976749867200851, -0.014605007134377956, -0.07662860304117203, 0.0628761500120163, -0.0557921901345253, 0.07963297516107559, 0.017931485548615456, 0.019895141944289207, -0.042937200516462326, -0.0007083149976097047, -0.0695849359035492, 0.06928371638059616, -0.0073331487365067005, -0.03259305655956268, 0.015797089785337448, -0.07798741012811661, -0.03794010356068611, -0.0030935206450521946, -0.017467351630330086, 0.007738982327282429, -0.033701226115226746, -0.07778467983007431, -0.0640469416975975, 0.04910595342516899, -0.034450631588697433, 0.0874750167131424, 0.05067574232816696, -0.007849753834307194, 0.07067134231328964, -0.04031446576118469, -0.024625100195407867, -0.011788146570324898, 0.025188906118273735, -0.03911915794014931, 0.03286832943558693, -0.03963089361786842, -0.03782219439744949, 0.02345784194767475, -0.0520586334168911, -0.0277896448969841, 0.07407809048891068, 0.011824630200862885, 0.04034724831581116, -0.004120021592825651, -0.005835937336087227, -0.020073192194104195, -0.055746983736753464, 0.0013417972950264812, -0.06923976540565491, 0.020477579906582832, 0.06064949929714203, 0.035060588270425797, -0.06790781021118164, 0.051931530237197876, 0.08091571927070618, 0.10333138704299927, 0.032882459461688995, 0.013946681283414364, 0.0023394222371280193, 0.09196311235427856, 0.04483760893344879, 0.006194429937750101, 0.07158643752336502, -0.0219956673681736, -0.05612364783883095, 0.026883205398917198, -0.032561045140028, 0.05176025629043579, 0.05566592887043953, 0.0004684380255639553, -0.029782455414533615, -0.04569828137755394, -0.06790851801633835, 0.004937196150422096, -0.04704216867685318, 0.012968558818101883, -0.07741257548332214, 0.08861435204744339, -0.06662941724061966, 0.014788264408707619, 0.04162091016769409, 0.09740203619003296, -0.06442704796791077, -0.003269490087404847, 0.02436242066323757, -0.031370773911476135, 0.007706208620220423, -0.057438913732767105, -0.08939380198717117, 0.016514690592885017, -0.06696333736181259, 0.021397428587079048, 0.07615973800420761, 0.08995100855827332, 0.05060950294137001, 0.04678007960319519, -0.006140187382698059, -0.025479184463620186, 0.02296699583530426],
+ "VPMOVZXBQYrm":[-0.04019952937960625, 0.02602981962263584, 0.001893174136057496, 0.061913542449474335, -0.018398389220237732, -0.009172333404421806, -0.076013945043087, -0.03056703694164753, -0.03666132688522339, 0.06319746375083923, 0.012225091457366943, 0.027545589953660965, -0.02131076715886593, -0.03829212859272957, -0.04032997414469719, 0.02773272432386875, 0.037381745874881744, 0.053604066371917725, -0.006046498194336891, -0.015563342720270157, -0.041367027908563614, 0.04304901883006096, -0.06952772289514542, 0.008336838334798813, -0.0408317893743515, -0.07475277036428452, 0.08991680294275284, 0.009866087697446346, -0.09362122416496277, 0.09795618802309036, -0.01710093393921852, 0.0004892972065135837, -0.008775956928730011, -0.07115931063890457, 0.0841868594288826, -0.02858937904238701, 0.03007815219461918, -0.03661361709237099, -0.018215376883745193, 0.06941608339548111, 0.07823124527931213, 0.04363885894417763, -0.012912057340145111, -0.05193440988659859, 0.020218802616000175, -0.0051102712750434875, 0.020173585042357445, -0.027195725589990616, -0.009286186657845974, 0.02638295106589794, 0.05380735918879509, 0.06882795691490173, -0.04394248127937317, 0.09162987768650055, 0.05887790396809578, -0.03974895179271698, -0.07678888738155365, 0.03910527750849724, -0.059127699583768845, -0.016246313229203224, 0.020673416554927826, -0.017290299758315086, -0.011175124906003475, 0.05922927334904671, 0.10677763819694519, 0.07411602884531021, -0.05153195932507515, -0.05646425485610962, -0.019695645198225975, -0.04554053768515587, -0.002041950821876526, -0.042485225945711136, -0.021048525348305702, -0.056373223662376404, 0.02095239795744419, -0.0063299573957920074, -0.051798705011606216, -0.03241319581866264, -0.033515915274620056, 0.010839634574949741, -0.0647238940000534, -0.0047917780466377735, -0.019164051860570908, 0.04257974028587341, 0.02880505844950676, 0.027769414708018303, -0.008318834938108921, -0.08252719789743423, -0.019611505791544914, -0.0034729172475636005, -0.030055485665798187, 0.08311280608177185, -0.0075909774750471115, -0.05254979059100151, 0.03415792062878609, -0.07998323440551758, -0.12039048224687576, -0.0248687956482172, 0.09038189053535461, 0.0433352030813694],
+ "VPMOVZXBQYrr":[-0.04572156071662903, -0.059320420026779175, -0.05069558322429657, 0.05505964159965515, 0.01272024679929018, 0.0011656299466267228, -0.028316104784607887, -0.06520836800336838, 0.099686399102211, 0.0047486769035458565, -0.027748269960284233, 0.020982377231121063, 0.026802586391568184, -0.02952738106250763, 0.01606353186070919, -0.05858699232339859, -0.06578699499368668, -0.03623368963599205, 0.014042370021343231, 0.08538693189620972, -0.0024841276463121176, -0.0381971150636673, 0.0355798602104187, -0.0677490234375, -0.0356021374464035, -0.10813899338245392, 0.07606417685747147, 0.03785952180624008, -0.018597573041915894, -0.02878238633275032, -0.0792137086391449, 0.05900943651795387, -0.04554222151637077, 0.01063033938407898, -0.05860678851604462, -0.05748173967003822, 0.03682839870452881, 0.0513930544257164, -0.07079651206731796, 0.08814798295497894, 0.019139302894473076, 0.07829874008893967, -0.023525457829236984, 0.07020645588636398, 8.8817672803998e-05, 0.034897804260253906, 0.01265089400112629, -0.08337976783514023, 0.009420324116945267, 0.08507995307445526, 0.014418438076972961, -0.04338102787733078, -0.036541856825351715, 0.03354313224554062, 0.03634001314640045, -0.004253654275089502, 0.004025342408567667, 0.015298576094210148, -0.0442197360098362, 0.0057534934021532536, -0.049265194684267044, 0.03778906911611557, 0.017469754442572594, -0.03776315227150917, 0.046223197132349014, 0.08328168839216232, -0.011050847359001637, 0.009047441184520721, 0.10275869816541672, -0.012189147062599659, 0.03456031158566475, 0.0699354037642479, 0.041928481310606, 0.05595710128545761, -0.002261450979858637, 0.06383232772350311, 0.06453374773263931, 0.004776844289153814, 0.10186079144477844, -0.03618248924612999, -0.07072009146213531, -0.028095146641135216, 0.00017319998005405068, -0.11239048838615417, -0.054664283990859985, 0.028002966195344925, 0.06281908601522446, 0.09910597652196884, -0.038852572441101074, -0.040883619338274, 0.031107066199183464, 0.019206847995519638, -0.03546574339270592, -0.0017129400512203574, 0.013374846428632736, -0.05634801462292671, -0.03937488794326782, 0.0011014528572559357, 0.04495112970471382, -0.03951406851410866],
+ "VPMOVZXBQrm":[-0.003550470108166337, 0.02697528712451458, -0.045228034257888794, 0.10187128186225891, 0.026209354400634766, -0.03069784864783287, 0.06631633639335632, 0.03759495168924332, 0.02771277353167534, 0.011780452914536, 0.010659337043762207, 0.04518662393093109, 0.0021573600824922323, 0.0689476728439331, 0.016249410808086395, 0.027577023953199387, 0.053647372871637344, -0.003930965904146433, -0.033538758754730225, -0.017304450273513794, 0.030842389911413193, 0.018426043912768364, 0.028454240411520004, 0.017354611307382584, -0.02170390449464321, 0.03214983269572258, 0.06328298896551132, -0.06503624469041824, 0.00884698424488306, 0.042151372879743576, -0.025804542005062103, -0.06768572330474854, -0.0144949434325099, 0.07075994461774826, -0.006291417870670557, -0.028799906373023987, -0.07629281282424927, 0.08337127417325974, -0.0806591585278511, 0.019858691841363907, 0.0018243896774947643, 0.033205389976501465, 0.020398376509547234, -0.008143804967403412, -0.02623734436929226, 0.08604002743959427, -0.05406546592712402, 0.0999639704823494, -0.017725344747304916, 0.011619840748608112, 0.027732327580451965, 0.0017511661862954497, 0.06771190464496613, -0.046366412192583084, 0.022331880405545235, 0.06934354454278946, -0.005930014885962009, -0.004554244223982096, 0.0591016449034214, -0.029396411031484604, 0.008919471874833107, 0.0027418765239417553, -0.0339566208422184, -0.07119104266166687, 0.04393482580780983, 0.008795343339443207, 0.0289046298712492, -0.027372216805815697, 0.07212135940790176, 0.029345443472266197, -0.03487375006079674, -0.045836202800273895, -0.009951301850378513, 0.049676597118377686, 0.046841081231832504, -0.0691661536693573, 0.02988116815686226, 0.06719932705163956, -0.07403204590082169, 0.05346527695655823, -0.037958335131406784, 0.026361428201198578, -0.014464530162513256, -0.03991764038801193, 0.09207247942686081, -0.020654408261179924, 0.020639730617403984, 0.04481995105743408, 0.055717628449201584, 0.01306381355971098, 0.005766352638602257, -0.021741673350334167, -0.05727303400635719, -0.028852369636297226, 0.049978382885456085, -0.02395647019147873, 0.016781380400061607, -0.026825152337551117, 0.09289326518774033, 0.06256227940320969],
+ "VPMOVZXBWYrm":[0.004248124547302723, 0.06771496683359146, -0.09885905683040619, 0.07736482471227646, -0.019375013187527657, -0.020341506227850914, -0.0065159983932971954, -0.012708143331110477, 0.10310931503772736, -0.0596679225564003, 0.05295992270112038, -0.013929450884461403, -0.052152369171381, -0.038842055946588516, 0.0021738659124821424, -0.03130951523780823, 0.0158233605325222, -0.0775906890630722, 0.0075058541260659695, 0.014053480699658394, -0.07244160771369934, -0.0883515477180481, 0.012305558659136295, 0.006524954456835985, 0.012101170606911182, -0.05523788183927536, 0.055225666612386703, -0.05671831965446472, -0.06638119369745255, 0.031106801703572273, 0.033782802522182465, -0.04389018192887306, 0.00021813307830598205, 0.09066549688577652, -0.07443283498287201, 0.07220940291881561, -0.055973369628190994, -0.00987991876900196, 0.0761554017663002, 0.05809393525123596, -0.05018969997763634, -0.057547230273485184, 0.03109866753220558, 0.013463200069963932, -0.029955320060253143, 0.018133096396923065, -0.02028607949614525, -0.07218071073293686, -0.03630377724766731, -0.08095952123403549, -0.004737836308777332, 0.014170289970934391, 0.027850694954395294, -0.06758783012628555, 0.08493693917989731, 0.043327733874320984, -0.07230239361524582, 0.027844440191984177, -0.005613316781818867, -0.10395215451717377, -0.049551259726285934, -0.07283015549182892, 0.08549698442220688, -0.05267290398478508, -0.04623064026236534, 0.02864585630595684, 0.10710852593183517, -0.029849141836166382, 0.06951417773962021, 0.05137239024043083, -0.06837816536426544, -0.038111817091703415, -0.06046893075108528, -0.06605392694473267, 0.09586048126220703, 0.024419408291578293, -0.04484999179840088, -0.05408027023077011, 0.08647344261407852, -0.008971507661044598, -0.05929625779390335, 0.08562154322862625, 0.010227572172880173, 0.054882727563381195, -0.01914072409272194, -0.028351759538054466, 0.01791965961456299, -0.01273795124143362, -0.053188834339380264, -0.012600867077708244, -0.024983704090118408, 0.039336610585451126, -0.0739516168832779, -0.028780508786439896, -0.01000694278627634, -0.05332794412970543, -0.041334982961416245, 0.012146763503551483, -0.03979853168129921, 0.018487408757209778],
+ "VPMOVZXBWYrr":[-0.026212800294160843, -0.10613386332988739, -0.006117635406553745, 0.03452742099761963, 0.0905877947807312, 0.07178332656621933, -0.001679463079199195, 0.03164193779230118, -0.07336008548736572, 0.07395434379577637, 0.027328480035066605, 0.0691070631146431, -0.07032908499240875, -0.06716717779636383, -0.07405384629964828, 0.07307981699705124, -0.09588788449764252, -0.01738053373992443, 0.06209595128893852, -0.046062346547842026, 0.011022765189409256, 0.016592498868703842, -0.04780757799744606, 0.01971594989299774, 0.061034638434648514, -0.09428958594799042, 0.0032135630026459694, -0.05395805835723877, -0.06618411093950272, -0.05709534138441086, 0.04119056835770607, 0.07759899646043777, -0.05212990939617157, -0.011957804672420025, 0.04597668722271919, -0.01892835460603237, 0.01136710587888956, -0.04972434788942337, -0.022765981033444405, 0.10045849531888962, -0.04653312638401985, -0.06448706984519958, 0.06755519658327103, 0.01096351072192192, 0.01562964916229248, -0.11452793329954147, 0.014917097054421902, -0.0545111745595932, 0.06279145181179047, 0.08409963548183441, 0.008536363951861858, -0.08615941554307938, 0.02817244455218315, 0.06821999698877335, 0.004135117866098881, -0.018068920820951462, -0.06469322741031647, 0.0553458034992218, 0.018695570528507233, 0.02948038838803768, -0.006076005753129721, -0.013075905852019787, 0.03991154581308365, 0.014659930020570755, 0.05400225520133972, -0.0034015330020338297, -0.07676270604133606, 0.042965106666088104, 0.02389548160135746, 0.0034168297424912453, -0.060820676386356354, -0.09321130812168121, -0.0752861350774765, -0.026999372988939285, 0.10017172992229462, 0.09466326981782913, -0.037578243762254715, -0.10795558989048004, -0.07457634806632996, 0.020825184881687164, -0.02495685964822769, -0.0381133109331131, -0.035522546619176865, 0.012737995944917202, 0.0009400371927767992, -0.014049403369426727, 0.07152433693408966, 0.06291522830724716, -0.024036912247538567, -0.05735386908054352, -0.06084684282541275, 0.0943552553653717, -0.08020271360874176, 0.0025811295490711927, -0.03923148289322853, -0.02208348736166954, 0.015006986446678638, 0.012424292974174023, -0.04362201318144798, -0.03482985123991966],
+ "VPMOVZXBWrr":[0.027907177805900574, 0.06371170282363892, -0.10159464180469513, 0.05158000439405441, 0.03980576619505882, -0.06565123796463013, 0.003168031806126237, 0.016036782413721085, -0.03962263464927673, 0.012874801643192768, 0.041600942611694336, 0.039542634040117264, -0.0018929754151031375, -0.004960720427334309, -0.015523303300142288, -0.002279051812365651, -0.045125432312488556, 0.014947577379643917, 0.030247721821069717, -0.07442563772201538, 0.0155674172565341, 0.03391021117568016, -0.09266768395900726, -0.06273990869522095, -0.004653735551983118, 0.03750724717974663, -0.01830735243856907, -0.048163123428821564, -0.02975725755095482, 0.023618202656507492, -0.06646402925252914, -0.03309393674135208, -0.022491831332445145, 0.03090943768620491, 0.04042486846446991, 0.0794522613286972, -0.005765664856880903, 0.027865059673786163, -0.030532794073224068, 0.014469676651060581, 0.04770014062523842, -0.021325696259737015, -0.056047018617391586, -0.06175981089472771, -0.02598310448229313, -0.024342630058526993, 0.003403617534786463, -0.050857242196798325, -0.025698281824588776, -0.022442247718572617, -0.0020931989420205355, -0.032408617436885834, -0.07670975476503372, -0.028204387053847313, -0.03170822188258171, 0.08751382678747177, -0.007224389351904392, 0.023073559626936913, 0.041895121335983276, 0.06672248244285583, -0.05644984170794487, 0.03819236159324646, 0.10440728068351746, -0.0035052073653787374, -0.009318966418504715, 0.07099970430135727, -0.10693098604679108, -0.054823778569698334, 0.07578332722187042, -0.014692476950585842, 0.029794273898005486, 0.05080995336174965, 0.03376636654138565, 0.0008377539343200624, 0.01809052936732769, -0.05167245864868164, 0.097361259162426, -0.042616333812475204, 0.053314488381147385, -0.08560029417276382, -0.018598852679133415, 0.019117331132292747, -0.023203926160931587, -0.06298211961984634, -0.043319180607795715, -0.028462445363402367, -0.014067002572119236, -0.03272606059908867, -0.06712352484464645, 0.05448544770479202, 0.002749653998762369, 0.10352879017591476, -0.01333230547606945, -0.007151091005653143, -0.0017857672646641731, -0.06639693677425385, 0.04952961578965187, -0.008982397615909576, -0.07196062058210373, 0.0047383783385157585],
+ "VPMOVZXDQYrm":[0.026917416602373123, -0.007211573421955109, -0.10122640430927277, 0.06538912653923035, 0.028783747926354408, 0.016497580334544182, -0.0803399607539177, -0.06684955209493637, -0.06569594889879227, 0.05108854919672012, -0.027101701125502586, 0.03137330338358879, 0.04681044816970825, -0.015917163342237473, -0.06281338632106781, 0.06747367233037949, 0.07844440639019012, 0.01107757817953825, 0.06325238943099976, 0.018059223890304565, 0.03836581110954285, 0.095277801156044, 0.008910381235182285, -0.08511699736118317, 0.04084191098809242, 0.10066733509302139, 0.06857749819755554, -0.06215716153383255, -0.05327470600605011, 0.02564404346048832, 0.03674408048391342, -0.03399499133229256, -0.010365155525505543, 0.058232907205820084, 0.0505661703646183, 0.018884794786572456, -0.10241752117872238, 0.024714229628443718, -0.08962436020374298, -0.06233111768960953, -0.07254257053136826, -0.03558584302663803, -0.0535995215177536, -0.03821872919797897, -0.0878388062119484, -0.05498871952295303, 0.03400686755776405, 0.043643753975629807, 0.0008010418387129903, 0.06385842710733414, 0.022165194153785706, -0.06744979321956635, 0.054357655346393585, 0.04206988960504532, 0.07621145248413086, -0.012383829802274704, 0.08405517041683197, 0.005292563699185848, 0.023025276139378548, 0.017347922548651695, 0.038804639130830765, -0.007883340120315552, -0.002094973111525178, -0.06373491138219833, 0.039612360298633575, -0.06749558448791504, 0.046086836606264114, -0.09384279698133469, 0.05678432062268257, -0.017158208414912224, 0.013732188381254673, -0.031844642013311386, -0.040970467031002045, -0.03194054216146469, -0.023106951266527176, 0.03559480980038643, 0.11167579889297485, 0.10003399103879929, -0.02870187908411026, -0.013624592684209347, 0.0716896653175354, 0.06867355108261108, -0.018484031781554222, 0.08856342732906342, -0.09297870099544525, 0.04168621823191643, 0.039426639676094055, -0.029733972623944283, -0.036189012229442596, -0.05260298773646355, 0.042013805359601974, 0.008904182352125645, 0.09513335675001144, 0.10994888097047806, 0.009105074219405651, -0.020228469744324684, 0.022723790258169174, 0.07593885809183121, -0.053463179618120193, 0.04177748039364815],
+ "VPMOVZXDQYrr":[-0.05389905348420143, 0.05094122514128685, -0.07001054286956787, 0.0030818551313132048, -0.032619982957839966, -0.12151938676834106, 0.04287737235426903, 0.002933019772171974, 0.00534611102193594, -0.014483831822872162, -0.06675826758146286, -0.03341558203101158, -0.06878785789012909, 0.12819303572177887, -0.04242035746574402, -0.0979163721203804, -0.021961670368909836, -0.02256917394697666, -0.03749893233180046, 0.012940105982124805, -0.031004544347524643, 0.03611002117395401, -0.038215238600969315, -0.05022512003779411, -0.031003683805465698, 0.0029095103964209557, 0.021654939278960228, 0.01882266253232956, -0.024356024339795113, 0.013574792072176933, 0.0469517707824707, -0.00412924587726593, 0.04692332446575165, -0.013917258940637112, 0.09115009754896164, -0.07143799960613251, 0.010767290368676186, -0.09212705492973328, 0.024692919105291367, 0.025451604276895523, -0.05973160266876221, -0.040403109043836594, -0.03492380678653717, -0.018144262954592705, -0.0034690075553953648, -0.01226061675697565, 0.008332036435604095, -0.038711339235305786, -0.004712263587862253, 0.04591440409421921, -0.014481415040791035, -0.025986680760979652, 0.04419797286391258, -0.03466902673244476, -0.06924651563167572, -0.0728708878159523, 0.08172300457954407, 0.018003758043050766, -0.023607781156897545, -0.0863664299249649, -0.04932805523276329, -0.07357744872570038, 0.000332196825183928, 0.05373101308941841, 0.017072074115276337, -0.053737081587314606, 0.020304281264543533, -0.037837374955415726, -0.005008358042687178, 0.030524635687470436, 0.09404726326465607, 0.056648533791303635, -0.020136209204792976, 0.009879648685455322, 0.026862507686018944, -0.014300167560577393, -0.0026403567753732204, 0.02055887132883072, -0.003450514981523156, -0.009074066765606403, -0.08809260278940201, -0.019771400839090347, -0.035432908684015274, 0.039033595472574234, -0.03502975031733513, -0.04910285398364067, 0.02379029616713524, -0.031120091676712036, 0.03551539406180382, -0.07883060723543167, 0.0015741835813969374, -0.10892622917890549, 0.10139365494251251, 0.023524340242147446, -0.039950285106897354, 0.037347499281167984, 0.0556870698928833, -0.01268848404288292, -0.048285290598869324, 0.044420402497053146],
+ "VPMOVZXDQrm":[0.023903708904981613, 0.024961289018392563, -0.022687740623950958, -0.029190974310040474, -0.02734725922346115, -0.0012492837850004435, 0.08753341436386108, -0.027329638600349426, 0.010061483830213547, -0.022540846839547157, 0.00945503544062376, -0.0453665517270565, -0.03219088166952133, 0.051331907510757446, -0.011741718277335167, -0.045762933790683746, -0.0555381216108799, 0.021054193377494812, -0.016578495502471924, -0.01347841415554285, -0.08631892502307892, 0.07659617811441422, 0.06188507750630379, 0.06408531218767166, 0.09363243728876114, -0.08787283301353455, -0.006032954901456833, -0.03531487286090851, 0.0121641606092453, 0.0006437603733502328, 0.04197085648775101, -0.008622907102108002, -0.0013494000304490328, -0.01969808153808117, 0.027507392689585686, -0.058043889701366425, 0.0788436084985733, -0.03810960054397583, 0.00878368690609932, 0.06733546406030655, 0.06422276794910431, 0.023874372243881226, 0.01852688007056713, 0.02252374030649662, 0.06567921489477158, -0.07332908362150192, 0.001010312931612134, 0.10145539790391922, 0.05511707067489624, 0.034957654774188995, 0.026869093999266624, -0.04771518334746361, 0.04035983607172966, 0.03357964754104614, 0.055327173322439194, -0.012373756617307663, -0.021478306502103806, -0.023849129676818848, -0.03334369510412216, -0.042998723685741425, 0.05724214017391205, 0.005403779447078705, -0.038678284734487534, 0.027526991441845894, 0.01595950499176979, 0.006456467788666487, -0.04647252708673477, 0.010953270830214024, 0.03139709681272507, -0.06456312537193298, -0.05131671205163002, -0.028064703568816185, 0.005199461244046688, -0.07370838522911072, -0.07020513713359833, 0.04944324493408203, -0.05774400010704994, -0.049728985875844955, 0.013950691558420658, -0.05910873040556908, -0.054938189685344696, -0.0063540143892169, -0.10017785429954529, 0.06705423444509506, -0.020283926278352737, 0.013566293753683567, 0.06141947582364082, -0.013715056702494621, 0.020959652960300446, 0.050042662769556046, 0.03884763643145561, -0.0999564677476883, -0.01469697430729866, 0.045698389410972595, 0.07405906915664673, -0.030571263283491135, 0.014187078922986984, -0.025836927816271782, -0.07424578815698624, -0.07345732301473618],
+ "VPMOVZXDQrr":[-0.040282636880874634, 0.03969261795282364, -0.021202730014920235, -0.03506853058934212, 0.10970144718885422, -0.0033381630200892687, -0.007487558759748936, 0.03379783779382706, 0.0804087221622467, -0.07694167643785477, -0.040481556206941605, 0.0239058006554842, 0.020774424076080322, -0.07334931939840317, -0.04046875238418579, 0.039208441972732544, -0.00020678754663094878, -0.033121660351753235, 0.03312205895781517, -0.09724687039852142, -0.08023500442504883, 0.023839011788368225, 0.042934488505125046, -0.014550309628248215, 0.10678761452436447, -0.044749606400728226, 0.01297395583242178, -0.003257949138060212, -0.0027035451494157314, -0.05305330827832222, 0.00514181237667799, -0.0380023829638958, -0.04874372482299805, -0.05400509387254715, -0.011171414516866207, -0.035215526819229126, -0.0008979638805612922, -0.05287601053714752, -0.07597880810499191, -0.06500282138586044, -0.011937915347516537, 0.03471652418375015, 0.048308927565813065, -0.04300432279706001, -0.024532152339816093, 0.01581260748207569, -0.03654717653989792, -0.1045011356472969, 0.010228635743260384, 0.05771356076002121, 0.045737896114587784, 0.015982573851943016, -0.018115602433681488, 0.021640097722411156, -0.02360939048230648, 0.02176535315811634, -0.00655315862968564, -0.011937384493649006, 0.03554592281579971, -0.030387261882424355, 0.04019797593355179, 0.06977713853120804, 0.020672550424933434, 0.09751513600349426, -0.10071273148059845, -0.050126705318689346, 0.021312138065695763, 0.015279117971658707, 0.001271565561182797, 0.07444178313016891, -0.00794282741844654, 0.018771884962916374, -0.08507522940635681, -0.049228303134441376, 0.020566964522004128, -0.0894310250878334, 0.059031832963228226, -0.04993700608611107, -0.02222251519560814, -0.05032605305314064, -0.012323982082307339, -0.10742846876382828, 0.05076726898550987, -0.016661634668707848, 0.0481032095849514, -0.07135141640901566, -0.02581598423421383, -0.034092579036951065, -0.019020145758986473, 0.055004846304655075, -0.08167106658220291, 0.019455300644040108, -0.04336538165807724, -0.008231470361351967, -0.07100211083889008, 0.07115617394447327, -0.04702591896057129, -0.10657372325658798, -0.014658729545772076, 0.04917033761739731],
+ "VPMOVZXWDYrm":[-0.042058322578668594, 0.009089525789022446, 0.01786741614341736, 0.08674415946006775, 0.07651080191135406, 0.0548972561955452, -0.0100770965218544, 0.05894593894481659, 0.05068839713931084, 0.0878346860408783, -0.04682600498199463, -0.024814395233988762, -0.040158916264772415, -0.04131954163312912, 0.05880437046289444, -0.0013508859556168318, -0.004550212062895298, 0.05532955750823021, 0.06311814486980438, 0.016972741112113, 0.0015262952074408531, -0.00032756460132077336, 0.06701745837926865, 0.010468708351254463, -0.020553845912218094, -0.008285888470709324, 0.012336387299001217, 0.05648256093263626, 0.046850185841321945, 0.01258310116827488, -0.07806212455034256, 0.017040496692061424, 0.006721187848597765, 0.05327291414141655, 0.028575478121638298, 0.08179883658885956, -0.05708358809351921, -0.06888066232204437, 0.023017216473817825, 0.00463577127084136, 0.04734757915139198, -0.06997215747833252, -0.04191036522388458, -0.062377993017435074, -0.031214050948619843, -0.019685035571455956, -0.0018508160719648004, 0.022071896120905876, 0.026844659820199013, 0.03556990996003151, 0.035220611840486526, 0.0667852908372879, 0.001271839952096343, -0.04863820597529411, -0.007406245451420546, 0.05301790311932564, -0.028879888355731964, 0.07268746197223663, 0.030376620590686798, 0.021132832393050194, -0.004751975182443857, -0.023175010457634926, 0.04769729822874069, -0.00762285478413105, 0.04594242945313454, -0.017417332157492638, -0.051162511110305786, -0.016953732818365097, -0.010691845789551735, -0.01386013999581337, -0.030643288046121597, -0.07790316641330719, 0.07586420327425003, 0.037442296743392944, -0.0764094889163971, 0.08966963738203049, 0.09362346678972244, -0.08456622064113617, -0.0057203746400773525, -0.029577994719147682, -0.08568843454122543, -0.01235077902674675, -0.05107903108000755, -0.05031248554587364, 0.05800117179751396, 0.012752707116305828, 0.037927139550447464, -0.04955480247735977, 0.04156792163848877, 0.009477800689637661, -0.029589559882879257, -0.0010590768652036786, -0.01472702156752348, -0.04888516664505005, -0.030177246779203415, -0.09138200432062149, 0.020658956840634346, 0.00557809229940176, 0.016855992376804352, -0.06058208644390106],
+ "VPMOVZXWDYrr":[0.047969408333301544, 0.07822172343730927, 0.04569220170378685, 0.0884678065776825, 0.014561445452272892, 0.02559516578912735, -0.011374756693840027, 0.03008454665541649, 0.04280134290456772, -0.05517224967479706, 0.014677031897008419, -0.08309651166200638, -0.09890127927064896, -0.004636086989194155, -0.062155529856681824, 0.062223903834819794, 0.0720389112830162, -0.08484616875648499, 0.011774462647736073, 0.02181623876094818, 0.0065751527436077595, 0.002598989987745881, 0.050020482391119, -0.08654866367578506, -0.0485394150018692, 0.037821345031261444, -0.04301361367106438, 1.169084498542361e-05, 0.07663209736347198, 0.057309333235025406, -0.08056154102087021, 0.0005702731432393193, 0.03839921951293945, -0.10918255150318146, -0.048690784722566605, 0.07694824784994125, 0.0007840031757950783, 0.073357492685318, -0.04340682923793793, 0.06124424189329147, -0.012661402113735676, -0.06613355129957199, -0.09161736816167831, -0.03594637289643288, -0.05959315225481987, -0.0414302684366703, -0.0525672473013401, -0.08006191998720169, -0.024575360119342804, -0.050504762679338455, -0.008214651606976986, -0.05024445056915283, -0.056035883724689484, 0.023889794945716858, -0.07800518721342087, 0.0691002681851387, -0.09054146707057953, 0.09008181840181351, 0.0813678652048111, -0.05808380991220474, -0.0180986225605011, 0.003990032710134983, -0.043783679604530334, 0.024839716032147408, 0.019097818061709404, -0.08491521328687668, -0.0028569321148097515, 0.03663790598511696, -0.029516620561480522, -0.0192986149340868, 0.027060778811573982, 0.031739939004182816, -0.06177693232893944, -0.030720911920070648, 0.06267386674880981, -0.004287506453692913, 0.04212702810764313, -0.10886666178703308, -0.04342936351895332, 0.01978161372244358, -0.014129448682069778, 0.0019181924872100353, -0.030795633792877197, -0.04925865679979324, 0.012010248377919197, 0.043421801179647446, 0.06340973824262619, 0.01926800236105919, -0.04963240027427673, 0.03743589296936989, -0.004124726168811321, -0.03145098686218262, -0.10800338536500931, -0.014675759710371494, 0.08623231947422028, -0.11045695841312408, -0.04616566002368927, -0.03829343989491463, 0.05625977739691734, -0.021948419511318207],
+ "VPMOVZXWDrm":[0.0765162855386734, -0.036803264170885086, -0.009429323486983776, 0.0676741898059845, -0.0359068401157856, -0.029821796342730522, -0.10029618442058563, 0.04868798330426216, -0.04909863322973251, 0.03744741156697273, 0.026199448853731155, 0.05395717918872833, 0.0941115990281105, -0.03927408903837204, -0.02092660404741764, -0.09420254081487656, -0.007028077729046345, 0.09294115751981735, -0.009479123167693615, -0.09305238723754883, 0.052584681659936905, 0.09906557947397232, -0.08311832696199417, 0.021026769652962685, 0.0806974470615387, 0.04983685165643692, -0.10072393715381622, 0.053007908165454865, -0.07676713168621063, -0.04408979043364525, -0.047793012112379074, -0.0322486013174057, -0.03741548955440521, -0.028752241283655167, -0.031165413558483124, 0.07659833133220673, -0.00046696519711986184, -0.01281979400664568, 0.06363707780838013, 0.023698734119534492, -0.057996299117803574, 0.04863392189145088, 0.02472120337188244, 0.06117347627878189, 0.09966051578521729, -0.04656181111931801, -0.04038730636239052, 0.019774727523326874, -0.014319844543933868, -0.0469864122569561, -0.020230216905474663, 0.06649953126907349, -0.029602495953440666, -0.017639419063925743, -0.02664661593735218, 0.03165538236498833, 0.03144998103380203, -0.017485082149505615, 0.036685582250356674, -0.03349442780017853, -0.0449879914522171, 0.08817228674888611, 0.038577646017074585, -0.005730242934077978, 0.08092615008354187, -0.015124996192753315, 0.026354970410466194, -0.06315679103136063, -0.0879940316081047, 0.07983582466840744, 0.044494614005088806, 0.033688273280858994, 0.05942809581756592, -0.01695365086197853, 0.08119071274995804, -0.010897131636738777, 0.10980803519487381, -0.08379831165075302, 0.05724525451660156, -0.014986843802034855, 0.05371856689453125, -0.08108536154031754, -0.034270450472831726, -0.05457156151533127, 0.017292769625782967, 0.0049909004010260105, 0.07213353365659714, 0.005836195312440395, 0.028034783899784088, -0.07675950229167938, -0.042693085968494415, 0.02551836520433426, -0.025403577834367752, 0.029321005567908287, -0.05412775278091431, -0.06801161915063858, -0.008335995487868786, -0.07804612070322037, -0.004053363110870123, 0.057609912008047104],
+ "VPMOVZXWDrr":[0.03905823454260826, 0.03649650141596794, -0.02906840108335018, 0.010104948654770851, -0.01184128224849701, 0.039600953459739685, 0.005087425000965595, 0.010227876715362072, -0.0101694380864501, 0.053171306848526, 0.05973445251584053, 0.045493993908166885, 0.04666078835725784, -0.00308597250841558, -0.025458019226789474, 0.021631767973303795, -0.01625441387295723, 0.04709171876311302, 0.026475409045815468, 0.06111543998122215, 0.08096957951784134, 0.05565760284662247, 0.034696679562330246, -0.028726207092404366, -0.05524715408682823, -0.016095289960503578, -0.03306661173701286, 0.07566952705383301, -0.06402263790369034, -0.009269427508115768, 0.037395913153886795, 0.020989948883652687, 0.10503305494785309, -0.04683452099561691, -0.045548319816589355, -0.044885292649269104, 0.008118422701954842, 0.09412644058465958, -0.030090540647506714, 0.05483212321996689, -0.01328146643936634, 0.04947838932275772, 0.001026973477564752, -0.04328345134854317, -0.026249511167407036, -0.005854392424225807, 0.07185719162225723, -0.06314558535814285, -0.012217167764902115, 0.032969288527965546, -0.02805868536233902, 0.02221401408314705, -0.0067488024942576885, 0.04610322043299675, -0.07335620373487473, 0.013958820141851902, -0.0068168542347848415, 0.011486862786114216, 0.012810721062123775, 0.061707306653261185, 0.05477462336421013, 0.04917614907026291, -0.05187449976801872, -0.0380791537463665, -0.0216533113270998, -0.014804922044277191, 0.03036603331565857, -0.002668202854692936, 0.03009510599076748, 0.07179079204797745, 0.10040950775146484, -0.08090268820524216, 0.00019146277918480337, 0.018038881942629814, 0.10977976769208908, 0.10693302005529404, -0.07300447672605515, -0.041643086820840836, 0.009408676065504551, 0.07780943065881729, 0.07207959145307541, -0.06338928639888763, 0.018731633201241493, 0.04345789551734924, -0.007378557231277227, 0.006510614417493343, 0.05980736389756203, 0.01898937113583088, 0.061086367815732956, -0.05702584981918335, 0.014379599131643772, -0.08134961128234863, -0.08448534458875656, 0.10386808216571808, 0.05653580278158188, 0.07102373242378235, 0.002536052605137229, -0.03564669191837311, -0.018152305856347084, -0.0014121970161795616],
+ "VPMOVZXWQYrr":[0.0491320826113224, -0.0409422405064106, -0.07627681642770767, 0.023990891873836517, 0.03509315848350525, 0.025537852197885513, 0.02877097576856613, 0.011433322913944721, -0.025850988924503326, -0.025294333696365356, 0.006148574408143759, -0.06789496541023254, 0.08499916642904282, 0.030218254774808884, -0.060819268226623535, 0.04740888252854347, -0.06951343268156052, -0.051185399293899536, 0.10549105703830719, 0.03803052753210068, 0.045401718467473984, 0.07261201739311218, -0.05631193518638611, 0.028153924271464348, -0.03545999899506569, 0.026463786140084267, -0.0026243627071380615, 0.013626514002680779, 0.024332599714398384, 0.01692371629178524, -0.08707799762487411, 0.01805904321372509, -0.047060441225767136, -0.023481715470552444, 0.04945872351527214, -0.004407115280628204, 0.035982318222522736, 0.09263236075639725, 0.06323317438364029, -0.001017883187159896, 0.00818481296300888, -0.017911694943904877, 0.0927516371011734, 0.03133606165647507, -0.034039851278066635, -0.016390204429626465, -0.08480512350797653, 0.04541728273034096, 0.029271764680743217, -0.008192903362214565, 0.025264132767915726, -0.038018811494112015, -0.02999427355825901, -0.00830001849681139, -0.021078286692500114, 0.06841498613357544, -0.06176597625017166, -0.0210870373994112, 0.04677371680736542, -0.03421806916594505, 0.041144292801618576, 0.06943893432617188, -0.02777140401303768, 0.06489818543195724, -0.046008795499801636, 0.0392761193215847, 0.031351275742053986, -0.07759947329759598, 0.01068443525582552, 0.04186645522713661, 0.019053775817155838, 0.00232554879039526, -0.02902185171842575, -0.04545189067721367, 0.04490022361278534, 0.08248071372509003, 0.04036402329802513, -0.031129028648138046, 0.05980905890464783, -0.03563839569687843, -0.04088059812784195, 0.024209080263972282, -0.07476209104061127, -0.004760793875902891, -0.0015610909322276711, 0.015236656181514263, 0.06811556965112686, -0.04767857864499092, 0.03713254630565643, 0.03439056873321533, 0.011955609545111656, 0.014055627398192883, 0.030047103762626648, -0.03829219192266464, 0.05455061420798302, -0.07655279338359833, 0.035530075430870056, -0.06405014544725418, -0.03850053623318672, 0.07041299343109131],
+ "VPMOVZXWQrm":[-0.05579456686973572, 0.07118097692728043, 0.033343009650707245, -0.08031290024518967, -0.000606595363933593, 0.04851433262228966, 0.10073094815015793, 0.06080194190144539, 0.021433714777231216, 0.09087669104337692, -0.0637584924697876, 0.07404672354459763, -0.010315962135791779, -0.005744333378970623, 0.02363414876163006, -0.019357794895768166, -0.06183896213769913, -0.08728700876235962, -0.07353327423334122, 0.0075893523171544075, -0.010470451787114143, 0.008735591545701027, 0.10037630051374435, -0.03856858238577843, 0.03925180807709694, 0.0897657573223114, -0.02494756691157818, 0.08798191696405411, -0.010075869038701057, -0.09277600795030594, -0.05810549110174179, 0.011438418179750443, 0.09592156112194061, -0.0010574822081252933, 0.07428949326276779, 0.05639675632119179, 0.021948035806417465, 0.001920752925798297, 0.02861776389181614, -0.03314603120088577, -0.0053518363274633884, -0.0236507635563612, 0.07779654860496521, -0.03464045748114586, 0.10817301273345947, 0.05915316194295883, 0.09841227531433105, -0.0897175669670105, -0.05250430107116699, 0.033842481672763824, 0.016744332388043404, -0.02606302686035633, -0.002661759266629815, 0.049117401242256165, -0.053719982504844666, 0.013770411722362041, -0.0317249521613121, -0.04607412591576576, -0.041211552917957306, 0.05861963704228401, 0.07005532830953598, 0.0426444411277771, -0.021359041333198547, -0.04474274814128876, 0.009841949678957462, 0.03397861495614052, -0.07956365495920181, 0.02251117117702961, 0.03420749306678772, 0.05769767612218857, -0.0230612363666296, -0.0008669771486893296, 0.1103261411190033, 0.05795775726437569, 0.04516567662358284, 0.04108531028032303, -0.013533409684896469, 0.09363335371017456, 0.0853663757443428, -0.06812061369419098, 0.030239321291446686, 0.04599382355809212, -0.008147083222866058, 0.0022825864143669605, 0.0019974324386566877, 0.0513843297958374, -0.05268082767724991, 0.005559285171329975, -0.07503602653741837, 0.034752052277326584, -0.06607761979103088, -0.021984292194247246, 0.06076003983616829, 0.018529821187257767, -0.06415636092424393, 0.10824804753065109, 0.10717431455850601, -0.06511475890874863, 0.0866207703948021, 0.101477712392807],
+ "VPMULHUWYrr":[-0.018751414492726326, -0.04994441196322441, 0.0348287858068943, -0.04196995496749878, 0.06077241897583008, 0.06269777566194534, -0.023521941155195236, -0.004505509044975042, -0.009248531423509121, 0.04446408152580261, -0.01580929197371006, 0.02971191518008709, 0.0352887399494648, 0.07106862217187881, 0.05337139964103699, 0.021875055506825447, 0.022563526406884193, 0.007961762137711048, 0.07691685855388641, -0.03167206048965454, 0.09841124713420868, 0.0038777203299105167, -0.06729035079479218, 0.08246707171201706, 0.038737136870622635, 0.036292169243097305, 0.0025016702711582184, -0.021484900265932083, 0.003818704979494214, -0.04962605610489845, -0.03152995556592941, -0.027442721650004387, 0.07182706892490387, 0.0009696110500954092, 0.04662105068564415, 0.09811163693666458, 0.02480441890656948, 0.0013978731585666537, -0.00916516687721014, -0.06095023453235626, -0.028564076870679855, -0.06239628419280052, -0.054429322481155396, -0.04466305300593376, -0.11095618456602097, -0.04428795725107193, -0.056811001151800156, 0.018301570788025856, -0.08332034200429916, -0.06525852531194687, -0.04086983576416969, 0.05251215025782585, 0.0052827270701527596, 0.025321166962385178, 0.009931455366313457, -0.04116320237517357, 0.0011563982116058469, -0.0343492291867733, -0.02311904914677143, 0.002007357543334365, -0.04871585592627525, -0.00869025383144617, 0.05656972900032997, -0.04990353062748909, 0.013605798594653606, 0.06708255410194397, -0.04471214488148689, -0.029262270778417587, -0.07125557214021683, -0.08327467739582062, -0.015962712466716766, 0.015599622391164303, 0.03726322203874588, -0.10556525737047195, -0.01863853819668293, -0.08272120356559753, 0.09625588357448578, 0.06529568135738373, -0.02675236389040947, 0.054630618542432785, -0.03920315206050873, -0.06667725741863251, 0.06366271525621414, -0.05510720610618591, -0.039889123290777206, -0.045792240649461746, -0.002643831307068467, -0.06200309097766876, -0.04495453089475632, 0.03211197257041931, 0.0006430965731851757, -0.04194854199886322, 0.024131303653120995, -0.08224750310182571, -0.06962975114583969, -0.06972382217645645, -0.0023810979910194874, -0.05148007348179817, -0.02527582086622715, 0.037336770445108414],
+ "VPMULLDYrm":[0.054573800414800644, -0.038997456431388855, 0.0191092137247324, -0.020683392882347107, -0.04302550107240677, -0.08555164933204651, 0.00363358692266047, -0.046076007187366486, -0.007013187278062105, 0.01529202051460743, 0.005806458182632923, 0.13350239396095276, -0.002150924876332283, -0.014177057892084122, 0.08272881805896759, -0.048973873257637024, -0.03383249416947365, -0.024073416367173195, -0.03842456638813019, 0.06767943501472473, -0.05886761471629143, -0.08405504375696182, -0.017288541421294212, -0.058127690106630325, -0.017647255212068558, 0.055328723043203354, -0.08833710849285126, -0.010782396420836449, 0.023998046293854713, -0.010136103257536888, 0.01921229250729084, -0.0467393696308136, 0.003034585388377309, -0.049790214747190475, 0.0009976159781217575, -0.054098840802907944, 0.09948688000440598, -0.005496888421475887, 0.0219282153993845, 0.024015599861741066, -0.026351850479841232, 0.01670807972550392, -0.02246791310608387, 0.0596063956618309, -0.014327319338917732, 0.049500592052936554, 0.08292268961668015, 0.03378644958138466, 0.06893493980169296, -0.011511938646435738, 0.015019113197922707, 0.04410853609442711, 0.00560417165979743, -0.03273998200893402, -0.008070675656199455, -0.04453794285655022, -0.00864458829164505, -0.05658837780356407, -0.0351177379488945, 0.06426620483398438, -0.019785255193710327, 0.09408346563577652, -0.033770959824323654, 0.031172513961791992, 0.08291120827198029, 0.023031014949083328, -0.06323639303445816, 0.024986302480101585, -0.10404858738183975, -0.05416148528456688, -0.023380370810627937, -0.06521067023277283, -0.05333394557237625, -0.05163785070180893, 0.020633278414607048, -0.07370183616876602, -0.04819944128394127, 0.0994664654135704, -0.0419100783765316, 0.030818669125437737, -0.04716483876109123, 0.06475213170051575, 0.04803328588604927, -0.020951038226485252, -0.02075636200606823, -0.01563303917646408, 0.0023381805513054132, 0.027443483471870422, 0.056481990963220596, -0.02955736592411995, -0.11600567400455475, 0.03776917979121208, 0.035298556089401245, -0.02572331205010414, 0.02401242032647133, 0.004448446910828352, -0.034515976905822754, -0.011855230666697025, 0.015309838578104973, 0.028053689748048782],
+ "VPMULLDYrr":[-0.112345390021801, -0.04558778554201126, -0.060929011553525925, 0.06733258068561554, -0.07238906621932983, -0.010427725501358509, 0.07458753883838654, 0.0005112938233651221, -0.04818163812160492, 0.002845664042979479, 0.03469426929950714, -0.02010500058531761, 0.10518505424261093, 0.0083966925740242, 0.05173828825354576, 0.09730404615402222, 0.032430604100227356, -0.06493223458528519, -0.027009673416614532, 0.05829878896474838, -0.007199953775852919, 0.05891128256917, 0.09320345520973206, -0.02221766859292984, -0.04545174539089203, 0.04364693537354469, -0.06339243799448013, -0.02064032480120659, 0.008038218133151531, 0.029269855469465256, 0.0989927127957344, -0.02540263719856739, 0.07767269015312195, -0.10688294470310211, 0.019747482612729073, -0.07758487015962601, 0.06566589325666428, -0.016320830211043358, 0.083243228495121, 0.08730372041463852, -0.0009696894558146596, 0.02499421313405037, -0.06524134427309036, 0.05722213536500931, 0.03824719041585922, 0.031469766050577164, 0.04877394810318947, -0.07517828792333603, -0.013117250055074692, -0.06807975471019745, -0.042609941214323044, -0.00470901932567358, 0.02352140285074711, -0.09785870462656021, 0.013609668239951134, -0.005282965023070574, -0.0029446205589920282, -0.07591371238231659, -0.014809510670602322, -0.00015991434338502586, 0.032785750925540924, -0.018769776448607445, -0.07147236168384552, -0.03622850403189659, -0.0719318762421608, 0.05355701223015785, 0.08249203860759735, 0.05026078596711159, 0.024380778893828392, 0.005564501974731684, -0.061597730964422226, -0.0713764950633049, -0.025493672117590904, 0.02246874012053013, -0.011483299545943737, 0.07133209705352783, -0.024330273270606995, 0.023481812328100204, 0.06985031813383102, -0.05281611904501915, -0.0028705806471407413, -0.036163248121738434, -0.09558246284723282, 0.06441463530063629, 0.0650474950671196, 0.06478770077228546, 0.0351724736392498, -0.0471012145280838, 0.032095491886138916, 0.019319480285048485, 0.008808925747871399, 0.029505662620067596, 0.08059773594141006, 0.04631251469254494, -0.055687014013528824, 0.0015223914524540305, 0.06647354364395142, 0.10126838833093643, 0.02434401400387287, -0.005220707505941391],
+ "VPMULLDrr":[0.027089351788163185, 0.02972336672246456, -0.07954365015029907, -0.057758063077926636, 0.05835634842514992, 0.035607967525720596, 0.03400806337594986, -0.09022809565067291, 0.046933241188526154, -0.05879874527454376, -0.04561816155910492, 0.026850217953324318, 0.007514888886362314, 0.010153967887163162, -0.005055498797446489, -0.06229935958981514, -0.05323263630270958, -0.06836237758398056, -0.029752839356660843, -0.008057529106736183, 0.004819348454475403, -0.027513472363352776, -0.06519196182489395, 0.022213712334632874, 0.03436168655753136, -0.06351902335882187, 0.0007592487963847816, 0.040381286293268204, -0.01545825507491827, 0.0018493991810828447, -0.07038891315460205, 0.028661580756306648, 0.04254332184791565, -0.07075018435716629, 0.087761290371418, -0.0075550563633441925, -0.014766287058591843, -0.06233169883489609, -0.06833822280168533, -0.05046732723712921, -0.044831447303295135, -0.008989511989057064, -0.006199834402650595, -0.04067184403538704, 0.052004195749759674, 0.045477159321308136, 0.0009390901541337371, 0.09716849774122238, 0.027589064091444016, -0.015579881146550179, -0.06424134224653244, -0.007284852676093578, -0.017804479226469994, 0.10753276944160461, -0.014959529042243958, -0.0018114857375621796, -0.014522003941237926, -0.04489239305257797, -0.01027357392013073, 0.10309315472841263, -0.0012067368952557445, -0.040835194289684296, -0.04561207816004753, 0.020105775445699692, -0.017668800428509712, -0.011295651085674763, 0.009775301441550255, -0.09656759351491928, 0.037342172116041183, 0.01809006556868553, -0.021284092217683792, 0.06853960454463959, 0.005480403080582619, -0.037768661975860596, -0.04967990517616272, -0.0032904346007853746, -0.04923813045024872, -0.025175150483846664, -0.030526984483003616, 0.03287619352340698, 0.01651725545525551, -0.028644520789384842, 0.06318996846675873, 0.05358470603823662, 0.05300367996096611, -0.07189207524061203, 0.01712745428085327, 0.026878414675593376, 0.0776657909154892, 0.018239563331007957, -0.0014600858557969332, 0.029990050941705704, -0.0997597947716713, 0.023996595293283463, 0.003457815619185567, 0.04285614565014839, 0.05936218425631523, -0.06347478181123734, -0.04951852932572365, 0.00994851440191269],
+ "VPMULLWYrm":[0.0005040213582105935, -0.014847932383418083, -0.021329335868358612, 0.05024280026555061, -0.021216822788119316, 0.0017592301592230797, -0.03613283857703209, 0.05356602370738983, 0.039373140782117844, 0.010511751286685467, 0.07152319699525833, -0.04572059214115143, 0.0040835547260940075, -0.06166581064462662, -0.0009136790176853538, -0.04654136672616005, -0.01078335102647543, 0.0639416053891182, 0.07450313121080399, 0.02642599307000637, 0.09161551296710968, 0.05951719358563423, -0.04783768951892853, 0.007478914689272642, 0.022291680797934532, -0.01323320809751749, 0.01832573674619198, -0.1096310168504715, -0.031173916533589363, -0.05515487492084503, 0.05161573737859726, -0.0430389828979969, 0.09327186644077301, -0.06841185688972473, 0.023232368752360344, 0.01371394470334053, -0.016930263489484787, -0.010581186041235924, 0.013052119873464108, 0.03551001474261284, -0.10565867274999619, 0.057045821100473404, 0.038705021142959595, -0.06778233498334885, -0.001065863878466189, 0.010257868096232414, 0.007864611223340034, 0.021035796031355858, 0.10125386714935303, -0.009709739126265049, -0.0432271733880043, -0.047956597059965134, -0.10585764795541763, 0.004096341319382191, -0.03843991830945015, -0.022513331845402718, -0.041380904614925385, 0.08158541470766068, 0.05197920277714729, 0.06864874809980392, -0.008577189408242702, -0.0024177036248147488, -0.028683915734291077, 0.08764297515153885, -0.0379842184484005, 0.03519681468605995, 0.05063928663730621, 0.03290341794490814, -0.043461497873067856, -0.006161517929285765, 0.06887182593345642, 0.00030852650525048375, 0.06315074115991592, 0.010084480978548527, -0.08130796253681183, -0.003927203360944986, -0.020111151039600372, 0.006937707774341106, 0.024773338809609413, 0.026089081540703773, -0.013560338877141476, -0.0531349740922451, 0.08359585702419281, 0.004648635629564524, 0.00972046423703432, -0.09432657063007355, -0.013619945384562016, 0.06561070680618286, -0.05744317173957825, 0.008654274046421051, 0.04374902695417404, -0.01660064049065113, -0.09081389009952545, 0.005719461943954229, -0.06662756204605103, 0.017860131338238716, -0.08503575623035431, 0.1054377406835556, 0.09693217277526855, -0.00636656628921628],
+ "VPMULLWYrr":[0.0572175532579422, 0.018979627639055252, 0.02552749030292034, 0.09320513904094696, -0.016471637412905693, -0.06485805660486221, 0.08736336976289749, 0.08627625554800034, -0.022765759378671646, 0.05252349376678467, -0.04199967905879021, -0.07228435575962067, 0.012808908708393574, -0.1005968376994133, 0.015026031993329525, 0.031202323734760284, -0.024996180087327957, 0.09682352840900421, 0.036498237401247025, 0.031230859458446503, 0.07932835072278976, -0.04744657501578331, -0.10241516679525375, -0.007769928779453039, 2.740166019066237e-05, 0.06301544606685638, -0.020915772765874863, 0.10006187111139297, -0.015057770535349846, -0.005258507095277309, -0.05587206780910492, -0.04272938892245293, 0.01649322174489498, 0.02494063228368759, -0.037928301841020584, 0.053733646869659424, -0.021539602428674698, -0.1021009236574173, 0.033929843455553055, -0.07202020287513733, -0.07738315314054489, 0.055618058890104294, -0.07290598750114441, -0.010939891450107098, 0.04246460273861885, 0.0014312589773908257, -0.05735516920685768, 0.035641446709632874, -0.052930381149053574, 0.030088115483522415, 0.062069281935691833, -0.06890390068292618, 0.07292257249355316, -0.062472399324178696, -0.00241679884493351, 0.08928383141756058, 0.02239261381328106, -0.04196490719914436, 0.040798988193273544, 0.011604584753513336, -0.05044086277484894, 0.009186008013784885, -0.03150517866015434, -0.006000963971018791, -0.07166170328855515, -0.03193092718720436, 0.015155980363488197, 0.013343418948352337, 0.03644318878650665, -0.0030894603114575148, 0.011494523845613003, 0.006397103425115347, -0.028221962973475456, 0.09226538985967636, -0.08076165616512299, 0.023236382752656937, 0.06956151127815247, 0.008592098951339722, 0.0717213973402977, 0.061922743916511536, 0.020896263420581818, -0.0331762321293354, 0.027984190732240677, 0.07209055870771408, -0.05407510697841644, 0.060290779918432236, -0.04657972231507301, -0.028313951566815376, 0.00984104722738266, 0.008803155273199081, 0.07812204211950302, 0.05548853054642677, 0.03448282182216644, -0.10095348954200745, 0.09593053162097931, -0.010240301489830017, 0.03638821840286255, -0.0170341357588768, 0.08657464385032654, 0.0036232282873243093],
+ "VPMULLWrr":[-0.01305485237389803, 0.017230937257409096, 0.036813680082559586, 0.060600947588682175, -0.03325763717293739, -0.08816041052341461, -0.018543101847171783, -0.0060651530511677265, -0.07200323045253754, 0.023929771035909653, -0.00744960643351078, -0.09523947536945343, 0.01780613511800766, 0.03222348168492317, -0.041451793164014816, -0.07350143790245056, 0.0854703038930893, 0.012674674391746521, -0.08192260563373566, 0.008336375467479229, -0.09182500839233398, -0.04257012903690338, -0.05373663827776909, -0.0387287475168705, 0.07502204179763794, 0.07313636690378189, -0.06749176234006882, 0.06599660962820053, 0.04532304033637047, -0.0393814817070961, -0.0008436909993179142, 0.01805858314037323, -0.06218717247247696, 0.02049986831843853, -0.07429521530866623, -0.010669993236660957, -0.039668742567300797, -0.01916482113301754, -0.01653956063091755, -0.03923959657549858, 0.0378853976726532, -0.060711249709129333, 0.023164017125964165, -0.04692813754081726, 0.03371656313538551, -0.024336712434887886, 0.025071296840906143, 0.060725849121809006, -0.0187643114477396, -0.013303592801094055, -0.012012182734906673, 0.04876703768968582, 0.015167979523539543, -0.03408779203891754, -0.011191661469638348, 0.10041537135839462, 0.03207135573029518, -0.02958548441529274, 0.004546291194856167, 0.045548345893621445, 0.05134528875350952, -0.08889555186033249, -0.057293105870485306, 0.06665973365306854, 0.012296836823225021, -0.006281028036028147, 0.028736095875501633, -0.015348902903497219, 0.027677537873387337, -0.04072519391775131, -0.049802545458078384, 0.0091725317761302, 0.10862364619970322, 0.027125360444188118, 0.05748582258820534, -0.04393569007515907, 0.022582286968827248, -0.010996409691870213, 0.060980603098869324, 0.02443673275411129, -0.005486754700541496, 0.02751973830163479, -0.1065271645784378, 0.05482430383563042, 0.09611602872610092, 0.06097995862364769, 0.010555857792496681, 0.028456229716539383, -0.04408956319093704, 0.0779246911406517, 0.039463356137275696, 0.005358410533517599, 0.07778484374284744, -0.08087984472513199, 0.03144180029630661, -0.10065557807683945, -0.05806192010641098, 0.06958899646997452, 0.03522366285324097, 0.02514977939426899],
+ "VPMULUDQYrr":[0.00034610790316946805, 0.0990910604596138, 0.008284633047878742, 0.06629877537488937, -0.023243606090545654, 0.10284849256277084, 0.0620875358581543, 0.017864182591438293, 0.01350655872374773, -0.0006278330693021417, -0.05285514146089554, 0.006607985123991966, -0.02259134314954281, 0.03256108611822128, 0.0011968552134931087, -0.017992578446865082, 0.03177322447299957, 0.04408727213740349, -0.07394944131374359, 0.042270760983228683, 0.06933871656656265, 0.059971462935209274, 0.047255367040634155, -0.09324027597904205, -0.046935535967350006, 0.02197456732392311, -0.0007328581414185464, 0.00931886862963438, -0.015888163819909096, -0.028527716174721718, -0.051382388919591904, 0.004263930954039097, 0.07143262773752213, -0.045182470232248306, 0.06063305214047432, -0.08280403167009354, -0.003943593241274357, -0.030884999781847, -0.016782384365797043, -0.022592050954699516, 0.04628971591591835, -0.041802458465099335, -0.04094460606575012, 0.05666026100516319, -0.06971639394760132, 0.0442538782954216, 0.03072424605488777, -0.018546298146247864, 0.018872717395424843, -0.0437946617603302, 0.06330984830856323, -0.05407886207103729, -0.08861453831195831, 0.009355739690363407, -0.04576624557375908, -0.04300739988684654, 0.004915613681077957, -0.01651022955775261, 0.0017663249745965004, 0.09070326387882233, 0.022584225982427597, 0.04457389563322067, 0.09967362880706787, 0.028579941019415855, 0.05995028465986252, -0.06632515043020248, -0.009120654314756393, -0.08369497954845428, 0.02738533914089203, -0.021560413762927055, -0.04301853105425835, -0.016173798590898514, 0.06709544360637665, -0.008494142442941666, 0.00045973528176546097, -0.09692996740341187, -0.028092069551348686, -0.07094281911849976, -0.034010231494903564, 0.048906292766332626, -0.0634617805480957, 0.034769631922245026, -0.08111757785081863, -0.03652847930788994, -0.06303919851779938, 0.029754431918263435, 0.04457511752843857, 0.03246152773499489, -0.033812135457992554, 0.04773261770606041, -0.006998796947300434, -0.08572829514741898, 0.07782158255577087, -0.11162709444761276, -0.059368956834077835, 0.05016615614295006, -0.044542524963617325, 0.06356330960988998, 0.06785677373409271, -0.09264636039733887],
+ "VPMULUDQrr":[0.05732973664999008, -0.10605981945991516, -0.03288789838552475, -0.04736533761024475, -0.02596890553832054, 0.07709594070911407, -0.048449769616127014, 0.07596101611852646, 0.10841897130012512, -0.05145055055618286, 0.03749476745724678, -0.11147129535675049, -0.05728059262037277, 0.056088972836732864, 0.022919118404388428, 0.005960675422102213, 0.00012445948959793895, -0.07714641839265823, 0.015580780804157257, 0.09473801404237747, 0.020280640572309494, -0.09010615944862366, -0.035966526716947556, -0.05342965945601463, -0.08039873838424683, 0.0032345280051231384, -0.03590519726276398, -0.03927765041589737, -0.09416599571704865, 0.0944090336561203, -0.0033876814413815737, 0.06957422941923141, 0.07109307497739792, 0.05940672755241394, -0.10483019053936005, -0.015455248765647411, -0.06669158488512039, 0.05013015866279602, -0.001937275636009872, 0.0018774563213810325, -0.10845648497343063, -0.07051640748977661, 0.023571493104100227, -0.05317003279924393, -0.01812441274523735, -0.02770422212779522, 0.007679165340960026, -0.04472741484642029, -0.02945464476943016, 0.013340364210307598, -0.00095221190713346, -0.047919195145368576, -0.07045082747936249, 0.021670587360858917, -0.07623756676912308, -0.03623753413558006, 0.014384428039193153, -0.07003756612539291, 0.07716984301805496, -0.09580255299806595, 0.002717458177357912, 0.03454558551311493, 0.006566930562257767, -0.03360436111688614, -0.034372735768556595, -0.00958072580397129, 0.026058025658130646, -0.06757670640945435, 0.0020464074332267046, 0.09998277574777603, -0.08463072776794434, 0.022581826895475388, -0.02677142806351185, 0.058301735669374466, -0.06048564240336418, 0.036630380898714066, 0.044695377349853516, 0.050583288073539734, 0.06623329222202301, -0.010918064042925835, -0.08088277280330658, -0.004057235084474087, 0.032091010361909866, -0.06952870637178421, -0.03410745784640312, 0.000854492885991931, 0.05131353810429573, -0.08802466094493866, 0.02824004925787449, -0.006300693843513727, 0.03690771758556366, 0.02953156642615795, -0.012451790273189545, 0.02456086315214634, 0.06729722023010254, 0.024727987125515938, -0.058326222002506256, -0.03492163494229317, 0.07325234264135361, 0.06413561850786209],
+ "VPORYrm":[0.04204834997653961, 0.00822773389518261, 0.002686342690140009, 0.024572771042585373, -0.042074017226696014, -0.01299403328448534, 0.05817191302776337, 0.0005798308993689716, 0.0887719988822937, -0.06788453459739685, 0.05567251145839691, -0.05892478674650192, -0.02052156813442707, -0.003528937231749296, -0.06506521254777908, -0.06669069826602936, 0.03594699874520302, -0.01800715923309326, -0.015816345810890198, -0.01281878910958767, 0.053314030170440674, -0.012491485103964806, -0.07391388714313507, 0.002872674260288477, -0.08942309021949768, 0.0005336552276276052, -0.04158438742160797, 0.0800032690167427, 0.060137148946523666, 0.022394008934497833, 0.05888453871011734, -0.08286119252443314, 0.0796005055308342, -0.034164611250162125, 0.00014754285803064704, 0.017854543402791023, 0.05184514820575714, -0.0742487981915474, -0.0009489934309385717, 0.030616870149970055, -0.033383291214704514, 0.04464668408036232, -0.020531248301267624, -0.051126401871442795, 0.0532725490629673, 0.08759838342666626, -0.07461069524288177, 0.05340224876999855, 0.02039819024503231, -0.015288525260984898, 0.0011137393303215504, -0.006428938824683428, 0.0572187565267086, -0.06824637204408646, -0.0899762511253357, -0.0966944620013237, 0.06962986290454865, 0.051795899868011475, -0.02084885537624359, 0.04931280016899109, 0.06826889514923096, -0.025646118447184563, -0.0871284231543541, 0.03237112984061241, 0.05174047127366066, 0.015559769235551357, -0.06074638292193413, -0.06514617055654526, -0.03015972301363945, -0.008743083104491234, 0.06501762568950653, 0.02935600094497204, 0.05145718529820442, 0.08639375120401382, 0.07743391394615173, -0.08581823110580444, -0.006379337050020695, 0.07288859039545059, 0.011183077469468117, 0.035954274237155914, -0.04209389165043831, -0.03478529304265976, -0.060011304914951324, -0.09951896965503693, -0.008782918564975262, 0.01762053370475769, 0.011894534341990948, 0.0250665582716465, 0.11100160330533981, 0.06765112280845642, 0.012731675989925861, 0.05211148038506508, -0.005078012123703957, 0.09902958571910858, 0.0851624384522438, 0.09032657742500305, 0.08945498615503311, 0.10853701829910278, 0.011275340802967548, -0.0720786303281784],
+ "VPORYrr":[0.06891416758298874, 0.05496708303689957, 0.05327716842293739, -0.01259754691272974, -0.07326492667198181, -0.062212299555540085, 0.05288006365299225, -0.0010717989644035697, 0.02775713987648487, -0.03812069818377495, 0.008849584497511387, 0.016233166679739952, -0.03739551454782486, -0.04025432839989662, -0.027550607919692993, 0.04157804697751999, 0.03388230502605438, -0.06940345466136932, -0.08439965546131134, -0.03885733336210251, -0.0023233098909258842, 0.008750573731958866, -0.035878393799066544, 0.05682831257581711, -0.018169686198234558, -0.004362337291240692, -0.11576886475086212, 0.057258617132902145, -0.016126934438943863, -0.023097282275557518, 0.04142746329307556, 0.06206848844885826, -0.058939266949892044, 0.057046566158533096, -0.0006018067360855639, -0.06675795465707779, -0.02132425084710121, -0.06083202734589577, 0.017797676846385002, -0.005622939206659794, 0.015391032211482525, 0.0027965265326201916, -0.05087362602353096, -0.0476408526301384, -0.041030388325452805, -0.03156948462128639, 0.04820100963115692, -0.02061000093817711, 0.08169645071029663, -0.049398235976696014, 0.028335748240351677, 0.012214863672852516, 0.0171737652271986, 0.11272811144590378, -0.023804903030395508, -0.036989033222198486, -0.12189455330371857, 0.02940358966588974, -0.0009664845420047641, -0.014048823155462742, 0.11289331316947937, 0.11443480104207993, -0.049992676824331284, -0.0021515178959816694, 0.021068215370178223, 0.05040070787072182, -0.010309474542737007, 0.07833569496870041, -0.01920640841126442, 0.0006398378172889352, -0.08693885058164597, -0.05134724825620651, -0.019924120977520943, -0.006044328212738037, 0.003316929331049323, -0.08042525500059128, -0.06179448589682579, -0.048452701419591904, -0.0006960073369555175, -0.01987065002322197, -0.023711232468485832, -0.09939304739236832, 0.05328846722841263, 0.029554709792137146, 0.011397652328014374, -0.00825362280011177, 0.010604972019791603, -0.09513238817453384, -0.10248058289289474, -0.043394044041633606, -0.04806307703256607, -0.07735592871904373, 0.024271579459309578, -0.08173809200525284, 0.0572478286921978, -0.025775190442800522, 0.07009861618280411, -0.06822807341814041, -0.026397662237286568, 0.010652931407094002],
+ "VPORrm":[0.025591928511857986, -0.04538102075457573, 0.027153505012392998, -0.0517529658973217, 0.03179910033941269, 0.043706014752388, 0.009193266741931438, 0.03573041409254074, -0.00824752077460289, 0.08366090804338455, -0.004975541494786739, -0.028923461213707924, 0.05887916311621666, 0.0855875313282013, -0.025113467127084732, 0.04178334027528763, -0.10587789863348007, -0.06810905784368515, -0.02181592583656311, -0.08369910717010498, -0.09574198722839355, 8.601325680501759e-05, 0.005147235933691263, -0.0724998190999031, 0.002491863677278161, -0.03529677912592888, -0.05768253281712532, -0.0990389883518219, 0.07624506205320358, -0.026711024343967438, 0.015477893874049187, 0.0772998183965683, -0.02994321659207344, 0.017866037786006927, -0.03156726062297821, 0.028336701914668083, -0.0677284300327301, -0.013577892445027828, -0.06833184510469437, 0.06539994478225708, 0.055580466985702515, 0.033648621290922165, -0.06480328738689423, -0.03354291617870331, 0.0031879039015620947, 0.09113004803657532, -0.02122877724468708, 0.05201873555779457, -0.02276824414730072, 0.018667632713913918, 0.03010459803044796, -0.009245558641850948, -0.03496899828314781, -0.06311545521020889, 0.02407323569059372, 0.004884750582277775, 0.014764032326638699, -0.05103059485554695, -0.03172789886593819, 0.03128449618816376, -0.07068861275911331, 0.04396939277648926, 0.0759950578212738, -0.08121998608112335, -0.033938538283109665, 0.02743680402636528, 0.0015706017147749662, 0.08866707980632782, -0.06047926843166351, 0.03232669085264206, -0.03955483064055443, 0.06442810595035553, -0.057719629257917404, 0.040830038487911224, 0.041934628039598465, 0.08043774962425232, 0.033876221626996994, -0.032929837703704834, 0.007109846919775009, -0.019701097160577774, -0.10240335762500763, -0.047933392226696014, 0.10189948230981827, 0.0008962486172094941, -0.042019978165626526, -0.009752238169312477, 0.019958656281232834, 0.013347444124519825, -0.04194420948624611, -0.024282289668917656, -0.019761882722377777, 0.055875249207019806, -0.05546864494681358, -0.081456758081913, -0.054726630449295044, 0.04110470786690712, 0.02061319537460804, 0.017392577603459358, 0.012507709674537182, -0.0069828936830163],
+ "VPORrr":[0.01308393757790327, -0.07391580939292908, -0.10033418983221054, -0.09893716126680374, -0.08840758353471756, -0.02431252785027027, -0.002928374335169792, 0.015355025418102741, -0.07086271047592163, -0.019069531932473183, -0.04267042875289917, 0.004932701587677002, 0.027320949360728264, -0.06752387434244156, -0.04859716072678566, 0.03571407496929169, 0.04753115028142929, -0.06275500357151031, 0.01368357427418232, 0.04414660483598709, 0.020827138796448708, 0.029515210539102554, 0.020019423216581345, 0.06613599509000778, 0.04269130900502205, 0.1141841858625412, 0.06295261532068253, -0.06663421541452408, 0.007878940552473068, 0.03468695282936096, 0.0009331675828434527, -0.0017139767296612263, 0.028064139187335968, -0.03314506635069847, 0.07069608569145203, -0.07762850075960159, 0.004745320416986942, 0.013906698673963547, 0.002668685745447874, 0.0016629305901005864, -0.07592259347438812, 0.04704466089606285, 0.027885325253009796, -0.055229440331459045, 0.03580055385828018, 0.029595334082841873, -0.06638203561306, 0.06791403889656067, 0.016418160870671272, -0.020324021577835083, -0.03959954157471657, 0.05910750851035118, -0.009021012112498283, -0.004969062749296427, 0.0528094582259655, 0.0066307964734733105, -0.03526018187403679, 0.008196258917450905, -0.01475745253264904, 0.002559273038059473, 0.05212262645363808, 0.012059682048857212, 0.05651983991265297, -0.06673949211835861, 0.025842847302556038, -0.009487096220254898, 0.0169668085873127, 0.0008167281048372388, -0.038319263607263565, 0.0384611077606678, -0.015969980508089066, -0.02196546085178852, 0.08998502045869827, -0.044425688683986664, -0.06590849161148071, 0.012752557173371315, 0.0025797937996685505, 0.09972056746482849, 0.04165707528591156, 0.029176395386457443, 0.018934043124318123, 0.074672169983387, 0.0020986259914934635, -0.008789933286607265, 0.04891186207532883, -0.08411732316017151, 0.0481497123837471, 0.0117376409471035, 0.017394183203577995, 0.003015747759491205, 0.10659600049257278, 0.0740915909409523, 0.025614408776164055, -0.012198409996926785, 0.0671703964471817, 0.0007612323388457298, 0.013701770454645157, 0.021562082692980766, -0.014800729230046272, -0.029162542894482613],
+ "VPSADBWYrr":[0.03161415085196495, 0.021371660754084587, 0.018644528463482857, 0.02732999250292778, 0.057757191359996796, 0.07957475632429123, -0.04415073245763779, 0.06133361533284187, 0.02427392452955246, -0.07929106801748276, -0.06698410958051682, -0.06146487966179848, -0.07455043494701385, -0.05447888374328613, -0.049900416284799576, 0.10435540229082108, 0.04055133834481239, -0.014504135586321354, -0.01350407861173153, 0.07428966462612152, 0.028745528310537338, 0.05966004729270935, 0.0035392832942306995, 0.028703860938549042, 0.009085047990083694, 0.08917506039142609, -0.04253258928656578, -0.038867540657520294, -0.003967005293816328, -0.031333889812231064, -0.06646303087472916, -0.08701469749212265, 0.00040964188519865274, -0.05582726001739502, -0.003707841271534562, -0.02977156452834606, -0.02976296655833721, -0.023125270381569862, -0.06295180320739746, -0.04835861548781395, 0.04494204372167587, 0.0618356317281723, 0.0748603567481041, -0.016765190288424492, -0.046998027712106705, 0.09481415897607803, 0.039749324321746826, 0.06929199397563934, -0.0689123123884201, 0.03287406265735626, 0.05024595186114311, -0.05517673119902611, -0.04642903804779053, -0.07812071591615677, -0.036300718784332275, -0.06449573487043381, -0.06071816757321358, 0.07592368870973587, 0.04183918610215187, 0.0848514661192894, 0.034481581300497055, -0.025737665593624115, -0.045192014425992966, 0.05029139667749405, 0.03594157099723816, -0.0616498738527298, 0.038532957434654236, -0.05192938074469566, -0.0770898386836052, 0.04527582973241806, -0.0038855380844324827, 0.05733960494399071, -0.0894671157002449, -0.07036615908145905, 0.00015033181989565492, -0.006629433482885361, 0.07699105888605118, 0.06051260605454445, 0.06435009837150574, 0.04308905825018883, -0.10929827392101288, -0.001231637317687273, 0.11227219551801682, -0.03384893760085106, 0.04042530432343483, -0.08876223862171173, -0.036137260496616364, 0.09234491735696793, -0.01745588518679142, 0.056026555597782135, -0.032151155173778534, 0.06002609059214592, 0.0022543054074048996, -0.0332866869866848, 0.04735070839524269, 0.08571342378854752, 0.0994151309132576, -0.010928422212600708, 0.06660370528697968, 0.07515666633844376],
+ "VPSADBWrm":[-0.04958662763237953, -0.014494466595351696, 0.048570647835731506, 0.030168946832418442, 0.02544272504746914, -0.09482521563768387, 0.011172525584697723, 0.023699821904301643, -0.038693223148584366, -0.01861395873129368, -0.025340614840388298, -0.014512485824525356, 0.08121627569198608, -0.030649200081825256, -0.017905957996845245, -0.009325842373073101, 0.030555227771401405, -0.03704448044300079, -0.003513017203658819, -0.030947642400860786, 0.07731108367443085, -0.013357233256101608, -0.020378144457936287, -0.09765675663948059, 0.08212637901306152, -0.037044256925582886, 0.003796276170760393, 0.017795834690332413, 0.057608477771282196, -0.07458572834730148, 0.07100044935941696, 0.03113039955496788, 0.05685539171099663, -0.08062859624624252, -0.06793300807476044, -0.06728854030370712, -0.00893683172762394, 0.0708739385008812, 0.04326561093330383, -0.009301815181970596, -0.0024881132412701845, -0.01644243486225605, 0.01764114946126938, -0.008599481545388699, -0.0602307990193367, 0.018949363380670547, -0.10276590287685394, 0.03530716896057129, -0.05667972192168236, 0.10644607990980148, -0.02006658725440502, -0.038201119750738144, -0.0035680592991411686, -0.04380454868078232, 0.02123805694282055, -0.05711028352379799, -0.0013918984914198518, -0.06707509607076645, 0.039247769862413406, -0.016466321423649788, 0.054964106529951096, 0.02056630328297615, 0.06147213652729988, 0.09377362579107285, -0.0746922492980957, 0.034942418336868286, 0.04442916437983513, 0.024895571172237396, -0.007385086268186569, 0.00891497079282999, 0.01283727865666151, 0.07618717849254608, 0.02974812686443329, -0.013045717030763626, 0.02544517256319523, -0.06168720871210098, -0.040474578738212585, 0.015789182856678963, -0.03639241307973862, -0.06401343643665314, -0.008330323733389378, -0.05669580399990082, -0.02405116893351078, 0.05190359055995941, 0.06981275230646133, -0.007406683173030615, -0.021989718079566956, -0.07733942568302155, -0.044623009860515594, 0.00021882339206058532, -0.03935442492365837, 0.037666693329811096, -0.021854542195796967, 0.023313991725444794, 0.05422605946660042, -0.06400489062070847, 0.04243432730436325, -0.008321755565702915, 0.058549247682094574, -0.06561262160539627],
+ "VPSADBWrr":[0.0651588961482048, -0.0813886821269989, -0.04246903583407402, 0.03279293328523636, -0.028120584785938263, -0.06850910931825638, -0.05420473963022232, -0.04467417672276497, 0.02926863729953766, -0.033153459429740906, -0.065921850502491, 0.07794053107500076, -0.03261391818523407, -0.04143613576889038, -0.035481423139572144, -0.08067913353443146, 0.04043466970324516, 0.02812204509973526, -0.07708325237035751, -0.06940907984972, -0.01187467947602272, -0.016972966492176056, 0.05190003663301468, -0.00023861663066782057, 0.05284585431218147, 0.0408950075507164, -0.05527159571647644, -0.017902959138154984, -0.013502645306289196, 0.001543298363685608, -0.07756483554840088, 0.027775580063462257, -0.0003335914225317538, -0.0014583670999854803, 0.061016883701086044, -0.013061292469501495, -0.04457734525203705, 0.02308380976319313, -0.0930517315864563, 0.03326025232672691, 0.08362214267253876, -0.07038608193397522, 0.03003036044538021, -0.044917598366737366, -0.04960041865706444, -0.02974030375480652, 0.05118792504072189, 0.01693233847618103, 0.027865389361977577, 0.02314164489507675, -0.04797589033842087, 0.035876765847206116, 0.08697903901338577, -0.027518203482031822, -0.03870505839586258, -0.015056055039167404, 0.04543670639395714, 0.017861418426036835, 0.021239517256617546, -0.026884250342845917, 0.06306327134370804, -0.023969583213329315, 0.008826998993754387, 0.03500286117196083, 0.021684763953089714, 0.014469753950834274, 0.04868718609213829, 0.07381919771432877, 0.032932985574007034, 0.008994974195957184, -0.0907520279288292, 0.06578756123781204, 0.09399881213903427, 0.008978052996098995, -0.022626208141446114, 0.006674616597592831, 0.03284917026758194, 0.005580115597695112, -0.03001527488231659, -0.017838774248957634, -0.075314000248909, -0.0685211569070816, 0.03913978487253189, -0.05274941399693489, -0.030635911971330643, 0.03314509615302086, -0.001543189398944378, 0.046151336282491684, -0.05795015022158623, 0.023461902514100075, 0.011746336705982685, 0.006757792551070452, -0.054816946387290955, -0.0519823282957077, 0.07095637917518616, -0.04290800169110298, -0.014666358008980751, 0.05349765717983246, 0.10149545967578888, -0.03747140243649483],
+ "VPSHUFBYrm":[0.004052796866744757, 0.023698024451732635, 0.0002797471242956817, 0.01647462137043476, 0.005024855025112629, -0.02147088758647442, 0.0167226642370224, 0.01252440083771944, 0.04850850999355316, -0.08543740957975388, 0.0052679418586194515, 0.03779076412320137, -0.0413634292781353, 0.008428309112787247, 0.013241413980722427, 0.03875179588794708, 0.0625135600566864, -0.0794745609164238, 0.0071820770390331745, 0.019685713574290276, -0.013017039746046066, -0.04467833787202835, -0.033591289073228836, 0.08091962337493896, -0.042371995747089386, 0.04400983080267906, -0.05827590078115463, -0.08148036152124405, -0.06653589755296707, -0.016860172152519226, 0.052588146179914474, 0.012375506572425365, 0.002002190798521042, 0.0895497128367424, 0.01624864712357521, -0.03207112103700638, 0.08433506637811661, 0.03618801012635231, 0.047084759920835495, -0.00441572954878211, 0.0061895535327494144, 0.004939740523695946, -0.0019755966495722532, -0.0008269776590168476, 0.03857102990150452, -0.05484434962272644, -0.016243519261479378, 0.051008716225624084, 0.088147833943367, -0.004251682665199041, -0.05469891056418419, -0.09676096588373184, -0.004029984585940838, 0.08129063993692398, -0.014940055087208748, 0.05795624479651451, 0.03206195309758186, -0.04967254027724266, 0.05733144283294678, 0.004278879147022963, -0.05112263932824135, -0.0049967714585363865, 0.08556731045246124, -0.07771498709917068, 0.06702437251806259, -0.010963117703795433, -0.006614204961806536, -0.03149152174592018, -0.014484204351902008, -0.0046812379732728004, -0.038520410656929016, 0.031919971108436584, 0.09480416029691696, -0.07051784545183182, 0.07330849766731262, -0.019606491550803185, 0.04879438132047653, -0.007574715185910463, 0.027423566207289696, 0.04424352943897247, -0.026725752279162407, -0.0245805736631155, 0.09160040318965912, 0.10630496591329575, -0.03403410688042641, 0.057185325771570206, 0.037393055856227875, 0.015791844576597214, -0.023879632353782654, 0.06041388958692551, -0.07318372279405594, -0.021862395107746124, 0.017720161005854607, 0.018201567232608795, -0.09392376989126205, -0.017383713275194168, -0.075164794921875, -0.03553890064358711, 0.050154849886894226, 0.02848450466990471],
+ "VPSHUFBYrr":[0.004897146951407194, 0.05657494068145752, -0.007035244721919298, 0.03863407298922539, 0.035884980112314224, -0.0073111820966005325, 0.013233807869255543, 0.05269889906048775, -0.05276477709412575, 0.012653377838432789, 0.0404326431453228, -0.028380904346704483, 0.09591398388147354, 0.01563078723847866, 0.05216842144727707, -0.05466907098889351, 0.019118046388030052, 0.044681891798973083, -0.04339485988020897, -0.01573675312101841, -0.06464514881372452, 0.01900368370115757, 0.018898744136095047, 0.09919004142284393, -0.10760940611362457, 0.030761349946260452, 0.0037577112670987844, -0.008619057014584541, 0.0028838692232966423, -0.02261064387857914, 0.05616369843482971, 0.05265703797340393, 0.06295226514339447, 0.0505271852016449, 0.03512375429272652, -0.01839028298854828, -0.09102436155080795, -0.0233107078820467, 0.09056955575942993, 0.014203105121850967, 0.0021091734524816275, -0.005147213116288185, 0.009180947206914425, -0.09810686111450195, -0.013856150209903717, 0.0905919075012207, -0.008457459509372711, -0.064738430082798, 0.05384889617562294, 0.06447519361972809, 0.042254772037267685, 0.022436121478676796, -0.037742141634225845, 0.03534402698278427, -0.07202082127332687, -0.03519419580698013, -0.013804398477077484, -0.06201881542801857, -0.03042648360133171, 0.04017533361911774, 0.015109483152627945, 0.061674680560827255, 0.05144815519452095, -0.08398497104644775, -0.01888708584010601, -0.01304867584258318, 0.09905696660280228, 0.0065339854918420315, -0.02564075216650963, 0.04748612269759178, -0.08605338633060455, 0.05014626681804657, -0.00141655292827636, 0.06900960952043533, 4.414683280629106e-05, 0.012073847465217113, -0.09861748665571213, 0.0542675219476223, -0.09463305026292801, 0.047211483120918274, -0.017814643681049347, 0.0033322626259177923, 0.011763272807002068, 0.0902273878455162, -0.04238970950245857, 0.08810924738645554, -0.1100284531712532, -0.019992856308817863, -0.03778103366494179, 0.10562235862016678, -0.004068020731210709, 0.05070790648460388, -0.08457696437835693, 0.05438515543937683, 0.013358641415834427, -0.09115928411483765, 0.061336301267147064, -0.05638585612177849, 0.03748026490211487, -0.0003252810856793076],
+ "VPSHUFBrm":[0.05988777428865433, 0.08337488025426865, -0.018429677933454514, 0.06134352460503578, 0.020110776647925377, 0.02013656310737133, 0.04927920922636986, 0.08082962781190872, -0.09111787378787994, 0.04746048524975777, 0.004637354984879494, 0.018505841493606567, 0.042933281511068344, -0.05034143850207329, 0.038388121873140335, -0.06404156982898712, -0.05511153116822243, 0.054077569395303726, 0.0029975136276334524, 0.04077187925577164, 0.054350998252630234, 0.0028668639715760946, 0.10740017890930176, 0.10177312791347504, -0.06720105558633804, -0.06157204508781433, -0.04439732804894447, 0.05355560779571533, 0.08102662116289139, -0.02788534387946129, 0.015683520585298538, -0.0558413602411747, -0.07209397852420807, 0.006284809671342373, 0.027700098231434822, -0.09339707344770432, 0.01337403804063797, 0.1015656515955925, -0.06999453157186508, -0.039374858140945435, 0.05433816835284233, -0.002773555228486657, -0.030796749517321587, -0.04283453896641731, 0.06357257068157196, -0.059011995792388916, -0.07627063989639282, 0.06468690186738968, 0.046757351607084274, 0.05020470917224884, 0.035159267485141754, 0.036170024424791336, -0.043457236140966415, 0.04372768476605415, 0.011404974386096, -0.03595584258437157, -0.015207163989543915, -0.06086786463856697, -0.019487664103507996, -0.054296184331178665, -0.0496789887547493, 0.025631437078118324, 0.07117201387882233, 0.0633356049656868, -0.08690615743398666, 0.06738071888685226, -0.005119192413985729, 0.02206079289317131, -0.06295910477638245, 0.012750009074807167, -0.04452342540025711, 0.022315526381134987, 0.020611600950360298, -0.006739972624927759, 0.005221263971179724, -0.04665157571434975, -0.035620804876089096, 0.02513614296913147, -0.06570661067962646, -0.09147416055202484, -0.05177406221628189, -0.07165777683258057, 0.0405060239136219, -0.058805011212825775, 0.058446988463401794, 0.058259256184101105, -0.0057917372323572636, 0.049039360135793686, 0.006732350680977106, -0.06571946293115616, -0.030195113271474838, -0.031362634152173996, -0.0705627053976059, 0.014877301640808582, -0.0864415168762207, -0.07571534067392349, 0.01706135831773281, 0.00769168371334672, -0.05973253771662712, 0.07617959380149841],
+ "VPSHUFBrr":[0.029445333406329155, -0.00353556708432734, 0.017199182882905006, -0.07154898345470428, -0.04559727758169174, 0.07201960682868958, -0.09956693649291992, -0.05289290472865105, -0.004102255683392286, -0.026390131562948227, -0.02548917569220066, 0.05521094426512718, -0.02461104653775692, 0.022488633170723915, 0.047703828662633896, 0.01887446641921997, 0.040999699383974075, 0.026371590793132782, -0.08331220597028732, 0.07284542918205261, -0.0021613361313939095, 0.049418482929468155, -0.03698281571269035, 0.017215190455317497, 0.037155527621507645, 0.00487259728834033, 0.0847567766904831, 0.011395027860999107, 0.0478355847299099, -0.03661901131272316, -0.015688613057136536, -0.0204563420265913, -0.0737529918551445, -0.027920600026845932, 0.030338766053318977, -0.09902800619602203, 0.00718911224976182, -0.012820938602089882, 0.08307591080665588, 0.02608272060751915, -0.06866173446178436, -0.08391904830932617, 0.07208441942930222, 0.007312702480703592, -0.01337904017418623, -0.00813849363476038, -0.0014812774024903774, -0.09550555050373077, -0.0029106554575264454, -0.028381625190377235, 0.06687890738248825, 0.007751779165118933, -0.026532281190156937, -0.045883893966674805, 0.02193627320230007, 0.0444718636572361, -0.00160228053573519, -0.1086401641368866, -0.014923996292054653, -0.029844529926776886, 0.0029784399084746838, -0.03814978897571564, -0.020776014775037766, 0.045318711549043655, 0.04976372793316841, -0.05965956300497055, 0.0187885370105505, -0.005258601158857346, 0.015729114413261414, 0.06157956272363663, 0.004198895767331123, 0.04489463195204735, 0.0034747766330838203, 0.006673366762697697, -0.06571795791387558, 0.0394662581384182, -0.0064139836467802525, -0.006652688141912222, -0.01225840300321579, -0.01686948724091053, 0.014161800034344196, -0.003131434554234147, 0.04331205040216446, -0.02664153464138508, 0.06752212345600128, -0.08917646110057831, -0.05285259708762169, 0.0466969795525074, -0.020473450422286987, -0.00595533661544323, 0.032681167125701904, -0.02141173556447029, -0.022438714280724525, 0.09194916486740112, 0.004947247914969921, -0.004108182620257139, 0.10302861034870148, -0.028395801782608032, -0.05974934995174408, 0.04963284730911255],
+ "VPSHUFDYmi":[-0.022378399968147278, 0.03975857049226761, -0.030201829969882965, -0.04027470573782921, -0.03198527917265892, -0.05571905896067619, -0.07166318595409393, 0.007416293025016785, 0.015877176076173782, -0.08189316838979721, 0.039241302758455276, 0.10297390818595886, -0.029964588582515717, 0.09649929404258728, -0.03169041499495506, 0.08674722164869308, -0.07563978433609009, -0.051045648753643036, 0.03265906497836113, 0.027691181749105453, 0.030108757317066193, -0.005780142731964588, -0.014315592125058174, -0.10101395845413208, -0.07707133889198303, -0.06831569969654083, 0.02097773365676403, -0.02219274453818798, 0.048537980765104294, 0.020073605701327324, 0.00875032227486372, -0.012392372824251652, 0.0664902850985527, 0.060930293053388596, 0.05340729281306267, -0.005099799949675798, 0.0511450357735157, 0.04211057722568512, -0.008275612257421017, -0.002844742499291897, 0.02367786504328251, 0.02058333531022072, -0.05935189872980118, 0.010418504476547241, -0.07874573022127151, -0.04703192785382271, -0.025095898658037186, -0.01849338412284851, 0.07480607181787491, 0.10146763920783997, 0.021122677251696587, -0.011537549085915089, -0.03860589116811752, 0.07838321477174759, 0.045860715210437775, 0.11058534681797028, 0.08483445644378662, 0.015037395991384983, -0.040981896221637726, 0.03954663872718811, 0.027069654315710068, -0.011988461948931217, -0.010976885445415974, -0.004939470440149307, -0.1093837320804596, 0.0009845843305811286, 0.06387470662593842, -0.023956378921866417, 0.05501316860318184, -0.05075407773256302, -0.021851707249879837, -0.10223302990198135, -0.05419208109378815, -0.07181626558303833, -0.021194228902459145, -0.03230903297662735, 0.061424776911735535, -0.023427575826644897, -0.07448122650384903, -0.03943042457103729, 0.01936585083603859, -0.05080951005220413, -0.08642691373825073, -0.07566183805465698, -0.08351410180330276, 0.009371018968522549, -0.09753172099590302, 0.001273471862077713, -0.04586204141378403, 0.015839017927646637, 0.05016225576400757, 0.04699530079960823, -0.009694207459688187, -0.09029657393693924, 0.033735305070877075, -0.03650333732366562, -0.011171803809702396, 0.04193739593029022, -0.02494538202881813, -0.07931544631719589],
+ "VPSHUFDYri":[0.01523254718631506, -0.001853994675911963, -0.04817638546228409, 0.0003317907394375652, 0.09981794655323029, -0.05977121740579605, 0.0227162167429924, 0.010021325200796127, 0.04358629882335663, 0.017116926610469818, 0.04587649554014206, -0.06963095813989639, -0.0176532082259655, 0.005554985720664263, 0.09654057025909424, -0.10217441618442535, 0.03047129139304161, 0.027311235666275024, 0.08526324480772018, -0.026747405529022217, -0.012536711990833282, 0.016059108078479767, 0.020510537549853325, -0.004120518919080496, -0.003765762783586979, 0.06122615933418274, -0.005674770567566156, 0.03541110083460808, -0.0024390704929828644, 0.05151921510696411, -0.0399504192173481, -0.033590808510780334, -0.03834329918026924, 0.06272654235363007, 0.014090904965996742, -0.04259538650512695, 0.03442643582820892, 0.06702917069196701, 0.08758239448070526, -0.04939292371273041, -0.05706772208213806, 0.07127217948436737, 0.0584690161049366, 0.043796438723802567, 0.014339538291096687, -0.06517288833856583, -0.048680029809474945, -0.04292357340455055, -0.007102422881871462, -0.06310202181339264, -0.013758162036538124, -0.029254838824272156, 0.02049253135919571, 0.02900727652013302, -0.030265673995018005, 0.012539193965494633, 0.03965596482157707, -0.010979823768138885, 0.02258644625544548, -0.03368251770734787, -0.038741108030080795, 0.006496059708297253, 0.06105499714612961, -0.03443099185824394, -0.040969062596559525, -0.016133146360516548, 0.08892792463302612, -0.04416433721780777, 0.022608185186982155, 0.059810128062963486, -0.052274540066719055, 0.10069078952074051, -0.05026555061340332, 0.015335692092776299, 0.0388500802218914, -0.0481308177113533, 0.03944286331534386, 0.09408894181251526, 0.05271630734205246, 0.026734933257102966, -0.04282408952713013, -0.013544517569243908, -0.008081970736384392, 0.0530942939221859, 0.09304247051477432, -0.009390187449753284, -0.04831821471452713, 0.016790039837360382, -0.04346979409456253, 0.014236765913665295, -0.049292128533124924, 0.047597166150808334, -0.041175246238708496, -0.08833715319633484, 0.0009338027448393404, 0.04407532140612602, -0.020275017246603966, -0.05070982873439789, -0.012145599350333214, -0.03752344846725464],
+ "VPSHUFDmi":[0.10077414661645889, -0.005830461625009775, -0.07336141169071198, -0.04546728730201721, -0.007788999006152153, 0.04493672400712967, -0.039356108754873276, -0.03836694359779358, -0.02708389423787594, -0.060491595417261124, -0.025383682921528816, 0.004511979408562183, -0.03462358936667442, -0.03825432434678078, 0.04315561801195145, -0.08838489651679993, -0.02683713287115097, -0.0034370534121990204, 0.013465961441397667, 0.0025258567184209824, -0.04306666925549507, -0.025509890168905258, -0.008863500319421291, 0.07944498211145401, 0.0027251606807112694, -0.09969884157180786, 0.019573340192437172, 0.013272526673972607, 0.05902099609375, -0.031639959663152695, -0.011701541021466255, 0.0015695178881287575, 0.061824649572372437, 0.08677861839532852, 0.016644038259983063, -0.07454685121774673, 0.0342097282409668, 0.021773187443614006, 0.004181173164397478, 0.08694007247686386, -0.01170113030821085, -0.060652077198028564, -0.04901023954153061, -0.02158290334045887, 0.044424738734960556, 0.004030570853501558, -0.08892238885164261, 0.09343454986810684, -0.024244539439678192, 0.010995632968842983, 0.07757128775119781, 0.018462257459759712, -0.006422488484531641, 0.03112553246319294, 0.004447908606380224, -0.0018922807648777962, 0.07391832023859024, -0.0777670294046402, 0.011660942807793617, -0.02810618281364441, -0.04429719224572182, -0.03456488251686096, -0.005162212066352367, 0.04037504270672798, 0.012987091206014156, -0.008968515321612358, -0.07729495316743851, 0.050395362079143524, -0.02577480487525463, -0.0012675134930759668, -0.011934267356991768, 0.0028156002517789602, -0.05705975741147995, 0.010311306454241276, -0.0407392643392086, 0.043496377766132355, 0.1207912266254425, 0.0031428479123860598, -0.03976511210203171, 0.0003931514802388847, 0.05408339202404022, 0.05717957392334938, 0.08548202365636826, 0.00812978483736515, -0.005141567438840866, 0.0014013983309268951, -0.04559376835823059, -0.015297316014766693, -0.005475969519466162, -0.01419524010270834, 0.014181643724441528, -0.02510370872914791, 0.060119885951280594, -0.03064120188355446, 0.027442989870905876, -0.10416819900274277, -0.0537533313035965, -0.01771312765777111, -0.03659400716423988, 0.0836557149887085],
+ "VPSHUFDri":[0.007592134643346071, -0.04779095947742462, -0.008817596361041069, -0.10071451961994171, 0.05839815363287926, 0.08109356462955475, -0.06401994824409485, -0.0084181297570467, -0.07431956380605698, -0.02780555933713913, 0.03723089396953583, 0.00600781524553895, 0.05134846642613411, -0.013268412090837955, 0.006575916428118944, 0.022628463804721832, 0.031657710671424866, 0.0069258189760148525, -0.012742752209305763, 0.06291542947292328, -0.00942307524383068, 0.050428442656993866, 0.017274826765060425, -0.08916729688644409, 0.02067359909415245, 0.10396797209978104, -0.016038618981838226, 0.007077682297676802, 0.10504002124071121, 0.0978545993566513, 0.01086339820176363, -0.020947758108377457, 0.010152772068977356, 0.028724009171128273, 0.0862533375620842, -0.05178520455956459, 0.0380169078707695, -0.020362423732876778, -0.0054236589930951595, 0.04173051193356514, -0.02175043895840645, 0.045675259083509445, -0.007061944808810949, 0.04568149149417877, 0.06915633380413055, 0.023585036396980286, -0.03670245409011841, 0.02358783781528473, 0.0088634779676795, 0.056903135031461716, -0.021841123700141907, 0.07697370648384094, -0.03540018945932388, 0.03420637175440788, 0.06670642644166946, -0.0012757693184539676, 0.09295040369033813, 0.095816969871521, -0.024283619597554207, -0.042892877012491226, 0.08095679432153702, -0.02058076113462448, 0.04740827530622482, 0.03720208257436752, 0.021220261231064796, -0.01703820377588272, 0.005687752738595009, 0.019501619040966034, -0.08966982364654541, 0.005184010602533817, -0.021887078881263733, 0.01083525363355875, 0.020659998059272766, -0.04441722854971886, 0.010626882314682007, 0.0025115294847637415, -0.004434732720255852, -0.04084585979580879, 0.041987039148807526, -0.05068838596343994, 0.017866434529423714, 0.009284977801144123, 0.00985437911003828, 0.030381672084331512, 0.012087438255548477, -0.013224076479673386, 0.048794060945510864, 0.07728902250528336, -0.03225286677479744, 0.011976350098848343, 0.08699171990156174, -0.04006026312708855, 0.0022516842000186443, -0.08428497612476349, 0.019344789907336235, -0.05061604082584381, 0.07580838352441788, 0.04723286256194115, -0.02869383990764618, -0.08093442767858505],
+ "VPSHUFHWYri":[-0.05906515195965767, -0.0670662447810173, -0.028600219637155533, -0.04648707062005997, -0.006304774433374405, -0.024378886446356773, 0.004474913701415062, 0.020381605252623558, 0.03245760500431061, -0.04214189946651459, -0.008067234419286251, 0.053980227559804916, 0.0932013988494873, 0.09180030971765518, 0.05584593862295151, -0.06552809476852417, -0.03492254018783569, 0.019507979974150658, 0.040015436708927155, -0.0019049757393077016, -0.060444336384534836, 0.034102246165275574, 0.03672705218195915, -0.010645725764334202, 0.014472650364041328, -0.06526312232017517, -0.02151668816804886, -0.05079979822039604, 0.015732809901237488, -0.009401636198163033, 0.03985575586557388, 0.017191609367728233, -0.04906119033694267, -0.01570175401866436, 0.012644100934267044, -0.004913889337331057, -0.018108120188117027, 0.052102770656347275, 0.027385422959923744, -0.03350920230150223, 0.10695922374725342, 0.025238165631890297, -0.08021984994411469, -0.034528717398643494, 0.07208952307701111, -0.007967782206833363, 0.07603177428245544, 0.03827369213104248, -0.0401868037879467, -0.03740473836660385, -0.08682780712842941, -0.062043748795986176, 0.06069418787956238, -0.05257508158683777, -0.016001427546143532, -0.10926882922649384, -0.053232308477163315, 0.06836321949958801, -0.04511396214365959, 0.1085762232542038, -0.05158089101314545, -0.10005507618188858, -0.012098983861505985, -0.030398981645703316, 0.056046318262815475, 0.02759755402803421, -0.029547862708568573, -0.015096454881131649, -0.008076980710029602, -0.01612202264368534, 0.06281574815511703, 0.01340766903012991, -0.0029183891601860523, 0.00927665177732706, 0.07235872745513916, 0.04305308312177658, -0.03984561935067177, 0.09893651306629181, -0.0023954047355800867, 0.052078232169151306, -0.018122516572475433, -0.007089226506650448, -0.007178531493991613, 0.047804094851017, 0.0874156579375267, 0.0415227897465229, 0.09499430656433105, 0.03166323900222778, -0.0595659501850605, -0.07345797121524811, 0.07838336378335953, -0.058377955108881, -0.11104031652212143, 0.0735473483800888, -0.033578336238861084, -0.06365226954221725, 0.010873615741729736, -0.020272498950362206, 0.05117449536919594, -0.01943492703139782],
+ "VPSHUFLWYri":[-0.09439495950937271, 0.06468069553375244, 0.06475973129272461, -0.06347353011369705, 0.013750209473073483, 0.029647652059793472, 0.07230803370475769, -0.017586251720786095, -0.05881094932556152, 0.04396172612905502, -0.06063985452055931, 0.0067643336951732635, -0.06035385653376579, 0.01776871830224991, -0.03852406144142151, -0.0529998242855072, -0.039058785885572433, 0.008825083263218403, -0.013458404690027237, -0.052278369665145874, 0.07956336438655853, 0.05663811415433884, 0.06667354702949524, -0.00014557852409780025, 0.039803341031074524, -0.02549670822918415, 0.05560314282774925, 0.06791166216135025, 0.011712135747075081, 0.04236307367682457, -0.030163412913680077, -0.01261517871171236, 0.08165914565324783, -0.03941163420677185, 0.030050044879317284, 0.05468360707163811, 0.013397062197327614, 0.007025907747447491, 0.08804242312908173, -0.006339810322970152, -0.06072201579809189, -0.06046036258339882, -0.030767014250159264, -0.07881280034780502, -0.022407233715057373, 0.01340226549655199, 0.002340222243219614, 0.043887097388505936, 0.0257607102394104, 0.016451647505164146, -0.04146434739232063, 0.04404551163315773, 0.03501342609524727, 0.007260091137140989, -0.014419710263609886, -0.04730743542313576, -0.013747644610702991, 0.06019150838255882, 0.07373232394456863, -0.015326449647545815, -0.042748454958200455, -0.05870462581515312, 0.08875413239002228, 0.08778209984302521, 0.09121861308813095, 0.00028219071100465953, -0.038250554352998734, -0.010915545746684074, 0.003105540992692113, -0.007072076667100191, 0.0003419842105358839, 0.0333416685461998, 0.042848460376262665, 0.06110845133662224, 0.055392954498529434, -0.05969071760773659, -0.0038290463853627443, 0.062080539762973785, -0.0815063938498497, -0.040604446083307266, -0.0443485863506794, -0.002055531367659569, -0.041830383241176605, 0.039108697324991226, 0.016995754092931747, -0.10046444833278656, 0.06326603144407272, -0.09668025374412537, 0.06582459807395935, -0.06330696493387222, 0.020498313009738922, 0.02058812975883484, -0.020049726590514183, 0.04930214211344719, -0.01793665811419487, 0.03644543141126633, -0.02276943437755108, -0.022340260446071625, -0.03714284673333168, -0.062018707394599915],
+ "VPSHUFLWri":[0.04720565304160118, -0.06431905925273895, -0.05692112073302269, -0.004905149340629578, -0.10871630162000656, 0.022165948525071144, -0.03242872655391693, -0.09163379669189453, 0.0077681164257228374, 0.012199142016470432, 0.030621789395809174, 0.02596461772918701, 0.05523250624537468, 0.014471136033535004, 0.06571714580059052, -0.021203625947237015, 0.06472761929035187, 0.00961481872946024, 0.016084613278508186, 0.08832557499408722, -0.06233517453074455, 0.021940970793366432, -0.07358872890472412, -0.058055732399225235, -0.09091062098741531, -0.07389678061008453, 0.062425658106803894, -0.032661136239767075, -0.04267694056034088, -0.03561365604400635, 0.05688850209116936, 0.08469531685113907, 0.05211900174617767, -0.024538548663258553, 0.004102855920791626, 0.05160175636410713, 0.027029648423194885, -0.045008450746536255, 0.060382179915905, 0.07981321215629578, 0.030005043372511864, -0.030375787988305092, 0.053023047745227814, 0.0015112534165382385, -0.06824981421232224, 0.046117138117551804, -0.03396928310394287, 0.043888796120882034, -0.07597208768129349, 0.0005849761655554175, -0.04087863862514496, -0.0002583063906058669, 0.09756278991699219, 0.06802940368652344, 0.06916295737028122, 0.04753894358873367, -0.019520124420523643, -0.006602166686207056, -0.008725442923605442, -0.06952761113643646, -0.08969450742006302, 0.08869805186986923, -0.011148382909595966, -0.02779606357216835, -0.037786077708005905, 0.013180253095924854, -0.013050099834799767, 0.0013127789134159684, -0.03742362558841705, 0.06865625828504562, -0.07664276659488678, -0.028843246400356293, 0.039990365505218506, 0.0791156217455864, 0.010884547606110573, 0.03269646316766739, 0.0064559695310890675, 0.016094103455543518, -0.05588289722800255, 0.0749768391251564, -0.041908349841833115, 0.08160500973463058, -0.026338079944252968, -0.10121740400791168, 0.07995226234197617, -0.0058257002383470535, 0.04265714809298515, -0.03432311490178108, -0.03339250013232231, -0.03463783860206604, -0.041098691523075104, -0.042928297072649, -0.03632216155529022, -0.07576092332601547, -0.004039156250655651, -0.03772115334868431, 0.0402323342859745, 0.08976118266582489, -0.019783124327659607, -0.013236157596111298],
+ "VPSLLDQri":[0.019319215789437294, 0.021256566047668457, 0.04076920077204704, -0.05555221065878868, 0.001958143664523959, 0.03895292803645134, -0.02879992499947548, -0.019611114636063576, 0.022296937182545662, 0.02590993605554104, -0.018294386565685272, -0.08096005767583847, 0.07680772244930267, 0.07469169795513153, -0.046765826642513275, 0.016027212142944336, -0.01322577428072691, 0.03468837961554527, -0.04260999336838722, -0.032301872968673706, -0.04861529916524887, -0.019999684765934944, 0.024324368685483932, -0.009433269500732422, -0.031033676117658615, -0.051432449370622635, 0.014696532860398293, -0.00480126217007637, -0.04733527451753616, -0.01917986385524273, -0.016793884336948395, 0.00952693447470665, 0.036343347281217575, 0.02257923036813736, -0.014029284939169884, -0.061145324259996414, 0.027827052399516106, -0.02601112239062786, -0.053111184388399124, -0.016523610800504684, -0.017134850844740868, 0.0031263884156942368, 0.03456563875079155, -0.03837145119905472, 0.00043876178096979856, 0.07662153244018555, 0.037664998322725296, 0.023134473711252213, -0.028538960963487625, 0.0420193187892437, 0.04763869568705559, 0.005238871555775404, 0.017610197886824608, 0.023178597912192345, -0.019751189276576042, 0.003579262411221862, -0.04861598461866379, 0.0027437300886958838, 0.012148188427090645, 0.07400184124708176, 0.02243516780436039, -0.010892549529671669, -0.04635092616081238, -0.00871588196605444, 0.022036192938685417, 0.04936173930764198, 0.05133382976055145, 0.0643937960267067, 0.03867819532752037, -0.0805893987417221, 0.006689299363642931, 0.01116873323917389, 0.03518103063106537, 0.014984955079853535, -0.038752295076847076, 0.020939042791724205, -0.002061644569039345, -0.07279998064041138, -0.03451085090637207, 0.015352370217442513, -0.028257478028535843, -0.06353765726089478, 0.027673091739416122, 0.04134074226021767, -0.010206464678049088, 0.03573217615485191, 0.05032796040177345, -0.035154491662979126, 0.017680980265140533, 0.09519688785076141, -0.0014193105744197965, -0.012695451267063618, -0.021625468507409096, 0.0715378075838089, -0.018351702019572258, -0.04919510334730148, -0.03122803568840027, 0.007153371348977089, 0.02347763441503048, -0.03922007977962494],
+ "VPSLLDYri":[0.021172137930989265, 0.036434292793273926, -0.011812081560492516, -0.041108664125204086, 0.0774175226688385, 0.09893838316202164, 0.00258987327106297, 0.026685113087296486, -0.009767044335603714, 0.07921434938907623, -0.03436706215143204, -0.07740314304828644, -0.024151651188731194, -0.0034631879534572363, 0.0044456725008785725, 0.05073712393641472, 0.03312768414616585, 0.022265316918492317, 0.032418180257081985, -0.09892360866069794, 0.04560205340385437, 0.0912533774971962, -0.004945675376802683, 0.007743461523205042, -0.04367592930793762, 0.02637975849211216, -0.06553863734006882, 0.005853838287293911, 0.022465720772743225, -0.04211300238966942, -0.03152187168598175, -0.09270079433917999, -0.041450049728155136, -0.004862351343035698, -0.06082126870751381, -0.0007923826924525201, -0.018185878172516823, 0.08145599067211151, 0.0835992842912674, -0.0040657096542418, 0.011191650293767452, -0.01605413481593132, 0.05847315862774849, -0.008916364051401615, -0.03984760865569115, 0.017389312386512756, -0.009379146620631218, 0.010391688905656338, 0.06290572881698608, 0.03834963217377663, 0.014151898212730885, -0.01794947125017643, 0.0382414273917675, 0.020991595461964607, -0.028045088052749634, -0.023685116320848465, 0.005733294412493706, -0.019090330228209496, -0.007766664028167725, 0.03477592021226883, -0.004173406399786472, -0.007094986271113157, -0.08566951006650925, -0.028620831668376923, -0.010852048173546791, 0.03541290760040283, 0.06841837614774704, 0.05597121641039848, -0.0306907556951046, 0.030752141028642654, -0.030471449717879295, -0.0015340379904955626, -0.031163755804300308, -0.10031801462173462, -0.011041475459933281, -0.08557412773370743, 0.029969915747642517, 0.05593061074614525, -0.051883235573768616, 0.01763245090842247, -0.07862579077482224, -0.07107879221439362, 0.024576624855399132, -0.06682579964399338, -0.01696273684501648, 0.014057486318051815, 0.0020940282847732306, 0.05329400673508644, -0.02564670890569687, 0.031476106494665146, 0.016408642753958702, -0.01316758245229721, -0.049197837710380554, -0.0005195866106078029, 0.03648991510272026, 0.07399208843708038, 0.01768089458346367, 0.05532123148441315, -0.04821092262864113, -0.06884907186031342],
+ "VPSLLDYrr":[-0.05470441281795502, 0.03224566578865051, -0.05587798357009888, -0.07168315351009369, 0.05830793082714081, 0.002553193364292383, -0.019864294677972794, 0.07817567139863968, 0.002016691956669092, -0.02256876230239868, 0.050136394798755646, 0.011376271024346352, 0.08843518793582916, -0.0198715478181839, 0.049787625670433044, -0.0014200074365362525, 0.01361413486301899, 0.019941266626119614, 0.0508747473359108, -0.0312860831618309, 0.015038943849503994, -0.06559175997972488, -0.0911027118563652, -0.026035664603114128, -0.08763857930898666, -0.07714690268039703, -0.01862550713121891, 0.033394187688827515, 0.008867690339684486, 0.057617880403995514, 0.05229438096284866, -0.021890858188271523, 0.05755580589175224, 0.03989482671022415, -0.047794416546821594, 0.03590937331318855, 0.03484093025326729, 0.027085797861218452, 0.01072130911052227, -0.031848177313804626, -0.0006586583331227303, -0.0304033812135458, 0.08844061940908432, -0.007146766409277916, -0.013470730744302273, -0.07246250659227371, 0.01136174239218235, -0.03317885473370552, -0.006937538273632526, 0.006902902387082577, -0.052946463227272034, 0.024784529581665993, -0.004749595187604427, 0.0627460852265358, -0.039632514119148254, -0.008955650962889194, -0.05144057422876358, 0.042233195155858994, 0.08420933037996292, -0.06154457852244377, 0.037703968584537506, 0.013262361288070679, 0.006174225825816393, -0.07744012773036957, 0.006073383614420891, 0.04970477148890495, -0.09012819081544876, 0.07999088615179062, 0.00593483354896307, 0.01835513673722744, 0.004664820618927479, -0.007306847255676985, 0.06674817204475403, -0.05190559849143028, 0.03947286680340767, -0.05658937990665436, -0.0023870188742876053, 0.06611545383930206, -0.030039940029382706, -0.08271676301956177, -0.060464005917310715, -0.054542236030101776, 0.054753683507442474, 0.06498328596353531, 0.01896890439093113, -0.032272763550281525, -0.08051247894763947, -0.0020648709032684565, -0.02610478363931179, 0.0490645207464695, -0.10475092381238937, -0.009797194972634315, -0.045292798429727554, 0.0656459778547287, -0.05890129506587982, 0.004325497429817915, 0.024760989472270012, -0.0982958972454071, 0.07013176381587982, 0.0790221318602562],
+ "VPSLLDri":[0.027614431455731392, -0.08659661561250687, 0.022055460140109062, 0.012521575205028057, -0.07393282651901245, -0.00021244828531052917, -0.03544332832098007, 0.047064926475286484, -0.010275454260408878, -0.06813866645097733, 0.01724705845117569, 0.04362056776881218, 0.07400724291801453, 0.006331903859972954, 0.014818905852735043, -0.08047854900360107, 0.039181578904390335, -0.07792295515537262, 0.05973656475543976, 0.03903824836015701, -0.02107228897511959, 0.034683797508478165, -0.001640930655412376, 0.057661022990942, 0.034208692610263824, -0.012148257344961166, -0.03388480469584465, -0.03309522569179535, 0.09326107800006866, 0.09994874894618988, -0.0499202236533165, 0.06323748081922531, -0.025351397693157196, 0.016919121146202087, 0.016005054116249084, 0.0831150934100151, 0.047385845333337784, -0.10530517250299454, -0.005297317635267973, -0.07613378018140793, -0.07481618225574493, -0.07889595627784729, -0.06287074834108353, -0.002137616276741028, -0.054686833173036575, -0.0875074565410614, 0.021127063781023026, -0.027697203680872917, -0.044254425913095474, -0.07091771811246872, -0.0999760627746582, 0.07859507203102112, 0.006415029987692833, -0.0956476479768753, 0.08967018127441406, 0.05732559412717819, -0.02226172760128975, 0.007497098296880722, 0.04903305694460869, 0.006831352133303881, 0.03681609779596329, -0.05294523388147354, -0.0025765381287783384, -0.02603730373084545, -0.05364666506648064, 0.0044958582147955894, -0.026390129700303078, -0.09231817722320557, 0.02809949405491352, 0.07431267201900482, 0.026907797902822495, -0.054221395403146744, -0.022556807845830917, 0.08762742578983307, 0.05969316512346268, -0.0032856559846550226, 0.01788446679711342, -0.01691882126033306, 0.05612170696258545, -0.009408400394022465, -0.037382032722234726, -0.03406659886240959, -0.027025459334254265, 0.0033679725602269173, 0.07028407603502274, 0.0372057743370533, -0.008469994179904461, 0.02567008137702942, -0.029795192182064056, 0.034446366131305695, -0.0083154970780015, -0.003534905379638076, 0.09531981498003006, -0.0031276517547667027, 0.03072390705347061, -0.03938732668757439, -0.0007451808778569102, -0.10333865880966187, 0.009832962416112423, 0.07287317514419556],
+ "VPSLLQYri":[-0.04954246059060097, 0.04142213240265846, -0.00891636498272419, 0.11433829367160797, -0.023891359567642212, -0.0018894874956458807, 0.03696783259510994, -0.07172057777643204, -0.08444258570671082, -0.009999142959713936, 0.02355644851922989, 0.03606579080224037, 0.011007036082446575, -0.05985669419169426, -0.0037275434006005526, 0.008459484204649925, 0.014660942368209362, 0.0371980294585228, 0.08270404487848282, -0.01100868359208107, -0.04970329999923706, 0.017945552244782448, -0.03876122459769249, -0.010109758004546165, 0.01670501008629799, -0.06583511829376221, -0.005509790498763323, 0.00024272798327729106, 0.09195509552955627, -0.020116817206144333, -0.04970449581742287, -0.06066412851214409, 0.04622901976108551, -0.05536004900932312, 0.038056205958127975, -0.08020185679197311, 0.0331093929708004, 0.05191842466592789, -0.015162939205765724, 0.09032754600048065, -0.013102635741233826, 0.026609912514686584, 0.012791961431503296, 0.010125202126801014, 0.023539967834949493, -0.052820999175310135, -0.07738196104764938, -0.014089265838265419, 0.046464670449495316, 0.036425188183784485, 0.02918119542300701, 0.06253264844417572, -0.07018708437681198, 0.09577173739671707, 0.00553180743008852, -0.028490101918578148, 0.0211858581751585, -0.05549662187695503, -0.04701806604862213, 0.030369147658348083, -0.02854594588279724, 0.06109742447733879, 0.04338972270488739, 0.05712589994072914, 0.0781029760837555, 0.021965306252241135, -0.023137204349040985, 0.02485545538365841, -0.005494263954460621, 0.0036674439907073975, -0.07813509553670883, -0.001747984322719276, -0.032988592982292175, 0.0925743356347084, -0.011804732494056225, -0.016809646040201187, 0.00951455533504486, -0.039176274091005325, 0.04384925588965416, -4.266491305315867e-05, 0.014655621722340584, 0.06533695012331009, -0.03527071699500084, -0.011303476057946682, 0.07768619060516357, 0.014509566128253937, 0.10004902631044388, -0.08718878030776978, 0.07545700669288635, -0.0053238049149513245, -0.04016932472586632, -0.017637887969613075, -0.014799929223954678, -0.05438094586133957, 0.023697951808571815, 0.054863546043634415, -0.012773141264915466, -0.058578528463840485, 0.016551831737160683, -0.03390819579362869],
+ "VPSLLQri":[-0.05019963160157204, -0.10435536503791809, 0.038099199533462524, 0.013435191474854946, -0.04213685542345047, -0.05028810724616051, -0.041833966970443726, -0.00200057215988636, 0.050875455141067505, -0.04126323014497757, 0.06648153811693192, -0.0036300423089414835, -0.005396109540015459, -0.023104678839445114, 0.007884584367275238, -0.01941850781440735, -0.00997941754758358, -0.10304282605648041, 0.04094972461462021, 0.10163765400648117, -0.08553091436624527, -0.002877394203096628, 0.04708229377865791, -0.031345926225185394, -0.022404251620173454, 0.005356146022677422, 0.09832123667001724, 0.029361175373196602, -0.10424147546291351, 0.02425227500498295, 0.08554529398679733, 0.10087290406227112, -0.01005921047180891, -0.11181420087814331, -0.040879424661397934, -0.06699967384338379, -0.0007359003066085279, -0.04406359791755676, -0.0707036629319191, -0.06952628493309021, -0.04909553751349449, -0.027128955349326134, -0.056669775396585464, -0.029404854401946068, -0.09608156979084015, -0.015418816357851028, 0.03398020565509796, 0.08639544248580933, 0.015074755065143108, -0.020507438108325005, -0.03533174842596054, -0.08883906155824661, 0.002160899341106415, -0.0340949147939682, -0.06685630232095718, 0.07146880775690079, -0.05870398133993149, 0.0446605458855629, 0.027664359658956528, 0.03783903270959854, 0.008753396570682526, 0.005573036149144173, -0.07363448292016983, 0.04054715111851692, -0.014413900673389435, 0.022154970094561577, 0.036457207053899765, 0.04774605855345726, 0.07892357558012009, -0.004771539010107517, -0.04420457035303116, -0.03320694714784622, 0.05663348361849785, -0.0423026867210865, 0.08093173801898956, 0.09990806132555008, -0.018903572112321854, 0.017377730458974838, 0.007541497237980366, -0.03923456743359566, 0.0380927138030529, 0.04275726154446602, -0.0035458391066640615, 0.017398957163095474, 0.05356639251112938, -0.014417016878724098, 0.06291202455759048, 0.016676077619194984, -0.07307721674442291, -0.06839290261268616, 0.05604091286659241, 0.030550768598914146, 0.07959344983100891, 0.058779411017894745, -0.015103103592991829, -0.051133912056684494, 0.018257657065987587, -0.014763501472771168, -0.00705717271193862, 0.07612952589988708],
+ "VPSLLQrr":[-0.047820910811424255, 0.09200796484947205, -0.0387180894613266, 0.06353994458913803, 0.03907231613993645, -0.016151035204529762, 0.06372048705816269, 0.05717892944812775, 0.004315489903092384, 0.04127947986125946, -0.06392022967338562, -0.018921950832009315, 0.06610219925642014, -0.008226899430155754, -0.06085024029016495, -0.0555204339325428, 0.09394951164722443, -0.002849549986422062, 0.08807308226823807, 0.016597887501120567, 0.07774089276790619, -0.056192297488451004, -0.06450719386339188, -0.02661963179707527, -0.053910255432128906, -0.0530024878680706, -0.03582412749528885, 0.08752108365297318, 0.01408102735877037, -0.0935099795460701, 0.007120839320123196, -0.04403569921851158, -0.08485952764749527, 0.050436507910490036, -0.05711332708597183, -0.0968482717871666, -0.03274340182542801, 0.013894266448915005, 0.007408060599118471, 0.06495578587055206, 0.030481763184070587, -0.03227679431438446, 0.061522018164396286, -0.022153854370117188, -0.0012076467974111438, 0.011362584307789803, 0.014071869663894176, 0.0022992074955254793, -0.07801415771245956, -0.04058876633644104, 0.10603928565979004, -0.07464561611413956, 0.014577755704522133, -0.0111652547493577, -0.0581759437918663, 0.07079711556434631, -0.022661810740828514, 0.008346815593540668, -0.11345192044973373, -0.05521879345178604, -0.057770635932683945, 0.01323289331048727, -0.049020372331142426, 0.08126812428236008, 0.008410254493355751, -0.01763128861784935, -0.0019788257777690887, 0.05042257532477379, -0.009098818525671959, 0.010110638104379177, 0.08123265206813812, -0.06027445197105408, 0.03989364206790924, 0.07182629406452179, -0.036087386310100555, 0.035710178315639496, 0.07696674019098282, -0.06040334701538086, -0.057763028889894485, -0.018052777275443077, 0.10989970713853836, -0.07883103936910629, -0.021248213946819305, 0.035786040127277374, 0.06086532026529312, 0.08588729798793793, 0.02252603881061077, 0.009719750843942165, -0.05562750622630119, 0.06182645261287689, 0.02484472095966339, 0.03366682305932045, -0.03398147597908974, 0.06369366496801376, -0.10892313718795776, -0.05314422771334648, -0.03943905234336853, 0.050355084240436554, 0.03973561152815819, 0.014749636873602867],
+ "VPSLLVDYrr":[-0.02823229506611824, -0.09076064079999924, 0.03191876783967018, 0.03060820698738098, -0.018064264208078384, 0.02194819785654545, 0.03881598263978958, 0.07965168356895447, -0.03883977606892586, -0.02873704954981804, 0.05443468317389488, -0.10502371937036514, -0.00889633223414421, -0.06443062424659729, 0.012500208802521229, 0.030002536252141, 0.026432184502482414, -0.04820413887500763, 0.04069526493549347, 0.03231490030884743, 0.053725387901067734, -0.025293001905083656, 0.02898651920258999, -0.04357166588306427, -0.06852782517671585, -0.04165315255522728, -0.08105733245611191, -0.03039575181901455, 0.04925522580742836, 0.018643224611878395, -0.07726176828145981, -0.0029802678618580103, -0.013191863894462585, 0.062628373503685, 0.025416972115635872, -0.002617458812892437, -0.003493075491860509, 0.019478533416986465, 0.008555875159800053, -0.09964172542095184, 0.052707888185977936, -0.0673510730266571, -0.04205198213458061, -0.07861089706420898, 0.004720652010291815, 0.06900583952665329, -0.005936129484325647, 0.061337247490882874, -0.0028858582954853773, 0.07690957933664322, -0.01883539743721485, -0.04794132709503174, -0.022187979891896248, -0.03723907843232155, 0.0016061790520325303, 0.019389012828469276, 0.03165609762072563, -0.05055905506014824, 0.07943852990865707, -0.026417160406708717, -0.025303715839982033, 0.008614345453679562, -0.01052496675401926, 0.020891275256872177, 0.06598879396915436, 0.010247615166008472, -0.016900813207030296, -0.06196727603673935, 0.026760157197713852, -0.06365031749010086, 0.041651997715234756, -0.03443485498428345, 0.03242826461791992, -0.07831745594739914, -0.0045980652794241905, -0.012773264199495316, 0.019797308370471, 0.08924426138401031, 0.0013352596433833241, 0.0782640352845192, -0.08816543966531754, -0.07883214205503464, 0.007239527069032192, -0.0028898201417177916, 0.0739067792892456, 0.09373816847801208, -0.006752434186637402, -0.038710471242666245, 0.024967020377516747, 0.024610377848148346, -0.029142139479517937, 0.00975770503282547, -0.025355344638228416, 0.013938773423433304, -0.04053162410855293, -0.09192413091659546, -0.012097112834453583, -0.1073237955570221, -0.054992400109767914, 0.043977536261081696],
+ "VPSLLVDrm":[-0.07363923639059067, 0.10717941075563431, -0.01764610968530178, -0.08177167177200317, -0.09277098625898361, 0.02090289257466793, 0.03573689982295036, 0.00969528779387474, 0.03095436282455921, 0.01077594980597496, 0.0006813507061451674, 0.1085394099354744, -0.020558521151542664, 0.06440931558609009, -0.06941654533147812, -0.04951215907931328, 0.036855198442935944, 0.08867722749710083, -0.03991859778761864, 0.08210301399230957, -0.07803789526224136, 0.07733654230833054, -0.08083056658506393, 0.10534586757421494, -0.018823673948645592, -0.037659212946891785, 0.0493602491915226, -0.004384136758744717, -0.05135630443692207, -0.07089443504810333, -0.05133681744337082, 0.0496540404856205, 0.08995182067155838, -0.03448672220110893, -0.013424216769635677, -0.04552711918950081, -0.01981736719608307, -0.06821779906749725, 0.0574529804289341, -0.04280351474881172, 0.05092650651931763, -0.0041339765302836895, -0.003754000412300229, 0.031700119376182556, -0.08136530220508575, 0.048436351120471954, -0.044285546988248825, 0.022361822426319122, 0.06014855206012726, -0.000793011044152081, 0.022780150175094604, -0.04125785455107689, -9.64266000664793e-05, 0.09160284698009491, -0.06884612143039703, -0.04677842929959297, 0.020411483943462372, 0.08008760213851929, -0.043733056634664536, -0.020829476416110992, 0.012063556350767612, 0.03874746337532997, -0.0648769810795784, -0.08341783285140991, -0.11143651604652405, -0.0026132238563150167, 0.07052009552717209, -0.08856971561908722, 0.09392726421356201, 0.011917381547391415, 0.07999004423618317, 0.0007932283915579319, 0.05326327309012413, 0.08724850416183472, 0.001490915659815073, -0.07824532687664032, 0.029797160997986794, 0.05776869133114815, -0.04000185430049896, 0.03127081319689751, -0.02824760600924492, 0.022255482152104378, 0.004418536555022001, 0.007352152373641729, -0.02786991558969021, 0.0014565151650458574, -0.02544204704463482, -0.029583338648080826, 0.08215353637933731, -0.08414577692747116, -0.034989312291145325, 0.10216587036848068, -0.0358891598880291, 0.022328220307826996, -0.08579493314027786, -0.0537506528198719, 0.019445406273007393, 0.027308953925967216, -0.02368224412202835, -0.014851589687168598],
+ "VPSLLVDrr":[0.013792665675282478, 0.054932668805122375, 0.00407086405903101, 0.04100341349840164, 0.051153190433979034, -0.017481353133916855, 0.01834632270038128, -0.0016507378313690424, 0.013907165266573429, 0.07924606651067734, 0.045056942850351334, -0.07510414719581604, 0.03885537385940552, 0.01177185121923685, -0.012642675079405308, 0.0011573777301236987, 0.04795537889003754, -0.12058839201927185, -0.06491465121507645, -0.029702233150601387, -0.045084282755851746, -0.025938503444194794, -0.05374875292181969, -0.06754453480243683, 0.018349377438426018, -0.020507536828517914, -0.005265537649393082, 0.04661460593342781, 0.0034747603349387646, 0.06524164974689484, -0.020755641162395477, -0.048550061881542206, 0.06148827448487282, -0.08200566470623016, 0.11504939943552017, 0.007635795045644045, -0.030846290290355682, -0.0316985547542572, -0.03983715549111366, -0.00018911605002358556, -0.07840361446142197, -0.005364494398236275, -0.04729761183261871, -0.044911567121744156, -0.017210591584444046, 0.07457557320594788, -0.031172754243016243, 0.04812370240688324, 0.04127522557973862, -0.10134104639291763, -0.05856786668300629, 0.04823823645710945, 0.10524020344018936, -0.05387989059090614, -0.007108725607395172, 0.00853020790964365, -0.009963956661522388, -0.13613787293434143, 0.08100975304841995, -0.04801585152745247, -0.010234725661575794, 0.060386773198843, 0.002547440817579627, 0.017771707847714424, -0.010939969681203365, 0.05324329063296318, 0.033104173839092255, 0.00887005589902401, 0.06500755250453949, 0.06816096603870392, -0.029949774965643883, -0.0884041041135788, -0.05500581115484238, 0.08757324516773224, -0.03839941322803497, -0.04961537942290306, -0.04133894294500351, 0.009645811282098293, 0.030837368220090866, -0.030618607997894287, 0.027498338371515274, 0.037021804600954056, 0.00048567846533842385, -0.06101445108652115, -0.07519686222076416, -0.06586890667676926, -0.029171420261263847, 0.004271164070814848, -0.102245032787323, 0.014179585501551628, 0.02030366100370884, -0.036569155752658844, 0.0725085586309433, 0.055050674825906754, 0.03492869809269905, 0.024591347202658653, -0.012563161551952362, 0.07931054383516312, -0.05267151817679405, 0.03019898571074009],
+ "VPSLLVQYrr":[-0.029107099398970604, -0.06549045443534851, -0.010212086141109467, 0.02103685587644577, -0.0574779137969017, -0.06671924889087677, 0.043739113956689835, -0.0269489549100399, -0.06299788504838943, -0.04532943293452263, -0.040961675345897675, -0.014545229263603687, -0.024617742747068405, -0.015099477022886276, -0.027839554473757744, 0.03385737165808678, -0.007258255500346422, -0.063031405210495, 0.052877627313137054, -0.01482223067432642, 0.01178854238241911, -0.02885184995830059, -0.009764019399881363, -0.004171032924205065, -0.01846463978290558, -0.02130509354174137, -0.0007815648568794131, 0.04543035104870796, 0.054918378591537476, 0.02870771288871765, -0.013339404948055744, 0.03260303661227226, 0.051932722330093384, 0.015616045333445072, 0.043970320373773575, -0.0007203720742836595, 0.021635357290506363, 0.07586023956537247, 0.03767068311572075, 0.05436480790376663, -0.07848134636878967, 0.03222832828760147, -0.06323748081922531, 0.00438715098425746, 0.010817524045705795, -0.011328385211527348, -0.001417549792677164, 0.0017516730586066842, 0.08961823582649231, 0.0004468421684578061, -0.034250661730766296, -0.06137385964393616, 0.019971899688243866, 0.009873461909592152, -0.01794539764523506, -0.047137390822172165, 0.04630814865231514, -0.021917717531323433, 0.00612383708357811, 0.034464143216609955, 0.013463313691318035, -0.051813483238220215, 0.007441830355674028, -0.027053821831941605, 0.06963381916284561, 0.02187095396220684, 0.08966073393821716, -0.027127159759402275, -0.02142246998846531, -0.04291845113039017, -0.07068286091089249, 0.006753046531230211, -0.043295878916978836, 0.03515973314642906, 0.03198711946606636, -0.03190677613019943, 0.04873427748680115, -0.04087906330823898, -0.020407497882843018, 0.06750872731208801, 0.047864098101854324, -0.026746442541480064, -0.0336325541138649, -0.032357122749090195, 0.10367414355278015, -0.03009711392223835, -0.00913157593458891, -0.01192096434533596, 0.006781505420804024, -0.03242148458957672, 0.009625060483813286, -0.04402240738272667, -0.0152483731508255, -0.0805089995265007, -0.10283321142196655, 0.03536030650138855, 0.0008046388393267989, -0.051488205790519714, 0.04220731928944588, -0.006361774634569883],
+ "VPSLLWYri":[0.039702046662569046, 0.09886344522237778, 0.0030726962722837925, 0.10901104658842087, -0.0036125476472079754, 0.004364613443613052, 0.025752607733011246, 7.785343041177839e-05, 0.046365972608327866, -0.06423459947109222, 0.10515177994966507, 0.056926704943180084, -0.013652526773512363, -0.008681664243340492, 0.030613599345088005, 0.0225455891340971, 0.01783653534948826, -0.05924508348107338, -0.08632689714431763, 0.038367513567209244, 0.007237791549414396, -0.034230269491672516, 0.06565041840076447, -0.06482771784067154, 0.0659303292632103, 0.038178302347660065, -0.011929504573345184, 0.06399883329868317, 0.02980954572558403, -0.08955080062150955, 0.012253646738827229, -0.010761397890746593, -0.02624911069869995, 0.023363608866930008, 0.09822110086679459, -0.06181620806455612, 0.0783819630742073, 0.0009252667077817023, 0.049957044422626495, 0.038346026092767715, -0.04517810419201851, -0.009360577911138535, 0.006815053056925535, 0.009443288668990135, -0.04500540718436241, -0.07761287689208984, -0.02605566382408142, 0.05861544981598854, 0.08110495656728745, -0.017917033284902573, -0.03494006767868996, -0.07445208728313446, 0.06665007770061493, 0.027283472940325737, -0.05388263240456581, 0.021859221160411835, -0.015755902975797653, -0.008032605051994324, -0.07521011680364609, 0.00462644686922431, 0.07499907165765762, -0.10184624046087265, 0.035977382212877274, -0.00608354015275836, -0.07128895819187164, 0.027458131313323975, 0.0610678531229496, 0.04469775781035423, 0.0004117296193726361, 0.02267293445765972, -0.07834924012422562, 0.04557852819561958, -0.11189370602369308, -0.07702479511499405, -0.05373235419392586, 0.006671514827758074, -0.09401998668909073, 0.05014447495341301, 0.10244720429182053, 0.07418111711740494, -0.056196145713329315, -0.0726286992430687, -0.039639782160520554, 0.09854012727737427, -0.08233131468296051, -0.03042684681713581, 0.0017263318877667189, 0.023885296657681465, 0.041868481785058975, 0.01573817990720272, 0.04118975251913071, 0.03546088561415672, 0.012516449205577374, -0.01406340952962637, -0.04360633343458176, -0.01775861531496048, 0.049600616097450256, 0.03139801323413849, 0.062022581696510315, -0.025231748819351196],
+ "VPSLLWri":[-0.06439502537250519, -0.026567092165350914, -0.04124193266034126, 0.06645093858242035, 0.06399669498205185, -0.015214803628623486, 0.012381123378872871, -0.06131090223789215, -0.006206986960023642, -0.04754926636815071, -0.03347742184996605, -0.06075631454586983, 0.06950493901968002, -0.005129918456077576, -0.008697587065398693, -0.04688427597284317, -0.10356714576482773, -0.049845512956380844, 0.012747698463499546, -0.03347256779670715, 0.09997019171714783, -0.08731778711080551, 0.031277403235435486, -0.034916575998067856, 0.04119065776467323, 0.05191192775964737, -0.05617912858724594, -0.0290365032851696, -0.015580402687191963, 0.04667508974671364, -0.003271194640547037, 0.013015502132475376, 0.012558910064399242, -0.005332814529538155, -0.055502526462078094, 0.06731080263853073, 0.07090230286121368, -0.008719277568161488, -0.010224633850157261, -0.018815286457538605, 0.05688159912824631, -0.05083014816045761, 0.0857434943318367, -0.009493638761341572, -0.10294362157583237, -0.06229041516780853, 0.08782041072845459, -0.0519067756831646, 0.08732563257217407, -0.09674607217311859, 0.06965529173612595, -0.0011967798927798867, 0.08087339997291565, -0.0039402199909091, -0.07664206624031067, 0.0018753311596810818, -0.04172383248806, -0.0015589037211611867, 0.0018462103325873613, 0.05574914067983627, 0.09623505175113678, -0.02637397311627865, 0.00737580843269825, -0.046916838735342026, -0.08401849865913391, -0.02008240483701229, 0.008204273879528046, -0.05281386896967888, 0.026314109563827515, -0.0637962818145752, -0.02338283509016037, -0.07243110239505768, 0.025326237082481384, 0.04843270406126976, 0.005073465872555971, 0.010684563778340816, -0.001040426199324429, 0.04017428681254387, -0.07244884222745895, -0.025816824287176132, -0.08307665586471558, -0.022812359035015106, 0.09278053790330887, -0.009824810549616814, 0.07502306997776031, 0.06482046097517014, 0.07827935367822647, -0.007924018427729607, 0.005021185614168644, -0.05562673509120941, -0.004696541000157595, -0.053974349051713943, -0.04674141854047775, -0.08646135777235031, -0.039159998297691345, -0.11062520742416382, 0.0037207561545073986, -0.03713501617312431, 0.06898295134305954, 0.019943304359912872],
+ "VPSRADYri":[0.08297814428806305, -0.01269524171948433, 0.04882937669754028, 0.04405229166150093, 0.04657844454050064, -0.02125789038836956, 0.01793808490037918, 0.010146976448595524, -0.06777685135602951, -0.006236328277736902, -0.007507278583943844, 0.009821251034736633, 0.025533655658364296, 0.025205273181200027, 0.08171006292104721, 0.008238198235630989, -0.0008979904232546687, -0.08685855567455292, -0.03489329665899277, 0.03799912706017494, -0.05380454659461975, -0.00047890975838527083, -0.004923884756863117, -0.004696157295256853, 0.09876097738742828, 0.026129618287086487, -0.0017743917414918542, 0.02327904850244522, 0.07183542847633362, 0.00803239643573761, -0.017519274726510048, 0.030552033334970474, -0.08177182078361511, 0.012042760848999023, -0.10857498645782471, 0.05123690888285637, -0.02999376691877842, 0.09823348373174667, -0.08815313130617142, -0.010316257365047932, 0.055906280875205994, 0.05366882309317589, -0.05896495282649994, -0.03745340555906296, -0.00035705725895240903, 0.0009445495088584721, -0.0320369116961956, -0.0726393312215805, 0.01783178374171257, 0.1059868261218071, -0.057312168180942535, 0.04549058526754379, 0.012789713218808174, 0.019108131527900696, -0.06309618055820465, -0.04331597313284874, -0.0017919300589710474, -0.007985580712556839, -0.05335146188735962, 0.028562072664499283, -0.024133343249559402, 0.06957908719778061, -0.03846953809261322, 0.02216428704559803, 0.020094161853194237, 0.018726876005530357, -0.022425394505262375, 0.06538991630077362, -0.043060943484306335, -0.0629514753818512, 0.03110632859170437, -0.017345331609249115, 0.04286854341626167, 0.033186979591846466, 0.06785564124584198, -0.0037697982043027878, -0.02858356386423111, 0.02009403146803379, -0.01576230116188526, -0.09459245949983597, -0.09070422500371933, 0.025090321898460388, -0.03575519099831581, -0.0034635029733181, 0.036086324602365494, 0.024173462763428688, -0.10972917079925537, 0.04541090875864029, -0.016982847824692726, 0.05834542587399483, 0.025167573243379593, -0.049107592552900314, 0.0579415000975132, -0.043558139353990555, -0.018498629331588745, -0.09948154538869858, 0.07398728281259537, -0.05034342780709267, 0.10616252571344376, 0.02393275499343872],
+ "VPSRADYrr":[0.030160455033183098, -0.00027337289066053927, -0.0849452018737793, -0.016139935702085495, 0.0834488496184349, -0.00020207028137519956, 0.0021468878258019686, 0.0045723216608166695, 0.048132166266441345, 0.020061109215021133, 0.010078510269522667, 0.03587138652801514, 0.006003469694405794, 0.060452014207839966, -0.03657198324799538, -0.006167314480990171, -0.04679932817816734, 0.009344755671918392, 0.03661143407225609, -0.00649108225479722, -0.017397362738847733, 0.01858527958393097, 0.09100104868412018, -0.013973169960081577, -0.09109475463628769, -0.0013912869617342949, -0.051779549568891525, 0.0011119269765913486, -0.03992531821131706, -0.021762020885944366, -0.06965371966362, 0.018807461485266685, 0.05226413905620575, 0.033391520380973816, -0.04688985273241997, -0.014509474858641624, -0.021438607946038246, 0.052009180188179016, -0.08239104598760605, -0.09040225297212601, -0.03578124940395355, -0.08020330965518951, 0.0029579156544059515, 0.05409491807222366, 0.038619186729192734, -0.011722926050424576, 0.11180941760540009, 0.07865475863218307, 0.09184291958808899, 0.07069521397352219, 0.0800023302435875, 0.017252594232559204, 0.029171667993068695, -0.11121954768896103, -0.03824666142463684, 0.06925584375858307, 0.06317894905805588, -0.0472811758518219, 0.011186386458575726, 0.03024892508983612, -0.08934096992015839, 0.0156704131513834, -0.05786819010972977, 0.01758178323507309, -0.018317027017474174, 0.08170238882303238, -0.10505716502666473, -0.07339080423116684, -0.10214485228061676, -0.04232679679989815, -0.08049552887678146, -0.014471925795078278, -0.05327531322836876, 0.025972019881010056, -0.058971699327230453, -0.03174607455730438, 0.06576205044984818, 0.05465047433972359, -0.05052533373236656, 0.01849629357457161, -0.07027151435613632, 0.02457721158862114, -0.028469571843743324, -0.022781331092119217, -0.02800491265952587, 0.021793218329548836, 0.043354589492082596, -0.07905464619398117, 0.018924837931990623, 0.006560463923960924, -0.0021370251197367907, -0.015792809426784515, -0.11023915559053421, -0.014400623738765717, -0.10839278250932693, -0.02531122975051403, -0.017714887857437134, 0.015007185749709606, -0.06424076110124588, -0.03627781942486763],
+ "VPSRADri":[-0.0058047655038535595, 0.07996557652950287, -0.04182625189423561, 0.06813439726829529, 0.06368672102689743, -0.07466059923171997, -0.09077493846416473, -0.04197778180241585, -0.06554354727268219, 0.0013363247271627188, 0.03618963807821274, 0.02681945078074932, 0.07629852741956711, 0.00781678780913353, -0.01998431235551834, 0.024705225601792336, -0.009866968728601933, -0.00861288234591484, -0.06462293863296509, -0.05629987269639969, -0.017107252031564713, -0.0041030957363545895, 0.06411388516426086, -0.04299680143594742, -0.04608362540602684, 0.06020870804786682, 0.009351648390293121, -0.047251757234334946, -0.008851518854498863, 0.02308705449104309, 0.06965324282646179, 0.027206966653466225, -0.06833525747060776, -0.009386406280100346, -0.0227279644459486, 0.011473789811134338, 0.005049340892583132, -0.018316730856895447, 0.0009657212067395449, 0.015058659017086029, 0.01983945444226265, 0.06796512752771378, -0.022556625306606293, -0.006051945500075817, -0.06680844724178314, 0.04478931054472923, 0.027411634102463722, 0.03261801227927208, 0.026078637689352036, 0.04505018889904022, 0.0729764923453331, -0.03066776879131794, -0.022638466209173203, 0.015803596004843712, -0.018422327935695648, 0.04733994975686073, 0.005061893258243799, 0.05156639590859413, 0.051761724054813385, 0.05666962265968323, 0.04331758990883827, 0.026791561394929886, 0.005766388028860092, -0.030511094257235527, 0.0418204627931118, 0.01687159389257431, 0.061340201646089554, -0.005547572858631611, -0.04945050925016403, -0.06377481669187546, -0.008831365033984184, 0.015489221550524235, 0.007837493903934956, -0.05631249025464058, -0.025159653276205063, 0.057783838361501694, -0.03494265675544739, -0.012413905002176762, 0.04093508422374725, 0.06891398876905441, -0.09396384656429291, 0.08333683013916016, -0.0868619903922081, 0.06080226972699165, -0.022059964016079903, -0.04090883582830429, 0.03791811317205429, -0.07594630867242813, -0.015811771154403687, -0.02725858986377716, -0.030794739723205566, 0.047037865966558456, -0.007481991779059172, -0.029511848464608192, -0.08178924769163132, 0.02578543871641159, 0.07870183140039444, -0.004523847717791796, -0.008327358402311802, -0.029772760346531868],
+ "VPSRAVDYrm":[0.07115538418292999, -0.03897443041205406, -0.0019210940226912498, 0.060934361070394516, 0.04998265579342842, 0.024030961096286774, 0.09372547268867493, 0.0543457455933094, 0.006529566831886768, -0.06000368297100067, -0.06676498055458069, -0.010609282180666924, -0.03960846737027168, 0.05110260099172592, -0.05902588367462158, -0.011475744657218456, 0.016178570687770844, -0.0033387658186256886, -0.0051573277451097965, 0.020219899713993073, -0.0384402759373188, -0.058897506445646286, -0.07185486704111099, -0.025992397218942642, -0.031042147427797318, -0.09822256863117218, -0.023109659552574158, 0.004025914706289768, -0.07664541900157928, -0.09742777794599533, 0.014004675671458244, -0.019419847056269646, 0.021409329026937485, -0.024871567264199257, -0.08017801493406296, -0.10699786245822906, -0.0708608478307724, 0.01016551535576582, -0.07757887989282608, -0.00526074506342411, 0.028875185176730156, -0.0444890521466732, -0.014410717412829399, 0.05487724393606186, 0.047114305198192596, -0.046864237636327744, 0.003158781211823225, -0.0566825345158577, -0.030937664210796356, 0.0914236307144165, -0.027024701237678528, 0.09378054738044739, 0.09962098300457001, 0.04863797873258591, -0.06440985947847366, 0.016332335770130157, 0.004139503929764032, 0.04565969109535217, 0.00824142899364233, 0.01096789725124836, -0.009797733277082443, 0.01992809772491455, -0.029459476470947266, 0.07369344681501389, 0.056041616946458817, -0.02200401946902275, 0.013501993380486965, 0.09951210767030716, -0.03852676600217819, -0.03855232894420624, 0.04836054518818855, -0.01524785254150629, 0.08911455422639847, 0.0546635165810585, -0.003310280153527856, -0.09786174446344376, 0.0690414309501648, 0.056950755417346954, 0.010883507318794727, -0.027379635721445084, -0.002048182301223278, -0.011026055552065372, 0.053318530321121216, 0.011589713394641876, -0.09563513845205307, 0.05770181119441986, 0.024318860843777657, -0.0028793606907129288, 0.03683238476514816, -0.03730881214141846, 0.003853683127090335, 0.001679329783655703, -0.03615625575184822, 0.06634826213121414, -0.006279557012021542, 0.09643705934286118, -0.00472825113683939, -0.09424440562725067, -0.029234662652015686, 0.023386791348457336],
+ "VPSRAVDYrr":[-0.01431462075561285, 0.002207898534834385, -0.02297632023692131, -0.0774364247918129, 0.03975621238350868, 0.0004761416057590395, -0.060558415949344635, -0.06219327077269554, 0.01966433972120285, -0.019448406994342804, 0.021788371726870537, 0.0539904460310936, 0.07277869433164597, -0.0606856495141983, 0.005420651286840439, 0.057868801057338715, 0.08838295936584473, -0.01437467336654663, -0.05425737425684929, -0.04398593679070473, 0.04122316837310791, -0.024295426905155182, -0.053912583738565445, -0.0334482304751873, 0.040402915328741074, 0.05520024523139, 0.009610962122678757, -0.08906552940607071, -0.05567437782883644, 0.05101464316248894, 0.01391281932592392, -0.0766032338142395, 0.01687452755868435, 0.03248167037963867, 0.032633598893880844, 0.06234357878565788, 0.042593762278556824, 0.051553234457969666, 0.015246251598000526, -0.03270227089524269, -0.02156803570687771, 0.045077934861183167, -0.04028914123773575, -0.023133793845772743, 0.01903802901506424, -0.008909008465707302, 0.021538017317652702, -0.08398658782243729, -0.02437642216682434, -0.003755380632355809, 0.05330813676118851, -0.07279852032661438, -0.008434551768004894, 0.007359058130532503, -0.022847918793559074, 0.03741412237286568, -0.0031770786736160517, 0.011100620031356812, -0.06897470355033875, 0.012286724522709846, 0.054027896374464035, 0.009853212162852287, 0.09078311920166016, 0.03653940185904503, 0.009675051085650921, -0.004054220858961344, -0.08917223662137985, 0.001253427122719586, -0.006405984051525593, -0.0509832501411438, 0.0855444073677063, 0.04688052460551262, 0.04698633775115013, -0.03900435194373131, 0.07071428745985031, 0.07523836195468903, -0.03806883841753006, 0.028887908905744553, -0.062194179743528366, -0.03713930398225784, -0.05729033425450325, 0.08481904119253159, 0.021208422258496284, 0.07958323508501053, 0.035916417837142944, -0.006066025700420141, 0.09708582609891891, 0.006378386169672012, -0.03315255045890808, 0.059531718492507935, 0.015052157454192638, 0.0022647243458777666, 0.016678394749760628, 0.03666404262185097, 0.029324954375624657, -0.03209737688302994, 0.015063870698213577, -0.028809208422899246, -0.02954252064228058, 0.004447822459042072],
+ "VPSRAVDrm":[0.039422113448381424, 0.11196743696928024, -0.05110279470682144, -0.012992586009204388, 0.0895465761423111, 0.04418262839317322, -0.07353071123361588, -0.004036007449030876, 0.0022003103513270617, 0.025554176419973373, -0.06397128105163574, 0.010906925424933434, -0.021163349971175194, -0.015783485025167465, 0.04939916729927063, 0.07050781697034836, -0.10628876090049744, -0.10085408389568329, 0.021877314895391464, 0.0054547530598938465, -0.059057414531707764, -0.0007349541992880404, -0.02040337212383747, -0.0859237089753151, 0.07306475937366486, 0.06594841927289963, -0.035246722400188446, -0.03811121731996536, -0.011530899442732334, 0.017876116558909416, 0.006194900721311569, 0.001494268886744976, 0.015297596342861652, 0.04948582872748375, 0.01591169275343418, -0.010740900412201881, 0.10646376013755798, 0.0651215985417366, 0.08035563677549362, -0.08152401447296143, -0.04675781726837158, -0.025376971811056137, 0.04209783300757408, 0.0428183414041996, -0.060357749462127686, -0.0798892229795456, -0.001331618521362543, -0.024156123399734497, -0.03145354613661766, 0.0028521306812763214, -0.0762581080198288, -0.02930714376270771, -0.08458900451660156, 0.06931913644075394, 0.001734197256155312, 0.041383955627679825, -0.061571333557367325, -0.0012095256242901087, 0.10248716920614243, -0.03743433579802513, 0.006252458784729242, 0.06990347057580948, -0.027427244931459427, -0.03975941985845566, 0.06246187537908554, -0.01645883172750473, -0.03011108562350273, -0.077737957239151, 0.017803743481636047, 0.04025346785783768, -0.053891077637672424, 0.03159800171852112, -0.07315860688686371, -0.050992533564567566, -0.06467483937740326, 0.0087042935192585, -0.08658184111118317, -0.023338956758379936, 0.1138090044260025, 0.02363300509750843, -0.02323189191520214, -0.005351688712835312, -0.012802784331142902, -0.03455958515405655, 0.0023171657230705023, -0.05798914656043053, 0.048209838569164276, -0.001728388830088079, -0.01254044845700264, -0.004804771859198809, -0.04692158102989197, 0.067685566842556, -0.02100583352148533, -0.06557580828666687, -0.06642699986696243, -0.039807163178920746, -0.025204813107848167, 0.03424365818500519, 0.08747779577970505, -0.0841773971915245],
+ "VPSRAWYri":[-0.026883115991950035, -0.08379370719194412, -0.09568451344966888, 0.05810096487402916, 0.037102289497852325, -0.009275308810174465, 0.06578855961561203, 0.05785995349287987, -0.05653952807188034, 0.009402167983353138, 0.008525256998836994, 0.048156123608350754, 0.015243043191730976, 0.017080157995224, -0.0223223939538002, 0.04103855788707733, 0.027460461482405663, -0.06354428082704544, -0.04488140344619751, 0.07313758134841919, 0.024280723184347153, -0.011518856510519981, -0.06440102308988571, -0.07290806621313095, 0.02739468775689602, 0.043697480112314224, 0.011909586377441883, 0.01044055912643671, 0.0262683667242527, -0.023859702050685883, 0.08232712745666504, 0.045434944331645966, -0.04604893550276756, -0.04705588147044182, -0.025682004168629646, 0.03823787719011307, -0.040953025221824646, 0.035290203988552094, 0.018668657168745995, 0.02569783851504326, -0.04332488030195236, 0.025920452550053596, 0.04304753988981247, 0.012598666362464428, -0.0747845321893692, 0.05066889896988869, 0.029312873259186745, 0.04664498195052147, -0.014520348981022835, 0.06491421908140182, -0.03604401648044586, -0.05137815326452255, 0.05078747123479843, 0.0015003061853349209, 0.047081343829631805, -0.017579855397343636, 0.05765628069639206, 0.023306744173169136, 0.07734528183937073, 0.07151950895786285, 0.041054967790842056, 0.008302566595375538, -0.08080665022134781, -0.033684130758047104, -0.0022796785924583673, 0.0025223903357982635, -0.0444025844335556, 0.06287035346031189, 0.03328634798526764, -0.01192608941346407, 0.0039387233555316925, 0.0192051213234663, -0.03901803120970726, 0.10113135725259781, -0.01900472119450569, 0.01184149831533432, -0.034888505935668945, 0.02482987940311432, 0.03000594675540924, 0.06421272456645966, 0.07565732300281525, -0.015197210013866425, -0.03913155570626259, 0.05389133095741272, 0.044498808681964874, -0.05212952941656113, 0.0023211147636175156, 0.031027372926473618, 0.03354428708553314, 0.055687736719846725, -0.025226356461644173, 0.09220845252275467, 0.007193766068667173, -0.017647651955485344, 0.06539294123649597, 0.06303917616605759, 0.06304056942462921, 0.042494457215070724, 0.021239060908555984, -0.07155296951532364],
+ "VPSRAWri":[-0.08016924560070038, -0.03523481264710426, -0.056754518300294876, 0.045823875814676285, -0.08353755623102188, -0.06620057672262192, 0.011736832559108734, -0.07301311939954758, -0.0967862457036972, 0.04840034991502762, 0.03192668780684471, -0.062200047075748444, -0.04160187020897865, -0.025863222777843475, -0.0569947175681591, 0.07593261450529099, 0.015613030642271042, -0.03309351205825806, 0.04554774984717369, 0.09233741462230682, -0.0897204652428627, 0.06544722616672516, -0.003955002408474684, -0.08184250444173813, 0.10802094638347626, -0.014920316636562347, -0.011786341667175293, 0.03780911862850189, 0.04760513827204704, -0.03688918799161911, 0.08890823274850845, 0.06679587811231613, 0.0021933249663561583, 0.04525083675980568, 0.036590758711099625, 0.0729057788848877, -0.018020441755652428, -0.0005036373040638864, 0.06315062195062637, -0.06475800275802612, 0.07735898345708847, 0.0017100030090659857, -0.05481937527656555, -0.05194968730211258, 0.017464831471443176, 0.02783750183880329, 0.033108264207839966, -0.08690103143453598, -0.0186567734926939, 0.03538466617465019, -0.009959314949810505, -0.11078381538391113, -0.008511839434504509, 0.04957260191440582, -0.04748978838324547, -0.0060485489666461945, 0.04338175430893898, 0.0021895270328968763, 0.03885992616415024, -0.006889474578201771, -0.1022307425737381, 0.03480930253863335, -0.09553217887878418, -0.014875832945108414, -0.007360019721090794, -0.03260039910674095, 0.014504319056868553, -0.045193735510110855, -0.022743698209524155, -0.0006014250684529543, 0.05113091692328453, 0.10026407986879349, 0.056986115872859955, -0.04604585841298103, 0.023973187431693077, 0.08129579573869705, -7.180290413089097e-05, 0.05756068974733353, 0.05897602438926697, -0.047613710165023804, 0.03997548297047615, 0.0005892113549634814, -0.03521469235420227, -0.0020094476640224457, 0.08268571645021439, -0.09846004098653793, 0.0573343001306057, -0.07186689972877502, -0.07654666900634766, 0.025725791230797768, -0.09909549355506897, -0.06909332424402237, 0.003886147867888212, 0.04661331698298454, 0.04732494056224823, 0.0052274721674621105, -0.004589246120303869, -0.001173931173980236, -0.06966148316860199, 0.06738591194152832],
+ "VPSRLDQri":[0.05351985618472099, 0.053475067019462585, -0.033049650490283966, -0.0844677984714508, -0.07793337851762772, -0.046240244060754776, -0.031897518783807755, -0.07027368992567062, 0.06251544505357742, -0.0278173815459013, 0.04102478176355362, 0.03312419354915619, -0.08670409023761749, -0.03292416036128998, -0.018487975001335144, -0.07999919354915619, 0.04159991815686226, -0.01351803820580244, -0.016103720292448997, 0.04807883873581886, -0.020045338198542595, -0.05216435343027115, -0.02939636819064617, -0.06591212749481201, -0.005007565021514893, 0.0491776280105114, 0.015282833017408848, -0.1096530333161354, -0.01962677761912346, -0.0945313572883606, 0.06451757252216339, -0.02888018824160099, -0.0033664004877209663, 0.0166083462536335, -0.019535813480615616, -0.07591329514980316, -0.016689741984009743, 0.07331763952970505, -0.0263923741877079, -0.10520162433385849, 0.06987696886062622, -0.028926733881235123, 0.025569666177034378, 0.028293659910559654, 0.08156329393386841, 0.03268721327185631, 0.031234048306941986, 0.039401423186063766, -0.034190721809864044, 0.06038176268339157, 0.04827301204204559, -0.024276308715343475, -0.03231249749660492, -0.08211077004671097, -0.019732315093278885, 0.04590334743261337, 0.05732912942767143, -0.03238793835043907, 0.007760351989418268, -0.03609490767121315, 0.07579115033149719, 0.041606076061725616, 0.024717316031455994, 0.008111678995192051, 0.07231681048870087, -0.026155484840273857, -0.07008575648069382, 0.0095254797488451, -0.058861035853624344, -0.007758348248898983, 0.04450692608952522, 0.0576099157333374, 0.05002223327755928, 0.03131335973739624, -0.042971011251211166, 0.0484897680580616, -0.001229100744239986, -0.05070709437131882, 0.07034551352262497, 0.019600555300712585, 0.022635653614997864, -0.10042072832584381, -0.03636430948972702, -0.0518273301422596, -0.030377481132745743, 0.0703345537185669, 0.06837139278650284, -0.003320041112601757, -0.059561245143413544, -0.057924214750528336, -0.05896180123090744, -0.07521853595972061, 0.027807140722870827, 0.0351630263030529, -0.01486850157380104, 0.011375265195965767, -0.008011086843907833, 0.0576925165951252, 0.022747712209820747, 0.00043502249172888696],
+ "VPSRLDYri":[-0.08364519476890564, 0.04699648544192314, -0.07701879739761353, 0.043214425444602966, 0.08762183785438538, 0.0783662274479866, -0.016435183584690094, -0.060712069272994995, -0.03368247672915459, 0.01960640400648117, -0.09039448201656342, 0.05463383346796036, -0.040820538997650146, 0.04283204674720764, -0.05206253007054329, 0.012499511241912842, 0.046202052384614944, -0.10641756653785706, -0.0014049262972548604, 0.0060338350012898445, -0.07186407595872879, -0.08180063962936401, 0.022756993770599365, 0.01699667051434517, 0.045291267335414886, 0.06802413612604141, -0.08687479794025421, 0.11638092994689941, 0.0051493397913873196, -0.03906644508242607, -0.08342510461807251, -0.15852272510528564, -0.06121925264596939, 0.1034230887889862, 0.04015367850661278, 0.02386114001274109, 0.028904665261507034, -0.0078044189140200615, 0.007953730411827564, 0.06038549542427063, 0.021846644580364227, 0.023040059953927994, -0.0054077813401818275, 0.05920497328042984, 0.037188347429037094, -0.0627257376909256, 0.03499916195869446, 0.004284992348402739, 0.032877031713724136, 0.07456608861684799, -0.06370265781879425, 0.04171169176697731, 0.014424738474190235, -0.08525434881448746, 0.005821660161018372, 0.1153569296002388, -0.08261945098638535, -0.057560037821531296, 6.839793786639348e-05, -0.007798382546752691, 0.045384109020233154, -0.02463410049676895, -0.00021958458819426596, 0.054667361080646515, -0.0052590155974030495, -0.017742883414030075, 0.07710368931293488, -0.08178745210170746, -0.0197471734136343, -0.00737652787938714, -0.03795772045850754, 0.0589962899684906, -0.03624693676829338, 0.04741927981376648, -0.005235660821199417, -0.06591663509607315, 0.02353721857070923, -0.011106464080512524, -0.019304610788822174, -0.051439039409160614, -0.04547376185655594, -0.02549249865114689, -0.011798861436545849, -0.02777552232146263, 0.09609244763851166, -0.0532713308930397, 0.05443066731095314, 0.003477890510112047, 0.004944696556776762, -0.047004710882902145, 0.0033383986447006464, -0.03600727394223213, 0.007691437844187021, -0.04077432304620743, 0.0856255292892456, -0.05773355811834335, -0.05977892875671387, -0.02674085460603237, -0.05828730762004852, 0.01713150553405285],
+ "VPSRLDri":[-0.06210193783044815, -0.006801106967031956, -0.008875946514308453, 0.016749044880270958, 0.04161032289266586, 0.05919922515749931, -0.0347713939845562, -0.04657301679253578, -0.020015953108668327, 0.004284363705664873, 0.043442945927381516, 0.013028540648519993, 0.05818072706460953, -0.06379027664661407, 0.006989611312747002, 0.026212744414806366, -0.006037726532667875, -0.07425342500209808, 0.011120636016130447, 0.06469031423330307, 0.024150824174284935, -0.03324274718761444, -0.05417759343981743, -0.024935370311141014, 0.0003313549386803061, 0.06503360718488693, 0.05136413127183914, 0.0015407701721414924, -0.06035268306732178, 0.0020325705409049988, -0.026800082996487617, -0.0316578634083271, -0.08622073382139206, 0.03183135390281677, -0.0812184140086174, -0.03725481778383255, -0.036096349358558655, -0.01569841057062149, 0.005716782063245773, 0.05207258462905884, -0.026741186156868935, 0.012578259222209454, 0.023206809535622597, -0.06194639205932617, 0.014487783424556255, -0.06970269232988358, -0.02636840008199215, 0.008226792328059673, 0.02663377672433853, 0.07979918271303177, -0.06626459211111069, 0.04496730491518974, -0.07195409387350082, -0.026927808299660683, 0.06594429910182953, -0.013464001007378101, 0.08207087963819504, -0.040961604565382004, -0.03870997577905655, 0.01766730658710003, -0.06770637631416321, -0.05146326497197151, 0.06425201147794724, 0.002667214721441269, -0.08934132009744644, -0.004715235438197851, 0.07865322381258011, 0.0841769427061081, 0.05003051459789276, 0.03317749500274658, 0.0009031487861648202, 0.1345924437046051, -0.008611463010311127, -0.031796034425497055, -0.04963045194745064, 0.040502991527318954, -0.010756919160485268, -0.02105345018208027, -0.017411381006240845, -0.0790371373295784, 0.012413924559950829, 0.020556803792715073, 0.11937574297189713, 0.0469401516020298, 0.03804426267743111, 0.02895224280655384, -0.04007384181022644, -0.03917144984006882, -0.02407776191830635, -0.04869754984974861, -0.05029724910855293, -0.05894973874092102, 0.02163589932024479, 0.052443116903305054, -0.022964375093579292, 0.04252525791525841, 0.04390169680118561, 0.022071031853556633, -0.017424486577510834, -0.00020350540580693632],
+ "VPSRLQYri":[0.055429279804229736, 0.003953998908400536, -0.010584045201539993, 0.03218402341008186, -0.06249639391899109, -0.05967487394809723, 0.03844557702541351, 0.01693984493613243, -0.006369204726070166, -0.05390874296426773, -0.015890080481767654, -0.05335661396384239, 0.053010981529951096, -0.059706516563892365, 0.0005928114405833185, -0.005738308187574148, -0.044333551079034805, -0.09231666475534439, -0.08016093075275421, 0.019756732508540154, 0.010176659561693668, 0.014303823933005333, 0.057781320065259933, -0.00987160112708807, 0.050446994602680206, 0.06908447295427322, 0.06969686597585678, -0.04849454388022423, -0.001344424788840115, -0.009337161667644978, -0.04636221379041672, 0.07980235666036606, -0.024310661479830742, -0.01678338646888733, -0.02482149749994278, -0.034914400428533554, 0.09681590646505356, 0.05297338590025902, -0.024673452600836754, -0.007495705503970385, -0.06505738943815231, 0.022715594619512558, 0.06474252045154572, 0.0798707976937294, -0.03415849432349205, -0.06886827945709229, 0.08476540446281433, -0.06037955358624458, 0.01584036648273468, -0.041431330144405365, 0.03472764417529106, -0.016143865883350372, 0.024330541491508484, 0.011252779513597488, -0.07864571362733841, 0.05100812762975693, 0.0038262768648564816, -0.04867275431752205, -0.031169870868325233, 0.04011791571974754, 0.03110230714082718, 0.04423263669013977, -0.01727312244474888, 0.0626232922077179, -0.0028895798604935408, -0.02927413210272789, 0.017656700685620308, 0.005405413918197155, -0.035612720996141434, -0.052654579281806946, -0.018073083832859993, 0.03178374469280243, -0.02200922742486, -0.04196150600910187, 0.03326002508401871, -0.07718659937381744, 0.07945619523525238, 0.0017182532465085387, 0.07199390977621078, 0.05144670978188515, 0.07174577564001083, -0.051506929099559784, 0.04046228900551796, 0.04255568981170654, -0.06963762640953064, 0.05936550721526146, 0.05087096616625786, 0.04327501356601715, -0.077022023499012, -0.0304401908069849, -0.05096413940191269, -0.07909791171550751, 0.05464008077979088, 0.07475147396326065, -0.022460145875811577, -0.09725619107484818, 0.0008674153359606862, 0.03659472614526749, -0.03878304362297058, -0.08009544014930725],
+ "VPSRLQri":[-0.09153060615062714, -0.04699566215276718, 0.007238725665956736, 0.01786225661635399, -0.06797770410776138, -0.044273823499679565, 0.03089103475213051, -0.06782650947570801, -0.06358552724123001, 0.05612996220588684, -0.05339549481868744, -0.08842317014932632, 0.0019372276728972793, 0.06075134873390198, -0.008450744673609734, 0.041234828531742096, 0.007676011882722378, 0.007546036504209042, 0.027459386736154556, 0.02367508038878441, 0.04435460641980171, 0.027688775211572647, -0.025776293128728867, 0.0543169341981411, -0.050852663815021515, 0.08476202934980392, -0.04535922408103943, 0.06206882372498512, 0.08874157816171646, 0.10406481474637985, 0.024077732115983963, 0.0011991322971880436, -0.085108682513237, 0.011774378828704357, -0.02796190232038498, -0.03740297257900238, 0.037195805460214615, 0.029443984851241112, 0.1100989431142807, 0.03877200558781624, -0.011956888251006603, -0.05724563077092171, -0.10125801712274551, -0.019261697307229042, -0.05835362896323204, 0.005310386419296265, 0.0005831262096762657, 0.04033879190683365, 0.027133850380778313, 0.04637690261006355, -0.0031430486124008894, 0.04623384401202202, -0.029549743980169296, -0.09402541071176529, 0.03242047503590584, 0.0051035573706030846, -0.025564415380358696, 0.055082056671381, -0.0592404380440712, 0.037992168217897415, -0.015245393849909306, -0.026936251670122147, -0.07255490869283676, 0.08519840985536575, -0.03708886727690697, -0.03669300675392151, -0.081389881670475, -0.04128226637840271, 0.060470014810562134, 0.07146234810352325, -0.08852260559797287, -0.014023483730852604, -0.050087738782167435, 0.09805841743946075, -0.007841888815164566, 0.03275737538933754, 0.028671585023403168, -0.05457676202058792, 0.023014681413769722, -0.021542366594076157, -0.05402997136116028, -0.038974594324827194, -0.014721726067364216, -0.0017057079821825027, 0.031124820932745934, -0.015465370379388332, -0.04308855161070824, -0.061501555144786835, -0.020316418260335922, -0.08259153366088867, -0.05926993489265442, -0.011572175659239292, 0.020201388746500015, 0.028466425836086273, 0.007665622979402542, 0.07784003764390945, 0.011197284795343876, -0.027532560750842094, 0.02541092038154602, 0.059194281697273254],
+ "VPSRLQrr":[-0.04293233901262283, -0.029797308146953583, 0.10199039429426193, 0.03213153034448624, 0.03648907691240311, -0.002100513782352209, 0.024681907147169113, 0.03866133838891983, 0.005086925812065601, -0.1017427146434784, 0.09660938382148743, 0.008956482633948326, -0.03884130343794823, -0.05499430373311043, -0.06066529452800751, -0.007019026204943657, -0.0284567903727293, 0.06576650589704514, 0.0022757684346288443, 0.02868616208434105, 0.06327568739652634, -0.04541776701807976, -0.015009884722530842, 0.04382115602493286, -0.08702509850263596, 0.07673367857933044, 0.04733755812048912, 0.007806848268955946, -0.0002975742390844971, 0.019778411835432053, 0.029156960546970367, 0.047513458877801895, 0.06558804214000702, -0.052378132939338684, 0.06874644756317139, 0.07653298228979111, 0.03918394818902016, 0.039015185087919235, 0.0034132914151996374, 0.018689975142478943, 0.029047872871160507, -0.07550334185361862, -0.02375478483736515, -0.06271707266569138, -0.04211503639817238, -0.09125883877277374, -0.0021088498178869486, -0.007937646470963955, 0.024865886196494102, 0.04543200507760048, -0.04198791831731796, -0.0532999187707901, 0.0591333769261837, -0.030389944091439247, -0.00626288540661335, 0.08800461888313293, -0.031909164041280746, 0.0017549865879118443, -0.0820484533905983, -0.004365708213299513, 0.010716600343585014, 0.007901575416326523, 0.0067239138297736645, -0.05235447734594345, 0.022161591798067093, -0.03536594286561012, -0.025702940300107002, -0.00805732049047947, -0.02626253105700016, 0.05464385449886322, -0.007266740780323744, 0.020834270864725113, 0.07543173432350159, -0.00822641234844923, 0.022499486804008484, -0.029973814263939857, 0.0016190529568120837, 0.044458985328674316, 0.03044026531279087, -0.006508903577923775, -0.04227520152926445, 0.0025943906512111425, -0.04223528876900673, 0.0624665766954422, -0.06813240796327591, -0.08753503113985062, 0.025366928428411484, -0.003894094843417406, -0.007733696606010199, 0.055284660309553146, 0.0452510342001915, 0.05723334103822708, 0.07951666414737701, -0.03319702297449112, 0.07049598544836044, 0.06380745023488998, 0.0021433280780911446, -0.03876183554530144, 0.0625598132610321, 0.10761845856904984],
+ "VPSRLVDYrr":[0.05451018363237381, 0.0415375642478466, -0.057189419865608215, -0.0011063100537285209, 0.0699143335223198, -0.0697496235370636, -0.022226981818675995, 0.03938884288072586, 0.03347614407539368, 0.014548489823937416, -0.03253233805298805, -0.022392841055989265, -0.05016876757144928, -0.0009984251810237765, -0.022363772615790367, -0.09300553798675537, 0.10928925126791, 0.06259192526340485, -0.024910591542720795, 0.09790686517953873, 0.051595672965049744, 0.05257348716259003, 0.1054125502705574, -0.10753826051950455, 0.04261406138539314, 0.05409172177314758, -0.04697037488222122, -0.0726567730307579, -0.07822224497795105, -0.021016372367739677, 0.030629223212599754, -0.051447201520204544, 0.025457430630922318, 0.02130376733839512, 0.07213422656059265, -0.03337237983942032, 0.011819975450634956, -0.08900392800569534, 0.030190153047442436, 0.05855202302336693, -0.03224539756774902, 0.07341918349266052, 0.09037142246961594, -0.010679163970053196, -0.02156118117272854, 0.08146461844444275, 0.00278118415735662, -4.691418507718481e-05, -0.002543951850384474, 0.0939367264509201, 0.005255367141216993, 0.037755150347948074, 0.04313117638230324, 0.007275561336427927, -0.002064573811367154, 0.015262110158801079, -0.055229444056749344, 0.04842442646622658, 0.06356808543205261, 0.005546564236283302, 0.05981544777750969, 0.03172681853175163, -0.004772005137056112, -0.0075447517447173595, -0.04896298423409462, -0.020627809688448906, 0.09935974329710007, -0.05526841804385185, 0.003844988765195012, -0.011853802017867565, -0.043882157653570175, 0.038239479064941406, -0.001078006811439991, 0.0003561289340723306, -0.034477874636650085, 0.009657612070441246, 0.06424571573734283, -0.016666432842612267, 0.010431394912302494, 0.05962073802947998, 0.10751058906316757, 0.051841046661138535, -0.007947893813252449, 0.05404307320713997, 0.013506746850907803, -0.01031400728970766, -0.047758378088474274, -0.020680904388427734, -0.017042169347405434, -0.01911110430955887, 0.006548174191266298, 0.04090161621570587, 0.0626872107386589, 0.05541951209306717, 0.09742647409439087, -0.07437504827976227, 0.04250191152095795, 0.0605957917869091, 0.002970010507851839, -0.009152455255389214],
+ "VPSRLVDrm":[-0.02718747965991497, -0.043180160224437714, -0.0617540068924427, 0.08584015816450119, -0.09617435932159424, -0.05386462062597275, 0.03957046940922737, -0.007614081725478172, 0.0501398928463459, 0.01424148678779602, -0.014669019728899002, -0.013946287333965302, 0.04229770228266716, -0.09741757810115814, -0.07246170192956924, -0.04391525313258171, -0.08185028284788132, 0.02193361148238182, 0.049644265323877335, -0.038248028606176376, 0.07742559909820557, -0.08975008875131607, 0.028722185641527176, -0.050342123955488205, -0.0727737694978714, 0.027586795389652252, -0.006865664850920439, -0.08453644067049026, 0.016855590045452118, 0.03153429552912712, 0.06023683026432991, -0.015607750043272972, -0.03411908075213432, -0.07039383053779602, 0.03693169727921486, -0.05365286394953728, 0.03908732905983925, -0.04103471338748932, 0.06928373873233795, -0.047267429530620575, -0.06524591892957687, 0.02552110143005848, 0.013358797878026962, -0.015513341873884201, -0.06566236913204193, -0.09449981153011322, -0.06636730581521988, -0.024447327479720116, -0.016602816060185432, 0.023008592426776886, 0.017809279263019562, 0.01109063159674406, 0.04968467727303505, 0.017800023779273033, -0.05613159015774727, -0.006600128952413797, -0.005790321156382561, -0.0024159408640116453, -0.011946995742619038, 0.050865091383457184, -0.09276634454727173, 0.0638105496764183, 0.024021808058023453, -0.07518987357616425, 0.06966055184602737, -0.03785034269094467, -0.01127730030566454, -0.002190395025536418, -0.0004072205920238048, -0.0438782162964344, -0.06566281616687775, 0.04844982549548149, 0.10145469754934311, 0.03773549571633339, 0.013658533804118633, 0.03688570484519005, 0.0468439981341362, 0.06307889521121979, -0.07049178332090378, 0.05063658580183983, 0.07595141232013702, -0.011846130713820457, 0.031793512403964996, -0.021410513669252396, 0.002529585501179099, 0.02578675001859665, 0.019628943875432014, 0.06053731217980385, -0.006344940047711134, -0.00472270930185914, -0.10605676472187042, 0.02760356478393078, -0.10184774547815323, 0.06669411808252335, -0.006619382183998823, -0.0944405347108841, -0.026353172957897186, 0.07284723967313766, -0.060637883841991425, 0.03771834447979927],
+ "VPSRLVQYrr":[-0.004802376963198185, 0.0629754364490509, -0.08319145441055298, -0.011962411925196648, 0.007156000938266516, 0.08963091671466827, -0.02495487779378891, 0.013004480861127377, -0.008693861775100231, -0.06447887420654297, 0.008392462506890297, 0.10171917080879211, -0.01999346911907196, 0.022206172347068787, 0.01212144736200571, 0.08583410829305649, 0.0278753861784935, 0.043643686920404434, 0.058428291231393814, 0.10253798961639404, 0.00010002344788517803, -0.04890615865588188, 0.10160044580698013, 0.014911457896232605, -0.009599187411367893, 0.025901108980178833, -0.0045838975347578526, -0.11517535150051117, 0.06099182739853859, -0.1020728275179863, -0.05325377732515335, 0.021686295047402382, -0.026379812508821487, 0.09582243114709854, 0.0022097520995885134, 0.01766865700483322, -0.10272323340177536, -0.05469375103712082, 0.09996628016233444, -0.019574027508497238, 0.08839699625968933, 0.013670661486685276, -0.030478594824671745, 0.02365201525390148, -0.02594335563480854, 0.030752746388316154, 0.03328404203057289, 0.06371307373046875, 0.05953759700059891, 0.06404909491539001, -0.028400734066963196, 0.00026564966537989676, 0.08659994602203369, 0.013124857097864151, 0.05648904666304588, 0.03864890709519386, 0.03961937129497528, -0.046819694340229034, 0.021924637258052826, 0.04988408088684082, 0.023252256214618683, 0.018077991902828217, -0.09677372872829437, 0.055988192558288574, 0.033327698707580566, -0.05056915432214737, -0.10405939072370529, -0.08212870359420776, -0.0671154037117958, -0.07764542102813721, -0.04998191446065903, 0.010223607532680035, 0.0133809270337224, -0.0564403310418129, 0.0517231710255146, -0.03844758868217468, -0.05072830244898796, -0.006431689951568842, 0.01810075342655182, 0.00020388219854794443, -0.02230888232588768, -0.069565549492836, -0.024471556767821312, 0.07651473581790924, -0.08078708499670029, -0.035111650824546814, 0.10852266103029251, 0.05080718547105789, -0.013306545093655586, 0.05535346642136574, 0.06262292712926865, 0.042623408138751984, 0.014694567769765854, 0.047040171921253204, 0.008467238396406174, -0.013612954877316952, -0.02976393885910511, 0.027517763897776604, 0.0541994534432888, 0.07508481293916702],
+ "VPSRLWYri":[-0.02106242999434471, 0.042217936366796494, 0.029092885553836823, 0.04503932222723961, -0.016907591372728348, -0.05594437196850777, -0.049965906888246536, 0.05563563108444214, 0.042947061359882355, 0.039752885699272156, -0.0009358061361126602, 0.022658780217170715, -0.01722889021039009, 0.06917526572942734, 0.04434526711702347, -0.05992848053574562, -0.05161789804697037, -0.025426311418414116, 0.025320548564195633, 0.0025750778149813414, -0.10394414514303207, -0.005075912456959486, 0.11340181529521942, -0.0766935870051384, -0.045866068452596664, -0.01935950666666031, -0.06952185928821564, -0.08819078654050827, 0.04021980240941048, -0.09386585652828217, -0.03867341950535774, 0.003372612874954939, 0.015086435712873936, 0.01677737385034561, 0.037625718861818314, -0.016161728650331497, 0.06611905246973038, -0.08657214045524597, 0.03983810544013977, -0.07261522114276886, 0.10147988051176071, 0.04169557988643646, -0.08781476318836212, -0.012462562881410122, -0.06961072981357574, -0.09666699916124344, -0.05610641464591026, 0.02610585279762745, -0.06699801236391068, 0.05388069525361061, -0.05371584743261337, -0.07485895603895187, 0.03971545025706291, -0.07324142754077911, -0.0844331607222557, -0.005202381871640682, -0.044433850795030594, 0.0421903058886528, 0.0970609113574028, 0.018478980287909508, -0.04958685114979744, 0.05579844117164612, -0.013877562247216702, -0.06304090470075607, 0.08318667113780975, -0.02431533671915531, 0.022754596546292305, 0.01873009465634823, -0.051014482975006104, -0.08522322028875351, 0.011724618263542652, -0.049033187329769135, -0.07790929079055786, -0.011824923567473888, -0.03778964653611183, -0.0500774160027504, -0.04291292279958725, -0.08975759148597717, -0.038673028349876404, -0.004332602024078369, -0.03818507492542267, 0.016217408701777458, -0.02551526576280594, -0.0038370925467461348, 0.021288761869072914, 0.04740879312157631, -0.008965780958533287, 0.04363100975751877, -0.006727749947458506, 0.06753431260585785, -0.01561990287154913, 0.014557494781911373, -0.016265256330370903, 0.06245332211256027, -0.03089330345392227, 0.04800748825073242, -0.00010270750499330461, -0.03525828942656517, 0.020070400089025497, 0.011429885402321815],
+ "VPSRLWri":[-0.0627647340297699, -0.03281869739294052, -0.037120457738637924, -0.009452231228351593, 0.026933971792459488, 0.043813738971948624, 0.03491656109690666, -0.007980172522366047, 0.015630031004548073, -0.014593015424907207, -0.037827592343091965, 0.039626024663448334, 0.042322877794504166, -0.052842579782009125, -0.0024978015571832657, 0.06565147638320923, 0.013577132485806942, -0.012745707295835018, 0.01454456802457571, -0.020239155739545822, 0.06435190141201019, -0.01774602197110653, 0.03913995996117592, -0.02148451656103134, -0.02357175014913082, -0.09732723236083984, -0.05286874249577522, 0.05874510481953621, -0.10757387429475784, 0.045520879328250885, -0.06695891171693802, 0.011851560324430466, 0.024428822100162506, 0.004529210273176432, -0.02012372948229313, -0.04324202612042427, 0.054461684077978134, 0.00790873821824789, 0.009405157528817654, 0.018894003704190254, -0.04303444176912308, -0.051955126225948334, 0.013818493112921715, -0.007711218670010567, 0.031983908265829086, -0.05920829623937607, -0.0008182020974345505, 0.0965617224574089, -0.04850369691848755, -0.023717401549220085, -0.010651876218616962, -0.085110142827034, -0.09704514592885971, -0.048172712326049805, 0.0799034833908081, -0.05736951902508736, 0.0064425538294017315, -0.03105740435421467, -0.019969141110777855, -0.010430709458887577, 0.038137491792440414, 0.06212299317121506, -0.030185120180249214, -0.05875195190310478, 0.09145312011241913, -0.045273780822753906, 0.031587861478328705, -0.05219060182571411, 0.03794057294726372, 0.04388526827096939, 0.06796783953905106, 0.06383676081895828, 0.03445842117071152, -0.08327830582857132, 0.07230619341135025, 0.02405587024986744, 0.025642700493335724, 0.039124421775341034, 0.024033384397625923, -0.03336087614297867, 0.027415461838245392, -0.007770277559757233, -0.06875678896903992, -0.045754969120025635, 0.10971805453300476, 0.04385319724678993, -0.004985504318028688, 0.04051009193062782, -0.008580024354159832, -0.003295328002423048, -0.06091359630227089, 0.003816218813881278, 0.01390624139457941, 0.0014384199166670442, -0.05917339026927948, -0.05092126876115799, -0.058137327432632446, 0.025823527947068214, -0.0018545807106420398, 0.004264304880052805],
+ "VPSUBBYrm":[0.03053301014006138, 0.07855220139026642, 0.01958557404577732, 0.06639159470796585, -0.01267426647245884, 0.031907420605421066, 0.07909301668405533, -0.0164695642888546, 0.05991261079907417, 0.007018139585852623, -0.014102122746407986, -0.05392122641205788, 0.041695062071084976, -0.07889514416456223, 0.00970593560487032, 0.00829258468002081, 0.03426559641957283, 0.05775263160467148, -0.06040273606777191, 0.03763039410114288, -0.029332052916288376, 0.033522751182317734, 0.06209416314959526, -0.0011521998094394803, 0.0012631239369511604, 0.0633544921875, -0.06026984751224518, -0.010574866086244583, -0.04896162822842598, -0.0027783808764070272, -0.03737296536564827, 0.07481291145086288, 0.0027459494303911924, 0.058944474905729294, -0.03412790969014168, 0.029748665168881416, 0.014001610688865185, -0.09699519723653793, 0.02238859236240387, 0.04193836450576782, -0.01977158896625042, 0.07103121280670166, 0.051569923758506775, 0.024848775938153267, 0.03648115321993828, 0.003513518488034606, 0.036710575222969055, 0.058058228343725204, 0.012169628404080868, 0.03869965299963951, 0.022023791447281837, 0.04810352995991707, -0.008444579318165779, 0.04727077856659889, -0.02728518843650818, -0.0073762680403888226, -0.04239366948604584, 0.006383146625012159, -0.00014686438953503966, -0.024912148714065552, 0.09634004533290863, -0.0041802385821938515, 0.04061822220683098, 0.026739269495010376, -0.007978864014148712, 0.04987824708223343, -0.04868760332465172, 0.0745602622628212, 0.08149955421686172, 0.005812545772641897, 0.03685980290174484, 0.01688239723443985, -0.045408353209495544, -0.05549640208482742, 0.049727246165275574, 0.051946576684713364, 0.016753053292632103, -0.08758789300918579, -0.020810091868042946, 0.016026142984628677, -0.049418363720178604, -0.043831899762153625, -0.0468750074505806, -0.024472974240779877, -0.06212783232331276, 0.03475001081824303, 0.06493962556123734, -0.06746774911880493, 0.022028319537639618, 0.014863522723317146, -0.062199901789426804, 0.03341904282569885, -0.03879503160715103, -0.05886003002524376, -0.06940924376249313, 0.05261345952749252, 0.04580589011311531, 0.03233389928936958, 0.01558239571750164, -0.019401023164391518],
+ "VPSUBBYrr":[0.01956874318420887, -0.050984758883714676, -0.0006723848637193441, 0.04679405316710472, 0.034759655594825745, 0.09385853260755539, -0.04806387424468994, 0.0605698861181736, 0.006745071616023779, 0.03442589193582535, -0.044877685606479645, 0.09739252924919128, 0.020066220313310623, 0.017650136724114418, 0.00532106077298522, 0.04925978183746338, -0.03787078708410263, -0.03694279119372368, -0.05839525908231735, 0.0756526067852974, 0.07308515906333923, -0.06836432218551636, -0.07480929046869278, -0.083475761115551, 0.04294481873512268, 0.030735701322555542, -0.020075608044862747, 0.0025389930233359337, -0.0021430011838674545, 0.017194613814353943, -0.02818804234266281, 0.008265421725809574, -0.021123085170984268, 0.01427636668086052, 0.05253736674785614, 0.0018769827438518405, -0.025733713060617447, -0.07113533467054367, 0.033467210829257965, -0.05662836506962776, 0.0035818354226648808, -0.0714290663599968, 0.08383707702159882, 0.03996799513697624, 0.04945433512330055, -0.02831750363111496, -0.018877077847719193, 0.004109301138669252, 0.030435835942626, 0.10339420288801193, -0.018071675673127174, 0.05433478206396103, 0.04466316103935242, 0.06317627429962158, -0.05787810683250427, -0.03704148903489113, -0.0009555146098136902, -0.005075554829090834, -0.06391476094722748, -0.009787951596081257, 0.07813162356615067, 0.037523385137319565, -0.026279572397470474, 0.03383510559797287, 0.022176342085003853, -0.01749524474143982, -0.05113675817847252, 0.03328148275613785, 0.009119405411183834, 0.04389942064881325, 0.05871668457984924, -0.007205981761217117, 0.03501032292842865, -0.032062776386737823, 0.056813035160303116, 0.06984864920377731, 0.03917646408081055, -0.07299599796533585, 0.07483810186386108, 0.08524716645479202, -0.01461363397538662, 0.04002000391483307, -0.07139632105827332, -0.055679384618997574, 0.00110685417894274, -0.011383366771042347, 0.033977072685956955, 0.0647563487291336, 0.01378390658646822, -0.04075149819254875, -0.03979470208287239, -0.012941068969666958, 0.0378875732421875, 0.00922536663711071, -0.01435842551290989, 0.010987790301442146, -0.007391068618744612, 0.09728966653347015, 0.013184642419219017, 0.0326065756380558],
+ "VPSUBBrr":[-0.03959828242659569, -0.04166088253259659, 0.015189725905656815, 0.10416372120380402, 0.0513664074242115, 0.014131156727671623, 0.0025197966024279594, -0.04253802448511124, 0.09908728301525116, 0.02630791813135147, -0.005644612945616245, 0.009223504923284054, -0.0010299928253516555, -0.024273188784718513, -0.02426638826727867, 0.031003348529338837, -0.022732514888048172, -0.036573685705661774, -0.06771177053451538, 0.11117639392614365, 0.011603291146457195, 0.05847498029470444, 0.03626563772559166, -0.041939590126276016, 0.02266578935086727, 0.03761224076151848, 0.013167680241167545, 0.016751328483223915, -0.04162085801362991, 0.031989842653274536, 0.00025123756495304406, -0.024238746613264084, 0.017009861767292023, -0.02150661125779152, -0.06780361384153366, 0.09721096605062485, 0.08589333295822144, 0.06445855647325516, -0.07587174326181412, -0.08870306611061096, 0.0558009073138237, -0.053909704089164734, 0.08380130678415298, -0.04701037332415581, 0.07129218429327011, 0.013203504495322704, 0.04690634086728096, 0.0635429322719574, 0.026461701840162277, 0.006245069671422243, -0.007252667099237442, -0.023879798129200935, 0.04321564361453056, -0.07212062925100327, 0.03694508969783783, 0.032739926129579544, -0.028359033167362213, 0.07883574813604355, -0.038158632814884186, 0.10087372362613678, -0.020867621526122093, 0.018789872527122498, 0.006072730291634798, -0.06011870503425598, -0.012119491584599018, -0.09184367954730988, -0.05053718388080597, 0.04643332213163376, 0.079867884516716, -0.006760077551007271, 0.04236897453665733, -0.036026351153850555, -0.01914585754275322, -0.032651592046022415, 0.031090596690773964, 0.05304957553744316, -0.03458002582192421, -0.011294445022940636, -0.03563670814037323, -0.02194681018590927, 0.036357324570417404, -0.06516033411026001, 0.03624628111720085, 0.045715805143117905, 0.0026155265513807535, -0.008871875703334808, 0.09042531996965408, -0.061845045536756516, -0.04755506291985512, 0.013341582380235195, 0.016009682789444923, 0.07811108231544495, -0.007788494694977999, 0.020331259816884995, 0.030063215643167496, 0.01986081339418888, 0.03830941766500473, -0.021131223067641258, -0.01139157172292471, 0.04925136640667915],
+ "VPSUBDYrr":[-0.09391229599714279, 0.009259473532438278, 0.09978044033050537, -0.06836319714784622, -0.03321875259280205, 0.006361708510667086, -0.014158771373331547, 0.07537617534399033, 0.09494557976722717, 0.060744576156139374, -0.06016038358211517, 0.05501329526305199, 0.008596531115472317, -0.04766862094402313, -0.025429075583815575, 0.04768947511911392, 0.04141076281666756, 0.03659266605973244, 0.022599900141358376, -0.09571033716201782, -0.002940682927146554, -0.011396938003599644, -0.08397068083286285, 0.03264699876308441, -0.038290876895189285, -0.0700066089630127, 0.075514055788517, -0.003679837565869093, 0.1046198382973671, -0.010063200257718563, -0.031033728271722794, 0.006508140824735165, 0.0252587478607893, 0.008724181912839413, 0.0763322189450264, -0.022301752120256424, -0.049566540867090225, -0.02922881580889225, -0.030657552182674408, -0.006267105229198933, 0.03555714339017868, -0.0250618327409029, -0.09666374325752258, -0.11153983324766159, -0.07816179096698761, -0.0037242744583636522, 0.03900962695479393, 0.05727231502532959, 0.04073849320411682, 0.03520716354250908, 0.033847007900476456, -0.06030340865254402, 0.008946506306529045, 0.07919741421937943, -0.047150082886219025, -0.08525076508522034, -0.05973052978515625, 0.08217936009168625, 0.05775035172700882, 0.05096900090575218, -0.07823985815048218, 0.03711478039622307, 0.043228570371866226, -0.08699394762516022, 0.049771636724472046, 0.07345549017190933, 0.011527691036462784, -0.0871908962726593, 0.054642751812934875, -0.014644203707575798, 0.030757231637835503, 0.09319645911455154, 0.08018868416547775, -0.05905277654528618, 0.05188274011015892, 0.02355671487748623, 0.016100112348794937, 0.04196184501051903, 0.07440067827701569, 0.03473618999123573, -0.008293867111206055, 0.02499210089445114, -0.04886138439178467, -0.03833054378628731, 0.013841867446899414, -0.10677947103977203, 0.023822102695703506, -0.06607068330049515, 0.04736293852329254, 0.002600310370326042, -0.04928937181830406, 0.07603348046541214, 0.0105352234095335, -0.02518814615905285, -0.08497441560029984, -0.03306141868233681, 0.09810061007738113, -0.07170692831277847, 0.030284788459539413, -0.0036885710433125496],
+ "VPSUBDrr":[-0.031119851395487785, -0.04433847963809967, 0.044595152139663696, -0.0882640853524208, 0.0008530004997737706, 0.09659511595964432, 0.05481920391321182, 0.09752723574638367, 0.09510476142168045, -0.07332373410463333, 0.08568571507930756, -0.012723456136882305, -0.06188986077904701, -0.026267705485224724, -0.0006647439440712333, 0.0007725562318228185, 0.028492353856563568, -0.05492078512907028, -0.052928488701581955, 0.061565473675727844, 0.016671476885676384, -0.00018101556634064764, -0.07611831277608871, -0.024153858423233032, 0.0672849640250206, -0.04697109013795853, 0.033430323004722595, 0.02148563787341118, 0.03873609006404877, 0.029216740280389786, 0.01825588382780552, -0.04878208041191101, 0.014960954897105694, 0.07175419479608536, 0.09388171881437302, -0.032441794872283936, 0.037512823939323425, -0.051318295300006866, -0.012551197782158852, 0.027442319318652153, 0.039981722831726074, 0.0805797427892685, 0.033337466418743134, -0.03786084055900574, 0.07128364592790604, 0.028864534571766853, 0.0005409384029917419, 0.034472085535526276, 0.009525074623525143, 0.03846416622400284, -0.08588121831417084, 0.04462278261780739, 0.06803002208471298, -0.010067552328109741, 0.07257726043462753, 0.04659664258360863, -0.05740288272500038, 0.01812564954161644, -0.008399879559874535, -0.07630660384893417, -0.07610759884119034, 0.08622550219297409, -0.02019932121038437, 0.10265831649303436, 0.014583303593099117, 0.024824252352118492, 0.030505942180752754, 0.04326215013861656, -0.0022018910385668278, -0.00839739479124546, -0.007015762384980917, -0.02885831892490387, 0.028102664276957512, 0.02484653703868389, 0.016436176374554634, -0.043755777180194855, -0.01742904633283615, -0.02130902372300625, 0.04151831939816475, -0.08069361746311188, 0.03178047761321068, 0.005701505113393068, 0.03202485665678978, -0.026118624955415726, 0.018975814804434776, -0.08527621626853943, 0.06344890594482422, 0.07476046681404114, 0.03235846385359764, -0.07235182821750641, 0.01035577617585659, -0.03717492148280144, -0.012978209182620049, 0.09971166402101517, -0.09135419875383377, 0.014378921128809452, 0.06209250167012215, 0.040436167269945145, -0.023213155567646027, -0.09947275370359421],
+ "VPSUBQYrr":[0.00024376715009566396, -0.08240582793951035, -0.06747179478406906, 0.03810722380876541, 0.032478902488946915, 0.02993392013013363, 0.020458871498703957, -0.01811193861067295, 0.04248589277267456, 0.0297183059155941, 0.053632453083992004, 0.06418901681900024, 0.008948780596256256, 0.04032276198267937, -0.06519687920808792, -0.02000059001147747, 0.011498427018523216, 0.03552267327904701, -0.05940638855099678, -0.0400853268802166, 0.012319575995206833, -0.046693626791238785, 0.05512964352965355, -0.03238140419125557, 0.004979579709470272, 0.08490575104951859, -0.03952823579311371, -0.06965353339910507, -0.0046709817834198475, 0.09610917419195175, 0.03563544899225235, 0.037705712020397186, -0.05924472212791443, 0.00719004962593317, -0.008198725059628487, -0.027139563113451004, -0.039975907653570175, 0.0939740538597107, -0.08716299384832382, 0.06595077365636826, -0.06431716680526733, -0.10944803059101105, 0.05239930376410484, 0.010658176615834236, 0.020445112138986588, -0.04373535141348839, 0.011610368266701698, -0.026347555220127106, 0.025568518787622452, -0.04182983562350273, -0.09359323978424072, -0.06447692215442657, -0.005074598826467991, 0.01467380952090025, -6.485592166427523e-06, -0.03765290975570679, -0.055043671280145645, 0.011287030763924122, 0.051125213503837585, 0.09212443232536316, -0.060059890151023865, -0.020999828353524208, 0.051946964114904404, 0.050044506788253784, -0.009456420317292213, 0.0787527933716774, 0.008655376732349396, 0.09904219210147858, -0.034358762204647064, -0.037101663649082184, -0.05628601834177971, -0.04426775127649307, 0.07709049433469772, 0.0940532311797142, -0.028152409940958023, 0.06800002604722977, -0.00557682104408741, -0.04615402966737747, -0.009502053260803223, -0.021673936396837234, -0.07437819242477417, 0.09154447913169861, -0.04666579142212868, 0.05608125403523445, -0.07656354457139969, -0.08640491217374802, 0.007775809150189161, 0.0773768275976181, 0.06650766730308533, 0.07277099788188934, 0.0185982808470726, -0.06162196770310402, 0.07150965929031372, -0.07937013357877731, 0.07295771688222885, 0.09714995324611664, -0.03610587120056152, -0.0031142786610871553, -0.01417560875415802, -0.0318373441696167],
+ "VPSUBQrm":[0.034392111003398895, 0.01280540693551302, -0.020043620839715004, -0.00012079385487595573, 0.007472003344446421, -0.07590942829847336, 0.051854878664016724, -0.016367308795452118, -0.10250174254179001, 0.005861205048859119, 0.004127711523324251, -0.07764629274606705, 0.031438253819942474, -0.058864105492830276, -0.005165045149624348, -0.04909672960639, -0.01286094170063734, -0.05813911557197571, 0.0260824803262949, 0.09382720291614532, 0.017354905605316162, 0.0716119110584259, 0.058376822620630264, -0.016319507732987404, 0.01926795020699501, -0.053376615047454834, 0.01927894912660122, -0.0323488786816597, -0.017621414735913277, -0.06751127541065216, 0.0562807135283947, -0.033385924994945526, 0.09301725775003433, 0.02369563840329647, -0.073695607483387, -0.04545315355062485, 0.02604755014181137, 0.06599070876836777, -0.0017148522892966866, -0.003944506403058767, -0.07122237235307693, -0.022186992689967155, -0.08416292816400528, -0.02706787921488285, 0.034424152225255966, 0.02032311074435711, 0.056931253522634506, 0.08669967949390411, -0.0050087724812328815, -0.011735837906599045, -0.041338201612234116, 0.015118248760700226, 0.03191598877310753, 0.01810626871883869, -0.005827723070979118, 0.08776099234819412, -0.03495059907436371, 0.04171326756477356, -0.0179692842066288, -0.045206647366285324, -0.005489184055477381, 0.03406147286295891, -0.035353634506464005, 0.11152663826942444, -0.005286925472319126, -0.05786769837141037, 0.04182422161102295, -0.002810607897117734, -0.029002003371715546, -0.004736756440252066, 0.06191569194197655, 0.04366195201873779, -0.022308718413114548, -0.04698653519153595, -0.0701780915260315, -0.061465583741664886, 0.04694175347685814, 0.05881731957197189, -0.04581775143742561, 0.04035985842347145, -0.015180571936070919, -0.0438881516456604, -0.09267786145210266, -0.022106098011136055, 0.0982966274023056, 0.019805481657385826, -0.01318756677210331, 0.01778886280953884, 0.011655088514089584, 0.042057838290929794, -0.08140608668327332, -0.013221127912402153, -0.014225530438125134, -0.11028210073709488, -0.07070160657167435, 0.08770491927862167, -0.05215723067522049, -0.048209067434072495, -0.010050522163510323, 0.04442079737782478],
+ "VPSUBQrr":[0.036697305738925934, 0.016787895932793617, -0.07603011280298233, 0.040317267179489136, 0.07944563031196594, 0.04309583455324173, -0.019614852964878082, -0.08699994534254074, 0.0458928644657135, -0.09613602608442307, -0.026514938101172447, -0.06311732530593872, -0.042030371725559235, 0.06854226440191269, 0.03874942287802696, -0.06768541783094406, 0.08022280037403107, 0.007060733623802662, 0.008934993296861649, -0.028936894610524178, -0.08675587922334671, 0.04545441269874573, 0.0064591881819069386, 0.08911657333374023, 0.09131604433059692, 0.00382517883554101, 0.008022098802030087, 0.05471642687916756, -0.025885537266731262, -0.03627956286072731, 0.07524718344211578, 0.025403471663594246, -0.06773211061954498, -0.07026650756597519, -0.06654796749353409, 0.051722072064876556, -0.006123210769146681, -0.03980471193790436, 0.023740172386169434, 0.06493009626865387, 0.03400837630033493, -0.04872379079461098, -0.08288953453302383, 0.0476779043674469, 0.022646326571702957, -0.05766197293996811, -0.03420942649245262, 0.027719920501112938, 0.03948131948709488, -0.03833843022584915, 0.05858182907104492, 0.042763203382492065, 0.00474193412810564, -0.02523181401193142, 0.033392321318387985, -0.008484210819005966, 0.02699766494333744, -0.029433924704790115, 0.01111503504216671, 0.07957857102155685, 0.0537823811173439, -0.03958728909492493, -0.0026390196289867163, 0.03756175935268402, -0.026699021458625793, -0.012399192899465561, -0.04076613113284111, -0.10035672038793564, -0.10700037330389023, 0.007138737011700869, 0.018397610634565353, -0.02860233373939991, -0.09158942848443985, 0.012312942184507847, -0.02479040063917637, 0.027415184304118156, 0.010201701894402504, 0.032550010830163956, 0.03997360169887543, -0.023854561150074005, -0.06943272799253464, -0.069860078394413, 0.0019097125623375177, 0.012889106757938862, 0.09045180678367615, -0.07029098272323608, -0.04263172671198845, -0.025926489382982254, -0.0353531688451767, -0.06982937455177307, -0.05624940246343613, 0.08763992786407471, 0.050711169838905334, 0.014037251472473145, 0.049236565828323364, 0.032202038913965225, 0.08250635862350464, 0.08656232804059982, 0.054634641855955124, 0.03828859701752663],
+ "VPSUBUSWrr":[0.06154230609536171, 0.048895299434661865, 0.005176465958356857, -0.08813980966806412, 0.007582473568618298, -0.03245508298277855, 0.021883532404899597, 0.01770743355154991, 0.061816684901714325, -0.05039440095424652, 0.08880404382944107, 0.0043496787548065186, 0.030411193147301674, -0.01806819438934326, 0.03546005114912987, 0.005967996083199978, 0.020017199218273163, 0.07435339689254761, -0.07142023742198944, 0.07672581076622009, 0.044016845524311066, 0.08708303421735764, -0.04822510480880737, -0.06996806710958481, 0.00616195984184742, 0.03739382326602936, 0.039494629949331284, 0.0800454244017601, -0.04581542685627937, -0.05549405887722969, 0.05716318264603615, -0.018796121701598167, -0.09638187289237976, 0.04794587194919586, -0.05168233439326286, -0.05318828672170639, 0.01462420355528593, -0.05286121740937233, 0.07661107927560806, 0.02454231306910515, 0.002747270045801997, -0.0399254709482193, -0.06809021532535553, 0.027237853035330772, 0.04918549209833145, -0.05152043327689171, -0.023343682289123535, -0.042782798409461975, -0.04458298906683922, -0.03592468425631523, 0.02304590865969658, -0.025034649297595024, 0.06760377436876297, 0.03528889641165733, 0.018644584342837334, 0.0708526000380516, 0.04979116842150688, -0.03736238181591034, -0.052120309323072433, 0.060195572674274445, -0.052194856107234955, -0.024748867377638817, -0.035916972905397415, -0.07741949707269669, 0.006533571053296328, -0.012629830278456211, -0.054030802100896835, 0.018119163811206818, -0.05362481251358986, 0.00046634016325697303, 0.039135243743658066, 0.0918995812535286, 0.06618116796016693, 0.002818296430632472, -0.06919720023870468, -0.025186186656355858, 0.02945614792406559, -0.03304435312747955, 0.03905039280653, -0.021028630435466766, 0.05101168900728226, 0.07699312269687653, 0.009180678986012936, -0.03857171908020973, -0.03161187842488289, -0.02375345304608345, 0.013478722423315048, -0.04410497844219208, -0.0392092689871788, -0.01846488192677498, -0.09425985813140869, -0.08990171551704407, -0.011356896720826626, -0.08764023333787918, -0.07402200251817703, 0.06359285861253738, -0.06367405503988266, 0.00689502339810133, -0.01226254552602768, 0.00346943736076355],
+ "VPSUBWYrm":[-0.033157844096422195, 0.04700293019413948, -0.07275392860174179, -0.06520511955022812, -0.07837893813848495, -0.06394080817699432, 0.011134357191622257, 0.052227284759283066, 0.0493154302239418, -0.0416104719042778, 0.03690522536635399, -0.042703188955783844, 0.03530783951282501, -0.03612237423658371, 0.06342101097106934, 0.1057279035449028, -0.05882963165640831, -0.07267603278160095, 0.07049250602722168, -0.014140322804450989, -0.038350384682416916, 0.05778557434678078, 0.10079612582921982, 0.02431740052998066, -0.027333995327353477, -0.09002586454153061, 0.0830666571855545, 0.01023651473224163, -0.03188321366906166, -0.07007929682731628, -0.05246709659695625, -0.01860661245882511, -0.039371319115161896, -0.09189561754465103, -0.008417164906859398, 0.08266683667898178, -0.03405870869755745, -0.007097702473402023, -0.05443438142538071, -0.033990077674388885, -0.048054661601781845, -0.043660812079906464, 0.04985399544239044, 0.05497875064611435, -0.038482192903757095, -0.023641886189579964, -0.03552756458520889, 0.07670579105615616, -0.045897845178842545, 0.008051862008869648, 0.07414271682500839, -0.049373261630535126, -0.021418876945972443, -0.06120409816503525, -0.038924314081668854, 0.04361807554960251, 0.06590285152196884, 0.0479164719581604, 0.03932461887598038, -0.024619515985250473, 0.1001184806227684, -0.0038700224831700325, -0.05742083117365837, 0.09849343448877335, -0.07360970228910446, -0.021305618807673454, -0.10420817136764526, -0.0412253737449646, 0.0005868852604180574, -0.05328293517231941, 0.06647856533527374, 0.061405375599861145, 0.07070450484752655, 0.02520333044230938, -0.04304022714495659, 0.06621543318033218, 0.03038252517580986, 0.038521330803632736, 0.027379795908927917, -0.009747703559696674, 0.01902024634182453, 0.08619425445795059, 0.07656735181808472, 0.05136333405971527, 0.07708869129419327, 0.06347443908452988, -0.0015706038102507591, -0.05466264486312866, 0.08854873478412628, 0.02018120512366295, 0.036063481122255325, -0.01716119982302189, 0.08339276909828186, 0.06462973356246948, -0.0008506256272085011, 0.048418592661619186, -0.08944529294967651, 0.05243052542209625, 0.024613846093416214, -0.04889700561761856],
+ "VPSUBWYrr":[0.04922711104154587, -0.008523572236299515, -0.017787035554647446, 0.0740843191742897, -0.002846265211701393, 0.04186714068055153, -0.05056498199701309, -0.05357343703508377, 0.04743888974189758, -0.007364993914961815, 0.07546365261077881, -0.03489600867033005, 0.06334997713565826, -0.0031024045310914516, 0.043279726058244705, 0.05584497004747391, 0.06572750955820084, -0.014351113699376583, 0.0521964505314827, -0.09045345336198807, 0.006751620676368475, 0.017905520275235176, 0.022607138380408287, -0.0777587965130806, 0.04190238565206528, 0.041114602237939835, 0.04541974887251854, -0.026306111365556717, -0.014615047723054886, -0.08859271556138992, -0.06788435578346252, -0.04294383153319359, -0.013700831681489944, 0.040376272052526474, 0.0675487294793129, 0.10516875982284546, -0.08269603550434113, -0.004807908087968826, -0.09715539962053299, -0.011633101850748062, -0.010251571424305439, 0.002844134345650673, 0.002154062269255519, -0.09442386031150818, -0.045887332409620285, 0.022084733471274376, -0.08571060001850128, -0.014596782624721527, 0.09833310544490814, -0.04357760027050972, -0.005735744722187519, 0.03484143316745758, -0.06379929929971695, -0.04769008606672287, -0.004818576853722334, -0.044332701712846756, 0.03454294428229332, -0.04895870387554169, -0.040882471948862076, 0.005349519196897745, -0.032488446682691574, -0.013680342584848404, -0.0005928728496655822, -0.05915555730462074, 0.0054065207950770855, 0.06481864303350449, -0.01007293350994587, 0.04771701619029045, 0.07438348978757858, -0.08972112834453583, 0.026885252445936203, 0.07272769510746002, 0.059808939695358276, 0.047659631818532944, -0.03783715143799782, 0.025848252698779106, -0.0591108463704586, 0.01630079746246338, 0.047239936888217926, 0.012480570934712887, -0.08488878607749939, -0.046922698616981506, 0.019547875970602036, -0.07017526030540466, -0.01582191325724125, 0.06766485422849655, 0.03766849264502525, 0.01537253800779581, 0.06810449808835983, 0.03778669610619545, -0.0069126891903579235, -0.007166617549955845, -0.1022338941693306, 0.050672560930252075, 0.008820420131087303, -0.04135547950863838, 0.023074515163898468, 0.05245557054877281, 0.06759008020162582, -0.10025576502084732],
+ "VPSUBWrr":[-0.02042984962463379, -0.08529249578714371, -0.023810340091586113, -0.07641851902008057, 0.02944239415228367, 0.10062888264656067, 0.06888161599636078, -0.015349509194493294, -0.0295290257781744, 0.05538066104054451, -0.004395614378154278, 0.014249595813453197, -0.063707634806633, -0.030221030116081238, -0.04675324633717537, 0.031055595725774765, -0.027972029522061348, 0.01471760030835867, 0.01134146936237812, 0.039189595729112625, -0.07708092778921127, 0.05446882173418999, -0.032270122319459915, -0.06086264178156853, 0.06994351744651794, 0.04615379497408867, 0.04990873858332634, -0.07387787848711014, -0.03935973346233368, 0.048689812421798706, 0.0851270854473114, 0.005173858720809221, -0.08529304713010788, 0.02770276553928852, -0.009629959240555763, 0.038829486817121506, 0.10509209334850311, 0.051942866295576096, -0.018228251487016678, 0.05973344296216965, -0.0383966900408268, 0.009149366058409214, -0.007827919907867908, -0.07717358320951462, -0.019079582765698433, -0.006872585974633694, -0.02854866161942482, 0.05636858195066452, 0.022120898589491844, 0.08934468030929565, 0.07156121730804443, 0.07296640425920486, 0.01159037183970213, -0.06340833008289337, 0.004864509683102369, -0.05217850208282471, -0.002344170119613409, -0.01863779127597809, -0.026551615446805954, 0.031353216618299484, 0.01538465078920126, -0.0017119200201705098, 0.034163959324359894, -0.029268953949213028, -0.0632295161485672, 0.07640069723129272, -0.04035687819123268, 0.061698757112026215, 0.030983494594693184, 0.06502140313386917, 0.005610349588096142, 0.01636631041765213, -0.013217400759458542, 0.04397688806056976, -0.010804425925016403, -0.0699232816696167, 0.024051984772086143, 0.039988335222005844, -0.09801119565963745, 0.03200962394475937, 0.00840195082128048, 0.051731985062360764, 0.014887713827192783, 0.036498840898275375, 0.07555118203163147, -0.07410477846860886, 0.05060684680938721, -0.09880662709474564, -0.0721488818526268, -0.003440973348915577, 0.024791281670331955, -0.04592147096991539, -0.07653222233057022, 0.0010071673896163702, -0.10490309447050095, -0.05494721606373787, 0.051236022263765335, 0.0907604917883873, 0.0018806933658197522, -0.012110148556530476],
+ "VPTESTYrr":[0.013090889900922775, -0.1031455248594284, 0.07483109086751938, 0.04670519009232521, -0.020176537334918976, -0.0690101757645607, 0.027104366570711136, 0.001461087609641254, -0.06590048223733902, 0.011284592561423779, -0.0047254255041480064, 0.05948784574866295, -0.08225654810667038, 0.03503287956118584, 0.02613075263798237, -0.028895210474729538, -0.06560968607664108, 0.048328861594200134, 0.0734243243932724, 0.03725258633494377, -0.04218859598040581, 0.06612563133239746, 0.04616435244679451, 0.03082597255706787, -0.012559411115944386, 0.046546611934900284, -0.06816763430833817, 0.058277517557144165, -0.04878167808055878, 0.08077487349510193, 0.07183665782213211, -0.016815051436424255, 0.018468307331204414, 0.09892524033784866, 0.06741560995578766, -0.005141194444149733, -0.07429999113082886, 0.07878302782773972, 0.09448610246181488, 0.1076238676905632, 0.01859092339873314, 0.037177007645368576, 0.013629721477627754, 0.04872267320752144, -0.07658760249614716, 0.02191777527332306, 0.02636563777923584, -0.054873958230018616, 0.022653229534626007, -0.032930050045251846, -0.006953135598450899, -0.007466759532690048, -0.1072910726070404, 0.054677560925483704, -0.04223709926009178, -0.10217489302158356, 0.0369555726647377, 0.060675155371427536, 0.016010327264666557, -0.043808817863464355, 0.01643976755440235, -0.0026131437625736, -0.021429387852549553, 0.04396446421742439, -0.06237739324569702, -0.009872021153569221, -0.07188938558101654, 0.05015089735388756, 0.07336598634719849, -0.03554687276482582, -0.04615708813071251, -0.051148757338523865, -0.07612527161836624, 0.046925559639930725, -0.008183318190276623, 0.09865092486143112, 0.006089659873396158, -0.020834719762206078, 0.009878495708107948, -0.03863144293427467, -0.07945923507213593, 0.011920347809791565, -0.06989806890487671, 0.02319221757352352, -0.04087335988879204, 0.041583217680454254, 0.03085746429860592, -0.004455466289073229, -0.008692863397300243, 0.0870048999786377, 0.026590729132294655, -0.0890544205904007, 0.0236529428511858, 0.013860998675227165, 0.004743984434753656, -0.008714232593774796, -0.01461566798388958, -0.07199904322624207, 0.037038981914520264, 0.09220735728740692],
+ "VPTESTrr":[0.029338715597987175, -0.028342992067337036, -0.037355124950408936, -0.05396919324994087, -0.06884388625621796, -0.011326213367283344, 0.02035125344991684, 0.04170123487710953, -0.03634878247976303, 0.0649745762348175, 0.07367019355297089, 0.07288144528865814, 0.055085744708776474, 0.0657120794057846, 0.015234226360917091, -0.014819581061601639, -0.0460541732609272, -0.057220686227083206, 0.02520826831459999, 0.0028435259591788054, 0.024190470576286316, -0.021467212587594986, -0.060582153499126434, -0.09208645671606064, -0.0546191968023777, 0.06932271271944046, 0.05645471438765526, -0.01458220835775137, -0.08811543136835098, -0.005913357250392437, 0.07859262079000473, 0.03340579569339752, 0.034301530569791794, 0.061622254550457, 0.10171537101268768, 0.009938382543623447, 0.03175615146756172, -0.017855191603302956, 0.037330351769924164, 0.06089291721582413, -0.01859956979751587, 0.06571266800165176, -0.07898108661174774, 0.050886109471321106, -0.01737050712108612, -0.10005425661802292, 0.06469259411096573, -0.02228967472910881, -0.014572969637811184, 0.10017481446266174, 0.045727211982011795, -0.0513974130153656, 0.05365969240665436, -0.020529935136437416, -0.029225360602140427, 0.017224466428160667, -0.007722817361354828, -0.009913867339491844, -0.05564305558800697, -0.040151722729206085, 0.021098028868436813, -0.0018093307735398412, -0.007420791313052177, 0.032768771052360535, -0.07325316965579987, 0.07568268477916718, 0.050426170229911804, -0.06511528044939041, 0.022473899647593498, 0.05042160302400589, 0.029335377737879753, -0.07240070402622223, 0.09520326554775238, -0.07580367475748062, 0.010280727408826351, -0.04310797527432442, 0.04634576663374901, 0.0381392203271389, -0.04341225326061249, 0.05834930017590523, -0.017954153940081596, -0.030438300222158432, -0.014733180403709412, 0.04980258643627167, -0.05328572541475296, -0.052435219287872314, -0.03328954800963402, -0.013604462146759033, 0.006135633215308189, 0.0029796508606523275, 0.009630237706005573, 0.0017114175716415048, -0.0507376603782177, 0.05821848288178444, 0.04380779340863228, -0.0013648760505020618, -0.013929358683526516, 0.003997433464974165, 0.05128485709428787, -0.004344031680375338],
+ "VPUNPCKHBWYrr":[-0.0007575610070489347, 0.05747583881020546, -0.036080457270145416, 0.10255111008882523, -0.09923691302537918, -0.004551545716822147, 0.0789358988404274, -0.04756467044353485, -0.08888594061136246, 0.015251762233674526, 0.07610458135604858, 0.014388755895197392, 0.02001851238310337, -0.03131512925028801, 0.014673328958451748, 0.0016786606283858418, -0.07060723006725311, -0.0824245736002922, 0.05451390892267227, 0.06011597439646721, -0.03231322765350342, 0.028769750148057938, -0.06350548565387726, 0.09327486157417297, -0.013662423007190228, 0.050460103899240494, -0.026733534410595894, 0.08006210625171661, -0.018878236413002014, 0.031695328652858734, 0.006523318588733673, -0.0852147713303566, 0.03618333116173744, -0.011562548577785492, -0.01464780978858471, 0.08164364844560623, -0.023499295115470886, -0.0714467316865921, -0.021405190229415894, 0.0535365454852581, -0.047826267778873444, -0.01606212928891182, -0.024570079520344734, -0.06733740121126175, -0.08601289987564087, -0.013586706481873989, -0.006619099527597427, -0.01976579800248146, 0.08593834191560745, 0.03784951567649841, -0.044832874089479446, -0.0196722149848938, 0.0838107094168663, -0.008979729376733303, -0.11028580367565155, 0.07102958112955093, -0.015873562544584274, -0.05067920312285423, -0.011659675277769566, 0.09857424348592758, 0.03836240991950035, -0.07502526044845581, -0.008267385885119438, -0.01628320850431919, -0.04155182093381882, -0.005684682633727789, 0.004383501596748829, 0.011624268256127834, 0.05299493670463562, 0.03820306062698364, -0.022290252149105072, 0.026161279529333115, 0.012162091210484505, 0.0060920026153326035, 0.09124705940485, -0.05711155757308006, 0.07166340947151184, 0.04308939725160599, -0.06292258948087692, 0.06941082328557968, -0.07089617848396301, 0.04853707551956177, -0.033207155764102936, -0.03913823142647743, 0.0389573872089386, -0.05977996438741684, 0.03396105393767357, 0.06433000415563583, 0.026039380580186844, -0.025851931422948837, -0.04355558753013611, 0.02133255824446678, 0.06597588956356049, 0.09148314595222473, 0.02644483745098114, -0.0349196121096611, -0.06177141144871712, -0.019446780905127525, 0.07240507751703262, 0.060417208820581436],
+ "VPUNPCKHBWrr":[-0.0481674000620842, 0.05942158028483391, -0.10201264917850494, -0.041899584233760834, 0.08637548983097076, 0.039855051785707474, -0.05820884928107262, -0.008588457480072975, 0.038990236818790436, 0.05180370435118675, -0.07028864324092865, 0.019416064023971558, -0.041754525154829025, 0.0023624449968338013, 0.010100527666509151, -0.07538311183452606, 0.019833439961075783, -0.03170189633965492, 0.037904489785432816, 0.005016269162297249, 0.0919104591012001, -0.06681455671787262, 0.034894052892923355, -0.040442630648612976, -0.0677887424826622, -0.002252440433949232, -0.003556544426828623, 0.034735601395368576, 0.01010088250041008, 0.011004723608493805, -0.051409464329481125, 0.009838232770562172, -0.009430183097720146, -0.07103633135557175, -0.05337413027882576, -0.020530864596366882, 0.024380268529057503, -0.010495525784790516, 0.0419088713824749, -0.0576486736536026, -0.025203589349985123, -0.08661884069442749, 0.008301018737256527, 0.0410853810608387, 0.03514445945620537, -0.02137533761560917, 0.02067895047366619, -0.00985801313072443, -0.02483248896896839, 0.08005350083112717, 0.0328812301158905, -0.009271938353776932, -0.003928267862647772, -0.03994591534137726, 0.09918840229511261, -0.04785240814089775, -0.029119977727532387, 0.04364495351910591, -0.06480495631694794, 0.03243843466043472, 0.006476154550909996, 0.032219529151916504, -0.07111659646034241, 0.1115364357829094, 0.031983647495508194, 0.03115185722708702, -0.06736166030168533, 0.025670340284705162, 0.05791064724326134, 0.05855618417263031, 0.08648581057786942, -0.06536812335252762, 0.004386694636195898, 0.04998621344566345, 0.0053650978952646255, -0.07606043666601181, 0.08296036720275879, -0.03643789514899254, 0.06943705677986145, -0.06884125620126724, -0.04313002899289131, 0.023925039917230606, -0.06754348427057266, 0.011544150300323963, -0.03028629533946514, -0.00013470803969539702, 0.002763921394944191, -0.05563246086239815, -0.0260353684425354, -0.005901737604290247, -0.041938550770282745, -0.0020135517697781324, -0.04042162373661995, -0.0036097026895731688, 0.0014662183821201324, -0.030657567083835602, -0.04795113205909729, -0.07970575988292694, 0.05681532993912697, -0.08301051706075668],
+ "VPUNPCKHDQrr":[-0.04949254170060158, 0.06533872336149216, -0.08819568902254105, -0.02601921744644642, 0.014308372512459755, -0.09682100266218185, -0.025308290496468544, 0.04629260301589966, 0.07380267232656479, 0.03452460467815399, -0.027527226135134697, 0.05546960607171059, -0.04039238020777702, 0.07156644761562347, -0.004890903364866972, 0.08189690858125687, 0.022571129724383354, -0.03759210556745529, 0.045288290828466415, -0.03786793723702431, 0.03788786754012108, -0.07087758928537369, 0.03584998473525047, -0.005517326761037111, -0.06679031997919083, 0.038243141025304794, 0.009841805323958397, -0.04834020510315895, -0.006091549526900053, 0.000746615813113749, 0.05039234086871147, -0.007428792770951986, -0.020683465525507927, 0.03131508827209473, -0.056161388754844666, 0.06873215734958649, -0.09264399111270905, -0.01672517880797386, 0.08799368888139725, -0.05644362419843674, -0.049571290612220764, 0.02957705222070217, -0.047995053231716156, -0.061486899852752686, 0.038529906421899796, 0.055201686918735504, 0.04904999956488609, 0.009544963017106056, -0.06947573274374008, 0.04444456472992897, 0.03593657538294792, -0.01378286350518465, -0.005352402105927467, -0.043910104781389236, 0.02683325670659542, -0.027296315878629684, -0.01655246876180172, 0.014835827052593231, -0.05941297858953476, -0.10445722937583923, -0.033736634999513626, -0.020772792398929596, 0.1030370220541954, 0.03338759019970894, 0.004066960886120796, 0.06652521342039108, -0.014405383728444576, -0.03271380066871643, 0.04255763441324234, -0.030511321499943733, 0.09746299684047699, -0.03862769901752472, 0.008967758156359196, 0.006029091775417328, -0.020716583356261253, -0.06952077895402908, 0.10113976895809174, 0.007953221909701824, -0.03904152289032936, -0.10436266660690308, -0.11146504431962967, 0.008594663813710213, 0.09996979683637619, -0.05794554576277733, 0.029126694425940514, 0.05644356831908226, 0.09360583871603012, -0.038627199828624725, 0.002824661321938038, -0.0028452768456190825, 0.07724638283252716, 0.09736885130405426, -0.016237668693065643, -0.0263352170586586, -0.09550731629133224, 0.05798545479774475, 0.04138067364692688, -0.010668447241187096, 0.03188783675432205, -0.013819875195622444],
+ "VPUNPCKHWDYrr":[0.00508058862760663, 0.07912838459014893, -0.07088255882263184, 0.05163577198982239, 0.07463494688272476, -0.023526327684521675, -0.023870930075645447, 0.039172109216451645, 0.019164644181728363, -0.0877179205417633, 0.05248517170548439, -0.005416769068688154, -0.0035435480531305075, -0.06398732215166092, 0.009478181600570679, -0.01256435364484787, -0.005232134833931923, 0.043489232659339905, 0.029725901782512665, 0.060985155403614044, -0.012409900315105915, 0.03933833912014961, -0.024872269481420517, -0.04805638641119003, -0.046509068459272385, 0.023312967270612717, 0.0149372648447752, -0.1080910861492157, -0.004581186920404434, 0.07991285622119904, 0.05171673372387886, -0.0035760700702667236, 0.06753528863191605, 0.09224298596382141, -0.10015476495027542, 0.015415682457387447, 0.06578101217746735, -0.040094971656799316, -0.03793083876371384, 0.009965730831027031, -0.03722076117992401, 0.09777543693780899, -0.04728139564394951, 0.03932490944862366, 0.05339943245053291, -0.011436556465923786, 0.07707017660140991, -0.07538693398237228, -0.07360353320837021, -0.013454304076731205, -0.03895645961165428, 0.10242245346307755, 0.009760214947164059, -0.04198215901851654, -0.024927236139774323, 0.017491668462753296, -0.053391776978969574, 0.01734841801226139, 0.08211912214756012, -0.07266341149806976, 0.07370540499687195, -0.021107269451022148, 0.021925680339336395, -0.038153450936079025, 0.015538940206170082, -0.026908233761787415, -0.015777822583913803, -0.0615416057407856, 0.03371782600879669, -0.010614940896630287, -0.06030246242880821, -0.033386506140232086, 0.055366694927215576, -0.0041300090961158276, -0.0043964204378426075, 0.0576854944229126, -0.06930658221244812, -0.05985456332564354, 0.03018217533826828, 0.015156394802033901, 0.01759851723909378, 0.0848659873008728, -0.1050054058432579, 0.02507541887462139, -0.03339465707540512, 0.05943431332707405, -0.04854724183678627, 0.021005529910326004, -0.03924970701336861, 0.054575979709625244, -0.024789737537503242, 0.028060242533683777, -0.017290469259023666, -0.019356634467840195, 0.047284916043281555, -0.04290834441781044, -0.0658734068274498, -0.008495526388287544, 0.018590828403830528, -0.008236117660999298],
+ "VPUNPCKHWDrr":[-0.00996673759073019, 0.016038844361901283, 0.06356588751077652, -0.06528530269861221, 0.053173184394836426, -0.0010052964789792895, 0.01793762482702732, -0.023677006363868713, 0.06109920144081116, -0.025279201567173004, -0.022185929119586945, 0.0018677138723433018, 0.05205993354320526, 0.02506999298930168, -0.0675731748342514, 0.014605945907533169, -0.02497594989836216, -0.08472056686878204, 0.04410567507147789, -0.025518545880913734, -0.0015708989230915904, -0.0748785212635994, 0.10608159005641937, -0.02898368053138256, 0.06092985346913338, -0.010359732434153557, 0.03202875331044197, -0.007288633845746517, 0.06213889643549919, 0.0450994074344635, -0.010203395038843155, -0.02827584184706211, 0.03591015934944153, -0.0651528462767601, -0.04982442781329155, -0.07686163485050201, -0.01771077886223793, 0.03244604542851448, -0.057268306612968445, 0.09365646541118622, 0.006411233451217413, 0.09195762872695923, 0.027344897389411926, -0.01630682684481144, 0.027203978970646858, 0.006400470156222582, 0.02237631008028984, -0.05035273730754852, -0.009424079209566116, -0.05960824340581894, 0.019072948023676872, 0.007147674914449453, 0.011565865017473698, 0.03871136158704758, -0.04809505492448807, 0.01885758526623249, 0.06818070262670517, -0.07293778657913208, 0.016133276745676994, -0.0020428188145160675, -0.07606502622365952, 0.04013705253601074, -0.030055956915020943, -0.09246911853551865, 0.04922201856970787, -0.010465468280017376, 0.008668980561196804, 0.013858926482498646, -0.03993714600801468, -0.0934959128499031, 0.0026997867971658707, -0.00195944681763649, -0.0468740314245224, -0.0210502240806818, -0.07070556282997131, -0.0820908322930336, 0.005192984826862812, 0.006204392295330763, 0.008177666924893856, -0.04848190397024155, -0.0039268312975764275, 0.033632319420576096, 0.11162525415420532, -0.0687154233455658, -0.004340256564319134, 0.04949302598834038, -0.05604461207985878, 0.0556911937892437, -0.0971827358007431, -0.09241744875907898, 0.0015515567502006888, -0.03369680419564247, 0.0318961963057518, 0.06065771356225014, -0.10500510782003403, -0.010805200785398483, -0.02761063724756241, 0.026692265644669533, -0.04447545111179352, 0.046919085085392],
+ "VPUNPCKLBWYrr":[0.06862374395132065, -0.010386754758656025, 0.07726065814495087, -0.006965293549001217, -0.015444625169038773, -0.03129157796502113, 0.0836181640625, -0.019977500662207603, -0.04484675079584122, 0.032412998378276825, 0.0027496982365846634, 0.028317634016275406, 0.011417600326240063, -0.0755956619977951, 0.07039687782526016, 0.06539338827133179, 0.08591505140066147, -0.04612083360552788, 0.04582939296960831, 0.09296195954084396, 0.05509187653660774, -0.026227466762065887, 0.08672066777944565, 0.022128965705633163, 0.046221669763326645, -0.1048840880393982, -0.012008922174572945, -0.08069313317537308, 0.11117497831583023, 0.00856747105717659, 0.034641820937395096, 0.08012396097183228, 0.004924746695905924, -0.06379770487546921, -0.05884428322315216, -0.04263622313737869, -0.02672584541141987, -0.08401663601398468, -0.03930909186601639, 0.1003282368183136, 0.04640154913067818, 0.007137955166399479, 0.026882441714406013, 0.010795733891427517, 0.03235011175274849, -0.03140716999769211, -0.10175382345914841, -0.08431392163038254, 0.07126293331384659, -0.0032008709385991096, 0.017976613715291023, -0.02651171386241913, -0.008320591412484646, -0.07332070171833038, -0.00732535682618618, 0.0032904555555433035, 0.03777015581727028, 0.018650202080607414, 0.03494393825531006, 0.022040635347366333, 0.002898340579122305, 0.022157859057188034, -0.057203684002161026, 0.08165138959884644, -0.026991600170731544, -0.05964408442378044, 0.0058836680836975574, -0.08103595674037933, 0.007348921615630388, -0.08972432464361191, -0.072458416223526, 0.0853465124964714, -0.0776963159441948, 0.013648021966218948, 0.04222959280014038, -0.023586519062519073, -0.0034736227244138718, -0.0429186150431633, -0.04848099499940872, 0.07405222207307816, -0.032619643956422806, -0.0604141466319561, 0.06912803649902344, 0.09233739227056503, 0.012711108662188053, -0.04644624516367912, -0.08301480114459991, 0.006407919805496931, 0.03473026305437088, 0.0280016977339983, 0.04149690642952919, -0.034545380622148514, 0.019274180755019188, -0.10424572229385376, -0.013587265275418758, 0.06901537626981735, -0.023911835625767708, 0.08505856990814209, 0.053945209830999374, 0.04198566451668739],
+ "VPUNPCKLBWrr":[0.04179570451378822, 0.035877667367458344, 0.017179299145936966, 0.06289241462945938, 0.07105457037687302, -0.0966581329703331, -0.03955972567200661, -0.040642015635967255, 0.05265330523252487, -0.023115374147892, -0.06419900059700012, -0.0035584373399615288, 0.004590798635035753, -0.008299448527395725, 0.0073445518501102924, -0.019854724407196045, 0.04316696897149086, -0.11287003010511398, 0.06068318709731102, 0.017519116401672363, -0.07365250587463379, -0.10276903957128525, -0.05214080587029457, -0.056315384805202484, -0.003815661184489727, -0.023983780294656754, 0.08250073343515396, 0.04337771609425545, 0.020251693204045296, -0.03332473710179329, 0.042399436235427856, -0.04587049037218094, -0.04488826170563698, 0.06583663076162338, -0.055823590606451035, -0.0726398378610611, -0.047489505261182785, -0.01875516213476658, 0.05126515030860901, -0.059057485312223434, 0.07864400744438171, 0.059082821011543274, -0.04024554044008255, 0.0268973708152771, 0.08507847785949707, -0.03538360819220543, -0.0016810683300718665, -0.05409324914216995, 0.08752705156803131, 0.012539179995656013, -0.023452669382095337, 0.08471274375915527, -0.023529844358563423, -0.040838759392499924, 0.0632205680012703, -0.06879762560129166, -0.013320124708116055, 0.003564537037163973, 0.018728144466876984, -0.01800663396716118, -0.03076012060046196, -0.07081769406795502, 0.04572093486785889, 0.04042794555425644, 0.0031506086234003305, -0.08315518498420715, 0.023938307538628578, 0.0011847001733258367, -0.002207063138484955, 0.0002982659498229623, 0.013936661183834076, -0.024616466835141182, -0.037223637104034424, 0.04089860990643501, -0.056401968002319336, -0.0678936317563057, 0.017491411417722702, -0.012243090197443962, -0.004124382045120001, 0.03941866010427475, 0.004402480088174343, -0.005303423386067152, -0.038298722356557846, 0.02517993189394474, 0.07840936630964279, 0.08608239889144897, 0.027215123176574707, 0.035956013947725296, 0.01579868420958519, -0.031024781987071037, -0.003258100477978587, -0.03043777495622635, -0.07256218045949936, 0.025069523602724075, 0.03403007239103317, -0.035824794322252274, -0.034447770565748215, -0.023082822561264038, 0.04477127268910408, -0.022500142455101013],
+ "VPUNPCKLDQrm":[0.01808145083487034, -0.047481317073106766, 0.036458875983953476, -0.06756069511175156, -0.07263876497745514, 0.041464485228061676, -0.06888499855995178, -0.09161311388015747, 0.005957342684268951, -0.028209393844008446, 0.0975736454129219, -0.07577788084745407, -0.03311765938997269, -0.1210741475224495, -0.006098935846239328, 0.06858714669942856, -0.051642537117004395, 0.0277473833411932, 0.018644995987415314, -0.09402737766504288, -0.04540586844086647, -0.014970432966947556, 0.011109361425042152, 0.01606938987970352, -0.02034185640513897, -0.02124924212694168, 0.03650691732764244, -0.050081342458724976, -0.016438206657767296, -0.0012295744381844997, -0.006042464170604944, -0.04547809436917305, -0.06056465208530426, -0.015675228089094162, -0.017563452944159508, -0.04884474724531174, -0.012658736668527126, 0.003444407135248184, -0.014290404506027699, -0.06930239498615265, 0.05289202556014061, 0.02924049273133278, 0.001110789249651134, -0.037739552557468414, 0.012383324094116688, 0.05485215038061142, -0.03416045382618904, 0.02073214203119278, -0.025923535227775574, -0.0068536680191755295, 0.0742625892162323, -0.017891842871904373, -0.05706189200282097, -0.026877425611019135, 0.01062735915184021, 0.08123867213726044, -0.01004836242645979, -0.029955297708511353, -0.09819070249795914, -0.06030372902750969, -0.009010473266243935, -0.11947022378444672, 0.04485160857439041, -0.0012905992334708571, 0.015052471309900284, 0.03438085690140724, 0.09973346441984177, 0.09351536631584167, 0.016131803393363953, -0.01190194208174944, -0.046890344470739365, -0.06422023475170135, 0.017057005316019058, 0.009675106965005398, 0.05216756463050842, -0.047232288867235184, -0.01721760258078575, 0.019185226410627365, -0.009063622914254665, 0.07399558275938034, 0.015535572543740273, -0.03459913283586502, -0.028980402275919914, 0.06893652677536011, -0.01412397064268589, -0.1200372725725174, 0.044274426996707916, 0.05810099467635155, 0.036772340536117554, 0.0007802530308254063, -0.05737174674868584, -0.04039068892598152, 0.06173468381166458, -0.006645697634667158, 0.024844277650117874, 0.042789481580257416, -0.037058088928461075, 0.04384298995137215, 0.010302253067493439, 0.05257352814078331],
+ "VPUNPCKLDQrr":[0.047771431505680084, 0.050379958003759384, -0.11610188335180283, -0.07237055897712708, -0.08276388794183731, 0.07499776035547256, 0.012263745069503784, 0.08094198256731033, -0.006017399951815605, -0.10468403995037079, 0.012426462955772877, 0.05914395675063133, -0.09329459816217422, 0.020622732117772102, -0.061708103865385056, 0.0138245839625597, 0.0171262938529253, -0.1167823001742363, 0.06298723816871643, 0.027638936415314674, -0.08037225157022476, 0.01119303796440363, -0.048453643918037415, -0.06285234540700912, -0.07024907320737839, 0.01897144876420498, 0.02364867553114891, 0.01696806401014328, 0.05466775596141815, 0.03344251587986946, 0.042269159108400345, -0.030760830268263817, -0.08286873251199722, -0.07953950017690659, 0.09710010141134262, 0.01239983644336462, 0.047009002417325974, 0.027069276198744774, -0.056965913623571396, 0.011120307259261608, 0.01709851250052452, 0.08981925994157791, 0.04993985965847969, 0.07915695011615753, 0.012201672419905663, -0.006464417092502117, 0.0007463619112968445, -0.10764268785715103, -0.061028748750686646, 0.04279482364654541, -0.08665254712104797, -0.04435889795422554, -0.0022997164633125067, -0.04647946357727051, 0.02749559096992016, -0.03667359799146652, 0.028749186545610428, 0.01997258886694908, 0.0030985050834715366, -0.028743039816617966, 0.0030407176818698645, -0.12704621255397797, 0.018969044089317322, 0.02378842979669571, 0.060204606503248215, -0.03636309131979942, 0.005920423660427332, 0.026680337265133858, 0.006787629332393408, -0.03653842583298683, -0.057017188519239426, -0.07677086442708969, -0.03593224659562111, 0.0540473610162735, -0.08136481046676636, 0.04039469733834267, -0.005311165004968643, -0.007480462547391653, -0.01776265725493431, 0.013272806070744991, 0.0390106737613678, 0.00265194708481431, -0.00930732861161232, -0.027720320969820023, 0.06637075543403625, -0.03268952667713165, 0.03899669274687767, 0.029324330389499664, -0.007855851203203201, -0.059322115033864975, -0.009414848871529102, -0.10014878213405609, -0.01697603240609169, 0.021235041320323944, 0.0668419748544693, -0.0031019076704978943, 0.056553252041339874, -0.01934056729078293, 0.07347971200942993, 0.004899684339761734],
+ "VPUNPCKLQDQYrr":[0.0715327113866806, 0.0011582953156903386, -0.09199592471122742, 0.04344237968325615, 0.09391138702630997, 0.07788001000881195, 0.026453683152794838, 0.00112442160025239, -0.08126990497112274, 0.06673462688922882, 1.7834023310570046e-05, -0.0413658544421196, -0.0663100928068161, -0.08312758058309555, -0.05493386089801788, 0.06686777621507645, -0.08144338428974152, -0.05083015561103821, 0.059401627629995346, -0.0050535001792013645, -0.0796709656715393, -0.06731902807950974, -0.011557240970432758, -0.020103786140680313, -0.025216177105903625, 0.06338880956172943, 0.009348994120955467, -0.05014411732554436, 0.008061685599386692, 0.04634131118655205, -0.01648750714957714, 0.03429725021123886, 0.04865278676152229, 0.041876427829265594, -0.01832447573542595, 0.06162605807185173, 0.08931008726358414, 0.040159691125154495, 0.019288865849375725, -0.060709767043590546, -0.09134510159492493, -0.06321852654218674, -0.05583323910832405, 0.016047364100813866, -0.0008287654491141438, -0.05223497003316879, -0.1106218695640564, 0.09734120219945908, 0.006535667926073074, 0.021148771047592163, -0.08064720779657364, -0.0012553647393360734, -0.07082600891590118, -0.03948928043246269, 0.06953436136245728, -0.04221869260072708, 0.03150689974427223, -0.010154956951737404, -0.01692052371799946, 0.06803131103515625, 0.07012273371219635, -0.009919030591845512, 0.09183577448129654, 0.00608732970431447, 0.06004629284143448, 0.04188261553645134, -0.06582513451576233, 0.018390972167253494, 0.003691376419737935, 0.002837555017322302, 0.005629073362797499, 0.003766110399737954, -0.07074221968650818, 0.030440285801887512, 0.05404344201087952, 0.05637402832508087, -0.03280451148748398, 0.08861548453569412, -0.07590547204017639, 0.06018586829304695, 0.07185162603855133, 0.043180469423532486, -0.01870671845972538, -0.020117852836847305, 0.003318772418424487, -0.10696393996477127, -0.00912979431450367, 0.0274508073925972, 0.029911600053310394, 0.056483227759599686, -0.05601167678833008, 0.009575792588293552, -0.03036300465464592, 0.04347558692097664, -0.031572021543979645, 0.026824455708265305, 0.016639163717627525, 0.06472216546535492, -0.018060877919197083, -0.07502102106809616],
+ "VPUNPCKLQDQrr":[-0.04662499576807022, 0.010594041086733341, 0.11463192850351334, -0.014329253695905209, -0.026878483593463898, 0.03882501646876335, 0.017350515350699425, -0.0073020136915147305, 0.010814118199050426, 0.04149024188518524, 0.009986023418605328, -0.028721420094370842, 0.03747038170695305, 0.07711722701787949, 0.00308463117107749, -0.0009217505576089025, 0.03557336702942848, -0.09186340868473053, -0.05956112965941429, -0.016999296844005585, -0.04273378103971481, -0.051904525607824326, -0.040469907224178314, -0.04472510889172554, 0.09652043133974075, -0.031112167984247208, 0.021478988230228424, 0.025805585086345673, -0.029800213873386383, 0.014856173656880856, -0.05738044157624245, -0.004348014015704393, 0.0506523922085762, -0.04012210667133331, 0.09764352440834045, -0.08716884255409241, -0.07467293739318848, -0.0014402613742277026, 0.05136354640126228, 0.009069710969924927, -0.07687616348266602, 0.02187049202620983, 0.036821793764829636, 0.029012279585003853, 0.03419552743434906, -0.015490971505641937, -0.021839097142219543, -0.03692485764622688, 0.06286798417568207, -0.08298217505216599, -0.017895599827170372, 0.008479698561131954, 0.011423869989812374, -0.004925938788801432, 0.04010774567723274, -0.025032643228769302, 0.015340023674070835, 0.0748351514339447, -0.024285484105348587, -0.012738530524075031, -0.13610731065273285, -0.10966621339321136, 0.003950601909309626, -0.03590795770287514, -0.07032117992639542, -0.059757087379693985, 0.02382374368607998, 0.05015197768807411, 0.09727215021848679, -0.05659188702702522, -0.04683497175574303, 0.043583016842603683, 0.05770156532526016, 0.00925946794450283, 0.03584331274032593, 0.07423773407936096, -0.025679640471935272, -0.020543798804283142, 0.005750027950853109, 0.006816870998591185, 0.03468071669340134, -0.031588438898324966, 0.0024657086469233036, 0.034511227160692215, -0.01689191348850727, -0.040807925164699554, 0.037661708891391754, -0.03365383669734001, 0.03847094625234604, -0.05214270204305649, -0.050174977630376816, 0.09132425487041473, 0.05782223865389824, -0.0046280440874397755, 0.0036144680343568325, -0.09702926874160767, -0.07111163437366486, -0.0443575456738472, -0.0029467749409377575, 0.05053029581904411],
+ "VPUNPCKLWDYrr":[0.02545209787786007, 0.05590946972370148, -0.06534770131111145, -0.01058014202862978, 0.047760263085365295, -0.0438656248152256, 0.024162517860531807, -0.03814830631017685, 0.05426390469074249, 0.01238524541258812, 0.02087833546102047, 0.019342990592122078, 0.053494133055210114, -0.041422270238399506, 0.007612497080117464, -0.06698251515626907, -0.010570546612143517, 0.02898312360048294, 0.006307779345661402, -0.05057704821228981, 0.03935305401682854, 0.013029877096414566, 0.06484286487102509, 0.08907540142536163, -0.0037416559644043446, -0.0028827490750700235, -0.02233710326254368, -0.061094980686903, 0.04172292351722717, -0.014465279877185822, 0.01114294771105051, 0.07836559414863586, 0.039092402905225754, -0.02254526875913143, -0.04805059731006622, -0.03382202237844467, 0.021991565823554993, -0.0907570868730545, 0.016276191920042038, 0.016241569072008133, -0.019947117194533348, 0.020301533862948418, 0.029354507103562355, 0.06104222685098648, -0.028084948658943176, -0.03155285865068436, -0.009794666431844234, 0.06949780881404877, -0.011182524263858795, 0.037678107619285583, 0.05039545148611069, 0.07390250265598297, 0.01663518138229847, 0.006815796718001366, -0.05335046350955963, -0.0462888740003109, 0.04850218445062637, 0.06879255920648575, 0.056430600583553314, 0.030055321753025055, 0.09219431132078171, 0.06461947411298752, -0.03465896099805832, -0.01818985678255558, 0.0034482209011912346, -0.04158204048871994, 0.03664223477244377, -0.053820546716451645, 0.07715227454900742, -0.03706659376621246, -0.0611095055937767, 0.0047945561818778515, 0.02206408418715, 0.045009173452854156, 0.06635016947984695, 0.027230439707636833, 0.048024628311395645, -0.02457171492278576, -0.0512671060860157, 0.04630778729915619, 0.009209039621055126, 0.009708922356367111, 0.019378650933504105, 0.06359925866127014, -0.01657024212181568, 0.058372605592012405, 0.07766399532556534, -0.052134715020656586, -0.02655733749270439, -0.07642072439193726, 0.035356324166059494, 0.07580669224262238, -0.03440552204847336, 0.06798578798770905, -0.004986640997231007, 0.0014375654282048345, -0.03240450844168663, -0.1015634685754776, -0.05013495311141014, 0.0332624576985836],
+ "VPUNPCKLWDrm":[-0.09657033532857895, 0.03146384283900261, 0.026404885575175285, 0.07641897350549698, 0.02700040116906166, 0.0315239317715168, 0.07294800132513046, 0.0473775677382946, 0.057094279676675797, -0.015247776173055172, -0.05488600209355354, -0.007632901892066002, -0.030490674078464508, 0.0027145985513925552, -0.012808040715754032, -0.031748510897159576, -0.06728343665599823, -0.04956026375293732, 0.016718368977308273, 0.014134957455098629, -0.09410054981708527, -0.09604505449533463, -0.0016632373444736004, -0.015765715390443802, 0.0021646302193403244, -0.03392639383673668, 0.020673606544733047, 0.052615564316511154, -0.012861989438533783, 0.02831866778433323, -0.018502430990338326, 0.01799936220049858, -0.09522159397602081, 0.02276504784822464, -0.03133668005466461, 0.038894373923540115, 0.05016617104411125, 0.026112433522939682, 0.005922479555010796, -0.0472622849047184, 0.04773010313510895, -0.0027238295879215, -0.030275721102952957, 0.019354263320565224, -0.053391773253679276, 0.021039927378296852, 0.013356459327042103, 0.035859789699316025, -0.09501781314611435, 0.016274431720376015, -0.010038423351943493, 0.026750218123197556, 0.038125090301036835, -0.018714386969804764, 0.08447889983654022, -0.042809031903743744, -0.04549601674079895, 0.07368366420269012, -0.06509435176849365, -0.0429205484688282, 0.03916800394654274, 0.0069826277904212475, 0.08262725919485092, -0.0075195892713963985, -0.022700857371091843, -0.023119645193219185, -0.09551636874675751, -0.06774520128965378, 0.024889010936021805, -0.01230926625430584, -0.008841171860694885, 0.03975476697087288, -0.0029813554137945175, -0.047856345772743225, -0.04495038092136383, -0.06928819417953491, 0.04214705526828766, 0.02766265720129013, 0.02502993866801262, 0.02345769666135311, -0.06552495062351227, -0.006738319993019104, 0.06418020278215408, 0.007263982202857733, 0.014164145104587078, -0.05132705718278885, 0.016297638416290283, 0.03829122707247734, -0.017159046605229378, 0.014936232008039951, -0.04529903456568718, 0.027121033519506454, 0.010276047512888908, -0.020283041521906853, -0.0811200812458992, 0.08433837443590164, 0.027324089780449867, 0.0030077744740992785, 0.04179461672902107, 0.030485626310110092],
+ "VPUNPCKLWDrr":[0.0231899656355381, 0.015401661396026611, 0.0488104522228241, -0.0037541971541941166, 0.030506813898682594, 0.06137288734316826, -0.061080530285835266, -0.07066134363412857, 0.007191264536231756, 0.06699302047491074, 0.06139855459332466, 0.006864072754979134, 0.028017448261380196, 0.018696565181016922, 0.012068664655089378, -0.020041540265083313, 0.055152807384729385, 0.07933119684457779, 0.04950971528887749, 0.041380446404218674, -0.013701159507036209, 0.08080418407917023, -0.00872570276260376, -0.06474775820970535, 0.09240284562110901, -0.020534835755825043, 0.0019465626683086157, 0.0340203195810318, 0.0054632797837257385, -0.014026063494384289, -0.03369177132844925, -0.025951813906431198, -0.08270219713449478, -0.09303833544254303, -0.0443195179104805, -0.08881594985723495, -0.06945490837097168, -0.054037630558013916, 0.04132826626300812, 0.06859937310218811, 0.04106900095939636, -0.010103624314069748, -0.03715559467673302, 0.005343805067241192, 0.10928130149841309, 0.03717999532818794, 0.02744712494313717, -0.06599830090999603, 0.06322930753231049, -0.005431521683931351, -0.07103938609361649, 0.05604855343699455, 0.06139613315463066, -0.041773535311222076, 0.015932101756334305, 0.025710737332701683, 0.11725550889968872, 0.012976035475730896, -0.00778117636218667, -0.0156894288957119, -0.03875037655234337, 0.015316461212933064, 0.033526476472616196, 0.058692675083875656, 0.04412159323692322, -0.00794909056276083, 0.023241760209202766, -0.00995225366204977, 3.3564938348717988e-06, -0.02302669547498226, 0.07022638618946075, -0.020003845915198326, 0.01460848469287157, -0.01884622685611248, -0.0656098872423172, -0.09032485634088516, -0.010149596258997917, 0.021114762872457504, 0.002328182803466916, 0.060422446578741074, 0.0009759114473126829, 0.04782310500741005, 0.03617414832115173, -0.05798779055476189, 0.0746552124619484, -0.09791647642850876, -0.008852057158946991, 0.045726168900728226, -0.06595270335674286, -0.01800083927810192, 0.0030334119219332933, -0.044982850551605225, -0.059169165790081024, 0.06986165046691895, 0.013459423556923866, 0.002666204934939742, 0.020914917811751366, 0.0404791459441185, -0.027605384588241577, -0.02838020958006382],
+ "VPXORYrm":[-0.026697330176830292, 0.0479557029902935, 0.038411639630794525, 0.07042466849088669, -0.04570568725466728, 0.010776014998555183, 0.0009103105403482914, 0.064312644302845, -0.042025431990623474, 0.009172532707452774, 0.07125765085220337, -0.020511982962489128, -0.06408315151929855, -0.00480931019410491, -0.05236874893307686, 0.007034718990325928, -0.03214464709162712, -0.025093212723731995, -0.024651197716593742, 0.03489972651004791, -0.04511101171374321, -0.11798204481601715, 0.024540351703763008, 0.003897999878972769, 0.03711702674627304, 0.030707519501447678, 0.04293180629611015, -0.0374850369989872, -0.00500381039455533, -0.06910008937120438, 0.014446225948631763, -0.013002880848944187, -0.03260328620672226, -0.11167582124471664, -0.09442613273859024, -0.0496407225728035, 0.07676675915718079, 0.017273519188165665, 0.02117844671010971, 0.039859965443611145, -0.02632427029311657, 0.08106739073991776, -0.014715580269694328, 0.09069714695215225, -0.05679098144173622, 0.0005365843535400927, 0.07860807329416275, 0.07632376998662949, -0.0303993858397007, -0.015318597666919231, 0.02004745416343212, 0.00747406342998147, 0.06773114949464798, 0.03834110125899315, -0.016710035502910614, 0.10910802334547043, -0.014942576177418232, 0.021002665162086487, -0.03090246580541134, 0.07578974217176437, -0.056757062673568726, 0.1036967858672142, -0.0017093545757234097, -0.011305800639092922, -0.03242212533950806, 0.023417383432388306, -0.005929821636527777, -0.0017162655713036656, 0.008001334965229034, -0.008526040241122246, -0.04243074357509613, -0.044661231338977814, -0.042155150324106216, -0.050483424216508865, 0.09623275697231293, -0.028309760615229607, 0.024054694920778275, -0.0599823072552681, -0.0037849866785109043, -0.031158477067947388, 0.04930756241083145, -0.003932049497961998, 0.10998362302780151, 0.011521516367793083, -0.040052928030490875, -0.07384252548217773, -0.018386542797088623, -0.018955864012241364, 0.044975195080041885, -0.11898227781057358, -0.00992919784039259, 0.10419178754091263, 0.0741923451423645, 0.015769537538290024, 0.08502164483070374, -0.06485910713672638, -0.024746255949139595, -0.014264232479035854, 0.015959646552801132, 0.02474517934024334],
+ "VPXORYrr":[-0.026383494958281517, 0.05895810201764107, 0.03381752967834473, -0.11089399456977844, -0.06591085344552994, 0.005090017803013325, -0.10114440321922302, 0.04071889817714691, 0.07365905493497849, 0.06156826764345169, -0.004605200607329607, 0.013686015270650387, -0.014454984106123447, 0.029946591705083847, 0.06617643684148788, 0.051387131214141846, 0.013041185215115547, -0.050808776170015335, -0.012186236679553986, -0.019670067355036736, 0.012343267910182476, 0.09432220458984375, 0.09085258841514587, -0.021663723513484, -0.061909403651952744, 0.016276760026812553, -0.01727386936545372, -0.03572668135166168, -0.007455126848071814, -0.03308303281664848, -0.10972865670919418, -0.03629389405250549, -0.059146132320165634, 0.10113086551427841, -0.034366022795438766, -0.05024604871869087, -0.0017723571509122849, 0.0370749905705452, 0.03349771350622177, 0.05049777403473854, 0.08481483161449432, 0.024098092690110207, -0.06580611318349838, -0.03116484545171261, -0.030085129663348198, -0.010743293911218643, 0.05039703845977783, -0.012403511442244053, 0.07547064125537872, 0.024332618340849876, -0.06048983708024025, 0.0753212422132492, 0.024412132799625397, 0.06176513060927391, -0.02119375765323639, -0.02247535064816475, -0.051006779074668884, 0.07052962481975555, 0.018481338396668434, 0.04844339191913605, 0.01881319098174572, -0.01364616397768259, 0.009143381379544735, -0.008740576915442944, 0.09980508685112, 0.009514073841273785, -0.07939404249191284, 0.030122483149170876, 0.052651528269052505, 0.021350698545575142, -0.10333079844713211, 0.06680178642272949, -0.04263182729482651, 0.03371052443981171, 0.03449460491538048, -0.07492528110742569, 0.020742719992995262, -0.062021177262067795, 0.03513437882065773, 0.0432465560734272, -0.005085752811282873, 0.03714991733431816, -0.03433241322636604, -0.043082427233457565, 0.12497006356716156, -0.03854304924607277, 0.03366425260901451, -0.0609770193696022, 0.01578012853860855, -0.05862264335155487, 0.08213168382644653, -0.03846881538629532, 0.051602739840745926, -0.056532394140958786, 0.03271535038948059, 0.031024402007460594, -0.06786458194255829, -0.07589780539274216, -0.015221627429127693, -0.000475045177154243],
+ "VPXORrm":[0.016538456082344055, 0.05865102633833885, 0.01519467867910862, -0.025408223271369934, 0.05612361058592796, 0.03524784743785858, 0.08295822143554688, 0.061202775686979294, -0.008738577365875244, 0.012372053228318691, 0.06919898092746735, 0.006761549040675163, 0.0884922593832016, -0.06659282743930817, 0.02559349685907364, 7.814442506060004e-05, 0.08747229725122452, 0.031101543456315994, 0.0016571114538237453, -0.095496267080307, 0.048136159777641296, -0.0883006751537323, -0.07559191435575485, 0.0024478272534906864, -0.002167212776839733, -0.047244150191545486, 0.02351190336048603, 0.015085067600011826, -0.07161303609609604, -0.028852395713329315, 0.1184917762875557, -0.05287514626979828, -0.03349620848894119, 0.0037090827245265245, 0.056672777980566025, 0.014490614645183086, 0.01290382444858551, -0.004948653280735016, -0.003927523270249367, -0.03926830738782883, 0.04675200581550598, -0.011929239146411419, 0.017914164811372757, 0.041524793952703476, -0.0018589328974485397, -0.0015214415034279227, -0.05966728553175926, -0.0424066036939621, 0.07607929408550262, -0.005039292387664318, 0.10213708877563477, 0.012122276239097118, -0.06068016216158867, 0.008634216152131557, -0.034886494278907776, -0.007059778552502394, 0.021483898162841797, 0.008390541188418865, 0.058506082743406296, 0.007426647003740072, -0.005139597225934267, -0.042707622051239014, -0.024347778409719467, -0.0013728936901316047, -0.02373124659061432, 0.02703103981912136, -0.018227703869342804, 0.019866080954670906, 0.004087743349373341, 0.020111462101340294, 0.10182458907365799, 0.013936442323029041, 0.028369225561618805, -0.003911110106855631, -0.06072041392326355, 0.008747761137783527, -0.022064218297600746, -0.02271709218621254, -3.481796375126578e-05, 0.041456881910562515, 0.08864029496908188, -0.09024950116872787, 0.06754814088344574, 0.010054371319711208, 0.052747901529073715, -0.08994458615779877, -0.10652260482311249, 0.03830603510141373, 0.04546237736940384, -0.05472271144390106, -0.05727129802107811, 0.003225166816264391, 0.042850371450185776, -0.007294272538274527, -0.015371125191450119, 0.03063979372382164, 0.0015071174129843712, 0.04409479349851608, -0.04330766946077347, 0.010925298556685448],
+ "VPXORrr":[-0.08150375634431839, 0.06343845278024673, 0.038281846791505814, -0.028969312086701393, -0.002789345569908619, 0.06704971194267273, -0.017340578138828278, 0.039346739649772644, -0.07766322791576385, -0.0028464007191359997, -0.09069228917360306, 0.04055095463991165, 0.0899386927485466, -0.03845689445734024, -0.007599329575896263, 0.018871882930397987, 0.013647125102579594, -0.08799582719802856, 0.022253938019275665, -0.046939484775066376, 0.0041758171282708645, -0.04327234625816345, -0.024971656501293182, -0.02188556082546711, 0.005900957155972719, 0.045105863362550735, -0.03146030381321907, 0.07592006027698517, 0.03131008893251419, 0.021381327882409096, 0.024529559537768364, 0.06979972869157791, 0.08244243264198303, 0.007735860999673605, -0.0619853250682354, 0.055543202906847, -0.05895419791340828, 0.04599335789680481, -0.052320029586553574, -0.06530243903398514, -0.08241310715675354, 0.01733916439116001, 0.03987155854701996, -0.062392108142375946, 0.034531138837337494, 0.1069084033370018, -0.04169439524412155, -0.06834753602743149, 0.09938473254442215, 0.015612851828336716, 0.13135941326618195, -0.007616853807121515, 0.03447721526026726, 0.04269212856888771, -0.02321343868970871, -0.08521907031536102, -0.012236855924129486, 0.005732294172048569, 0.0348336398601532, -0.028402986004948616, 0.0118329469114542, 0.06884278357028961, 0.04998322203755379, 0.05975461006164551, -0.0016425083158537745, -0.01851044036448002, -0.00776135828346014, 0.035190168768167496, 0.050656165927648544, 0.03030863031744957, -0.06650687009096146, -0.12600448727607727, 0.06638956069946289, -0.09661298990249634, -0.029304619878530502, -0.006427180953323841, -0.02523146942257881, -0.03632613644003868, -0.022419236600399017, -0.04161987081170082, 0.029069801792502403, -0.028141312301158905, 0.0938878133893013, 0.026871604844927788, 0.037154506891965866, 0.0023154737427830696, 0.004314121324568987, 0.04677223041653633, 0.006593436934053898, -0.0589364729821682, -0.043534401804208755, -0.08062296360731125, 0.07599698752164841, 0.015998946502804756, 0.016184112057089806, -0.02021431177854538, 0.17365118861198425, 0.059308234602212906, -0.019558900967240334, -0.05249883979558945],
+ "VRCPPSYr":[-0.10159793496131897, -0.09246192872524261, 0.04249037429690361, 0.039380159229040146, -0.06127838417887688, -0.05794952064752579, 0.06351139396429062, -0.05233289673924446, -0.024804648011922836, 0.053263239562511444, -0.0033292470034211874, 0.018678201362490654, 0.0647125318646431, 0.038651660084724426, -0.00890475232154131, 0.022515324875712395, 0.03894636780023575, 0.00584152527153492, 0.056165751069784164, 0.02003033645451069, -0.04315991699695587, 0.007026277016848326, 0.003636854700744152, 0.02989012375473976, -0.021230876445770264, 0.013600967824459076, -0.051095955073833466, -0.04837053641676903, 0.017008351162075996, -0.05078171566128731, -0.009815653786063194, 0.027514753863215446, -0.028307000175118446, 0.014783618040382862, 0.048698052763938904, 0.08946844935417175, -0.0708707645535469, 0.00459379144012928, 0.028906414285302162, 0.08128031343221664, -0.04738830402493477, 0.09192094951868057, -0.10908549278974533, 0.02252584882080555, 0.01845233142375946, 0.07802263647317886, 0.009445006027817726, -0.0035880424547940493, -0.028339901939034462, 0.11076051741838455, -0.01495840959250927, 0.08545800298452377, -0.0534735806286335, 0.09866276383399963, 0.011258716695010662, -0.04186626523733139, 0.04596099257469177, -0.07081057876348495, -0.001196306780911982, 0.02969791181385517, 0.05913703143596649, 0.013257077895104885, 0.07287311553955078, 0.06703630089759827, -0.07696869969367981, 0.010938103310763836, -0.09826916456222534, 0.07296954840421677, -0.043725352734327316, 0.0990249514579773, 0.054840996861457825, 0.07158979773521423, 0.06851662695407867, 0.09507327526807785, 0.032681673765182495, 0.08072499930858612, 0.06317879259586334, 0.03368835896253586, 0.022161919623613358, 0.05731527507305145, 0.014121470972895622, -0.010862443596124649, -0.050416842103004456, -0.006581471301615238, -0.042682040482759476, -0.05419023334980011, 0.0024810191243886948, -0.07348852604627609, -0.01619795151054859, 0.03177877515554428, -0.07033004611730576, 0.03289756178855896, -0.019057588651776314, -0.10752832144498825, -0.10966672003269196, -0.06326593458652496, 0.05682986602187157, -0.044593412429094315, -0.06137339770793915, 0.010894213803112507],
+ "VRCPPSr":[0.030738843604922295, 0.047108352184295654, 0.037238720804452896, -0.08567466586828232, 0.07603036612272263, 0.05566708371043205, -0.060482461005449295, -0.05853695794939995, 0.09430836141109467, 0.057599373161792755, 0.02466115728020668, 0.027449898421764374, -0.026958035305142403, 0.04460974037647247, 0.04956018179655075, -0.0058283731341362, 0.06759638339281082, -0.021083174273371696, 0.0782826617360115, -0.03901071846485138, 0.04033908247947693, 0.0440795011818409, 0.002204099902883172, 0.009450722485780716, -0.058017831295728683, 0.05765947699546814, 0.062276728451251984, -0.006516550201922655, -0.08260492235422134, -0.021135292947292328, -0.05565204098820686, 0.0710325539112091, -0.06603708118200302, 0.026726840063929558, -0.02437560446560383, -0.004735624883323908, 0.07348959147930145, 0.049755532294511795, -0.0375332310795784, 0.0163256898522377, -0.03298603743314743, -0.09270451962947845, -0.035032834857702255, -0.07523955404758453, -0.06239090859889984, 0.031009774655103683, -0.004871904384344816, 0.04249151796102524, 0.10528150200843811, 0.061680376529693604, -0.05408499017357826, 0.03522541746497154, 0.028181033208966255, 0.05493093281984329, -0.05711919069290161, -0.06919601559638977, 0.052976805716753006, 0.0672311782836914, 0.05821669474244118, 0.0672302171587944, -0.007317638956010342, -0.03809467703104019, 0.018927592784166336, 0.051201071590185165, -0.08047521114349365, -0.018185077235102654, -0.009347389452159405, -0.05211878567934036, -0.10438558459281921, 0.0465700663626194, 0.08461838960647583, 0.018106818199157715, -0.08361483365297318, 0.01713407412171364, 0.01737760193645954, -0.08425525575876236, -0.08850984275341034, -0.0013727244222536683, 0.05826188251376152, -0.015510291792452335, -0.06185914948582649, 0.0414390042424202, -0.02153206057846546, -0.021596524864435196, -0.03283318132162094, 0.020884273573756218, 0.10544859617948532, -0.022618677467107773, -0.03410159423947334, 0.030576609075069427, -0.00846909824758768, 0.06871691346168518, 0.04293578490614891, -0.07331997901201248, -0.05555392801761627, 0.05611577257514, 0.04711619019508362, 0.014376426115632057, -0.07042578607797623, -0.0013270792551338673],
+ "VROUNDPDYr":[0.09793178737163544, -0.06810266524553299, 0.03380376100540161, 0.016847040504217148, 0.08207231760025024, -0.08713876456022263, 0.008131506852805614, -0.044597405940294266, 0.051305439323186874, 0.06402305513620377, -0.05176572874188423, -0.03576156869530678, -0.06607238203287125, -0.011667094193398952, -0.005192354321479797, 0.016398735344409943, -0.038685426115989685, -0.0056153289042413235, -0.07628491520881653, 0.0023762211203575134, -0.010328767821192741, 0.08344678580760956, -0.028939243406057358, 0.09191066771745682, 0.0005503122811205685, -0.028184812515974045, 0.049822915345430374, -0.02270924113690853, 0.04426911845803261, 0.015239560045301914, -0.01299362163990736, 0.012455045245587826, -0.030616559088230133, 0.03699418902397156, -0.0007618861272931099, 0.04162244871258736, -0.06141695752739906, 0.003232388524338603, -0.07222433388233185, 0.033716343343257904, 0.004772522486746311, 0.09134244918823242, 0.049544431269168854, 0.019009707495570183, -0.010381477884948254, 0.028171971440315247, -0.004472975619137287, -0.09882637858390808, -0.03963722288608551, -0.060963377356529236, 0.06147162243723869, 0.04221715033054352, -0.004801074508577585, -0.033357515931129456, -0.027341751381754875, 0.01124508399516344, -0.0007206686423160136, -0.031941596418619156, 0.027005935087800026, -0.08031991869211197, 0.09994176775217056, 0.03901267796754837, -0.10361066460609436, -0.009569414891302586, 0.0570332296192646, -0.07423809915781021, -0.04702185466885567, 0.09587737172842026, -0.06942877918481827, -0.02064420096576214, 0.028053108602762222, -0.06369008123874664, 0.030659144744277, -0.020331067964434624, 0.04655610769987106, 0.042780861258506775, 0.03777645155787468, 0.03731449693441391, 0.0719495564699173, -0.04305950179696083, -0.0613420270383358, 0.029958922415971756, -0.04230518639087677, 0.0010707927867770195, -0.03829483687877655, -0.054109059274196625, 0.06611158698797226, -0.04020899161696434, -0.03773215040564537, 0.04748769849538803, 0.00366222788579762, -0.0371098630130291, 0.05839694291353226, -0.009317144751548767, -0.03585206717252731, -0.04427459090948105, -0.022307787090539932, 0.08265288919210434, 0.09526295959949493, -0.10884131491184235],
+ "VROUNDPDm":[0.05266369879245758, -0.05991841107606888, 0.007806818466633558, 0.05147142708301544, 0.04442382603883743, 0.053407613188028336, -0.00448210071772337, 0.05110637843608856, 0.013627256266772747, -0.06305703520774841, 0.002615072065964341, 0.017160793766379356, -0.057616014033555984, -0.004193423315882683, 0.014974177815020084, -0.04010983556509018, -0.02513614483177662, -0.045525360852479935, 0.07989964634180069, 0.059008918702602386, 0.01693507470190525, -0.02704519033432007, 0.04888071492314339, 0.07495139539241791, -0.019055521115660667, 0.01714293099939823, 0.06479073315858841, -0.11027411371469498, -0.015525254420936108, 0.046684056520462036, 0.033365558832883835, 0.012760982848703861, 0.010127362795174122, -0.02239455096423626, 0.02811683528125286, 0.01879456639289856, 0.08043164014816284, 0.007885544560849667, -0.10151853412389755, 0.08790113776922226, 0.05801253393292427, -0.08243970572948456, -0.0774402916431427, -0.05839775130152702, 0.03631335869431496, -0.015081395395100117, -0.05982280522584915, 0.03818285092711449, 0.03962257504463196, -0.022911585867404938, 0.027512524276971817, 0.07296709716320038, -0.01833999529480934, -0.03773956745862961, 0.047862470149993896, 0.013449826277792454, -0.04025153070688248, -0.07283322513103485, -0.0657525360584259, -0.0007452181307598948, -0.021162396296858788, 0.06883881241083145, 0.0037404787726700306, 0.06895405799150467, -0.047940026968717575, 0.010503197088837624, 0.043986253440380096, 0.03594290465116501, 0.027012495324015617, 0.011650839820504189, -0.08027727901935577, -0.035151030868291855, -0.006276929751038551, -0.0067056696861982346, -0.05494024232029915, 0.0641106590628624, -0.024451591074466705, 0.016192957758903503, 0.0011058150557801127, -0.03839357942342758, -0.052843350917100906, -0.051362231373786926, -0.10159434378147125, -0.05522018298506737, -0.07426243275403976, 0.029154151678085327, 0.059094466269016266, -0.039639607071876526, -0.026796793565154076, -0.07934892177581787, 0.048834558576345444, 0.07047224044799805, -0.001652744715102017, 0.012298056855797768, -0.022829758003354073, 0.04844671115279198, -0.028086185455322266, -0.03110915794968605, 0.02092335931956768, 0.009340973570942879],
+ "VROUNDPDr":[-0.041336193680763245, 0.06442126631736755, 0.03417763113975525, 0.012310064397752285, -0.06165114790201187, 0.05214013531804085, -0.06034204363822937, 0.020191777497529984, 0.08432827889919281, -0.04107718914747238, -0.046893056482076645, 0.05921778827905655, 0.013939295895397663, 0.020683525130152702, 0.029393160715699196, -0.06638096272945404, -0.06474865227937698, 0.000810153956990689, 0.0012340904213488102, 0.09238383173942566, 0.026466604322195053, 0.0771375373005867, 0.08097051829099655, -0.054656777530908585, 0.04726773500442505, -0.07729219645261765, -0.06593930721282959, -0.014134074561297894, 0.002106284722685814, -0.00252462993375957, 0.10212869942188263, -0.06288692355155945, -0.015244548209011555, -0.029811695218086243, -0.028510386124253273, -0.02387954108417034, 0.07026483863592148, -0.024281734600663185, 0.025030003860592842, 0.09249742329120636, -0.04397488012909889, -0.009667914360761642, 0.014034229330718517, -0.0220540389418602, 0.10121317207813263, -0.09121448546648026, -0.015831729397177696, 0.05396590381860733, 0.02457050234079361, 0.004257126711308956, 0.07152014970779419, -0.008558942005038261, -0.020672066137194633, -0.04518018662929535, -0.02246645838022232, 0.03756656497716904, 0.0710330605506897, 0.0175373163074255, -0.02400391548871994, -0.06315390020608902, 0.08824532479047775, 0.0341188907623291, -0.0246437955647707, 0.07496762275695801, -0.060683462768793106, 0.018110934644937515, -0.05114316567778587, -0.0024764100089669228, -0.09921873360872269, 0.02854575589299202, -0.02689148485660553, 0.08220542967319489, 0.004964066669344902, -0.004571502096951008, 0.029222067445516586, -0.08582382649183273, -0.037117280066013336, -0.06445243209600449, -0.0007369079976342618, -0.027475832030177116, -0.04793810099363327, 0.02467210963368416, -0.049872469156980515, -0.04740098863840103, -0.05775335431098938, 0.056434277445077896, 0.03553527221083641, -0.005290498957037926, -0.0751279816031456, -0.028514400124549866, -0.0842205360531807, 0.0038420017808675766, 0.04015457630157471, 0.05962163582444191, -0.002369413385167718, 0.059549227356910706, -0.060136113315820694, 0.061686091125011444, 0.07872641086578369, -0.04470536485314369],
+ "VROUNDPSYr":[-0.014375642873346806, -0.06933168321847916, 0.034777041524648666, -0.07810157537460327, -0.030132140964269638, 0.008139165118336678, -0.01185333076864481, -0.03716191276907921, 0.05953793600201607, -0.0035029903519898653, -0.04466600343585014, -0.08550713956356049, -0.05947915092110634, 0.00974100548774004, 0.017836973071098328, -0.02009941078722477, -0.019291434437036514, 0.09136023372411728, -0.07986795902252197, 0.04271763563156128, -0.04072044417262077, 0.05366635322570801, -0.07576628774404526, -0.04283364862203598, 0.042916957288980484, 0.05870557576417923, 0.008689417503774166, -0.0993698313832283, -0.05861412733793259, 0.06307738274335861, -0.05518520995974541, 0.024492638185620308, -0.03302980959415436, 0.033803097903728485, 0.07802602648735046, 0.05872584134340286, 0.0947331115603447, -0.06623860448598862, -0.06398217380046844, -0.0026760674081742764, -0.08644267916679382, -0.02995462156832218, -0.021488288417458534, -0.07077459990978241, -0.02557573840022087, -0.004371153190732002, -0.018580477684736252, -0.03502452373504639, -0.06046237796545029, -0.046923134475946426, -0.08018792420625687, -0.04366660118103027, 0.023294467478990555, 0.0844244658946991, -0.06168515980243683, 0.08028826862573624, -0.002242974704131484, -0.052222006022930145, 0.0017609103815630078, -0.060937248170375824, -0.10300692170858383, 0.07263202220201492, -0.0007992475293576717, 0.06689760088920593, -0.0009757275693118572, -0.018352387472987175, -0.07440473139286041, 0.061901967972517014, 0.07886812835931778, -0.01939617656171322, 0.10147601366043091, 0.05608893930912018, -0.00022070352861192077, 0.06054794043302536, 0.0026743807829916477, 0.018225030973553658, 0.008402627892792225, 0.014085870236158371, -0.011332408525049686, 0.02956986427307129, -0.08775004744529724, 0.008228945545852184, -0.08530672639608383, 0.038547661155462265, -0.03167612478137016, 0.051514238119125366, 0.056573860347270966, -0.008776462636888027, -0.03732345253229141, 0.003987232223153114, -0.03211965039372444, 0.007078989874571562, -0.0421118289232254, 0.05777190998196602, -0.03297722712159157, -0.030561896041035652, -0.025322217494249344, -0.035608064383268356, 0.03907974436879158, -0.09894464164972305],
+ "VROUNDPSr":[0.006555201485753059, 0.10643815249204636, 0.003467368660494685, -0.04618297889828682, 0.017486000433564186, -0.041609857231378555, -0.009333035908639431, 0.012187202461063862, 0.022391226142644882, 0.051866188645362854, 0.03480198234319687, -0.04493432119488716, 0.01581660285592079, -0.027276255190372467, 0.042811933904886246, 0.017127826809883118, 0.01137696672230959, -0.019470978528261185, -0.07854672521352768, -0.02777000516653061, 0.032434433698654175, -0.07220346480607986, -0.024017952382564545, -0.04780694469809532, -0.06727628409862518, 0.01632360741496086, -0.0035223469603806734, -0.049006108194589615, -0.05618695169687271, 0.01766137406229973, 0.025664426386356354, 0.009196171537041664, -0.023496286943554878, 0.09714280813932419, 0.06147721782326698, 0.08738230913877487, -0.07272253185510635, -0.046360116451978683, -0.02252856269478798, 0.018417170271277428, 0.04058167338371277, 0.03319992497563362, -0.0033939967397600412, 0.0675530731678009, -0.056167032569646835, -0.0758490115404129, -0.0028685578145086765, -0.06032205745577812, -0.004128987900912762, -0.021020760759711266, 0.09206569939851761, 0.057341791689395905, 0.009021381847560406, 0.038278866559267044, 0.03485293313860893, 0.00828950759023428, -0.06235448643565178, 0.08955201506614685, -0.0004755660193040967, -0.0025179714430123568, -0.031231939792633057, 0.0436587892472744, 0.09982563555240631, 0.10156898200511932, 0.004456229042261839, 0.03831442818045616, 0.02522175759077072, -0.027099212631583214, -0.03345523402094841, -0.05011582747101784, 0.04976430907845497, -0.015876876190304756, -0.03445921465754509, -0.0535782091319561, 0.08515597134828568, -0.06420488655567169, 0.05017058178782463, 0.014704862609505653, 0.06933997571468353, -0.07390668988227844, 0.06994254142045975, 0.012411350384354591, 0.11045408993959427, -0.07643531262874603, -0.10277129709720612, 0.04866594448685646, 0.042318422347307205, -0.034264177083969116, -0.029820483177900314, 0.027881473302841187, 0.0380929596722126, -0.10019825398921967, -0.07336433231830597, 0.043740320950746536, -0.02875712141394615, -0.06365653872489929, -0.030405880883336067, 0.01887238211929798, -0.03855394572019577, 0.034184690564870834],
+ "VROUNDSDr":[0.10185908526182175, 0.04870323836803436, 0.03794040530920029, 0.06984243541955948, 0.058171264827251434, 0.012757791206240654, 0.0030306647531688213, 0.028462637215852737, 0.05867310240864754, 0.05008462816476822, -0.06513135880231857, -0.036019522696733475, 0.06280434131622314, -0.055376287549734116, 0.05202144756913185, 0.006669782567769289, -0.015517879277467728, -0.08786950260400772, 0.012965897098183632, 0.010438061319291592, -0.07078863680362701, 0.012549581937491894, -0.1049225777387619, -0.004097901284694672, 0.03880554065108299, 0.0783000960946083, -0.04712048918008804, -0.05993807688355446, 0.033919766545295715, -0.0025714458897709846, 0.09348545223474503, -0.045089662075042725, -0.04343971237540245, -0.007920595817267895, 0.006248503923416138, 0.016989463940262794, 0.07454081624746323, 0.08156953006982803, -0.07513921707868576, 0.05870269238948822, 0.08946128934621811, -0.08843277394771576, -0.03389488533139229, -0.013139704242348671, -0.10507931560277939, 0.050988513976335526, 0.058035027235746384, 0.049004968255758286, -0.028430448845028877, -0.024972546845674515, -0.004383455961942673, -0.0381363183259964, 0.010845497250556946, 0.04070448875427246, 0.03576746955513954, 0.024558406323194504, 0.03197905793786049, 0.022218097001314163, -0.06558501720428467, -0.004058810416609049, -0.03674270957708359, 0.05075213313102722, -0.006456657312810421, 0.01175635401159525, 0.06738197803497314, -0.01003282144665718, -0.029575280845165253, -0.0002149860665667802, -0.060901083052158356, 0.02101450227200985, 0.024535782635211945, -0.024945439770817757, -0.08211591839790344, 0.026773283258080482, 0.05533109977841377, -0.09404386579990387, 0.094477079808712, -0.05459760129451752, -0.005923817399889231, -0.027683673426508904, 0.04398324340581894, -0.007161768153309822, 0.05486424267292023, -0.031176527962088585, -0.029798083007335663, 0.08935427665710449, -0.02429911307990551, -0.03616180270910263, -0.07047287374734879, -0.04040755331516266, 0.04838868975639343, -0.08644901216030121, 0.02337937243282795, 0.047357410192489624, -0.06955093145370483, 0.05596026033163071, 0.04161973297595978, -0.03694358468055725, 0.00849776342511177, -0.04420876502990723],
+ "VROUNDSSr":[0.01629796251654625, -0.028942618519067764, -0.04191237688064575, 0.02277642861008644, 0.007715790066868067, 0.03592035174369812, 0.02313884347677231, -0.027525775134563446, -0.0025341834407299757, 0.03200715407729149, 0.06300748884677887, -0.04107784852385521, -0.02993302419781685, 0.013217136263847351, 0.09788971394300461, 0.014580678194761276, -0.03399938717484474, -0.013573303818702698, 0.03186153993010521, -0.10349972546100616, -0.03622398525476456, -0.07020720839500427, 0.014838014729321003, -0.01739484630525112, -0.03918137401342392, 0.0020180116407573223, -0.023393971845507622, 0.05616285651922226, -0.003693576203659177, 0.005362362135201693, -0.05644650384783745, -0.041378751397132874, 0.013637680560350418, -0.0070026954635977745, 0.011270197108387947, -0.02963552623987198, -0.019612744450569153, -0.06626375019550323, 0.005542054772377014, -0.09796196222305298, 0.059625640511512756, -0.04018648713827133, 0.05604177340865135, 0.07512374967336655, -0.012793551199138165, -0.017487747594714165, -0.10321378707885742, -0.026940474286675453, -0.029810620471835136, -0.057905495166778564, 0.08166167885065079, 0.013601039536297321, -0.04790526255965233, 0.05955111235380173, 0.054442498832941055, 0.02149007096886635, 0.023482412099838257, 0.0032332621049135923, -0.015289504081010818, -0.016815654933452606, -0.0973370149731636, 0.08392161130905151, 0.05814531072974205, 0.02071266621351242, 0.06902630627155304, 0.05197860673069954, 0.016775915399193764, 0.0016546414699405432, 0.015759678557515144, 0.01683703064918518, 0.05241839587688446, 0.006804138887673616, -0.08555737882852554, -0.0064609781838953495, 0.06636852025985718, -0.05842306464910507, -0.02152317948639393, -0.024702517315745354, -0.020925603806972504, -0.04504593461751938, 0.10798308253288269, 0.05359239503741264, 0.06297617405653, 0.021204547956585884, 0.052097663283348083, 0.015545803122222424, -0.06999663263559341, 0.061110448092222214, 0.06415227055549622, -0.07525593042373657, 0.0008364201057702303, 0.021468456834554672, 0.004137036856263876, 0.05098854377865791, 0.06668025255203247, -0.007236537057906389, -0.031115666031837463, -0.042157866060733795, -0.0776960626244545, -0.00543869286775589],
+ "VRSQRTPSYr":[-0.02178310975432396, 0.06722719222307205, -0.05057336017489433, 0.10565194487571716, 0.029129013419151306, -0.06212117522954941, -0.022493742406368256, -0.03553053364157677, 0.010083602741360664, -0.01537288911640644, -0.006957065314054489, -0.020759787410497665, 0.017127705737948418, -0.036070115864276886, -0.02350720576941967, -0.05195730924606323, 0.062408704310655594, 0.035738177597522736, 0.07481523603200912, 0.0709899514913559, 0.03672043979167938, -0.02582056075334549, 0.03515966236591339, 0.09651297330856323, 0.06606045365333557, -0.031111495569348335, 0.03188464418053627, -0.06440208107233047, 0.012338632717728615, -0.0438523069024086, 0.04310234263539314, 0.006477540824562311, -0.0030428352765738964, -0.10874588042497635, 0.08271193504333496, -0.005419197026640177, -0.08384036272764206, -0.014319482259452343, 0.0748167559504509, -0.04250078648328781, 0.002178083872422576, -0.05616194009780884, 0.020906146615743637, -0.031484514474868774, -0.035414788872003555, 0.08905395120382309, 0.038750775158405304, -0.026631413027644157, 0.05996708199381828, -0.031888701021671295, -0.013995574787259102, -0.05687820166349411, -0.03828614577651024, 0.005764382891356945, 0.04382270574569702, -0.04667516425251961, -0.015418965369462967, 0.06043731048703194, -0.025008227676153183, -0.01354170124977827, 0.0037136904429644346, -0.04647635668516159, 0.05480094254016876, 0.02402731403708458, -0.09450473636388779, -0.027587996795773506, -0.03895404934883118, -0.08343242853879929, -0.0063504502177238464, -0.06698443740606308, -0.0005630061496049166, 0.02145163156092167, 0.07616760581731796, 0.03756183385848999, 0.03073997236788273, 0.07254669070243835, 0.009958389215171337, -0.027319438755512238, 0.06329016387462616, -0.04332024231553078, 0.07712040841579437, 0.07649536430835724, 0.0020564196165651083, -0.053681381046772, 0.02957869879901409, -0.06943844258785248, -0.10742734372615814, -0.058656107634305954, -0.04104708880186081, -0.004979756660759449, -0.06830958276987076, 0.036981001496315, 0.025494517758488655, 0.018028374761343002, 0.06833411008119583, -0.06405255198478699, -3.392522194189951e-05, -0.09134896099567413, -0.011853434145450592, -0.03422020748257637],
+ "VRSQRTPSr":[0.0025535880122333765, -0.03752869740128517, -0.06225581839680672, -0.002543359063565731, -0.002724688034504652, -0.029134811833500862, -0.10686951130628586, 0.021078171208500862, -0.042213939130306244, 0.03433506190776825, 0.0051765586249530315, -0.0015200638445094228, 0.016368841752409935, 0.10296914726495743, 0.045256901532411575, 0.05699964612722397, 0.03428047522902489, -0.017462803050875664, 0.029001325368881226, 0.01847183331847191, 0.004949767608195543, -0.00923129078000784, 0.04492834582924843, -0.00690095080062747, -0.043523091822862625, 0.020931832492351532, 0.08028159290552139, -0.053873658180236816, 0.01860116794705391, 0.011900761164724827, -0.0878417119383812, -0.07097070664167404, 0.0688607394695282, -0.01656476967036724, 0.1104055717587471, 0.0051680016331374645, -0.05471121892333031, -0.09034670889377594, -0.004830637946724892, 0.09668221324682236, -0.02023365907371044, -0.08185523748397827, 0.018110206350684166, 0.011885036714375019, 0.055953122675418854, 0.05863843485713005, -0.047363877296447754, 0.036192022264003754, -0.07925616204738617, -0.05250319838523865, -0.015237417072057724, 0.07700304687023163, -0.056738290935754776, 0.008081356063485146, -0.01239774376153946, 0.03201761096715927, 0.027840934693813324, 0.017056133598089218, 0.045842256397008896, 0.035610806196928024, 0.0670865997672081, 0.01911616511642933, 0.020550811663269997, -0.053697988390922546, -0.08530423790216446, -0.0021973121911287308, -0.027451954782009125, -0.10979326069355011, -0.04121314361691475, -0.03920871764421463, 0.07971049845218658, 0.00298839109018445, 0.09375520050525665, -0.06443849951028824, -0.003691470716148615, -0.09290921688079834, -0.07470009475946426, 0.06994055956602097, 0.008158999495208263, -0.06939589232206345, -0.05545061081647873, 0.02129320055246353, -0.0528494194149971, -0.04739902541041374, 0.04497449845075607, -0.011821959167718887, 0.025091057643294334, -0.044180311262607574, -0.029787685722112656, -0.004245638381689787, -0.08698249608278275, 0.01211684662848711, 0.047934699803590775, -0.029069574549794197, 0.006198611576110125, -0.03396227955818176, 0.004079714883118868, 0.03948521986603737, -0.018136192113161087, 0.043564364314079285],
+ "VRSQRTSSr":[-0.045852359384298325, -0.052124861627817154, -0.05323294550180435, 0.00782104954123497, 0.005156195722520351, -0.046617284417152405, -0.031569208949804306, -0.07947263866662979, 0.030525969341397285, 0.009293590672314167, -0.004018333740532398, 0.04125387221574783, 0.008094237186014652, -0.018757810816168785, -0.00979805551469326, 0.054424647241830826, -0.04167138785123825, -0.016557320952415466, 0.08550968766212463, 0.03635299205780029, 0.014822730794548988, 0.01782594807446003, -0.036958809942007065, 0.07412012666463852, -0.039583928883075714, 0.016345657408237457, 0.07968183606863022, 0.08444816619157791, -0.10047459602355957, 0.03934335336089134, 0.0830136090517044, 0.07909660041332245, 0.052265461534261703, 0.09226097166538239, -0.028369350358843803, 0.02397366240620613, -0.0012656943872570992, -0.022286929190158844, -0.03388403356075287, 0.06963407248258591, -0.028320545330643654, -6.663939711870626e-05, 0.016570381820201874, 0.018984274938702583, -0.020343583077192307, 0.08173615485429764, -0.03560243174433708, 0.08293183147907257, -0.01479211077094078, -0.017029760405421257, -0.09174418449401855, -0.03181223198771477, -0.028620386496186256, -0.028679918497800827, 0.008061169646680355, 0.05398821830749512, 0.07846542447805405, -0.0030347867868840694, -0.02203163504600525, 0.054676663130521774, -0.025526754558086395, 0.08205457031726837, -0.03201046213507652, 0.0007201898843050003, 0.06843584775924683, -0.009619815275073051, -0.03350020572543144, 0.0339571088552475, 0.0478685162961483, 0.01212140079587698, 0.03409310802817345, 0.06756718456745148, -0.024173326790332794, -0.015166675671935081, 0.019013985991477966, -0.0732778012752533, -0.09798670560121536, 0.02126956172287464, 0.05229896306991577, 0.013723721727728844, 0.08673827350139618, -0.03140832483768463, 0.03489656373858452, 0.04769860953092575, 0.07406747341156006, 0.0965251699090004, -0.022202320396900177, -0.033002860844135284, 0.04045497998595238, 0.0698452964425087, -0.005453765857964754, 0.008155427873134613, 0.05678016319870949, 0.018435338512063026, 0.04982440173625946, -0.03216779977083206, -0.06642680615186691, 0.022559771314263344, -0.10926155000925064, -0.018985088914632797],
+ "VSHUFPDYrri":[-0.038913022726774216, -0.05888444185256958, -0.04314553737640381, 0.09218965470790863, 0.047804657369852066, 0.09721031785011292, -0.010952693410217762, -0.004318906459957361, -0.04187691584229469, -0.029382942244410515, -0.029513666406273842, -0.00024383311392739415, -0.03929717838764191, 0.0669277012348175, 0.013432560488581657, -0.017779456451535225, -0.007481964770704508, 0.0016602366231381893, -0.02086278609931469, -0.054645292460918427, 0.03678100183606148, 0.03226098045706749, -0.034937258809804916, -0.05072199925780296, 0.047585636377334595, -0.08481958508491516, -0.039322275668382645, 0.01960042677819729, -0.008396008051931858, 0.03760523349046707, 0.010945556685328484, 0.01968626119196415, 0.020813796669244766, 0.027290981262922287, 0.028081050142645836, -0.07367809861898422, -0.06605866551399231, 0.06910360604524612, 0.07136347889900208, 0.018517697229981422, 0.009181134402751923, -0.05342657491564751, -0.03194601461291313, -0.024059781804680824, 0.033670324832201004, -0.037994176149368286, 0.014469494111835957, -0.0021816017106175423, -0.01008195523172617, -0.04917129501700401, 0.06472602486610413, 0.06398658454418182, 0.05017992854118347, 0.00011016390635631979, 0.038269855082035065, 0.0035500465892255306, 0.01929917000234127, 0.04518295079469681, 0.008131442591547966, 0.09886622428894043, -0.004368681460618973, 0.04726281762123108, 0.07366874814033508, -0.10854191333055496, 0.027066867798566818, 0.03798823431134224, 0.02447427809238434, 0.020105978474020958, -0.029035232961177826, -0.0900062620639801, -0.037912189960479736, -0.06118536368012428, -0.08522213250398636, 0.03400237113237381, -0.017903639003634453, -0.06719128042459488, 0.0435866080224514, 0.0006056989659555256, -0.041271600872278214, 0.027513261884450912, 0.0009347320883534849, 0.01538181770592928, -0.0889701247215271, 0.045362405478954315, -0.0652976855635643, -0.07397361099720001, -0.018635768443346024, -0.04384559392929077, -0.0957169160246849, 0.00041761889588087797, 0.03826935216784477, 0.007437346503138542, -0.05976865813136101, -0.014293041080236435, 0.07586169987916946, 0.028491578996181488, -0.02874290943145752, -0.00958380475640297, -0.0028217113576829433, -0.05305923894047737],
+ "VSHUFPDrri":[0.058242056518793106, 0.07192931324243546, 0.05879394710063934, 0.035097699612379074, 0.019623078405857086, 0.043634530156850815, 0.028433209285140038, -0.03735538572072983, -0.00962450634688139, -0.0022655522916465998, -0.043547373265028, 0.04943826422095299, 0.020619623363018036, -0.07677532732486725, 0.00705720204859972, -0.00693596201017499, 0.1049625426530838, -0.009709466248750687, -0.03183859959244728, -0.056252967566251755, -0.023382265120744705, 0.012659020721912384, 0.04467028006911278, -0.0010271489154547453, -0.04559553414583206, -7.19148083589971e-05, 0.13380078971385956, -0.08081196993589401, 0.09035995602607727, 0.0689648762345314, -0.07208278030157089, -0.04012664780020714, 0.03330190107226372, -0.053540922701358795, 0.08921778202056885, -0.05507807433605194, 0.03252455219626427, -0.06126148998737335, -0.07775149494409561, 0.04846358671784401, -0.002591468160971999, 0.015873929485678673, 0.010913713835179806, 0.013322179205715656, -0.07868543267250061, -0.01100874599069357, -0.09471898525953293, 0.010326995514333248, 0.13978755474090576, -0.09499489516019821, 0.0940503254532814, 0.002224014140665531, 0.0703497901558876, -0.052628617733716965, -0.08789026737213135, 0.0714990645647049, -0.012366972863674164, 0.0002871758188121021, -0.05587909370660782, 0.035750795155763626, 0.11414104700088501, 0.07336147874593735, 0.0496826209127903, 0.05002560839056969, 0.032668884843587875, -0.056877780705690384, -0.08661644905805588, 0.01033217553049326, 0.02000502496957779, 0.0021638248581439257, -0.013452133163809776, -0.082302525639534, -0.043581441044807434, -0.04719242826104164, 0.051928214728832245, -0.022170105949044228, -0.016632067039608955, 0.02478461153805256, 0.020720088854432106, 0.07093556225299835, 0.015051335096359253, 0.04089651629328728, 0.046589940786361694, 0.022979242727160454, 0.10367428511381149, 0.094419926404953, 0.02062593586742878, 0.05798402428627014, 0.01808747462928295, -0.07057541608810425, 0.08057127147912979, -0.010474085807800293, 0.07457796484231949, 0.008130072616040707, 0.040249958634376526, 0.09267537295818329, 0.07795378565788269, -0.02447233349084854, -0.012189295142889023, 0.00012905377661809325],
+ "VSHUFPSYrmi":[-0.04310988634824753, -0.040682353079319, 0.07026855647563934, 0.046714216470718384, 0.009026161395013332, 0.00662859296426177, -0.032971639186143875, 0.03170360252261162, 0.040805965662002563, 0.07649151980876923, -0.011825855821371078, 0.03234873712062836, 0.05104495957493782, 0.04694331809878349, -0.03686140105128288, 0.053146131336688995, -0.04355365037918091, -0.03990485146641731, 0.10838204622268677, -0.002240474335849285, 0.02157646045088768, 0.03852510452270508, 0.0644565001130104, -0.06150257587432861, 0.050487007945775986, -0.051925353705883026, 0.06944762915372849, 0.0718536302447319, 0.03825532644987106, 0.09565705806016922, -0.017975328490138054, -0.02991478517651558, -0.03896324709057808, 0.04466120898723602, 0.06462666392326355, 0.10225140303373337, -0.05008729174733162, 0.06572461128234863, 0.00027851160848513246, -0.10004130750894547, -0.05248164385557175, -0.10199247300624847, 0.07329022884368896, 0.08383360505104065, 0.04526630416512489, 0.08630160987377167, 0.021730585023760796, 0.0509507954120636, -0.0002216514403698966, -0.09362179785966873, -0.02615544945001602, -0.09801772981882095, 0.06832188367843628, 0.04994867369532585, 0.05889483168721199, 0.03131222724914551, 0.03494562208652496, -0.06246699020266533, -0.03264815732836723, 0.0749167650938034, 0.010332122445106506, 0.07763780653476715, 0.057416725903749466, 0.05457332730293274, -0.06661931425333023, -0.03247244283556938, 0.049140527844429016, 0.005615567788481712, 0.011830167844891548, -0.05425979942083359, -0.028287911787629128, 0.022254686802625656, -0.013519071973860264, -0.013742665760219097, 0.06221001222729683, 0.06923925131559372, -0.06868312507867813, -0.005417561624199152, -0.07883831858634949, 0.004757499787956476, -0.035137224942445755, 0.0046407729387283325, -0.07225710898637772, -0.05440492928028107, 0.04317351430654526, 0.07292026281356812, -0.03385385870933533, 0.016047155484557152, 0.005366718862205744, -0.07177199423313141, 0.04638886824250221, 0.04822409525513649, -0.07167039066553116, -0.022259782999753952, 0.07044987380504608, -0.055977582931518555, 0.027897575870156288, 0.010378511622548103, 0.002923033433035016, -0.0011848572175949812],
+ "VSHUFPSYrri":[0.03835480660200119, 0.0103969881311059, 0.033128149807453156, 0.008270835503935814, -0.058496035635471344, -0.06266465783119202, 0.04064470902085304, 0.08316606283187866, -0.009280737489461899, 0.006371083203703165, 0.06249602138996124, -0.03381836414337158, -0.0763583555817604, 0.024561045691370964, -0.08992019295692444, -0.04847608134150505, -0.0346175953745842, -0.019590698182582855, 0.06290940940380096, 0.026012809947133064, 0.09829607605934143, -0.07351545244455338, 0.0708027109503746, 0.02922973595559597, 0.04062424972653389, 0.0018760004313662648, 0.013795046135783195, -0.05000106245279312, 0.023126037791371346, -0.0027933765668421984, -0.059441640973091125, -0.05578012019395828, 0.01681889034807682, 0.08029979467391968, 0.03704887256026268, -0.0402165912091732, 0.07008317112922668, -0.000342053099302575, -0.039483118802309036, -0.06715486198663712, -0.010394692420959473, 0.010117735713720322, -0.03530321270227432, 0.03947952389717102, 0.07425110787153244, 0.07966270297765732, -0.0059332768432796, -0.014401727356016636, -0.017734520137310028, -0.024121228605508804, 0.007190799340605736, 0.017550665885210037, 0.0029667553026229143, -0.026845460757613182, 0.050613678991794586, -0.045946866273880005, -0.010296085849404335, 0.02584582380950451, 0.009319217875599861, 0.007305211387574673, -0.07493213564157486, -0.02015259861946106, 0.05422009527683258, 0.01725844293832779, 0.01740414835512638, 0.060926344245672226, -0.06009472906589508, -0.09174103289842606, -0.05826433002948761, -0.0022845002822577953, -0.07595263421535492, 0.013204045593738556, -0.07516980916261673, 0.01909906230866909, 0.04011263698339462, 0.02590908668935299, 0.0014072272460907698, -0.010398488491773605, 0.02690735273063183, 0.05438719689846039, -0.008215864188969135, -0.059471920132637024, 0.04726129397749901, -0.042948778718709946, -0.005019321572035551, 0.018780140206217766, -0.01613197848200798, -0.021352212876081467, -0.05183617025613785, -0.02431119605898857, -0.07508032023906708, 0.025358635932207108, 0.07310810685157776, -0.006715879775583744, 0.020393863320350647, 0.03410295397043228, 0.016665272414684296, -0.06218931823968887, 0.04279923811554909, 2.614907134557143e-05],
+ "VSHUFPSrmi":[0.031022893264889717, -0.10545917600393295, 0.07632438093423843, 0.015922490507364273, 0.028167016804218292, -0.10431648045778275, -0.047379277646541595, 0.011340520344674587, -0.059646934270858765, 0.04442911595106125, -0.024158639833331108, 0.005856778007000685, -0.027807090431451797, 0.00020034285262227058, 0.003209186950698495, -0.014357561245560646, 0.0697055384516716, 0.08605117350816727, -0.0023226418998092413, -0.06707040965557098, -0.005145854316651821, 0.045198939740657806, 0.06560409814119339, 0.030900372192263603, 0.07007648795843124, 0.016650574281811714, 0.055376458913087845, -0.05370395630598068, 0.056040726602077484, -0.023627357557415962, -0.03758808970451355, -0.012072857469320297, 0.04371390491724014, 0.038430240005254745, 0.01508414838463068, 0.09821924567222595, 0.10474088042974472, 0.10272439569234848, 0.04803808405995369, 0.04216482490301132, 0.02398027665913105, -0.07056979835033417, -0.10870611667633057, -0.0012599154142662883, -0.005236384924501181, -0.10376543551683426, -0.07549194991588593, 0.04967537894845009, 0.010148524306714535, 0.013948577456176281, -0.018873542547225952, 0.0688844546675682, 0.06590163707733154, -0.021207939833402634, 0.029983755201101303, 0.03937820717692375, 0.04517362639307976, 0.08139535784721375, 0.004174253437668085, -0.03758842498064041, -0.09552248567342758, 0.028541812673211098, -0.03538035601377487, -0.07267645001411438, -0.041197262704372406, -0.006728328764438629, -0.0512484647333622, -0.04639262333512306, -0.03685953468084335, 0.06264019012451172, 0.04995344951748848, 0.011529919691383839, -0.06986398249864578, 0.0592985562980175, 0.09483379870653152, -0.07578644156455994, -0.0882011204957962, -0.024926045909523964, 0.08736460655927658, 0.04463549703359604, 0.02606135793030262, 0.026318199932575226, 0.07109145820140839, -0.09359367936849594, -0.0510188452899456, 0.0022399143781512976, -0.03330522030591965, -0.03806675225496292, -0.015138904564082623, 0.058853913098573685, 0.009645489975810051, 0.06271310150623322, 0.09256221354007721, -0.018761130049824715, -0.06831438094377518, 0.07682307064533234, -0.06771735101938248, 0.038960378617048264, 0.0285517405718565, 0.024876654148101807],
+ "VSHUFPSrri":[0.047153156250715256, 0.0102840019389987, 0.047589246183633804, -0.03233610838651657, 0.00019379027071408927, 0.009510383941233158, -0.021897953003644943, 0.0022770522627979517, 0.05884050205349922, -0.01410125195980072, 0.0012932319659739733, -0.06177503988146782, -0.00685556884855032, 0.029561348259449005, 0.07700227946043015, -0.018442315980792046, -0.00642439117655158, -0.013841216452419758, 0.00703758280724287, 0.030438503250479698, 0.01771087944507599, -0.06692101806402206, -0.0860498920083046, -0.0029839291237294674, 0.022003116086125374, -0.002590124262496829, -0.017536021769046783, 0.03472098335623741, 0.0786372646689415, -0.01983894594013691, -0.11545657366514206, -0.04284119978547096, 0.045797090977430344, -0.020710183307528496, 0.06825419515371323, -0.0021002197172492743, 0.04197051376104355, 0.045838430523872375, 0.004851006902754307, 0.09199892729520798, -0.009425417520105839, 0.04045934975147247, 0.0480925627052784, -0.04583011195063591, 0.0718776062130928, 0.07508935034275055, -0.05891672521829605, -0.017693085595965385, 0.05516538769006729, -0.043996661901474, 0.029738742858171463, 0.1114698052406311, 0.040325697511434555, -0.0415329672396183, 0.05916401743888855, 0.018445609137415886, -0.100711390376091, 0.015358217060565948, 0.025942208245396614, 0.035582978278398514, 0.017255224287509918, -0.06149817630648613, 0.03367473930120468, -0.018458252772688866, 0.07942059636116028, 0.033157940953969955, -0.06708266586065292, -0.029156364500522614, -0.0014794627204537392, -0.04856717213988304, -0.005579179152846336, 0.04606593772768974, -0.03747184947133064, -0.020694028586149216, -0.021503012627363205, 0.06489698588848114, 0.02767709083855152, -0.0791233628988266, 0.02328476496040821, 0.035628415644168854, -0.017773009836673737, -0.018572743982076645, 0.08499685674905777, -0.0883430615067482, -0.009116802364587784, -0.0922488197684288, -0.001220340607687831, 0.004123328253626823, -0.043170265853405, -0.08973359316587448, 0.05398720130324364, 0.030460044741630554, 0.02543984167277813, -0.09564085304737091, 0.04584365710616112, 0.06337856501340866, -0.09569959342479706, -0.06905843317508698, -0.02257932722568512, -0.013029425404965878],
+ "VSQRTPDYr":[0.03294970467686653, 0.030363697558641434, 0.09295876324176788, -0.025328341871500015, 0.001496970420703292, 0.049778688699007034, 0.005632845219224691, 0.002645938191562891, 0.06121920421719551, 0.0329643115401268, -0.046560633927583694, -0.05964908003807068, -0.007362586911767721, 0.029931245371699333, 0.05372598394751549, 0.04519592598080635, -0.07424326986074448, -0.009141238406300545, 0.07625492662191391, 0.08113154768943787, -0.027275674045085907, -0.029789477586746216, 0.029346957802772522, -0.09284552931785583, 0.07610733807086945, -0.029978493228554726, -0.0475987009704113, -0.07750082015991211, 0.004606364760547876, 0.01830247975885868, 0.020345278084278107, 0.05260078236460686, 0.050583016127347946, 0.06890926510095596, 0.04645485058426857, 0.025268688797950745, 0.015984222292900085, -0.10786605626344681, -0.003635554574429989, -0.03899018093943596, -0.08346451818943024, 0.03289687633514404, -0.06566042453050613, -0.04503163322806358, 0.04591218754649162, 0.05339489132165909, 0.10697974264621735, 0.10462497174739838, 0.004308177158236504, 0.013369197025895119, 0.018423013389110565, 0.05931166186928749, 0.06101574748754501, -0.0004936349578201771, -0.056742455810308456, 0.07928329706192017, 0.029235148802399635, -0.030433928593993187, 0.03435301035642624, 0.05552526190876961, -0.09780329465866089, -0.025621049106121063, 0.043675802648067474, -0.03009873256087303, -0.015658807009458542, 0.023314649239182472, -0.032778043299913406, 0.02611759677529335, 0.013289730064570904, -0.029862739145755768, 0.04944533109664917, -0.03798256814479828, -0.1121920719742775, -0.011357600800693035, 0.0773671567440033, -0.009164733812212944, -0.08620792627334595, -0.060380201786756516, 0.07488854974508286, -0.05528787896037102, 0.06242745369672775, 0.06270454078912735, 0.09525450319051743, 0.06487482041120529, -0.06156649813055992, 0.10323689132928848, 0.04038618132472038, 0.08229264616966248, -0.04111937806010246, -0.05817347392439842, 0.056706108152866364, 0.019007468596100807, 0.0029289962258189917, -0.014648622833192348, -0.01779051311314106, 0.007975640706717968, -0.018444150686264038, -0.043185990303754807, 0.005099931266158819, 0.027810972183942795],
+ "VSQRTPDr":[0.07129859179258347, -0.014030741527676582, -0.04633347690105438, -0.06843425333499908, -0.04628445953130722, 0.027669591829180717, 0.03558604046702385, 0.016791339963674545, 0.055661171674728394, 0.05012403056025505, -0.02873442880809307, 0.05648962780833244, -0.019535642117261887, 0.0409541055560112, 0.016880080103874207, -0.016046427190303802, 0.07019386440515518, -0.0901523157954216, 0.10182961821556091, -0.09517227858304977, 0.050637755542993546, 0.06517709791660309, -0.0790935531258583, 0.041558507829904556, -0.030985064804553986, -0.009744828566908836, 0.049308713525533676, -0.09361347556114197, 0.003866591490805149, 0.019254077225923538, -0.007724395487457514, -0.04545768350362778, -0.07485604286193848, -0.01659759134054184, -0.014650602824985981, -0.035217348486185074, -0.0106804883107543, -0.013933091424405575, -0.03152885660529137, -0.07357926666736603, -0.0037712394259870052, 0.06782751530408859, 0.012025706470012665, -0.007840121164917946, -0.05907408148050308, 0.03714493289589882, 0.017280496656894684, 0.04048526659607887, 0.022047631442546844, -0.07522578537464142, -0.05163488909602165, 0.0008413789910264313, -0.03912213817238808, -0.01214972697198391, 0.0765695795416832, -0.027891702950000763, 0.04755306988954544, -0.1116681769490242, 0.04274188354611397, -0.024452531710267067, 0.024243302643299103, -0.04458778724074364, -0.07380053400993347, -0.016944462433457375, -0.050461042672395706, -0.06231966242194176, 0.004861681722104549, 0.019888317212462425, 0.047186266630887985, -0.0041351583786308765, -0.007732326164841652, -0.09532211720943451, 0.005138878710567951, 0.05148481950163841, -0.07253961265087128, -0.007494648452848196, 0.040314093232154846, 0.018870553001761436, -0.008853145875036716, -0.08894945681095123, -0.08221115171909332, -0.02685559168457985, -0.09923478960990906, 0.06960103660821915, 0.07241243869066238, -0.002399158664047718, -0.041146740317344666, 0.01732204109430313, 0.03619420900940895, -0.08354652673006058, 0.034832607954740524, 0.002726300386711955, 0.0386648029088974, -0.008661216124892235, -0.027364548295736313, -0.0035202321596443653, -0.020936962217092514, 0.06141237914562225, -0.018282096832990646, 0.011404359713196754],
+ "VSQRTSDr":[0.06195712089538574, 0.07185845077037811, -0.07141460478305817, -0.05373488739132881, -0.025702903047204018, 0.061692193150520325, -0.0007627086015418172, -0.034996453672647476, 0.012847892008721828, 0.014127654023468494, -0.0454244390130043, 0.004240621346980333, 0.00987356435507536, -0.016772549599409103, 0.1061941459774971, -0.020552312955260277, 0.04038326069712639, 0.07265826314687729, 0.00393958855420351, -0.04436241835355759, 0.04468075931072235, -0.07785934209823608, -0.06077752634882927, -0.019715651869773865, 0.04554693400859833, 0.07501976937055588, -0.04755299910902977, 0.08898735046386719, -0.050045743584632874, 0.04727983474731445, -0.11159393936395645, -0.1118898093700409, 0.05562260374426842, 0.03655742481350899, -0.07193073630332947, 0.0003369277692399919, -0.02036166749894619, 0.015628943219780922, 0.04396814480423927, 0.057327210903167725, 0.0025359494611620903, -0.009747033007442951, 0.02350252866744995, 0.0935697853565216, 0.035380735993385315, 0.09106768667697906, 0.04678681865334511, -0.06955200433731079, 0.01392863504588604, -0.031023016199469566, 0.0006469564978033304, -0.039593931287527084, -0.016807833686470985, -0.058146312832832336, -0.04122861474752426, 0.028285345062613487, 0.028058750554919243, -0.0030918889679014683, 0.014799636788666248, -0.0323215126991272, 0.10857970267534256, 0.11175288259983063, 0.03686925396323204, 0.056617237627506256, -0.06094346567988396, -0.009529093280434608, -0.0009370893239974976, 0.012192762456834316, 0.006170222070068121, -0.06333057582378387, 0.07808598130941391, 0.029023833572864532, 0.05604344606399536, 0.004599370062351227, -0.012028217315673828, 0.0051863668486475945, -0.034675177186727524, 0.08372020721435547, -0.0061441403813660145, -0.027735361829400063, 0.11002767831087112, 0.015054400078952312, 0.0841045081615448, 0.016018284484744072, 0.05525583773851395, -0.0864870473742485, -0.11703922599554062, 0.08433987945318222, 0.02652685157954693, -0.006870106793940067, -0.004156756214797497, -0.01284863706678152, 0.08737613260746002, -0.0174056775867939, 0.016313092783093452, -0.004334597382694483, 0.057428255677223206, 0.04406820237636566, -0.04791027307510376, -0.017368866130709648],
+ "VSUBPDYrm":[-0.06313290446996689, -0.04472655802965164, 0.0031411207746714354, 0.04732443392276764, 0.026197079569101334, -0.023349780589342117, 0.017204219475388527, -0.09375951439142227, -0.060298144817352295, 0.03634439408779144, 0.024710727855563164, -0.015571888536214828, 0.01561953779309988, 0.04816683754324913, -0.05825015902519226, 0.07332698255777359, -0.003296234179288149, 0.044441670179367065, 0.001902799354866147, 0.0158640556037426, -0.0384802483022213, 0.051949698477983475, -0.004913511220365763, -0.023464050143957138, 0.046109434217214584, -0.01501390989869833, -0.03680137172341347, -0.014960462227463722, -0.059428952634334564, -0.046293821185827255, 0.0635080561041832, -0.065194271504879, 0.00878088641911745, -0.02487562783062458, 0.04043552652001381, 0.060235269367694855, 0.07008283585309982, 0.015747984871268272, 0.060098353773355484, 0.08126050233840942, -0.0015433060470968485, -0.07530112564563751, 0.05789490044116974, -0.024997131898999214, -0.0327148400247097, 0.020400196313858032, 0.009673490189015865, -0.01619906723499298, 0.005827025976032019, 0.009477255865931511, 0.06363187730312347, 0.023294301703572273, 0.06463223695755005, -0.009710043668746948, 0.007877503521740437, -0.03950623795390129, 0.04292234033346176, -0.019790472462773323, -0.020030342042446136, 0.0035825050435960293, -0.07123924046754837, 0.04926639050245285, 0.05794047191739082, -0.06526356935501099, 0.0008031345787458122, -0.010222326964139938, 0.0032028257846832275, 0.011255946941673756, -0.03357839211821556, 0.06535383313894272, -0.023882674053311348, 0.04772442951798439, -0.008421475067734718, 0.02303190343081951, 0.008164343424141407, 0.08714350312948227, 0.022130684927105904, -0.000775984488427639, 0.014144216664135456, -0.00904308445751667, -0.05598999932408333, 0.10482347011566162, -0.03357146307826042, 0.041198406368494034, 0.0047196815721690655, 0.08312971144914627, 0.08310572057962418, 0.028711672872304916, -0.003498199163004756, 0.05135680362582207, 0.06133474037051201, -0.053770095109939575, -0.05540582910180092, -0.010750675573945045, -0.05717025697231293, -0.056299518793821335, 0.07741468399763107, 0.09278867393732071, 0.05377304553985596, 0.0019295893143862486],
+ "VSUBPDYrr":[-0.025478558614850044, -0.006492185406386852, 0.0582430325448513, -0.010437848046422005, -0.05203034728765488, -0.031768109649419785, 0.05074331909418106, -0.0355704128742218, -0.07105103135108948, -0.009810409508645535, -0.030798979103565216, -0.028025953099131584, 0.11509682983160019, -0.027733145281672478, 0.06013005971908569, -0.07187452912330627, 0.05186108872294426, 0.12621600925922394, -0.013431327417492867, 0.04455313831567764, -0.03870180994272232, -0.022003494203090668, -0.044041894376277924, -0.021865755319595337, -0.05873916670680046, 0.047873467206954956, -0.0052541643381118774, -0.06697029620409012, -0.02525097317993641, -0.023647606372833252, -0.05908893421292305, 0.08218663185834885, -0.0903078243136406, 0.010051043704152107, 0.031178167089819908, 0.06355834007263184, -0.010958968661725521, 0.005174394231289625, -0.014943290501832962, 0.03645573928952217, 0.01579689420759678, 0.04953862354159355, 0.025731204077601433, -0.0017404068494215608, 0.060006629675626755, -0.0033097458072006702, 0.0054953140206635, -0.018282661214470863, 0.06133377179503441, -0.019223375245928764, 0.044891852885484695, 0.013222943991422653, 0.04474412649869919, -0.05849200859665871, 0.014037021435797215, 0.0018758155638352036, -0.039789631962776184, 0.044869937002658844, -0.07692992687225342, 0.09597647935152054, 0.05851690471172333, -0.07676169276237488, -0.027193618938326836, -0.04292861744761467, -0.001549027394503355, -0.015666469931602478, -0.060382355004549026, 0.11280114203691483, -0.0007897601462900639, -0.07020062953233719, 0.02634376287460327, 0.03429935872554779, -0.0677177831530571, 0.015761734917759895, 0.04914967715740204, 0.03639968857169151, 0.02719796635210514, -0.0464775487780571, -0.09032244235277176, -0.027993224561214447, 0.03282734379172325, 0.001637280103750527, 0.028508108109235764, 0.04192709922790527, -0.07566606998443604, -0.11237409710884094, 0.00011767141404561698, -0.10310967266559601, 0.04154851660132408, -0.04162295162677765, -0.08610080182552338, 0.10508061200380325, -0.02068987861275673, -0.07517228275537491, 0.033244356513023376, 0.01833072304725647, 0.07051672786474228, -0.07561652362346649, 0.09412146359682083, 0.0796557366847992],
+ "VSUBPDrm":[0.01216384582221508, -0.044099755585193634, 0.02104983851313591, -0.02186525985598564, -0.04590114578604698, 0.015573052689433098, -0.033334530889987946, -0.04476841911673546, 0.006060078274458647, -0.07462724298238754, 0.05183962360024452, 0.11780135333538055, 0.12552835047245026, 0.015612106770277023, 0.0262952521443367, -0.03837502747774124, -0.03734581544995308, 0.034896235913038254, -0.05525942146778107, 0.06362459063529968, -0.00345440860837698, 0.012017137371003628, 0.0008805143879726529, 0.007756226230412722, -0.038241442292928696, -0.008736777119338512, 0.03321104496717453, -0.04111863300204277, -0.008539863862097263, -0.0033973432146012783, -0.07239340245723724, -0.04049282521009445, 0.04828464612364769, -0.03239596262574196, -0.022579964250326157, -0.03710336238145828, -0.02210233546793461, 0.02346927300095558, -0.01971796341240406, -0.06723222136497498, -0.001379757421091199, 0.005800215527415276, 0.04347790777683258, 0.08434345573186874, -0.011287320405244827, 0.05612530559301376, -0.02028728649020195, 0.009005047380924225, 0.00016381451860070229, -0.008303927257657051, -0.0027648713439702988, 0.10149934887886047, 0.042296744883060455, -0.0544842854142189, -0.014449754729866982, -0.004913696087896824, -0.06399533152580261, 0.005510610528290272, 0.04934203252196312, -0.05688582360744476, 0.001118903630413115, -0.06237616017460823, -0.027426324784755707, -0.0070277792401611805, -0.06389393657445908, 0.023446643725037575, -0.024447202682495117, 0.07939955592155457, 0.0034722310956567526, 0.07480080425739288, -0.03368955850601196, -0.02591204084455967, 0.008345621638000011, -0.02987038530409336, 0.11675892025232315, -0.03609170764684677, 0.0048202150501310825, 0.010312838479876518, -0.012644209899008274, 0.0360574945807457, 0.036092597991228104, 0.06617789715528488, -0.004547335207462311, -0.0004893300356343389, -0.019031014293432236, -0.08619683235883713, 0.018215196207165718, 0.04572245106101036, -0.05419022962450981, -0.08407729119062424, 0.1061486229300499, 0.0037619653157889843, -0.05244392529129982, -0.009471293538808823, -0.036417871713638306, -0.0820389837026596, 0.11168266832828522, 0.034297917038202286, 0.039795685559511185, 0.039318326860666275],
+ "VSUBPDrr":[0.03375853970646858, -0.005965331103652716, 0.02983621135354042, -0.026300881057977676, -0.024203024804592133, 0.014620749279856682, -0.013071900233626366, 0.13179908692836761, -0.002992952475324273, -0.041640643030405045, -0.0851965993642807, 0.0412726104259491, 0.06560342758893967, -0.0009301870595663786, 0.06859146803617477, -0.02113625407218933, -0.09220082312822342, 0.05005554109811783, 0.008942772634327412, -0.03626611828804016, 0.015984442085027695, -0.03205875679850578, 0.002540777437388897, -0.10765661299228668, 0.034145765006542206, 0.040045786648988724, 0.002897275611758232, -0.06684103608131409, 0.0633099377155304, -0.04568364471197128, -0.055854156613349915, 0.01301521249115467, 0.050438638776540756, -0.04985671490430832, 0.047614019364118576, -0.08730381727218628, 0.05240529030561447, 0.014346243813633919, -0.07258282601833344, -0.017094532027840614, 0.09097833931446075, 0.04470893740653992, -0.08228302001953125, 0.07610329985618591, 0.06058530509471893, 0.030599495396018028, 0.033712852746248245, -0.03803984820842743, 0.013468483462929726, 0.04106093943119049, -0.010091363452374935, -0.09221367537975311, 0.008323222398757935, 0.0023939013481140137, -0.026820167899131775, 0.019537998363375664, 0.010992010124027729, 0.11245423555374146, 0.05291149765253067, -0.02156723104417324, 0.015716545283794403, 0.0417051762342453, 0.06278352439403534, 0.015341167338192463, 0.10835741460323334, -0.1020125076174736, -0.025529464706778526, 0.06035799905657768, -0.006329576950520277, -0.04798112437129021, 0.038824159651994705, -0.04407854378223419, 0.026300981640815735, -0.008773217909038067, -0.0013136672787368298, 0.006577496882528067, -0.0009970639366656542, -0.017256516963243484, -0.015499143861234188, 0.033007796853780746, 0.04586415737867355, -0.015070028603076935, 0.02671470120549202, 0.014246346428990364, 0.07163702696561813, -0.01420882809907198, 0.008364698849618435, 0.04735217243432999, 0.0069251880049705505, -0.04180339723825455, 0.09218962490558624, -0.06271616369485855, 0.08952730894088745, 0.014955127611756325, 0.04343702271580696, 0.053497228771448135, 0.03290412947535515, -0.00077866978244856, 0.011836393736302853, -0.025317778810858727],
+ "VSUBPSYrm":[-0.027104219421744347, -0.01696927845478058, -0.0506046898663044, 0.011747023090720177, -0.00858360156416893, 0.026669196784496307, -0.017067966982722282, 0.061807695776224136, 0.021278569474816322, 0.05949706584215164, 0.06321639567613602, -0.07547664642333984, -0.07912619411945343, -0.014358345419168472, 0.08748988062143326, -0.06894412636756897, -0.0324232243001461, -0.09725149720907211, -0.11050711572170258, -0.07354630529880524, 0.08370155841112137, 0.04870536923408508, -0.009514672681689262, 0.001148874987848103, 0.06735964119434357, 0.007218520622700453, 0.07494540512561798, 0.060920875519514084, 0.006058250553905964, -0.09955959767103195, 0.009371146559715271, -0.02500843070447445, 0.029593074694275856, -0.05717261880636215, -0.06556913256645203, 0.09305903315544128, -0.07270538061857224, -0.047702230513095856, -0.026774682104587555, 0.07205779105424881, -0.022984879091382027, 0.11118701845407486, -0.003500791732221842, 0.01838178001344204, -0.08937274664640427, -0.0005969528574496508, 0.09434052556753159, -0.051322925835847855, -0.07135941833257675, 0.038259394466876984, -0.08445151150226593, -0.08056401461362839, -0.06269972771406174, -0.10239995270967484, 0.010282074101269245, 0.025416795164346695, -0.019541185349225998, 0.01623322255909443, -0.06231733784079552, 0.06758831441402435, 0.0031902508344501257, 0.06960674375295639, -0.0024590655229985714, -0.041813164949417114, 0.03613026812672615, -0.04954342171549797, 0.06938139349222183, -0.058701079338788986, 0.032619256526231766, 0.0009067121427506208, 0.06360878795385361, 0.040015026926994324, -0.08336351066827774, -0.01539872121065855, 0.08899868279695511, 0.03853187710046768, -0.033666741102933884, 0.055928487330675125, -0.040040139108896255, -0.05754456669092178, 0.04716327413916588, 0.11189840734004974, -0.06477118283510208, -0.06449073553085327, 0.037252988666296005, -0.008359333500266075, 0.05493844673037529, -0.008100257255136967, 0.05440171808004379, -0.002103170845657587, 0.006865037605166435, -0.08155596256256104, 0.03031710535287857, -0.02986317314207554, -0.03902039676904678, 0.10800516605377197, -0.019976703450083733, -0.021713778376579285, -0.06456344574689865, 0.011231505312025547],
+ "VSUBPSYrr":[-0.005376828834414482, -0.008006006479263306, 0.04993090778589249, -0.022291524335741997, -0.004014470614492893, -0.09663661569356918, -0.00675579160451889, 0.01903284341096878, -0.0920204296708107, -0.03369707986712456, 0.00424161134287715, -0.02306641824543476, -0.058594267815351486, 0.00039802485844120383, 0.020566612482070923, -0.042944833636283875, 0.009871572256088257, 0.13267365097999573, -0.10231426358222961, -0.013213817961513996, 0.019044598564505577, 0.02452683635056019, -0.045273587107658386, 0.004963957704603672, 0.012869035825133324, 0.045604459941387177, -0.10910490900278091, 0.016581695526838303, 0.07106297463178635, -0.09075786918401718, 0.07572115212678909, -0.07615263760089874, 0.04536645859479904, 0.038139984011650085, -0.05803375318646431, -0.07255078107118607, -0.024892479181289673, -0.037969350814819336, 0.05461087077856064, -0.008784995414316654, 0.04440061375498772, 0.04000687599182129, -0.04271230101585388, 0.04638144001364708, -0.07430259883403778, 0.09455911070108414, 0.01285356655716896, -0.023790564388036728, 0.05835205316543579, 0.037975434213876724, -0.03420204669237137, 0.01922977901995182, 0.00694322120398283, -0.056054987013339996, -0.010267294943332672, 0.008511975407600403, 0.006453625857830048, 0.032646436244249344, 0.03306175768375397, -0.007644510827958584, 0.0518302246928215, -0.05184688791632652, -0.04048981890082359, -0.0362323559820652, -0.00836899597197771, 0.059200435876846313, 0.09612121433019638, -0.04193185269832611, 0.07187017053365707, 0.004506115801632404, -0.07127407938241959, 0.04203043505549431, 0.09650245308876038, 0.012332303449511528, 0.04297268018126488, 0.00788066629320383, -0.04306943714618683, 0.016030894592404366, 0.05710785463452339, -0.07853204011917114, 0.012423330917954445, 0.04344983398914337, -0.043535903096199036, -0.07835883647203445, 0.07866328954696655, 0.09733545035123825, -0.06371169537305832, 0.004328906536102295, -0.00045668266830034554, -0.0420880988240242, -0.0603984072804451, 0.10359775274991989, 0.09507883340120316, -0.07518291473388672, -0.03908824548125267, -0.04693436995148659, -0.03876327723264694, -0.062489643692970276, 0.009301613084971905, 0.03398037701845169],
+ "VSUBPSrm":[-0.018543018028140068, -0.09194270521402359, -0.004402920138090849, -0.033517252653837204, -0.023085670545697212, -0.0019607641734182835, 0.025530952960252762, -0.04839279502630234, 0.053793247789144516, 0.041286714375019073, -0.06751085817813873, -0.03505593538284302, 0.018104104325175285, -0.03773212432861328, -0.06729492545127869, -0.04069953411817551, -0.028675543144345284, -0.04433256387710571, 0.01699444279074669, -0.005238280165940523, -0.024120604619383812, -0.01954938843846321, 0.011931958608329296, 0.09582561999559402, 0.002194687258452177, -0.08236056566238403, -0.02516566962003708, -0.020657669752836227, 0.07019106298685074, 0.009829884395003319, 0.06955314427614212, -0.027483949437737465, -0.08341719955205917, 0.05886015668511391, -0.016571369022130966, 0.06384873390197754, 0.05100320279598236, -0.10613567382097244, -0.015509531833231449, -0.05190261825919151, -0.00534457853063941, 0.03564980626106262, -0.03371383994817734, -0.01305492501705885, 0.014739956706762314, 0.08374921977519989, 0.014638619497418404, 0.032456230372190475, 0.06202114000916481, 0.06917089968919754, 0.009869368746876717, -0.05866595357656479, 0.03558183088898659, -0.0176454558968544, -0.0004609714960679412, 0.10415753722190857, -0.021026641130447388, 0.043379563838243484, -0.05184304714202881, 0.05176481232047081, 0.043780624866485596, 0.01823141612112522, -0.04125004634261131, 0.1088550016283989, 0.04339398816227913, 0.061264459043741226, -0.04255770519375801, 0.01686912402510643, 0.008062772452831268, -0.02717640995979309, -0.00829386804252863, -0.08267992734909058, -0.024556729942560196, -0.006430887617170811, 0.1031317412853241, 0.030888503417372704, 0.038496725261211395, -0.044832032173871994, 0.019275913015007973, -0.06570534408092499, 0.0031269830651581287, 0.08248204737901688, 0.046063102781772614, -0.05169888958334923, 0.03936567157506943, 0.006056269630789757, 0.014665237627923489, -0.03876787796616554, -0.07871460914611816, -0.0038952308241277933, 0.043402642011642456, -0.02221090905368328, -0.05285772308707237, 0.006662684492766857, -0.07051818817853928, -0.009043090976774693, 0.032280419021844864, 0.06297461688518524, -0.06943809241056442, 0.10090713202953339],
+ "VSUBPSrr":[-0.0058649624697864056, 0.023030586540699005, 0.044403497129678726, -0.002264600247144699, 0.02749192714691162, -0.01928161270916462, -0.01389700174331665, 0.09718465805053711, 0.02457345649600029, -0.02804437093436718, -0.05048731714487076, -0.01985694095492363, 0.034928757697343826, -0.0824698880314827, -0.093880794942379, -0.021132487803697586, 0.05102754011750221, -0.005694580264389515, 0.031162112951278687, -0.08514164388179779, -0.034384485334157944, 0.028857985511422157, -0.04398210346698761, 0.06425109505653381, -0.05568103864789009, -0.11433480679988861, -0.0026394007727503777, 0.049628376960754395, 0.0791902169585228, 0.07189352810382843, -0.05392445996403694, -0.03755609318614006, 0.050322920083999634, 0.03827201575040817, -0.0014851567102596164, -0.07723888009786606, -0.06682765483856201, 0.030811918899416924, -0.03656807541847229, -0.029493026435375214, 0.013743332587182522, 0.08595272898674011, -0.006401484366506338, -0.0588948018848896, 0.00361645664088428, 0.06068582460284233, 0.003182668937370181, -0.032368194311857224, -0.007930081337690353, -0.04700169712305069, -0.078004851937294, 0.0031642471440136433, 0.01618223637342453, -0.05773866921663284, 0.04887435585260391, -0.09866493195295334, 0.043173711746931076, 0.07238643616437912, -0.02488843910396099, 0.029911760240793228, -0.05488243326544762, 0.016780618578195572, 0.009230767376720905, 0.011623481288552284, 0.026714753359556198, -0.11519152671098709, -0.038753949105739594, -0.0017123415600508451, -4.997810174245387e-05, 0.02689298428595066, -0.015094896778464317, -0.0035133077763020992, 0.07947499305009842, 0.07939327508211136, -0.056474026292562485, 0.06734422594308853, 0.05042431131005287, 0.0104978671297431, 0.019921965897083282, 0.02099180780351162, -0.046623654663562775, 0.05639655888080597, 0.050241801887750626, -0.07077319175004959, 0.07600513100624084, -0.03350162133574486, -0.02778920717537403, 0.02989956922829151, -0.11225856095552444, -0.06356561928987503, 0.061062246561050415, 0.01045568659901619, 0.03128163889050484, -0.03028232418000698, 0.07353644073009491, -0.010629387572407722, 0.052042748779058456, -0.10866236686706543, 0.025607572868466377, -0.01755225844681263],
+ "VSUBSDrm":[0.02977422997355461, 0.020573725923895836, 0.10048937052488327, -0.06713814288377762, -0.017641395330429077, -0.12538601458072662, 4.68420003016945e-05, 0.04239434003829956, -0.0009615669259801507, 0.005426465068012476, -0.04524920880794525, 0.08576471358537674, 0.03354348987340927, -0.09087535738945007, -0.06026093661785126, -0.02892126701772213, 0.03112303838133812, 0.03300930932164192, -0.0032815332524478436, -0.054664481431245804, 0.01333262212574482, -0.08151309937238693, -0.01708049699664116, 0.022649498656392097, -0.027828430756926537, -0.004357056226581335, 0.03912917152047157, 0.05260983109474182, -0.08982635289430618, -0.011157609522342682, -0.04621979594230652, -0.04861491918563843, -0.03181504085659981, -0.013908494263887405, 0.011340276338160038, 0.016235722228884697, -0.052769627422094345, 0.03190375491976738, 0.030783355236053467, -0.10850385576486588, 0.024444155395030975, -0.0035096185747534037, -0.047196708619594574, 0.10425760596990585, -0.07343941926956177, 0.08298711478710175, 0.06346293538808823, 0.035412855446338654, -0.03256601467728615, -0.00687273358926177, -0.011637857183814049, 0.05180058255791664, 0.026567701250314713, -0.032740309834480286, -0.018655164167284966, -0.01346777193248272, -0.020533034577965736, 0.04298447445034981, 0.008341888897120953, -0.05929052457213402, -0.07975084334611893, -0.010601203888654709, 0.010564565658569336, 0.008795073255896568, -0.05518638342618942, 0.00287976348772645, 0.0017517777159810066, 0.07455918937921524, -0.015815369784832, -0.034433260560035706, -0.025610240176320076, -0.09020394831895828, 0.026982882991433144, -0.018229341134428978, -0.008255153894424438, 0.011942700482904911, -0.06733619421720505, -0.015954384580254555, -0.010100786574184895, -0.010900105349719524, 0.09401209652423859, 0.04612992703914642, -0.02605821006000042, 0.020756587386131287, 0.03573935478925705, -0.019458288326859474, -0.004712370689958334, 0.08412864059209824, -0.017994984984397888, -0.013796607963740826, 0.10820527374744415, -0.016925876960158348, 0.08296086639165878, 0.007877483032643795, 0.043420497328042984, -0.014553258195519447, -0.06503043323755264, -0.08595415949821472, -0.021022958680987358, -0.0170757994055748],
+ "VSUBSDrr":[-0.01745697110891342, 0.07017998397350311, -0.08814629912376404, -0.0383903943002224, -0.07500206679105759, -0.036349888890981674, 0.019898148253560066, 0.08733740448951721, -0.010906115174293518, -0.039575666189193726, -0.06421004980802536, -0.0007379809394478798, 0.02238081395626068, 0.003921542316675186, -0.011693285778164864, -0.05225921794772148, 0.06004876643419266, 0.07122743129730225, -0.005684212781488895, -0.08071834594011307, 0.018540438264608383, -0.05825439840555191, 0.012710132636129856, -0.027147704735398293, -0.028658656403422356, 0.004748451989144087, 0.04679398983716965, -0.004571754019707441, 0.022853689268231392, -0.006874018348753452, -0.0769195407629013, 0.07303017377853394, 0.06557921320199966, -0.030789947137236595, -0.0010915941093116999, -0.0635467916727066, 0.04534142464399338, -0.030505703762173653, -0.058814916759729385, -0.030843107029795647, 0.13178366422653198, -0.012258530594408512, -0.06884517520666122, -0.00893278606235981, -0.013458654284477234, 0.08649241924285889, -0.07384933531284332, -0.061147090047597885, -0.04458809271454811, -0.02387278340756893, 0.034806422889232635, -0.04512357711791992, -0.014841534197330475, -0.05636214837431908, -0.005596379283815622, 0.02768612653017044, 0.07820671051740646, -0.014735258184373379, 0.03452670946717262, 0.015425325371325016, 0.0068001514300704, 0.051442015916109085, -0.032361578196287155, 0.07108648866415024, -0.018350303173065186, 0.09626112133264542, -0.060681167989969254, 0.05884256213903427, 0.03146376833319664, 0.024795955047011375, 0.03462793678045273, -0.1227559745311737, 0.02656770870089531, -0.056405581533908844, -0.04825115203857422, -0.030227545648813248, -0.011087886057794094, -0.05347991734743118, 0.01677282713353634, 0.044319551438093185, 0.059158746153116226, -0.011337307281792164, -0.019356761127710342, -0.006704920902848244, 0.07748885452747345, -0.03800969943404198, 0.021790137514472008, 0.04396221786737442, 0.0710243359208107, -0.062041331082582474, 0.0426410436630249, -0.08649780601263046, 0.06616932153701782, -0.01254341658204794, 0.024677062407135963, -0.05790377035737038, 0.10879392176866531, 0.0286425668746233, -0.05733088403940201, -0.014057964086532593],
+ "VSUBSSrm":[0.029598433524370193, -0.03276580572128296, 0.022948823869228363, -0.04633018746972084, -0.07279172539710999, 0.0012629491975530982, -0.044501449912786484, -0.050199735909700394, -0.053182203322649, 0.05546197667717934, 0.06328264623880386, -0.04425734654068947, -0.014873652718961239, -0.00547431968152523, 0.02225470170378685, -0.05878208577632904, -0.041363365948200226, -0.09976299107074738, -0.033927980810403824, -0.05166760832071304, -0.08916141837835312, -0.11271122097969055, -0.046559203416109085, -0.028748132288455963, -0.0302580613642931, 0.1538219302892685, 0.09351277351379395, 0.04407010227441788, 0.011589214205741882, 0.022836262360215187, -0.009109950624406338, 0.0940316691994667, 0.01948351226747036, -0.03887743875384331, 0.04683937132358551, -0.03308850899338722, -0.07878763228654861, 0.04277647286653519, -0.03922295197844505, -0.041642650961875916, 0.11355580389499664, 0.052069634199142456, 0.06974529474973679, 0.10964623093605042, 0.07248125225305557, 0.032115187495946884, 0.03393518552184105, -0.022537164390087128, -0.10214658826589584, -0.06432566046714783, 0.13516180217266083, 0.010615979321300983, -0.014105300419032574, 0.052938561886548996, -0.02508223056793213, -0.0002480604744050652, -0.04001035541296005, 0.03682292625308037, -0.04467987269163132, -0.08625223487615585, 0.027381980791687965, 0.05712072551250458, -0.03366692364215851, 0.0061292750760912895, 0.09670352190732956, 0.00955005083233118, 0.007887042127549648, 0.04671688377857208, -0.016598176211118698, 0.07042313367128372, -0.00609578425064683, -0.02831261046230793, 0.004700119141489267, -0.027443096041679382, -0.08576400578022003, -0.009209232404828072, -0.0148555226624012, -0.0408824123442173, 0.047661833465099335, -0.030817393213510513, 0.06009645387530327, 0.0020446167327463627, 0.07094965130090714, 0.04797130823135376, -0.043740175664424896, 0.052152153104543686, 0.037788666784763336, -0.013638955540955067, -0.0040584891103208065, 0.02110137604176998, -0.06280829757452011, 0.009976940229535103, 0.11351529508829117, 0.043247856199741364, 0.09756314009428024, -0.0482960119843483, -0.08346246927976608, 0.049846455454826355, 0.05095590278506279, 0.0074378992430865765],
+ "VSUBSSrr":[-0.006294606253504753, -0.020005835220217705, -0.09939701855182648, -0.04874017462134361, 0.0167356189340353, -0.0069133685901761055, -0.016298478469252586, 0.01000942662358284, -0.030240492895245552, -0.005752550438046455, -0.0077279601246118546, -0.030647389590740204, -0.056253306567668915, 0.046571891754865646, 0.041697122156620026, -0.02142680063843727, 0.009355702437460423, -0.061106111854314804, -0.050885025411844254, -0.03929832950234413, -0.06872954219579697, -0.03207685798406601, -0.0514926016330719, 0.06270900368690491, -0.0845150500535965, 0.005833037663251162, 0.06747505068778992, 0.05702681466937065, 0.03730577602982521, -0.04729369282722473, 0.0617755651473999, -0.021364856511354446, 0.06143167242407799, 0.04326784238219261, 0.038232602179050446, -0.01338092889636755, -0.018241792917251587, -0.0726594552397728, 0.02502630650997162, 0.08639892190694809, 0.027996134012937546, -0.0016322556184604764, 0.025739653035998344, 0.0447629913687706, 0.0978730320930481, 0.08869936317205429, -0.04381082206964493, -0.03981436789035797, 0.12754595279693604, -0.043037477880716324, 0.06814847141504288, -0.08784404397010803, 0.004663657862693071, 0.0258262287825346, 0.06955769658088684, 0.0172951091080904, 0.00010979718354064971, -0.03819050267338753, -0.05689198151230812, -0.020316477864980698, -0.09425491839647293, 0.09647732228040695, 0.07336606830358505, 0.018853694200515747, 0.027134981006383896, 0.11242172122001648, 0.03757112845778465, 0.030359143391251564, 0.0009978327434509993, -0.03759730979800224, 0.010152348317205906, 0.12453379482030869, -0.0794835016131401, -0.019362526014447212, -0.012402908876538277, 0.0016172638861462474, 0.008381830528378487, -0.039009422063827515, -0.039705418050289154, 0.030091386288404465, 0.08041197061538696, 0.04326023533940315, -0.057635772973299026, 0.04122067987918854, 0.09593388438224792, 0.02029627375304699, 0.027667663991451263, 0.07694040238857269, 0.037663742899894714, -0.0051869964227080345, -0.025236554443836212, 0.03688295558094978, 0.01071812491863966, 0.06690484285354614, -0.030826954171061516, -0.0800907164812088, 0.06049346178770065, 0.036283351480960846, -0.0323389396071434, -0.018003107979893684],
+ "VUCOMISDrm":[-0.024839138612151146, -0.0002910939510911703, 0.017127495259046555, -0.05223450809717178, 0.008561059832572937, -0.0688612088561058, -0.05586376413702965, -0.04270493611693382, -0.02410668320953846, -0.007438336964696646, 0.036307111382484436, 0.0023555865045636892, -1.0309169738320634e-05, 0.10020317137241364, 0.025499558076262474, -0.08171737194061279, 0.05253223702311516, 0.08133389055728912, -0.04513528570532799, -0.07201925665140152, -0.03390590846538544, -0.07511409372091293, -0.0009305885760113597, 0.05308981612324715, -0.0260996762663126, 0.0017607718473300338, 0.03580150008201599, -0.0007615186623297632, -0.0013240196276456118, 0.0035649708006531, -0.1224815770983696, 0.039696890860795975, 0.014997139573097229, -0.0583762526512146, -0.018227215856313705, 0.02337973192334175, 0.02937142550945282, 0.07480572909116745, 0.016054892912507057, -0.020500894635915756, 0.028473898768424988, 0.0665847659111023, 0.08378122746944427, -0.02360779605805874, 0.02846411056816578, 0.05859464779496193, 0.06261681765317917, -0.09491881728172302, -0.10332837700843811, 0.01528740394860506, 0.011509723961353302, 0.020313739776611328, -0.03777879849076271, 0.046441927552223206, -0.106050506234169, -0.05542201176285744, -0.0445365235209465, 0.003027124097570777, 0.05110001191496849, -0.031523603945970535, -0.015611696057021618, -0.04689915105700493, -0.011625816114246845, -0.06149134784936905, 0.047065164893865585, 0.00378600531257689, -0.05682642385363579, 0.03235749900341034, -0.031295046210289, -0.09389351308345795, -0.06525646895170212, 0.0012085099006071687, -0.025946110486984253, -0.0348142571747303, -0.022458722814917564, 0.05102897062897682, -0.03338927403092384, -0.06904220581054688, 0.02125481702387333, -0.059885814785957336, 0.04877467453479767, 0.03776582330465317, -0.13255932927131653, 0.0345875546336174, 0.024130094796419144, -0.06634646654129028, -0.0009053400717675686, 0.045314740389585495, 0.06831515580415726, -0.013525937683880329, 0.07438630610704422, -0.07978157699108124, 0.079287588596344, -0.040853407233953476, 0.011636478826403618, -0.039606764912605286, -0.03630693256855011, 0.060909245163202286, 0.06275338679552078, 0.040169667452573776],
+ "VUCOMISDrr":[0.020946135744452477, 0.03928329050540924, -0.0027356967329978943, -0.0010089789284393191, 0.006598043255507946, 0.026159103959798813, 0.09524304419755936, 0.059027399867773056, 0.019824575632810593, -0.03306206688284874, -0.024359535425901413, -3.4465450880816206e-05, -0.09610393643379211, 0.13533371686935425, 0.028533268719911575, 0.016331477090716362, 0.007435979787260294, 0.03455978259444237, -0.03810557350516319, -0.10538892447948456, -0.004620284773409367, -0.13663436472415924, -0.04023633897304535, 0.0777788758277893, -0.042870596051216125, -0.027140211313962936, -0.03579767048358917, 0.01827371120452881, -0.020173944532871246, -0.031983453780412674, -0.0689697116613388, -0.02555881254374981, 0.1341119408607483, -0.059729740023612976, -0.03070099651813507, -0.03168746083974838, -0.012602252885699272, 0.06806658953428268, 0.02582041174173355, -0.022403867915272713, 0.02818811871111393, 0.06991197168827057, 0.011726356111466885, -0.041003234684467316, -0.02176428958773613, 0.026040324941277504, 0.0014568859478458762, -0.07015330344438553, 0.03814832121133804, -0.041786592453718185, -0.05364104360342026, 0.008164884522557259, 0.03603307530283928, 0.012115481309592724, -0.04891255497932434, -0.018762242048978806, -0.03223986551165581, -0.029657188802957535, 0.014997420832514763, 0.007489762734621763, -0.009331217035651207, 0.08795583248138428, -0.02322492189705372, 0.04751918837428093, -0.0601644329726696, 0.13744135200977325, -0.04995923489332199, 0.03891890496015549, -0.033693987876176834, -0.053396645933389664, -0.006326563656330109, 0.02616310864686966, 0.006855796091258526, -0.06070805713534355, -0.012620319612324238, -0.008573551662266254, 0.06042568013072014, -0.06687895208597183, -0.01268038246780634, 0.027799075469374657, 0.05582210794091225, -0.061872247606515884, -0.03250686451792717, -0.10235931724309921, 0.07239750772714615, -0.04006097465753555, 0.04237876832485199, 0.08195093274116516, 0.039263755083084106, -0.09186331182718277, -0.10237222909927368, 0.0021964991465210915, 0.08605518937110901, -0.05626704916357994, 0.09386561810970306, 0.031303469091653824, 0.00939536839723587, 0.049397412687540054, -0.02447992004454136, -0.018259631469845772],
+ "VUCOMISSrm":[-0.16807645559310913, -0.0023496714420616627, -0.010344164445996284, -0.05254681035876274, 0.004134215880185366, 0.044830553233623505, -0.04884734004735947, -0.04038968309760094, -0.16887198388576508, 0.012592636048793793, -0.01375606469810009, -0.06052748113870621, 0.013133061118423939, -0.039158809930086136, 0.022058526054024696, -0.0008717020973563194, 0.014869533479213715, -0.00012184939259896055, -0.041369326412677765, 0.015351220034062862, 0.04401622712612152, 0.025096144527196884, -0.05558639392256737, 0.04970468208193779, 0.01651274412870407, 0.00010647682938724756, -0.02084951661527157, 0.04331732913851738, 0.02351614460349083, -0.038130052387714386, -0.005952071398496628, -0.006592853460460901, -0.03223881497979164, 0.042471155524253845, 0.013783879578113556, -0.02591739408671856, -0.0195204708725214, 0.06747299432754517, 0.031900957226753235, -0.05920186638832092, 0.027772242203354836, -0.027018999680876732, 0.06699652969837189, 0.09170033782720566, 0.035071421414613724, -0.004012554418295622, 0.05570913851261139, 0.009705731645226479, 0.03621295467019081, 0.001963249873369932, -0.02573169209063053, 0.02428864873945713, -0.08180761337280273, -0.00967926811426878, 0.005582189653068781, -0.04042946174740791, 0.0016134805046021938, 0.01598178781569004, -0.0022158597130328417, -0.03956903889775276, -0.07295514643192291, -0.04005471616983414, -0.010452419519424438, -0.037136711180210114, -0.03987758234143257, 0.009270910173654556, -0.06139974668622017, 0.042849667370319366, 0.004221280571073294, -0.05986598879098892, -0.005572774913161993, -0.027391767129302025, -0.032876644283533096, -0.03818338364362717, 0.0043715196661651134, -0.007770029362291098, -0.005076018627732992, -0.06613456457853317, -0.028540758416056633, -0.08232035487890244, 0.05802939832210541, 0.03274914622306824, -0.12843436002731323, 0.03478826582431793, 0.021910391747951508, 0.015416606329381466, -0.021809184923768044, 0.0504150353372097, 0.04584721103310585, -0.009688037447631359, -0.04479581117630005, 0.024279970675706863, 0.012567538768053055, -0.038512393832206726, 0.0339277908205986, -0.09005226939916611, -0.060246143490076065, 0.0649367943406105, -0.043522268533706665, 0.0060204071924090385],
+ "VUCOMISSrr":[-0.04443001002073288, 0.07685836404561996, -0.03618381917476654, -0.048498064279556274, 0.03238890692591667, -0.012614375911653042, -0.050257641822099686, -0.11286700516939163, -0.03874153271317482, -0.03749921917915344, -0.07468894124031067, -0.032937295734882355, -0.04329218715429306, 0.07582123577594757, 0.051070425659418106, 0.09614899009466171, 0.012389357201755047, -0.049094848334789276, 0.015156337060034275, -0.04915585368871689, 0.0226227268576622, 0.035587579011917114, -0.058872707188129425, 0.04846816882491112, -0.001210031216032803, -0.0030055467505007982, 0.05761832743883133, -0.011387050151824951, 0.08124232292175293, -0.005259708501398563, -0.04960191249847412, 0.003868450177833438, -0.04343762993812561, 0.013125794939696789, 0.017150823026895523, 0.024624694138765335, -0.01541594322770834, 0.11559493094682693, 0.020482029765844345, 0.0008337783510796726, 0.02719973959028721, 0.07476413249969482, 0.04925049841403961, 0.03873571380972862, 0.01821344718337059, -0.02195279486477375, -0.028346462175250053, -0.03975924849510193, 0.013911017216742039, -0.023919187486171722, -0.029903069138526917, 0.006858695764094591, 0.005424071103334427, 0.010029200464487076, 0.06896970421075821, -0.011080468073487282, -0.04372815415263176, -0.05227521434426308, -0.08003971725702286, 0.0035281949676573277, -0.030556898564100266, 0.04569178819656372, 0.03193948417901993, 0.01280213426798582, -0.06747234612703323, 0.1340140849351883, 0.03083377331495285, 0.017618203535676003, -0.06629066169261932, 0.042401839047670364, 0.1059393435716629, 0.08311952650547028, -0.0407373271882534, -0.010108397342264652, -0.002389700384810567, 0.01090095192193985, -0.018644796684384346, -0.021974792703986168, -0.03130430355668068, -0.003811224829405546, 0.07676926255226135, 0.11055444180965424, 0.020705096423625946, 0.04716050252318382, -0.06424783915281296, -0.023324932903051376, 0.04184851422905922, 0.0250276830047369, 0.03792695328593254, -0.08978795260190964, -0.02284128963947296, -0.024253470823168755, 0.06555122137069702, 0.020428741350769997, -0.026717534288764, -0.05443096160888672, 0.0034603436943143606, 0.03192148730158806, 0.08389811217784882, -0.05404610559344292],
+ "VUNPCKHPDYrr":[-0.007216466125100851, 0.05906369537115097, 0.0018242902588099241, 0.08278759568929672, 0.0026692254468798637, -0.05511815473437309, 0.010676275938749313, -0.022730005905032158, -0.017405876889824867, 0.0056821443140506744, -0.010639148764312267, 0.02267858013510704, -0.027598194777965546, 0.005097225774079561, -0.06139001622796059, 0.016663119196891785, -0.03177415207028389, 0.05656034126877785, 0.054036062210798264, 0.0335640087723732, -0.0222068652510643, 0.012540015392005444, 0.06463257968425751, 0.1130782812833786, -0.05094776302576065, 0.013445775024592876, 0.08189444988965988, -0.04805498197674751, 0.020011141896247864, 0.04957357794046402, 0.05559292435646057, -0.04030792787671089, 0.016724832355976105, -0.057534415274858475, -0.05808432400226593, 0.048927631229162216, -0.027600491419434547, -0.034797556698322296, -0.017749080434441566, -0.0512259267270565, 0.029142823070287704, 0.04316763952374458, -0.0713379755616188, -0.0949048399925232, 0.05664926767349243, -0.0028766950126737356, 0.0362459234893322, 0.07580673694610596, -0.05713661015033722, -0.04936261847615242, 0.0011433130130171776, -0.06698115915060043, -0.04124293103814125, -0.032193586230278015, 0.023126501590013504, 0.01089733187109232, -0.05233024060726166, -0.018928242847323418, 0.08226551115512848, -0.002718687290325761, 0.04025756195187569, 0.061208125203847885, -0.05556802824139595, 0.10809045284986496, -0.08077734708786011, 0.09986376017332077, 0.017802173271775246, 0.029698625206947327, -0.04835716634988785, -0.09392447024583817, 0.017502106726169586, 0.05807437375187874, 0.08117800951004028, 0.06386804580688477, 0.034501612186431885, -0.1027800589799881, -0.04109710827469826, -0.08236042410135269, 0.014794576913118362, -0.10238643735647202, -0.03643570467829704, 0.009622517973184586, -0.03220558166503906, -0.052204620093107224, -0.00887215230613947, 0.005321279633790255, 0.03998173400759697, 0.048338282853364944, -0.008057644590735435, 0.07812777161598206, 0.03192226216197014, 0.025329049676656723, -0.056475456804037094, 0.05861878767609596, 0.0020676723215729, 0.0037994454614818096, 0.07212654501199722, -0.04978231340646744, -0.06662241369485855, 0.008612665347754955],
+ "VUNPCKHPDrm":[-0.09371358901262283, 0.05459938198328018, 0.008062317036092281, -0.008736331947147846, -0.0399329848587513, -0.020192069932818413, -0.014135436154901981, -0.03191711753606796, 0.005801175255328417, 0.05190722271800041, -0.006300400011241436, -0.06021289899945259, -0.03896836191415787, 0.02617030404508114, -0.03703692555427551, 0.09065123647451401, -0.10146650671958923, 0.008739283308386803, 0.002298327162861824, 0.002558172447606921, -0.020778968930244446, 0.025155315175652504, -0.10615278035402298, 0.07194739580154419, 0.08275198191404343, -0.040058448910713196, -0.015738507732748985, -0.010726259090006351, -0.047878414392471313, 0.04769012704491615, 0.03242010995745659, -0.03459186106920242, -0.0008905741851776838, 0.06778784096240997, 0.03679049760103226, 0.022016042843461037, 0.04016498848795891, -0.046052973717451096, -0.00948860589414835, -0.06394777446985245, -0.07146216183900833, -0.02091151289641857, -0.10772038996219635, 0.008833327330648899, -0.09711212664842606, 0.04648461192846298, -0.04513433575630188, 0.026284772902727127, 0.01283311378210783, -0.040847185999155045, 0.000554229540284723, 0.003509951289743185, 0.05888291075825691, -0.06521616876125336, 0.05571896210312843, 0.05357033759355545, 0.0762043446302414, -0.0049479445442557335, -0.03309008479118347, 0.06997237354516983, 0.04097402095794678, 0.04994279146194458, 0.060925815254449844, 0.04454651474952698, 0.08780331909656525, -0.07293523848056793, 0.038596685975790024, -0.007545354776084423, 0.061519794166088104, 0.07708068937063217, -0.027375973761081696, -0.07543759793043137, 0.08842514455318451, -0.10306096822023392, 0.09664790332317352, 0.005283086560666561, -0.026553459465503693, -0.04998349770903587, 0.06569991260766983, -0.030386999249458313, 0.07923287898302078, -0.08514385670423508, 0.042670879513025284, -0.027171019464731216, -0.035813406109809875, 0.00727104302495718, 0.046894609928131104, 0.0337500125169754, 0.023907063528895378, -0.008332504890859127, -0.01851128600537777, 0.09164608269929886, -0.05444430187344551, 0.04109352082014084, -0.05688997730612755, 0.03018820844590664, -0.0745239332318306, 0.08492782711982727, -0.010108383372426033, -0.06515146791934967],
+ "VUNPCKHPDrr":[-0.017808983102440834, 0.009435201063752174, -0.006533085368573666, 0.026593578979372978, 0.06179799139499664, -0.05358939617872238, 0.018472451716661453, -0.05741860717535019, -0.04396410658955574, -0.03256480023264885, 0.035732150077819824, -0.005225201137363911, 0.11096467822790146, 0.01952451467514038, 0.0008293373393826187, -0.020154697820544243, 0.057092998176813126, 0.06046874076128006, 0.08488704264163971, 0.05901173874735832, -0.0953461155295372, 0.05877330154180527, -0.03404567763209343, -0.04548069089651108, 0.05885462090373039, 0.06813976913690567, -0.009905139915645123, -0.016799435019493103, -0.0030678866896778345, -0.0826091393828392, -0.07214117795228958, 0.03914778307080269, 0.052777938544750214, 0.023461442440748215, 0.06662986427545547, 0.04221053421497345, -0.0073179760947823524, 0.002810107544064522, -0.028032802045345306, -0.033875972032547, 0.0649309903383255, -0.0014060314279049635, 0.03996407985687256, 0.019761763513088226, 0.14631730318069458, 0.12910053133964539, -0.03615792468190193, 0.029619155451655388, 0.10459199547767639, 0.009966090321540833, 0.004238491412252188, -0.01901758834719658, -0.08042539656162262, 0.05345245450735092, -0.035290639847517014, -0.030344003811478615, 0.0620114840567112, -0.07598240673542023, -0.003700888017192483, 0.11427979916334152, -0.008277710527181625, -0.0055912453681230545, 0.10995719581842422, -0.03983950987458229, 0.1237494945526123, 0.05689022317528725, 0.01745675317943096, 0.01905384659767151, -0.021090302616357803, 0.02571537159383297, -0.033291418105363846, 0.06925023347139359, 0.0711577981710434, 0.056619830429553986, -0.0022978009656071663, 0.0024072849191725254, -0.009401182644069195, -0.013175709173083305, 0.03218775615096092, 0.05856836959719658, 0.01535659097135067, 0.041084520518779755, 0.09233485162258148, -0.020030450075864792, 0.04791124165058136, 0.0459950752556324, 0.017916621640324593, 0.06900125741958618, -0.00839997734874487, -0.0954001396894455, 0.051197491586208344, -0.0815386176109314, -0.023517804220318794, 0.06900008767843246, 0.033183056861162186, -8.613372483523563e-05, 0.10129071772098541, 0.019631247967481613, -0.03243349865078926, -0.03243647888302803],
+ "VUNPCKHPSYrr":[0.06029896438121796, 0.033672649413347244, -0.006143286358565092, 0.03576161339879036, -0.06392575800418854, -0.059415895491838455, 0.0004028038529213518, -0.00886889174580574, -0.00572523009032011, -0.05560316517949104, -0.03147199749946594, -0.048342786729335785, 0.005692563019692898, 0.012188245542347431, -0.05084604024887085, -0.0014141537249088287, 0.01058061234652996, -0.014214670285582542, -0.03364178538322449, 0.03981732204556465, 0.029033515602350235, 0.03254738077521324, -0.054205458611249924, 0.004475248046219349, 0.06842772662639618, 0.079800546169281, 0.0022578532807528973, -0.046732302755117416, 0.01627424545586109, -0.0008936342201195657, -0.12265481054782867, -0.08750275522470474, 0.04321641847491264, 0.05828095227479935, 0.04133334755897522, 0.06367061287164688, -0.031185906380414963, -0.05545271933078766, 0.02455759607255459, -0.0270102396607399, 0.0431855246424675, -0.04494943097233772, -0.03984354808926582, 0.07000119239091873, -0.052436914294958115, 0.10400351136922836, 0.005523536819964647, -0.026511462405323982, 0.06054506450891495, -0.041961465030908585, -0.018851811066269875, 0.012064917013049126, -0.038255129009485245, -0.021775802597403526, 0.08806915581226349, -0.04021194577217102, -0.019665125757455826, 0.04118109866976738, -0.09657670557498932, 0.0014395809266716242, 0.03048694133758545, -0.01198020949959755, 0.043386392295360565, 0.024362672120332718, 0.02794693224132061, 0.05836930871009827, 0.04229167848825455, -0.08701729774475098, 0.0321628712117672, -0.11403276771306992, -0.030948320403695107, -0.04800683632493019, -0.07807699590921402, 0.024966653436422348, 0.06847460567951202, 0.0012706490233540535, 0.008879921399056911, 0.03913154453039169, -0.05875150114297867, 0.028002306818962097, -0.10591012984514236, -0.042840562760829926, 0.03340543806552887, -0.04560574144124985, 0.0035555909853428602, 0.01406102068722248, -0.006888853386044502, -0.048204053193330765, 0.027028944343328476, -0.027828149497509003, -0.08654870837926865, -0.09010079503059387, -0.01308473665267229, 0.0012705266708508134, -0.051807280629873276, 0.05081983283162117, -0.010796468704938889, 0.0243137888610363, -0.03800767660140991, -0.0026495906058698893],
+ "VUNPCKHPSrr":[0.014759120531380177, 0.01880035735666752, 0.00479058688506484, 0.000576274876948446, -0.08082016557455063, 0.009744854643940926, -0.002462616190314293, -0.04839770495891571, -0.004470179323107004, -0.026868270710110664, -0.03252306953072548, -0.012448746711015701, 0.05397925525903702, 0.009730439633131027, 0.09930237382650375, -0.027539579197764397, 0.032121118158102036, -0.009230225346982479, 0.023396426811814308, 0.08393682539463043, 0.022946257144212723, -0.00794375129044056, 0.025181863456964493, -0.002543127629905939, 0.02685299515724182, 0.03128519281744957, 0.027680065482854843, -0.02967359498143196, -0.08402182906866074, 0.01884290762245655, -0.11777107417583466, 0.04471497982740402, 0.040301401168107986, -0.059587281197309494, -0.07532375305891037, 0.012746630236506462, 0.05700428783893585, -0.04629864916205406, 0.007923520170152187, -0.03965747356414795, -0.06773034483194351, 0.0951627716422081, 0.020444123074412346, 0.023128526285290718, 0.023745018988847733, 0.08104663342237473, 0.08101298660039902, -0.0417594276368618, 0.10908454656600952, -0.08752969652414322, -0.04790712147951126, 0.011382692493498325, 0.006841191556304693, 0.02180447056889534, 0.06668806821107864, 0.03780123218894005, 0.0807855874300003, -0.02306980825960636, -0.017049914225935936, -0.0014214192051440477, 0.008810820989310741, 0.07234100997447968, 0.014662671834230423, -0.0810522735118866, 0.049987927079200745, -0.02847265638411045, 0.09192780405282974, -0.04731745272874832, 0.06679293513298035, -0.021813467144966125, -0.027481943368911743, -0.0175488144159317, 0.07559681683778763, 0.009881692007184029, 0.010581367649137974, 0.03413763642311096, -0.007836609147489071, 0.005465875379741192, 0.01254257746040821, -0.05569709464907646, -0.006306956522166729, 0.005551532842218876, -0.002112558577209711, -0.06906202435493469, 0.0830460637807846, -0.11088252067565918, 0.007674152031540871, -0.10933566838502884, 0.02915581502020359, -0.028849249705672264, 0.12318219989538193, -0.0020133014768362045, -0.03295079246163368, -0.07799625396728516, 0.034905776381492615, 0.09953882545232773, 0.06857140362262726, 0.017282743006944656, -0.08644536137580872, 0.04113442450761795],
+ "VUNPCKLPDYrr":[0.01739737205207348, -0.052367646247148514, 0.04442854970693588, -0.028309883549809456, 0.022942978888750076, -0.0009368485771119595, 0.07568058371543884, -0.030502773821353912, 0.07606331259012222, 0.032357823103666306, 0.01313478872179985, 0.005198517348617315, 0.04444366320967674, -0.09267976880073547, 0.037082571536302567, 0.04222831875085831, -0.05981748551130295, 0.07749444991350174, -0.026261262595653534, 0.07154345512390137, -0.0539204366505146, -0.07781311124563217, -0.024721773341298103, -0.07704295217990875, -0.07503090798854828, -0.01494656689465046, 0.05720457807183266, 0.07748476415872574, -0.03709641098976135, 0.05914648249745369, -0.02197585627436638, -0.07221788167953491, 0.013004491105675697, 0.055643826723098755, -0.0333370715379715, -0.0031016068533062935, -0.06087126582860947, -0.0812271311879158, -0.04523765668272972, -0.06622228771448135, 0.09313477575778961, 0.030436214059591293, -0.0070009189657866955, -0.04948502033948898, -0.015945399180054665, 0.045747432857751846, 0.02114962972700596, -0.10693121701478958, 0.003702211892232299, 0.05017392709851265, 0.042765386402606964, 0.03549593314528465, -0.10076181590557098, -0.02361147105693817, 0.035289254039525986, -0.030997348949313164, 0.00924469530582428, 0.010448855347931385, -0.021748321130871773, 0.042975541204214096, -0.07954598218202591, -0.0011982166906818748, -0.06273156404495239, -0.08494693785905838, -0.02449444681406021, -0.005863673519343138, 0.005406936630606651, -0.08427406847476959, 0.03285163640975952, -0.06631038337945938, -0.02768232859671116, 0.028451042249798775, -0.10035911202430725, -0.05140022560954094, -0.08917229622602463, 0.02494225837290287, 0.02118353359401226, 0.007229670416563749, 0.03584001213312149, -0.003842295380309224, -0.019380172714591026, -0.10617829859256744, -0.05267268419265747, -0.02949855476617813, -0.04545104503631592, -0.006433680187910795, -0.06138090789318085, -0.004468638449907303, -0.005537095014005899, -0.004040894098579884, -0.03434998542070389, -0.06496167927980423, -0.019877005368471146, 0.09085060656070709, -0.02675042301416397, 0.025233395397663116, -0.059625186026096344, -0.01642722450196743, -0.07886981219053268, -0.0817975178360939],
+ "VUNPCKLPDrr":[-0.028945699334144592, 0.02333633229136467, -0.012021534144878387, -0.022553768008947372, -0.009477957151830196, 0.062357526272535324, 0.04103793576359749, -0.0761905387043953, -0.02599010430276394, -0.057331349700689316, 0.07101327180862427, 0.02462741918861866, 0.045890673995018005, -0.012250402010977268, 0.030108293518424034, -0.05677742511034012, 0.07892797142267227, 0.06333635002374649, 0.07880370318889618, -0.03513328731060028, 0.018912650644779205, -0.03584305942058563, 0.06254566460847855, -0.01136864349246025, 0.03303511068224907, 0.012940866872668266, 0.04273397475481033, -0.06946858763694763, -0.013648899272084236, 0.001900572213344276, -0.0744621679186821, -0.04712999612092972, 0.0673888549208641, -0.02268960140645504, -0.02692529372870922, -0.10840777307748795, 0.05415751039981842, -0.02219080552458763, 0.05852888524532318, -0.1031603142619133, 0.07984225451946259, 0.09823595732450485, 0.052201393991708755, -0.05843769386410713, 0.08242674171924591, 0.021876085549592972, -0.05700624734163284, -0.027294015511870384, 0.10426323860883713, -0.1037512794137001, 0.00923448707908392, -0.10221697390079498, 0.05716078728437424, -0.09758707880973816, -0.01465574000030756, 0.0502726286649704, 0.05722661316394806, 0.012392600998282433, -0.04483841359615326, -0.02050596848130226, -0.004732382483780384, 0.0488596148788929, 0.00831605400890112, -0.05936053395271301, 0.11153503507375717, -0.12557551264762878, -0.004201964940875769, -0.0085920300334692, 0.010580161586403847, -0.05419551581144333, -0.04345439746975899, -0.022734932601451874, -0.10852918773889542, 0.005025750026106834, -0.07258719205856323, 0.02914445474743843, -0.005067355930805206, -0.027600660920143127, 0.010662384331226349, 0.021926365792751312, -0.0028957072645425797, -0.00602258974686265, 0.035026486963033676, -0.0233459435403347, 0.08131027966737747, 0.10047672688961029, -0.012059002183377743, 0.013996899127960205, 0.038681596517562866, -0.07486453652381897, -0.03811933100223541, -0.008464745245873928, 0.08969149738550186, 0.003961589653044939, 0.04783182963728905, 0.001059005269780755, 0.02606845647096634, 0.01121807936578989, 0.03866327181458473, -0.04897143691778183],
+ "VUNPCKLPSYrr":[0.015073541551828384, 0.0035679626744240522, 0.024342752993106842, 0.05248865857720375, -0.07696060091257095, -0.12969082593917847, 0.03525076434016228, 0.02969907596707344, 0.04703614488244057, -0.08002743124961853, 0.031041894108057022, -0.08451064676046371, -0.00628725765272975, -0.005908470135182142, -0.05740872025489807, -0.004522842820733786, 0.008712797425687313, -0.011187752708792686, -0.04369340091943741, 0.043636754155159, 0.01961105316877365, -0.006796620786190033, 0.07658470422029495, 0.00844665989279747, 0.06133909150958061, 0.05751437693834305, 0.046220194548368454, -0.012070486322045326, -0.06641705334186554, -0.015300421975553036, -0.07444542646408081, -0.13800130784511566, 0.08760024607181549, 0.00702160457149148, 0.041455335915088654, -0.06544078886508942, 0.02896820567548275, -0.07384727895259857, 0.08559286594390869, -0.08738142997026443, -0.049359314143657684, 0.033548057079315186, -0.08469436317682266, -0.0012665098765864968, 0.009850080125033855, -0.03846246004104614, 0.005417464300990105, -0.07908258587121964, 0.051555316895246506, 0.12322992831468582, -0.01072720903903246, 0.02895256318151951, 0.017598148435354233, 0.03794247284531593, -0.01455618441104889, 0.03670739755034447, -0.0764935240149498, 0.029342399910092354, -0.042727675288915634, 0.018024269491434097, -0.06905346363782883, -0.004616581369191408, 0.05704711377620697, 0.030423983931541443, 0.012512254528701305, -0.05109914392232895, -0.081681989133358, -0.10110461711883545, 0.08553313463926315, -0.01686142012476921, -0.09210854768753052, -0.08114700019359589, -0.061836328357458115, 0.006098132114857435, 0.018357429653406143, -0.11479842662811279, 0.009770485572516918, -0.028680069372057915, -0.012459169141948223, 0.02815922535955906, -0.0022103579249233007, -0.07990173250436783, 0.05609432980418205, -0.031359169632196426, 0.00026621806318871677, 0.07836038619279861, -0.01561249140650034, 0.0191189032047987, -0.031651634722948074, -0.053893957287073135, -0.09881293028593063, -0.06741262227296829, 0.01974773406982422, -0.05128325894474983, 0.019464796409010887, 0.021454108878970146, -0.03979457914829254, -0.07719382643699646, -0.006123587489128113, -0.0456305667757988],
+ "VUNPCKLPSrm":[0.05062947794795036, -0.07353298366069794, -0.019243013113737106, 0.027240214869379997, 0.0026389332488179207, -0.10132071375846863, -0.041525110602378845, -0.0032784442882984877, -0.018128907307982445, 0.023125339299440384, 0.0034837264101952314, 0.036820024251937866, -0.09755444526672363, 0.03579138219356537, -0.04208505153656006, 0.0830676257610321, 0.07942045480012894, -0.02553904987871647, -0.028763003647327423, 0.045019496232271194, -0.03825261816382408, 0.01558573916554451, 0.06881925463676453, 0.02697354555130005, 0.07864518463611603, 0.015027954243123531, 0.027790674939751625, 0.00910535641014576, 0.07525143772363663, 0.0402810201048851, 0.04070672020316124, 0.038681186735630035, -0.04819305241107941, 0.009197325445711613, 0.03104414790868759, 0.040350012481212616, -0.06193333491683006, -0.032154276967048645, -0.05323222652077675, -0.01388852670788765, -0.04516364634037018, -0.03982473537325859, -0.015204877592623234, -0.04352668672800064, -0.04123746603727341, 0.03101029433310032, 0.026412678882479668, -0.011850344948470592, -0.029636483639478683, 0.03222833201289177, -0.0689636692404747, 0.039130017161369324, -0.07921353727579117, -0.01685956120491028, -0.08393239974975586, 0.013070751912891865, 0.015880005434155464, 0.06689148396253586, -0.0538395456969738, -0.023161528632044792, -0.032838623970746994, -0.04653773456811905, -0.04690999537706375, -0.06679506599903107, -0.06012016162276268, 0.05883101373910904, 0.05909983441233635, -0.013555838726460934, -0.04338449984788895, 0.018311219289898872, -0.03391924872994423, -0.026531970128417015, 0.09056378155946732, -0.06927838921546936, 0.050168316811323166, -0.061565298587083817, 0.03717511147260666, -0.007857694290578365, 0.01174913439899683, -0.049429673701524734, -0.035258449614048004, -0.07654004544019699, 0.04959537461400032, -0.04680299758911133, -0.08429573476314545, 0.03318333253264427, 0.10417899489402771, 0.06609642505645752, 0.09131310135126114, -0.0030547170899808407, 0.034686826169490814, 0.004112747963517904, -0.049865350127220154, -0.021225087344646454, -0.08350589126348495, 0.0961417704820633, -0.06373890489339828, -0.06875936686992645, 0.012539822608232498, -0.018268654122948647],
+ "VUNPCKLPSrr":[-0.009771641343832016, 0.023502442985773087, -0.060486599802970886, 0.005000934470444918, 0.043887827545404434, -0.0006421536090783775, 0.10912992060184479, 0.016046136617660522, -0.010844198986887932, 0.018180424347519875, -0.012948371469974518, 0.0530690923333168, 0.03080693446099758, -0.002035064622759819, 0.007841684855520725, -0.059139493852853775, 0.010924573056399822, -0.03739847615361214, -0.05911554768681526, 0.07228584587574005, 0.02084699459373951, 0.005519086495041847, -0.03790976107120514, -0.0022300765849649906, 0.03832510486245155, 0.007875933311879635, 0.00553558487445116, 0.03415512293577194, 0.04373747855424881, -0.12458408623933792, -0.033194202929735184, 0.07205090671777725, 0.04378018155694008, 0.04792057350277901, 0.04206985980272293, -0.02902306616306305, -0.0422540120780468, 0.007019313517957926, 0.06749965250492096, -0.08367956429719925, 0.06553506851196289, 0.08343829959630966, 0.0041524446569383144, 0.01581915281713009, 0.054797280579805374, 0.10527986288070679, 0.0744943618774414, -0.003454383695498109, 0.09907279163599014, -0.040802668780088425, -0.009303220547735691, 0.02782006748020649, 0.026954825967550278, -0.04361316189169884, 0.03961564600467682, 0.028407296165823936, 0.01043686643242836, 0.036674316972494125, -0.01937261037528515, -0.01009100116789341, -0.0013110716827213764, -0.018552809953689575, 0.093783900141716, -0.03366345539689064, 0.0972009003162384, 0.015891773626208305, 0.07203932106494904, -0.08225223422050476, 0.04547553136944771, 0.008590665645897388, 0.0054807523265480995, -0.02760835736989975, -0.0712263435125351, -0.025665657594799995, 0.04504233971238136, 0.016597583889961243, -0.01520202774554491, -0.027880162000656128, 0.07782052457332611, -0.01778811402618885, -0.010138108395040035, 0.015421167947351933, -0.01283971592783928, -0.10380890965461731, 0.031080082058906555, -0.09596899896860123, 0.03254135698080063, 0.05719297006726265, 0.02331204153597355, -0.055604543536901474, 0.06645920127630234, -0.0021264043170958757, -0.05905246362090111, -0.026480775326490402, 0.030242353677749634, 0.03427279368042946, 0.043953604996204376, 0.02082916721701622, -0.04664352163672447, 0.01329275406897068],
+ "V_SET0":[-0.054645270109176636, 0.010231703519821167, 0.10735674947500229, -0.05586477369070053, -0.029900338500738144, -0.09117275476455688, 0.11676372587680817, -0.06501747667789459, -0.08893252909183502, 0.02421061135828495, -0.05880781635642052, 0.005058462265878916, 0.007764778099954128, -0.03479503467679024, -0.022249514237046242, 0.06787499785423279, -0.027543887495994568, -0.10235188901424408, 0.06189196929335594, -0.07357966154813766, 0.03461442142724991, -0.06757314503192902, 0.06556487083435059, 0.07278762012720108, 0.12058914452791214, 0.03361715376377106, -0.15605288743972778, 0.02463875152170658, -0.05615108087658882, 0.0636175349354744, 0.002382805338129401, -0.01573829911649227, -0.09892404824495316, 0.07519533485174179, 0.09079942852258682, -0.04110328480601311, -0.06022988259792328, 0.014433142729103565, -0.007302829995751381, -0.028275026008486748, 0.005616515874862671, 0.056138839572668076, 0.07863717526197433, 0.04682315140962601, 0.10681667923927307, 0.05328500643372536, 0.03129931911826134, -0.0635785236954689, 0.01571076735854149, -0.0026628461200743914, -0.06601197272539139, -0.06410481035709381, -0.033151350915431976, -0.012067523784935474, -0.022377384826540947, 0.022747689858078957, 0.015225144103169441, -0.06546100974082947, 0.024227803573012352, -0.03661586716771126, 0.007137202192097902, -0.022975219413638115, 0.01840808615088463, -0.009071476757526398, -0.05915159732103348, -0.07265844196081161, -0.10954945534467697, 0.05073646456003189, 0.06966935098171234, -0.03357875719666481, -0.012088825926184654, -0.01801241934299469, -0.0495494119822979, -0.009292888455092907, -0.05319364741444588, -0.052796851843595505, -0.05781136453151703, -0.02574785053730011, -0.0686207115650177, -0.0535428561270237, 0.021874085068702698, 0.0009397262474521995, -0.06048214063048363, -0.0014205377083271742, -0.010665927082300186, 0.04213393107056618, -0.0015577548183500767, 0.007064064033329487, -0.007014052011072636, -0.06926973909139633, -0.0426185242831707, -0.031119821593165398, 0.06795608997344971, 0.012597860768437386, -0.07472358644008636, -0.06641464680433273, 0.11422670632600784, -0.01752321608364582, -0.10768967121839523, -0.03992364928126335],
+ "V_SETALLONES":[0.011805560439825058, 0.005605545360594988, 0.019577916711568832, -0.007038246374577284, -0.013101942837238312, -0.060087915509939194, 0.06600171327590942, 0.1127510741353035, 0.03251935541629791, -0.08513955771923065, -0.1272188425064087, -0.05743984133005142, 0.03415455296635628, -0.01813715696334839, 0.08123213797807693, -0.02604430541396141, 0.004977638833224773, -0.05056260898709297, 0.0759609192609787, -0.03905864432454109, -0.029284782707691193, -0.0773778036236763, -0.06391929090023041, 0.03013690747320652, 0.025567403063178062, -0.04096659645438194, -0.013911372050642967, 0.03076753579080105, 0.09287972748279572, 0.06516721844673157, 0.013303481042385101, -0.05148301273584366, 0.013247961178421974, -0.02087739109992981, -0.06532798707485199, -0.07080436497926712, 0.03797996789216995, -0.05954182893037796, -0.006158157251775265, -0.039611611515283585, 0.016250262036919594, -0.009441757574677467, -0.009183786809444427, 0.16159473359584808, 0.08712765574455261, -0.022884182631969452, -0.03575573116540909, -0.03199240192770958, -0.03306444734334946, -0.003918874077498913, 0.062194518744945526, 0.015179269947111607, -0.027334710583090782, -0.058873455971479416, 0.128275528550148, -0.0292880367487669, -0.07747887820005417, 0.1131230816245079, 0.02434738725423813, -0.025987306609749794, 0.006977062206715345, 0.005061171483248472, 0.010551988147199154, -0.011694980785250664, -0.04222672060132027, 0.0018857514951378107, -0.09771532565355301, 0.005980918649584055, -0.021874738857150078, -0.03269551321864128, -0.0660959854722023, -0.03511122986674309, -0.012204808183014393, -0.010394910350441933, 0.05620425567030907, -0.07928325980901718, 0.0231300238519907, -0.018796175718307495, -0.059483520686626434, -0.06498315185308456, -0.002720780670642853, 0.017449399456381798, -0.07902888208627701, -0.09885134547948837, 0.013462111353874207, 0.0991656631231308, 0.03312922269105911, -0.006249894388020039, 0.005173753947019577, -0.06332565099000931, -0.06398826092481613, -0.03855561092495918, 0.049685269594192505, 0.016197331249713898, -0.006844596937298775, -0.05894636735320091, 0.026065604761242867, -0.023921040818095207, 0.0833858922123909, 0.04180749133229256],
+ "XCHG":[0.03013892099261284, -0.005918541457504034, -0.003877029987052083, -0.01153622567653656, 0.07044235616922379, 0.0020885420963168144, -0.04268760234117508, 0.07963797450065613, 0.0896378755569458, -0.03346250206232071, -0.026062551885843277, 0.07721738517284393, 0.08893758058547974, 0.0798523873090744, -0.025333784520626068, -0.01930663175880909, -0.012997916899621487, -0.051225848495960236, -0.0299966000020504, -0.032841041684150696, -0.06343690305948257, -0.016547048464417458, 0.034530773758888245, 0.057199425995349884, 0.0693645030260086, 0.04208416864275932, -0.028830133378505707, 0.08431533724069595, -0.06464798003435135, 0.0009512414690107107, 0.042868468910455704, -0.031348757445812225, -0.01816270686686039, 0.05597987025976181, -0.017707090824842453, -0.03889893740415573, -0.052769940346479416, 0.012921033427119255, -0.029488561674952507, -0.012502696365118027, 0.05398940294981003, -0.032147347927093506, -0.005250571761280298, -0.014250441454350948, 0.08205590397119522, 0.049281857907772064, -0.07257362455129623, -0.0003973407146986574, -0.00821124017238617, 0.10007432103157043, 0.054469816386699677, -0.05644146353006363, 0.013105852529406548, -0.08262810856103897, -0.02594495750963688, 0.007682343479245901, -0.011262120679020882, -0.007376475725322962, -0.05011703073978424, -0.06952987611293793, -0.033738043159246445, 0.01750120520591736, -0.026767224073410034, -0.04718783125281334, 0.002559647196903825, 0.01700885407626629, -0.07193762063980103, 0.07015261799097061, 0.0034866048954427242, -0.08257746696472168, -0.07703307271003723, 0.006709580775350332, 0.06423933804035187, 0.024792056530714035, -0.008637255057692528, 0.0364011712372303, 0.035330090671777725, -0.060980167239904404, 0.026977067813277245, -0.02813805267214775, -0.02690977416932583, 0.05637027323246002, 0.008040377870202065, -0.03371180593967438, -0.06654872000217438, -0.030922764912247658, -0.07050447911024094, 0.047597192227840424, 0.047301240265369415, 0.04565070942044258, -0.0005885852151550353, -0.01970672234892845, -0.013277091085910797, 0.03462797775864601, -0.050644565373659134, -6.830461643403396e-05, -0.0032834408339112997, -0.09096988290548325, -0.0431605726480484, 0.004180085379630327],
+ "XOR":[0.05397406592965126, 0.030059566721320152, -0.008174624294042587, -0.015902524814009666, -0.05867229402065277, 0.10023067146539688, 0.039013586938381195, -0.0062194764614105225, 0.0027951474767178297, -0.12871405482292175, 0.006182669661939144, -0.03362947702407837, 0.03972288593649864, -0.0761077031493187, 0.07198456674814224, 0.06330277770757675, -0.020690103992819786, 0.04084693267941475, -0.029953323304653168, -0.1037738174200058, 0.058683767914772034, -0.09326515346765518, -0.030509043484926224, 0.08620086312294006, -0.028335779905319214, 0.0025649559684097767, 0.02293877862393856, 0.06309233605861664, 0.05537085980176926, 0.008650199510157108, 0.08450134843587875, 0.006163342390209436, 0.08676894754171371, 0.00373055599629879, -0.0536164715886116, 0.017478466033935547, -0.02005663886666298, -0.009954672306776047, 0.0935724526643753, -0.013202485628426075, 0.019175032153725624, 0.047811202704906464, -0.010279017500579357, 0.08613553643226624, 0.030951783061027527, -0.007498149760067463, 0.02222890406847, 0.022576699033379555, -0.037464242428541183, -0.05039561539888382, -0.05145428702235222, 0.05291113257408142, -0.04549814388155937, 0.07552238553762436, 0.04320567473769188, 0.08343681693077087, -0.03850278630852699, -0.01834949105978012, 0.047886237502098083, 0.00965320598334074, 0.014898041263222694, -0.06947735697031021, -0.002480468712747097, 0.033667247742414474, -0.057668499648571014, 0.038462892174720764, -0.04644528403878212, -0.06664751470088959, -0.048734813928604126, 0.04303475841879845, 0.027636554092168808, 0.024116700515151024, -0.003788548056036234, -0.0088395019993186, -0.04236738011240959, -0.02894027903676033, -0.135579451918602, -0.032144784927368164, -0.11316774785518646, -0.0039872839115560055, 0.07162772864103317, 0.03945969045162201, 0.007661669049412012, 0.04564569517970085, 0.023007070645689964, 0.0002026051515713334, -0.030437719076871872, -0.01982058770954609, -0.017619898542761803, -0.04013601690530777, 0.03464880958199501, -0.04437020793557167, 0.010373799130320549, -0.057255037128925323, -0.006371108815073967, -0.02713695913553238, -0.06605585664510727, 0.01780680939555168, -0.00013575045159086585, 0.07283638417720795]
+ }
+} \ No newline at end of file
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
index 832aa9f..aaee1f0 100644
--- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
@@ -2203,6 +2203,8 @@ static Attribute::AttrKind getAttrFromCode(uint64_t Code) {
return Attribute::SanitizeRealtime;
case bitc::ATTR_KIND_SANITIZE_REALTIME_BLOCKING:
return Attribute::SanitizeRealtimeBlocking;
+ case bitc::ATTR_KIND_SANITIZE_ALLOC_TOKEN:
+ return Attribute::SanitizeAllocToken;
case bitc::ATTR_KIND_SPECULATIVE_LOAD_HARDENING:
return Attribute::SpeculativeLoadHardening;
case bitc::ATTR_KIND_SWIFT_ERROR:
diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
index c4070e1..6d86809 100644
--- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
+++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
@@ -883,6 +883,8 @@ static uint64_t getAttrKindEncoding(Attribute::AttrKind Kind) {
return bitc::ATTR_KIND_STRUCT_RET;
case Attribute::SanitizeAddress:
return bitc::ATTR_KIND_SANITIZE_ADDRESS;
+ case Attribute::SanitizeAllocToken:
+ return bitc::ATTR_KIND_SANITIZE_ALLOC_TOKEN;
case Attribute::SanitizeHWAddress:
return bitc::ATTR_KIND_SANITIZE_HWADDRESS;
case Attribute::SanitizeThread:
diff --git a/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp b/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp
index d98d180..dc38f5a 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp
@@ -240,6 +240,8 @@ bool DebugHandlerBase::isUnsignedDIType(const DIType *Ty) {
Encoding == dwarf::DW_ATE_complex_float ||
Encoding == dwarf::DW_ATE_signed_fixed ||
Encoding == dwarf::DW_ATE_unsigned_fixed ||
+ (Encoding >= dwarf::DW_ATE_lo_user &&
+ Encoding <= dwarf::DW_ATE_hi_user) ||
(Ty->getTag() == dwarf::DW_TAG_unspecified_type &&
Ty->getName() == "decltype(nullptr)")) &&
"Unsupported encoding");
diff --git a/llvm/lib/CodeGen/CMakeLists.txt b/llvm/lib/CodeGen/CMakeLists.txt
index f8f9bbb..b6872605 100644
--- a/llvm/lib/CodeGen/CMakeLists.txt
+++ b/llvm/lib/CodeGen/CMakeLists.txt
@@ -155,6 +155,7 @@ add_llvm_component_library(LLVMCodeGen
MIRFSDiscriminator.cpp
MIRSampleProfile.cpp
MIRYamlMapping.cpp
+ MIR2Vec.cpp
MLRegAllocEvictAdvisor.cpp
MLRegAllocPriorityAdvisor.cpp
ModuloSchedule.cpp
diff --git a/llvm/lib/CodeGen/CodeGen.cpp b/llvm/lib/CodeGen/CodeGen.cpp
index 9e0cb3b..c438eae 100644
--- a/llvm/lib/CodeGen/CodeGen.cpp
+++ b/llvm/lib/CodeGen/CodeGen.cpp
@@ -96,6 +96,8 @@ void llvm::initializeCodeGen(PassRegistry &Registry) {
initializeMachineSchedulerLegacyPass(Registry);
initializeMachineSinkingLegacyPass(Registry);
initializeMachineUniformityAnalysisPassPass(Registry);
+ initializeMIR2VecVocabLegacyAnalysisPass(Registry);
+ initializeMIR2VecVocabPrinterLegacyPassPass(Registry);
initializeMachineUniformityInfoPrinterPassPass(Registry);
initializeMachineVerifierLegacyPassPass(Registry);
initializeObjCARCContractLegacyPassPass(Registry);
diff --git a/llvm/lib/CodeGen/InlineSpiller.cpp b/llvm/lib/CodeGen/InlineSpiller.cpp
index 0c2b74c..d6e8505 100644
--- a/llvm/lib/CodeGen/InlineSpiller.cpp
+++ b/llvm/lib/CodeGen/InlineSpiller.cpp
@@ -671,10 +671,22 @@ bool InlineSpiller::reMaterializeFor(LiveInterval &VirtReg, MachineInstr &MI) {
LiveInterval &OrigLI = LIS.getInterval(Original);
VNInfo *OrigVNI = OrigLI.getVNInfoAt(UseIdx);
- LiveRangeEdit::Remat RM(ParentVNI);
- RM.OrigMI = LIS.getInstructionFromIndex(OrigVNI->def);
+ assert(OrigVNI && "corrupted sub-interval");
+ MachineInstr *DefMI = LIS.getInstructionFromIndex(OrigVNI->def);
+ // This can happen if for two reasons: 1) This could be a phi valno,
+ // or 2) the remat def has already been removed from the original
+ // live interval; this happens if we rematted to all uses, and
+ // then further split one of those live ranges.
+ if (!DefMI) {
+ markValueUsed(&VirtReg, ParentVNI);
+ LLVM_DEBUG(dbgs() << "\tcannot remat missing def for " << UseIdx << '\t'
+ << MI);
+ return false;
+ }
- if (!Edit->canRematerializeAt(RM, OrigVNI, UseIdx)) {
+ LiveRangeEdit::Remat RM(ParentVNI);
+ RM.OrigMI = DefMI;
+ if (!Edit->canRematerializeAt(RM, UseIdx)) {
markValueUsed(&VirtReg, ParentVNI);
LLVM_DEBUG(dbgs() << "\tcannot remat for " << UseIdx << '\t' << MI);
return false;
@@ -739,9 +751,6 @@ bool InlineSpiller::reMaterializeFor(LiveInterval &VirtReg, MachineInstr &MI) {
/// reMaterializeAll - Try to rematerialize as many uses as possible,
/// and trim the live ranges after.
void InlineSpiller::reMaterializeAll() {
- if (!Edit->anyRematerializable())
- return;
-
UsedValues.clear();
// Try to remat before all uses of snippets.
diff --git a/llvm/lib/CodeGen/LiveRangeEdit.cpp b/llvm/lib/CodeGen/LiveRangeEdit.cpp
index 59bc82d..5b0365d 100644
--- a/llvm/lib/CodeGen/LiveRangeEdit.cpp
+++ b/llvm/lib/CodeGen/LiveRangeEdit.cpp
@@ -68,41 +68,12 @@ Register LiveRangeEdit::createFrom(Register OldReg) {
return VReg;
}
-void LiveRangeEdit::scanRemattable() {
- for (VNInfo *VNI : getParent().valnos) {
- if (VNI->isUnused())
- continue;
- Register Original = VRM->getOriginal(getReg());
- LiveInterval &OrigLI = LIS.getInterval(Original);
- VNInfo *OrigVNI = OrigLI.getVNInfoAt(VNI->def);
- if (!OrigVNI)
- continue;
- MachineInstr *DefMI = LIS.getInstructionFromIndex(OrigVNI->def);
- if (!DefMI)
- continue;
- if (TII.isReMaterializable(*DefMI))
- Remattable.insert(OrigVNI);
- }
- ScannedRemattable = true;
-}
-
-bool LiveRangeEdit::anyRematerializable() {
- if (!ScannedRemattable)
- scanRemattable();
- return !Remattable.empty();
-}
-
-bool LiveRangeEdit::canRematerializeAt(Remat &RM, VNInfo *OrigVNI,
- SlotIndex UseIdx) {
- assert(ScannedRemattable && "Call anyRematerializable first");
+bool LiveRangeEdit::canRematerializeAt(Remat &RM, SlotIndex UseIdx) {
+ assert(RM.OrigMI && "No defining instruction for remattable value");
- // Use scanRemattable info.
- if (!Remattable.count(OrigVNI))
+ if (!TII.isReMaterializable(*RM.OrigMI))
return false;
- // No defining instruction provided.
- assert(RM.OrigMI && "No defining instruction for remattable value");
-
// Verify that all used registers are available with the same values.
if (!VirtRegAuxInfo::allUsesAvailableAt(RM.OrigMI, UseIdx, LIS, MRI, TII))
return false;
@@ -303,6 +274,37 @@ void LiveRangeEdit::eliminateDeadDef(MachineInstr *MI, ToShrinkSet &ToShrink) {
}
}
+ // If the dest of MI is an original reg and MI is reMaterializable,
+ // don't delete the inst. Replace the dest with a new reg, and keep
+ // the inst for remat of other siblings. The inst is saved in
+ // LiveRangeEdit::DeadRemats and will be deleted after all the
+ // allocations of the func are done. Note that if we keep the
+ // instruction with the original operands, that handles the physreg
+ // operand case (described just below) as well.
+ // However, immediately delete instructions which have unshrunk virtual
+ // register uses. That may provoke RA to split an interval at the KILL
+ // and later result in an invalid live segment end.
+ if (isOrigDef && DeadRemats && !HasLiveVRegUses &&
+ TII.isReMaterializable(*MI)) {
+ LiveInterval &NewLI = createEmptyIntervalFrom(Dest, false);
+ VNInfo::Allocator &Alloc = LIS.getVNInfoAllocator();
+ VNInfo *VNI = NewLI.getNextValue(Idx, Alloc);
+ NewLI.addSegment(LiveInterval::Segment(Idx, Idx.getDeadSlot(), VNI));
+
+ if (DestSubReg) {
+ const TargetRegisterInfo *TRI = MRI.getTargetRegisterInfo();
+ auto *SR =
+ NewLI.createSubRange(Alloc, TRI->getSubRegIndexLaneMask(DestSubReg));
+ SR->addSegment(LiveInterval::Segment(Idx, Idx.getDeadSlot(),
+ SR->getNextValue(Idx, Alloc)));
+ }
+
+ pop_back();
+ DeadRemats->insert(MI);
+ const TargetRegisterInfo &TRI = *MRI.getTargetRegisterInfo();
+ MI->substituteRegister(Dest, NewLI.reg(), 0, TRI);
+ assert(MI->registerDefIsDead(NewLI.reg(), &TRI));
+ }
// Currently, we don't support DCE of physreg live ranges. If MI reads
// any unreserved physregs, don't erase the instruction, but turn it into
// a KILL instead. This way, the physreg live ranges don't end up
@@ -310,7 +312,7 @@ void LiveRangeEdit::eliminateDeadDef(MachineInstr *MI, ToShrinkSet &ToShrink) {
// FIXME: It would be better to have something like shrinkToUses() for
// physregs. That could potentially enable more DCE and it would free up
// the physreg. It would not happen often, though.
- if (ReadsPhysRegs) {
+ else if (ReadsPhysRegs) {
MI->setDesc(TII.get(TargetOpcode::KILL));
// Remove all operands that aren't physregs.
for (unsigned i = MI->getNumOperands(); i; --i) {
@@ -322,41 +324,11 @@ void LiveRangeEdit::eliminateDeadDef(MachineInstr *MI, ToShrinkSet &ToShrink) {
MI->dropMemRefs(*MI->getMF());
LLVM_DEBUG(dbgs() << "Converted physregs to:\t" << *MI);
} else {
- // If the dest of MI is an original reg and MI is reMaterializable,
- // don't delete the inst. Replace the dest with a new reg, and keep
- // the inst for remat of other siblings. The inst is saved in
- // LiveRangeEdit::DeadRemats and will be deleted after all the
- // allocations of the func are done.
- // However, immediately delete instructions which have unshrunk virtual
- // register uses. That may provoke RA to split an interval at the KILL
- // and later result in an invalid live segment end.
- if (isOrigDef && DeadRemats && !HasLiveVRegUses &&
- TII.isReMaterializable(*MI)) {
- LiveInterval &NewLI = createEmptyIntervalFrom(Dest, false);
- VNInfo::Allocator &Alloc = LIS.getVNInfoAllocator();
- VNInfo *VNI = NewLI.getNextValue(Idx, Alloc);
- NewLI.addSegment(LiveInterval::Segment(Idx, Idx.getDeadSlot(), VNI));
-
- if (DestSubReg) {
- const TargetRegisterInfo *TRI = MRI.getTargetRegisterInfo();
- auto *SR = NewLI.createSubRange(
- Alloc, TRI->getSubRegIndexLaneMask(DestSubReg));
- SR->addSegment(LiveInterval::Segment(Idx, Idx.getDeadSlot(),
- SR->getNextValue(Idx, Alloc)));
- }
-
- pop_back();
- DeadRemats->insert(MI);
- const TargetRegisterInfo &TRI = *MRI.getTargetRegisterInfo();
- MI->substituteRegister(Dest, NewLI.reg(), 0, TRI);
- assert(MI->registerDefIsDead(NewLI.reg(), &TRI));
- } else {
- if (TheDelegate)
- TheDelegate->LRE_WillEraseInstruction(MI);
- LIS.RemoveMachineInstrFromMaps(*MI);
- MI->eraseFromParent();
- ++NumDCEDeleted;
- }
+ if (TheDelegate)
+ TheDelegate->LRE_WillEraseInstruction(MI);
+ LIS.RemoveMachineInstrFromMaps(*MI);
+ MI->eraseFromParent();
+ ++NumDCEDeleted;
}
// Erase any virtregs that are now empty and unused. There may be <undef>
diff --git a/llvm/lib/CodeGen/MIR2Vec.cpp b/llvm/lib/CodeGen/MIR2Vec.cpp
new file mode 100644
index 0000000..87565c0
--- /dev/null
+++ b/llvm/lib/CodeGen/MIR2Vec.cpp
@@ -0,0 +1,306 @@
+//===- MIR2Vec.cpp - Implementation of MIR2Vec ---------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM
+// Exceptions. See the LICENSE file for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// This file implements the MIR2Vec algorithm for Machine IR embeddings.
+///
+//===----------------------------------------------------------------------===//
+
+#include "llvm/CodeGen/MIR2Vec.h"
+#include "llvm/ADT/Statistic.h"
+#include "llvm/CodeGen/TargetInstrInfo.h"
+#include "llvm/IR/Module.h"
+#include "llvm/InitializePasses.h"
+#include "llvm/Pass.h"
+#include "llvm/Support/Errc.h"
+#include "llvm/Support/MemoryBuffer.h"
+#include "llvm/Support/Regex.h"
+
+using namespace llvm;
+using namespace mir2vec;
+
+#define DEBUG_TYPE "mir2vec"
+
+STATISTIC(MIRVocabMissCounter,
+ "Number of lookups to MIR entities not present in the vocabulary");
+
+namespace llvm {
+namespace mir2vec {
+cl::OptionCategory MIR2VecCategory("MIR2Vec Options");
+
+// FIXME: Use a default vocab when not specified
+static cl::opt<std::string>
+ VocabFile("mir2vec-vocab-path", cl::Optional,
+ cl::desc("Path to the vocabulary file for MIR2Vec"), cl::init(""),
+ cl::cat(MIR2VecCategory));
+cl::opt<float> OpcWeight("mir2vec-opc-weight", cl::Optional, cl::init(1.0),
+ cl::desc("Weight for machine opcode embeddings"),
+ cl::cat(MIR2VecCategory));
+} // namespace mir2vec
+} // namespace llvm
+
+//===----------------------------------------------------------------------===//
+// Vocabulary Implementation
+//===----------------------------------------------------------------------===//
+
+MIRVocabulary::MIRVocabulary(VocabMap &&OpcodeEntries,
+ const TargetInstrInfo *TII)
+ : TII(*TII) {
+ // Fixme: Use static factory methods for creating vocabularies instead of
+ // public constructors
+ // Early return for invalid inputs - creates empty/invalid vocabulary
+ if (!TII || OpcodeEntries.empty())
+ return;
+
+ buildCanonicalOpcodeMapping();
+
+ unsigned CanonicalOpcodeCount = UniqueBaseOpcodeNames.size();
+ assert(CanonicalOpcodeCount > 0 &&
+ "No canonical opcodes found for target - invalid vocabulary");
+ Layout.OperandBase = CanonicalOpcodeCount;
+ generateStorage(OpcodeEntries);
+ Layout.TotalEntries = Storage.size();
+}
+
+std::string MIRVocabulary::extractBaseOpcodeName(StringRef InstrName) {
+ // Extract base instruction name using regex to capture letters and
+ // underscores Examples: "ADD32rr" -> "ADD", "ARITH_FENCE" -> "ARITH_FENCE"
+ //
+ // TODO: Consider more sophisticated extraction:
+ // - Handle complex prefixes like "AVX1_SETALLONES" correctly (Currently, it
+ // would naively map to "AVX")
+ // - Extract width suffixes (8,16,32,64) as separate features
+ // - Capture addressing mode suffixes (r,i,m,ri,etc.) for better analysis
+ // (Currently, instances like "MOV32mi" map to "MOV", but "ADDPDrr" would map
+ // to "ADDPDrr")
+
+ assert(!InstrName.empty() && "Instruction name should not be empty");
+
+ // Use regex to extract initial sequence of letters and underscores
+ static const Regex BaseOpcodeRegex("([a-zA-Z_]+)");
+ SmallVector<StringRef, 2> Matches;
+
+ if (BaseOpcodeRegex.match(InstrName, &Matches) && Matches.size() > 1) {
+ StringRef Match = Matches[1];
+ // Trim trailing underscores
+ while (!Match.empty() && Match.back() == '_')
+ Match = Match.drop_back();
+ return Match.str();
+ }
+
+ // Fallback to original name if no pattern matches
+ return InstrName.str();
+}
+
+unsigned MIRVocabulary::getCanonicalIndexForBaseName(StringRef BaseName) const {
+ assert(!UniqueBaseOpcodeNames.empty() && "Canonical mapping not built");
+ auto It = std::find(UniqueBaseOpcodeNames.begin(),
+ UniqueBaseOpcodeNames.end(), BaseName.str());
+ assert(It != UniqueBaseOpcodeNames.end() &&
+ "Base name not found in unique opcodes");
+ return std::distance(UniqueBaseOpcodeNames.begin(), It);
+}
+
+unsigned MIRVocabulary::getCanonicalOpcodeIndex(unsigned Opcode) const {
+ assert(isValid() && "MIR2Vec Vocabulary is invalid");
+ auto BaseOpcode = extractBaseOpcodeName(TII.getName(Opcode));
+ return getCanonicalIndexForBaseName(BaseOpcode);
+}
+
+std::string MIRVocabulary::getStringKey(unsigned Pos) const {
+ assert(isValid() && "MIR2Vec Vocabulary is invalid");
+ assert(Pos < Layout.TotalEntries && "Position out of bounds in vocabulary");
+
+ // For now, all entries are opcodes since we only have one section
+ if (Pos < Layout.OperandBase && Pos < UniqueBaseOpcodeNames.size()) {
+ // Convert canonical index back to base opcode name
+ auto It = UniqueBaseOpcodeNames.begin();
+ std::advance(It, Pos);
+ return *It;
+ }
+
+ llvm_unreachable("Invalid position in vocabulary");
+ return "";
+}
+
+void MIRVocabulary::generateStorage(const VocabMap &OpcodeMap) {
+
+ // Helper for handling missing entities in the vocabulary.
+ // Currently, we use a zero vector. In the future, we will throw an error to
+ // ensure that *all* known entities are present in the vocabulary.
+ auto handleMissingEntity = [](StringRef Key) {
+ LLVM_DEBUG(errs() << "MIR2Vec: Missing vocabulary entry for " << Key
+ << "; using zero vector. This will result in an error "
+ "in the future.\n");
+ ++MIRVocabMissCounter;
+ };
+
+ // Initialize opcode embeddings section
+ unsigned EmbeddingDim = OpcodeMap.begin()->second.size();
+ std::vector<Embedding> OpcodeEmbeddings(Layout.OperandBase,
+ Embedding(EmbeddingDim));
+
+ // Populate opcode embeddings using canonical mapping
+ for (auto COpcodeName : UniqueBaseOpcodeNames) {
+ if (auto It = OpcodeMap.find(COpcodeName); It != OpcodeMap.end()) {
+ auto COpcodeIndex = getCanonicalIndexForBaseName(COpcodeName);
+ assert(COpcodeIndex < Layout.OperandBase &&
+ "Canonical index out of bounds");
+ OpcodeEmbeddings[COpcodeIndex] = It->second;
+ } else {
+ handleMissingEntity(COpcodeName);
+ }
+ }
+
+ // TODO: Add operand/argument embeddings as additional sections
+ // This will require extending the vocabulary format and layout
+
+ // Scale the vocabulary sections based on the provided weights
+ auto scaleVocabSection = [](std::vector<Embedding> &Embeddings,
+ double Weight) {
+ for (auto &Embedding : Embeddings)
+ Embedding *= Weight;
+ };
+ scaleVocabSection(OpcodeEmbeddings, OpcWeight);
+
+ std::vector<std::vector<Embedding>> Sections(1);
+ Sections[0] = std::move(OpcodeEmbeddings);
+
+ Storage = ir2vec::VocabStorage(std::move(Sections));
+}
+
+void MIRVocabulary::buildCanonicalOpcodeMapping() {
+ // Check if already built
+ if (!UniqueBaseOpcodeNames.empty())
+ return;
+
+ // Build mapping from opcodes to canonical base opcode indices
+ for (unsigned Opcode = 0; Opcode < TII.getNumOpcodes(); ++Opcode) {
+ std::string BaseOpcode = extractBaseOpcodeName(TII.getName(Opcode));
+ UniqueBaseOpcodeNames.insert(BaseOpcode);
+ }
+
+ LLVM_DEBUG(dbgs() << "MIR2Vec: Built canonical mapping for target with "
+ << UniqueBaseOpcodeNames.size()
+ << " unique base opcodes\n");
+}
+
+//===----------------------------------------------------------------------===//
+// MIR2VecVocabLegacyAnalysis Implementation
+//===----------------------------------------------------------------------===//
+
+char MIR2VecVocabLegacyAnalysis::ID = 0;
+INITIALIZE_PASS_BEGIN(MIR2VecVocabLegacyAnalysis, "mir2vec-vocab-analysis",
+ "MIR2Vec Vocabulary Analysis", false, true)
+INITIALIZE_PASS_DEPENDENCY(MachineModuleInfoWrapperPass)
+INITIALIZE_PASS_END(MIR2VecVocabLegacyAnalysis, "mir2vec-vocab-analysis",
+ "MIR2Vec Vocabulary Analysis", false, true)
+
+StringRef MIR2VecVocabLegacyAnalysis::getPassName() const {
+ return "MIR2Vec Vocabulary Analysis";
+}
+
+Error MIR2VecVocabLegacyAnalysis::readVocabulary() {
+ // TODO: Extend vocabulary format to support multiple sections
+ // (opcodes, operands, etc.) similar to IR2Vec structure
+ if (VocabFile.empty())
+ return createStringError(
+ errc::invalid_argument,
+ "MIR2Vec vocabulary file path not specified; set it "
+ "using --mir2vec-vocab-path");
+
+ auto BufOrError = MemoryBuffer::getFileOrSTDIN(VocabFile, /*IsText=*/true);
+ if (!BufOrError)
+ return createFileError(VocabFile, BufOrError.getError());
+
+ auto Content = BufOrError.get()->getBuffer();
+
+ Expected<json::Value> ParsedVocabValue = json::parse(Content);
+ if (!ParsedVocabValue)
+ return ParsedVocabValue.takeError();
+
+ unsigned Dim = 0;
+ if (auto Err = ir2vec::VocabStorage::parseVocabSection(
+ "entities", *ParsedVocabValue, StrVocabMap, Dim))
+ return Err;
+
+ return Error::success();
+}
+
+void MIR2VecVocabLegacyAnalysis::emitError(Error Err, LLVMContext &Ctx) {
+ Ctx.emitError(toString(std::move(Err)));
+}
+
+mir2vec::MIRVocabulary
+MIR2VecVocabLegacyAnalysis::getMIR2VecVocabulary(const Module &M) {
+ if (StrVocabMap.empty()) {
+ if (Error Err = readVocabulary()) {
+ emitError(std::move(Err), M.getContext());
+ return mir2vec::MIRVocabulary(std::move(StrVocabMap), nullptr);
+ }
+ }
+
+ // Get machine module info to access machine functions and target info
+ MachineModuleInfo &MMI = getAnalysis<MachineModuleInfoWrapperPass>().getMMI();
+
+ // Find first available machine function to get target instruction info
+ for (const auto &F : M) {
+ if (F.isDeclaration())
+ continue;
+
+ if (auto *MF = MMI.getMachineFunction(F)) {
+ const TargetInstrInfo *TII = MF->getSubtarget().getInstrInfo();
+ return mir2vec::MIRVocabulary(std::move(StrVocabMap), TII);
+ }
+ }
+
+ // No machine functions available - return invalid vocabulary
+ emitError(make_error<StringError>("No machine functions found in module",
+ inconvertibleErrorCode()),
+ M.getContext());
+ return mir2vec::MIRVocabulary(std::move(StrVocabMap), nullptr);
+}
+
+//===----------------------------------------------------------------------===//
+// Printer Passes Implementation
+//===----------------------------------------------------------------------===//
+
+char MIR2VecVocabPrinterLegacyPass::ID = 0;
+INITIALIZE_PASS_BEGIN(MIR2VecVocabPrinterLegacyPass, "print-mir2vec-vocab",
+ "MIR2Vec Vocabulary Printer Pass", false, true)
+INITIALIZE_PASS_DEPENDENCY(MIR2VecVocabLegacyAnalysis)
+INITIALIZE_PASS_DEPENDENCY(MachineModuleInfoWrapperPass)
+INITIALIZE_PASS_END(MIR2VecVocabPrinterLegacyPass, "print-mir2vec-vocab",
+ "MIR2Vec Vocabulary Printer Pass", false, true)
+
+bool MIR2VecVocabPrinterLegacyPass::runOnMachineFunction(MachineFunction &MF) {
+ return false;
+}
+
+bool MIR2VecVocabPrinterLegacyPass::doFinalization(Module &M) {
+ auto &Analysis = getAnalysis<MIR2VecVocabLegacyAnalysis>();
+ auto MIR2VecVocab = Analysis.getMIR2VecVocabulary(M);
+
+ if (!MIR2VecVocab.isValid()) {
+ OS << "MIR2Vec Vocabulary Printer: Invalid vocabulary\n";
+ return false;
+ }
+
+ unsigned Pos = 0;
+ for (const auto &Entry : MIR2VecVocab) {
+ OS << "Key: " << MIR2VecVocab.getStringKey(Pos++) << ": ";
+ Entry.print(OS);
+ }
+
+ return false;
+}
+
+MachineFunctionPass *
+llvm::createMIR2VecVocabPrinterLegacyPass(raw_ostream &OS) {
+ return new MIR2VecVocabPrinterLegacyPass(OS);
+}
diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
index 83bb1df..b5f8a61 100644
--- a/llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
@@ -3740,7 +3740,11 @@ bool DAGTypeLegalizer::SoftPromoteHalfOperand(SDNode *N, unsigned OpNo) {
case ISD::STRICT_FP_TO_SINT:
case ISD::STRICT_FP_TO_UINT:
case ISD::FP_TO_SINT:
- case ISD::FP_TO_UINT: Res = SoftPromoteHalfOp_FP_TO_XINT(N); break;
+ case ISD::FP_TO_UINT:
+ case ISD::LRINT:
+ case ISD::LLRINT:
+ Res = SoftPromoteHalfOp_Op0WithStrict(N);
+ break;
case ISD::FP_TO_SINT_SAT:
case ISD::FP_TO_UINT_SAT:
Res = SoftPromoteHalfOp_FP_TO_XINT_SAT(N); break;
@@ -3819,7 +3823,7 @@ SDValue DAGTypeLegalizer::SoftPromoteHalfOp_FP_EXTEND(SDNode *N) {
return DAG.getNode(GetPromotionOpcode(SVT, RVT), SDLoc(N), RVT, Op);
}
-SDValue DAGTypeLegalizer::SoftPromoteHalfOp_FP_TO_XINT(SDNode *N) {
+SDValue DAGTypeLegalizer::SoftPromoteHalfOp_Op0WithStrict(SDNode *N) {
EVT RVT = N->getValueType(0);
bool IsStrict = N->isStrictFPOpcode();
SDValue Op = N->getOperand(IsStrict ? 1 : 0);
diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h b/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
index 586c341..d580ce0 100644
--- a/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
+++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
@@ -843,7 +843,7 @@ private:
SDValue SoftPromoteHalfOp_FAKE_USE(SDNode *N, unsigned OpNo);
SDValue SoftPromoteHalfOp_FCOPYSIGN(SDNode *N, unsigned OpNo);
SDValue SoftPromoteHalfOp_FP_EXTEND(SDNode *N);
- SDValue SoftPromoteHalfOp_FP_TO_XINT(SDNode *N);
+ SDValue SoftPromoteHalfOp_Op0WithStrict(SDNode *N);
SDValue SoftPromoteHalfOp_FP_TO_XINT_SAT(SDNode *N);
SDValue SoftPromoteHalfOp_SETCC(SDNode *N);
SDValue SoftPromoteHalfOp_SELECT_CC(SDNode *N, unsigned OpNo);
diff --git a/llvm/lib/CodeGen/SplitKit.cpp b/llvm/lib/CodeGen/SplitKit.cpp
index f118ee5..f9ecb2c 100644
--- a/llvm/lib/CodeGen/SplitKit.cpp
+++ b/llvm/lib/CodeGen/SplitKit.cpp
@@ -376,8 +376,6 @@ void SplitEditor::reset(LiveRangeEdit &LRE, ComplementSpillMode SM) {
if (SpillMode)
LICalc[1].reset(&VRM.getMachineFunction(), LIS.getSlotIndexes(), &MDT,
&LIS.getVNInfoAllocator());
-
- Edit->anyRematerializable();
}
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
@@ -638,7 +636,7 @@ VNInfo *SplitEditor::defFromParent(unsigned RegIdx, const VNInfo *ParentVNI,
LiveRangeEdit::Remat RM(ParentVNI);
RM.OrigMI = LIS.getInstructionFromIndex(OrigVNI->def);
if (RM.OrigMI && TII.isAsCheapAsAMove(*RM.OrigMI) &&
- Edit->canRematerializeAt(RM, OrigVNI, UseIdx)) {
+ Edit->canRematerializeAt(RM, UseIdx)) {
if (!rematWillIncreaseRestriction(RM.OrigMI, MBB, UseIdx)) {
SlotIndex Def = Edit->rematerializeAt(MBB, I, Reg, RM, TRI, Late);
++NumRemats;
diff --git a/llvm/lib/ExecutionEngine/Orc/CMakeLists.txt b/llvm/lib/ExecutionEngine/Orc/CMakeLists.txt
index f159d59..0ffe3ae 100644
--- a/llvm/lib/ExecutionEngine/Orc/CMakeLists.txt
+++ b/llvm/lib/ExecutionEngine/Orc/CMakeLists.txt
@@ -24,6 +24,7 @@ add_llvm_component_library(LLVMOrcJIT
EPCGenericRTDyldMemoryManager.cpp
EPCIndirectionUtils.cpp
ExecutionUtils.cpp
+ ExecutorResolutionGenerator.cpp
ObjectFileInterface.cpp
GetDylibInterface.cpp
IndirectionUtils.cpp
diff --git a/llvm/lib/ExecutionEngine/Orc/EPCDebugObjectRegistrar.cpp b/llvm/lib/ExecutionEngine/Orc/EPCDebugObjectRegistrar.cpp
index 9f7d517..08bef37 100644
--- a/llvm/lib/ExecutionEngine/Orc/EPCDebugObjectRegistrar.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/EPCDebugObjectRegistrar.cpp
@@ -42,7 +42,12 @@ Expected<std::unique_ptr<EPCDebugObjectRegistrar>> createJITLoaderGDBRegistrar(
assert((*Result)[0].size() == 1 &&
"Unexpected number of addresses in result");
- ExecutorAddr RegisterAddr = (*Result)[0][0].getAddress();
+ if (!(*Result)[0][0].has_value())
+ return make_error<StringError>(
+ "Expected a valid address in the lookup result",
+ inconvertibleErrorCode());
+
+ ExecutorAddr RegisterAddr = (*Result)[0][0]->getAddress();
return std::make_unique<EPCDebugObjectRegistrar>(ES, RegisterAddr);
}
diff --git a/llvm/lib/ExecutionEngine/Orc/EPCDynamicLibrarySearchGenerator.cpp b/llvm/lib/ExecutionEngine/Orc/EPCDynamicLibrarySearchGenerator.cpp
index 59d66b2..1e83c07 100644
--- a/llvm/lib/ExecutionEngine/Orc/EPCDynamicLibrarySearchGenerator.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/EPCDynamicLibrarySearchGenerator.cpp
@@ -79,12 +79,16 @@ Error EPCDynamicLibrarySearchGenerator::tryToGenerate(
assert(Result->front().size() == LookupSymbols.size() &&
"Result has incorrect number of elements");
+ auto SymsIt = Result->front().begin();
+ SymbolNameSet MissingSymbols;
SymbolMap NewSymbols;
- auto ResultI = Result->front().begin();
- for (auto &KV : LookupSymbols) {
- if (ResultI->getAddress())
- NewSymbols[KV.first] = *ResultI;
- ++ResultI;
+ for (auto &[Name, Flags] : LookupSymbols) {
+ const auto &Sym = *SymsIt++;
+ if (Sym && Sym->getAddress())
+ NewSymbols[Name] = *Sym;
+ else if (LLVM_UNLIKELY(!Sym &&
+ Flags == SymbolLookupFlags::RequiredSymbol))
+ MissingSymbols.insert(Name);
}
LLVM_DEBUG({
@@ -96,6 +100,10 @@ Error EPCDynamicLibrarySearchGenerator::tryToGenerate(
if (NewSymbols.empty())
return LS.continueLookup(Error::success());
+ if (LLVM_UNLIKELY(!MissingSymbols.empty()))
+ return LS.continueLookup(make_error<SymbolsNotFound>(
+ this->EPC.getSymbolStringPool(), std::move(MissingSymbols)));
+
// Define resolved symbols.
Error Err = addAbsolutes(JD, std::move(NewSymbols));
diff --git a/llvm/lib/ExecutionEngine/Orc/EPCGenericDylibManager.cpp b/llvm/lib/ExecutionEngine/Orc/EPCGenericDylibManager.cpp
index f98b18c..1f19d17 100644
--- a/llvm/lib/ExecutionEngine/Orc/EPCGenericDylibManager.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/EPCGenericDylibManager.cpp
@@ -66,7 +66,7 @@ EPCGenericDylibManager::CreateWithDefaultBootstrapSymbols(
if (auto Err = EPC.getBootstrapSymbols(
{{SAs.Instance, rt::SimpleExecutorDylibManagerInstanceName},
{SAs.Open, rt::SimpleExecutorDylibManagerOpenWrapperName},
- {SAs.Lookup, rt::SimpleExecutorDylibManagerLookupWrapperName}}))
+ {SAs.Resolve, rt::SimpleExecutorDylibManagerResolveWrapperName}}))
return std::move(Err);
return EPCGenericDylibManager(EPC, std::move(SAs));
}
@@ -84,11 +84,12 @@ Expected<tpctypes::DylibHandle> EPCGenericDylibManager::open(StringRef Path,
void EPCGenericDylibManager::lookupAsync(tpctypes::DylibHandle H,
const SymbolLookupSet &Lookup,
SymbolLookupCompleteFn Complete) {
- EPC.callSPSWrapperAsync<rt::SPSSimpleExecutorDylibManagerLookupSignature>(
- SAs.Lookup,
+ EPC.callSPSWrapperAsync<rt::SPSSimpleExecutorDylibManagerResolveSignature>(
+ SAs.Resolve,
[Complete = std::move(Complete)](
Error SerializationErr,
- Expected<std::vector<ExecutorSymbolDef>> Result) mutable {
+ Expected<std::vector<std::optional<ExecutorSymbolDef>>>
+ Result) mutable {
if (SerializationErr) {
cantFail(Result.takeError());
Complete(std::move(SerializationErr));
@@ -96,17 +97,18 @@ void EPCGenericDylibManager::lookupAsync(tpctypes::DylibHandle H,
}
Complete(std::move(Result));
},
- SAs.Instance, H, Lookup);
+ H, Lookup);
}
void EPCGenericDylibManager::lookupAsync(tpctypes::DylibHandle H,
const RemoteSymbolLookupSet &Lookup,
SymbolLookupCompleteFn Complete) {
- EPC.callSPSWrapperAsync<rt::SPSSimpleExecutorDylibManagerLookupSignature>(
- SAs.Lookup,
+ EPC.callSPSWrapperAsync<rt::SPSSimpleExecutorDylibManagerResolveSignature>(
+ SAs.Resolve,
[Complete = std::move(Complete)](
Error SerializationErr,
- Expected<std::vector<ExecutorSymbolDef>> Result) mutable {
+ Expected<std::vector<std::optional<ExecutorSymbolDef>>>
+ Result) mutable {
if (SerializationErr) {
cantFail(Result.takeError());
Complete(std::move(SerializationErr));
@@ -114,7 +116,7 @@ void EPCGenericDylibManager::lookupAsync(tpctypes::DylibHandle H,
}
Complete(std::move(Result));
},
- SAs.Instance, H, Lookup);
+ H, Lookup);
}
} // end namespace orc
diff --git a/llvm/lib/ExecutionEngine/Orc/ExecutorResolutionGenerator.cpp b/llvm/lib/ExecutionEngine/Orc/ExecutorResolutionGenerator.cpp
new file mode 100644
index 0000000..e5b0bd3
--- /dev/null
+++ b/llvm/lib/ExecutionEngine/Orc/ExecutorResolutionGenerator.cpp
@@ -0,0 +1,98 @@
+//===---- ExecutorProcessControl.cpp -- Executor process control APIs -----===//
+//
+// 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 "llvm/ExecutionEngine/Orc/ExecutorResolutionGenerator.h"
+
+#include "llvm/ExecutionEngine/Orc/DebugUtils.h"
+#include "llvm/ExecutionEngine/Orc/Shared/ExecutorSymbolDef.h"
+#include "llvm/Support/Error.h"
+
+#define DEBUG_TYPE "orc"
+
+namespace llvm {
+namespace orc {
+
+Expected<std::unique_ptr<ExecutorResolutionGenerator>>
+ExecutorResolutionGenerator::Load(ExecutionSession &ES, const char *LibraryPath,
+ SymbolPredicate Allow,
+ AbsoluteSymbolsFn AbsoluteSymbols) {
+ auto H = ES.getExecutorProcessControl().getDylibMgr().loadDylib(LibraryPath);
+ if (H)
+ return H.takeError();
+ return std::make_unique<ExecutorResolutionGenerator>(
+ ES, *H, std::move(Allow), std::move(AbsoluteSymbols));
+}
+
+Error ExecutorResolutionGenerator::tryToGenerate(
+ LookupState &LS, LookupKind K, JITDylib &JD,
+ JITDylibLookupFlags JDLookupFlags, const SymbolLookupSet &LookupSet) {
+
+ if (LookupSet.empty())
+ return Error::success();
+
+ LLVM_DEBUG({
+ dbgs() << "ExecutorResolutionGenerator trying to generate " << LookupSet
+ << "\n";
+ });
+
+ SymbolLookupSet LookupSymbols;
+ for (auto &[Name, LookupFlag] : LookupSet) {
+ if (Allow && !Allow(Name))
+ continue;
+ LookupSymbols.add(Name, LookupFlag);
+ }
+
+ DylibManager::LookupRequest LR(H, LookupSymbols);
+ EPC.getDylibMgr().lookupSymbolsAsync(
+ LR, [this, LS = std::move(LS), JD = JITDylibSP(&JD),
+ LookupSymbols](auto Result) mutable {
+ if (Result) {
+ LLVM_DEBUG({
+ dbgs() << "ExecutorResolutionGenerator lookup failed due to error";
+ });
+ return LS.continueLookup(Result.takeError());
+ }
+ assert(Result->size() == 1 &&
+ "Results for more than one library returned");
+ assert(Result->front().size() == LookupSymbols.size() &&
+ "Result has incorrect number of elements");
+
+ // const tpctypes::LookupResult &Syms = Result->front();
+ // size_t SymIdx = 0;
+ auto Syms = Result->front().begin();
+ SymbolNameSet MissingSymbols;
+ SymbolMap NewSyms;
+ for (auto &[Name, Flags] : LookupSymbols) {
+ const auto &Sym = *Syms++;
+ if (Sym && Sym->getAddress())
+ NewSyms[Name] = *Sym;
+ else if (LLVM_UNLIKELY(!Sym &&
+ Flags == SymbolLookupFlags::RequiredSymbol))
+ MissingSymbols.insert(Name);
+ }
+
+ LLVM_DEBUG({
+ dbgs() << "ExecutorResolutionGenerator lookup returned " << NewSyms
+ << "\n";
+ });
+
+ if (NewSyms.empty())
+ return LS.continueLookup(Error::success());
+
+ if (LLVM_UNLIKELY(!MissingSymbols.empty()))
+ return LS.continueLookup(make_error<SymbolsNotFound>(
+ this->EPC.getSymbolStringPool(), std::move(MissingSymbols)));
+
+ LS.continueLookup(JD->define(AbsoluteSymbols(std::move(NewSyms))));
+ });
+
+ return Error::success();
+}
+
+} // end namespace orc
+} // end namespace llvm
diff --git a/llvm/lib/ExecutionEngine/Orc/LookupAndRecordAddrs.cpp b/llvm/lib/ExecutionEngine/Orc/LookupAndRecordAddrs.cpp
index 78169a2..42d630d 100644
--- a/llvm/lib/ExecutionEngine/Orc/LookupAndRecordAddrs.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/LookupAndRecordAddrs.cpp
@@ -72,9 +72,10 @@ Error lookupAndRecordAddrs(
return make_error<StringError>("Error in lookup result elements",
inconvertibleErrorCode());
- for (unsigned I = 0; I != Pairs.size(); ++I)
- *Pairs[I].second = Result->front()[I].getAddress();
-
+ for (unsigned I = 0; I != Pairs.size(); ++I) {
+ if (Result->front()[I])
+ *Pairs[I].second = Result->front()[I]->getAddress();
+ }
return Error::success();
}
diff --git a/llvm/lib/ExecutionEngine/Orc/SelfExecutorProcessControl.cpp b/llvm/lib/ExecutionEngine/Orc/SelfExecutorProcessControl.cpp
index 78045f1..f8a2bd3 100644
--- a/llvm/lib/ExecutionEngine/Orc/SelfExecutorProcessControl.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/SelfExecutorProcessControl.cpp
@@ -91,22 +91,18 @@ void SelfExecutorProcessControl::lookupSymbolsAsync(
for (auto &Elem : Request) {
sys::DynamicLibrary Dylib(Elem.Handle.toPtr<void *>());
- R.push_back(std::vector<ExecutorSymbolDef>());
+ R.push_back(tpctypes::LookupResult());
for (auto &KV : Elem.Symbols) {
auto &Sym = KV.first;
std::string Tmp((*Sym).data() + !!GlobalManglingPrefix,
(*Sym).size() - !!GlobalManglingPrefix);
void *Addr = Dylib.getAddressOfSymbol(Tmp.c_str());
- if (!Addr && KV.second == SymbolLookupFlags::RequiredSymbol) {
- // FIXME: Collect all failing symbols before erroring out.
- SymbolNameVector MissingSymbols;
- MissingSymbols.push_back(Sym);
- return Complete(
- make_error<SymbolsNotFound>(SSP, std::move(MissingSymbols)));
- }
- // FIXME: determine accurate JITSymbolFlags.
- R.back().push_back(
- {ExecutorAddr::fromPtr(Addr), JITSymbolFlags::Exported});
+ if (!Addr && KV.second == SymbolLookupFlags::RequiredSymbol)
+ R.back().emplace_back();
+ else
+ // FIXME: determine accurate JITSymbolFlags.
+ R.back().emplace_back(ExecutorSymbolDef(ExecutorAddr::fromPtr(Addr),
+ JITSymbolFlags::Exported));
}
}
diff --git a/llvm/lib/ExecutionEngine/Orc/Shared/OrcRTBridge.cpp b/llvm/lib/ExecutionEngine/Orc/Shared/OrcRTBridge.cpp
index 123651f..26e8f53 100644
--- a/llvm/lib/ExecutionEngine/Orc/Shared/OrcRTBridge.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/Shared/OrcRTBridge.cpp
@@ -16,8 +16,8 @@ const char *SimpleExecutorDylibManagerInstanceName =
"__llvm_orc_SimpleExecutorDylibManager_Instance";
const char *SimpleExecutorDylibManagerOpenWrapperName =
"__llvm_orc_SimpleExecutorDylibManager_open_wrapper";
-const char *SimpleExecutorDylibManagerLookupWrapperName =
- "__llvm_orc_SimpleExecutorDylibManager_lookup_wrapper";
+const char *SimpleExecutorDylibManagerResolveWrapperName =
+ "__llvm_orc_SimpleExecutorDylibManager_resolve_wrapper";
const char *SimpleExecutorMemoryManagerInstanceName =
"__llvm_orc_SimpleExecutorMemoryManager_Instance";
diff --git a/llvm/lib/ExecutionEngine/Orc/TargetProcess/CMakeLists.txt b/llvm/lib/ExecutionEngine/Orc/TargetProcess/CMakeLists.txt
index 9f3abac..9275586 100644
--- a/llvm/lib/ExecutionEngine/Orc/TargetProcess/CMakeLists.txt
+++ b/llvm/lib/ExecutionEngine/Orc/TargetProcess/CMakeLists.txt
@@ -15,6 +15,7 @@ endif()
add_llvm_component_library(LLVMOrcTargetProcess
ExecutorSharedMemoryMapperService.cpp
DefaultHostBootstrapValues.cpp
+ ExecutorResolver.cpp
JITLoaderGDB.cpp
JITLoaderPerf.cpp
JITLoaderVTune.cpp
diff --git a/llvm/lib/ExecutionEngine/Orc/TargetProcess/ExecutorResolver.cpp b/llvm/lib/ExecutionEngine/Orc/TargetProcess/ExecutorResolver.cpp
new file mode 100644
index 0000000..6054d86
--- /dev/null
+++ b/llvm/lib/ExecutionEngine/Orc/TargetProcess/ExecutorResolver.cpp
@@ -0,0 +1,47 @@
+
+#include "llvm/ExecutionEngine/Orc/TargetProcess/ExecutorResolver.h"
+
+#include "llvm/Support/DynamicLibrary.h"
+#include "llvm/Support/Error.h"
+
+namespace llvm::orc {
+
+void DylibSymbolResolver::resolveAsync(
+ const RemoteSymbolLookupSet &L,
+ ExecutorResolver::YieldResolveResultFn &&OnResolve) {
+ std::vector<std::optional<ExecutorSymbolDef>> Result;
+ auto DL = sys::DynamicLibrary(Handle.toPtr<void *>());
+
+ for (const auto &E : L) {
+ if (E.Name.empty()) {
+ if (E.Required)
+ OnResolve(
+ make_error<StringError>("Required address for empty symbol \"\"",
+ inconvertibleErrorCode()));
+ else
+ Result.emplace_back();
+ } else {
+
+ const char *DemangledSymName = E.Name.c_str();
+#ifdef __APPLE__
+ if (E.Name.front() != '_')
+ OnResolve(make_error<StringError>(Twine("MachO symbol \"") + E.Name +
+ "\" missing leading '_'",
+ inconvertibleErrorCode()));
+ ++DemangledSymName;
+#endif
+
+ void *Addr = DL.getAddressOfSymbol(DemangledSymName);
+ if (!Addr && E.Required)
+ Result.emplace_back();
+ else
+ // FIXME: determine accurate JITSymbolFlags.
+ Result.emplace_back(ExecutorSymbolDef(ExecutorAddr::fromPtr(Addr),
+ JITSymbolFlags::Exported));
+ }
+ }
+
+ OnResolve(std::move(Result));
+}
+
+} // end namespace llvm::orc \ No newline at end of file
diff --git a/llvm/lib/ExecutionEngine/Orc/TargetProcess/SimpleExecutorDylibManager.cpp b/llvm/lib/ExecutionEngine/Orc/TargetProcess/SimpleExecutorDylibManager.cpp
index db6f201..52bb55d 100644
--- a/llvm/lib/ExecutionEngine/Orc/TargetProcess/SimpleExecutorDylibManager.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/TargetProcess/SimpleExecutorDylibManager.cpp
@@ -10,6 +10,10 @@
#include "llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h"
+#include "llvm/Support/MSVCErrorWorkarounds.h"
+
+#include <future>
+
#define DEBUG_TYPE "orc"
namespace llvm {
@@ -35,46 +39,9 @@ SimpleExecutorDylibManager::open(const std::string &Path, uint64_t Mode) {
std::lock_guard<std::mutex> Lock(M);
auto H = ExecutorAddr::fromPtr(DL.getOSSpecificHandle());
+ Resolvers.push_back(std::make_unique<DylibSymbolResolver>(H));
Dylibs.insert(DL.getOSSpecificHandle());
- return H;
-}
-
-Expected<std::vector<ExecutorSymbolDef>>
-SimpleExecutorDylibManager::lookup(tpctypes::DylibHandle H,
- const RemoteSymbolLookupSet &L) {
- std::vector<ExecutorSymbolDef> Result;
- auto DL = sys::DynamicLibrary(H.toPtr<void *>());
-
- for (const auto &E : L) {
- if (E.Name.empty()) {
- if (E.Required)
- return make_error<StringError>("Required address for empty symbol \"\"",
- inconvertibleErrorCode());
- else
- Result.push_back(ExecutorSymbolDef());
- } else {
-
- const char *DemangledSymName = E.Name.c_str();
-#ifdef __APPLE__
- if (E.Name.front() != '_')
- return make_error<StringError>(Twine("MachO symbol \"") + E.Name +
- "\" missing leading '_'",
- inconvertibleErrorCode());
- ++DemangledSymName;
-#endif
-
- void *Addr = DL.getAddressOfSymbol(DemangledSymName);
- if (!Addr && E.Required)
- return make_error<StringError>(Twine("Missing definition for ") +
- DemangledSymName,
- inconvertibleErrorCode());
-
- // FIXME: determine accurate JITSymbolFlags.
- Result.push_back({ExecutorAddr::fromPtr(Addr), JITSymbolFlags::Exported});
- }
- }
-
- return Result;
+ return ExecutorAddr::fromPtr(Resolvers.back().get());
}
Error SimpleExecutorDylibManager::shutdown() {
@@ -94,8 +61,8 @@ void SimpleExecutorDylibManager::addBootstrapSymbols(
M[rt::SimpleExecutorDylibManagerInstanceName] = ExecutorAddr::fromPtr(this);
M[rt::SimpleExecutorDylibManagerOpenWrapperName] =
ExecutorAddr::fromPtr(&openWrapper);
- M[rt::SimpleExecutorDylibManagerLookupWrapperName] =
- ExecutorAddr::fromPtr(&lookupWrapper);
+ M[rt::SimpleExecutorDylibManagerResolveWrapperName] =
+ ExecutorAddr::fromPtr(&resolveWrapper);
}
llvm::orc::shared::CWrapperFunctionResult
@@ -109,12 +76,22 @@ SimpleExecutorDylibManager::openWrapper(const char *ArgData, size_t ArgSize) {
}
llvm::orc::shared::CWrapperFunctionResult
-SimpleExecutorDylibManager::lookupWrapper(const char *ArgData, size_t ArgSize) {
- return shared::
- WrapperFunction<rt::SPSSimpleExecutorDylibManagerLookupSignature>::handle(
- ArgData, ArgSize,
- shared::makeMethodWrapperHandler(
- &SimpleExecutorDylibManager::lookup))
+SimpleExecutorDylibManager::resolveWrapper(const char *ArgData,
+ size_t ArgSize) {
+ using ResolveResult = ExecutorResolver::ResolveResult;
+ return shared::WrapperFunction<
+ rt::SPSSimpleExecutorDylibManagerResolveSignature>::
+ handle(ArgData, ArgSize,
+ [](ExecutorAddr Obj, RemoteSymbolLookupSet L) -> ResolveResult {
+ using TmpResult =
+ MSVCPExpected<std::vector<std::optional<ExecutorSymbolDef>>>;
+ std::promise<TmpResult> P;
+ auto F = P.get_future();
+ Obj.toPtr<ExecutorResolver *>()->resolveAsync(
+ std::move(L),
+ [&](TmpResult R) { P.set_value(std::move(R)); });
+ return F.get();
+ })
.release();
}
diff --git a/llvm/lib/IR/ConstantFold.cpp b/llvm/lib/IR/ConstantFold.cpp
index 6b202ba..3842b1a 100644
--- a/llvm/lib/IR/ConstantFold.cpp
+++ b/llvm/lib/IR/ConstantFold.cpp
@@ -55,15 +55,8 @@ foldConstantCastPair(
Type *MidTy = Op->getType();
Instruction::CastOps firstOp = Instruction::CastOps(Op->getOpcode());
Instruction::CastOps secondOp = Instruction::CastOps(opc);
-
- // Assume that pointers are never more than 64 bits wide, and only use this
- // for the middle type. Otherwise we could end up folding away illegal
- // bitcasts between address spaces with different sizes.
- IntegerType *FakeIntPtrTy = Type::getInt64Ty(DstTy->getContext());
-
- // Let CastInst::isEliminableCastPair do the heavy lifting.
return CastInst::isEliminableCastPair(firstOp, secondOp, SrcTy, MidTy, DstTy,
- nullptr, FakeIntPtrTy, nullptr);
+ /*DL=*/nullptr);
}
static Constant *FoldBitCast(Constant *V, Type *DestTy) {
diff --git a/llvm/lib/IR/Core.cpp b/llvm/lib/IR/Core.cpp
index df0c85b..3f1cc1e 100644
--- a/llvm/lib/IR/Core.cpp
+++ b/llvm/lib/IR/Core.cpp
@@ -2403,6 +2403,14 @@ LLVMValueRef LLVMAddFunction(LLVMModuleRef M, const char *Name,
GlobalValue::ExternalLinkage, Name, unwrap(M)));
}
+LLVMValueRef LLVMGetOrInsertFunction(LLVMModuleRef M, const char *Name,
+ size_t NameLen, LLVMTypeRef FunctionTy) {
+ return wrap(unwrap(M)
+ ->getOrInsertFunction(StringRef(Name, NameLen),
+ unwrap<FunctionType>(FunctionTy))
+ .getCallee());
+}
+
LLVMValueRef LLVMGetNamedFunction(LLVMModuleRef M, const char *Name) {
return wrap(unwrap(M)->getFunction(Name));
}
diff --git a/llvm/lib/IR/Instructions.cpp b/llvm/lib/IR/Instructions.cpp
index 941e41f..88e7c44 100644
--- a/llvm/lib/IR/Instructions.cpp
+++ b/llvm/lib/IR/Instructions.cpp
@@ -2824,10 +2824,10 @@ bool CastInst::isNoopCast(const DataLayout &DL) const {
/// The function returns a resultOpcode so these two casts can be replaced with:
/// * %Replacement = resultOpcode %SrcTy %x to DstTy
/// If no such cast is permitted, the function returns 0.
-unsigned CastInst::isEliminableCastPair(
- Instruction::CastOps firstOp, Instruction::CastOps secondOp,
- Type *SrcTy, Type *MidTy, Type *DstTy, Type *SrcIntPtrTy, Type *MidIntPtrTy,
- Type *DstIntPtrTy) {
+unsigned CastInst::isEliminableCastPair(Instruction::CastOps firstOp,
+ Instruction::CastOps secondOp,
+ Type *SrcTy, Type *MidTy, Type *DstTy,
+ const DataLayout *DL) {
// Define the 144 possibilities for these two cast instructions. The values
// in this matrix determine what to do in a given situation and select the
// case in the switch below. The rows correspond to firstOp, the columns
@@ -2936,24 +2936,16 @@ unsigned CastInst::isEliminableCastPair(
return 0;
// Cannot simplify if address spaces are different!
- if (SrcTy->getPointerAddressSpace() != DstTy->getPointerAddressSpace())
+ if (SrcTy != DstTy)
return 0;
- unsigned MidSize = MidTy->getScalarSizeInBits();
- // We can still fold this without knowing the actual sizes as long we
- // know that the intermediate pointer is the largest possible
+ // Cannot simplify if the intermediate integer size is smaller than the
// pointer size.
- // FIXME: Is this always true?
- if (MidSize == 64)
- return Instruction::BitCast;
-
- // ptrtoint, inttoptr -> bitcast (ptr -> ptr) if int size is >= ptr size.
- if (!SrcIntPtrTy || DstIntPtrTy != SrcIntPtrTy)
+ unsigned MidSize = MidTy->getScalarSizeInBits();
+ if (!DL || MidSize < DL->getPointerTypeSizeInBits(SrcTy))
return 0;
- unsigned PtrSize = SrcIntPtrTy->getScalarSizeInBits();
- if (MidSize >= PtrSize)
- return Instruction::BitCast;
- return 0;
+
+ return Instruction::BitCast;
}
case 8: {
// ext, trunc -> bitcast, if the SrcTy and DstTy are the same
@@ -2973,14 +2965,17 @@ unsigned CastInst::isEliminableCastPair(
// zext, sext -> zext, because sext can't sign extend after zext
return Instruction::ZExt;
case 11: {
- // inttoptr, ptrtoint/ptrtoaddr -> bitcast if SrcSize<=PtrSize and
- // SrcSize==DstSize
- if (!MidIntPtrTy)
+ // inttoptr, ptrtoint/ptrtoaddr -> bitcast if SrcSize<=PtrSize/AddrSize
+ // and SrcSize==DstSize
+ if (!DL)
return 0;
- unsigned PtrSize = MidIntPtrTy->getScalarSizeInBits();
+ unsigned MidSize = secondOp == Instruction::PtrToAddr
+ ? DL->getAddressSizeInBits(MidTy)
+ : DL->getPointerTypeSizeInBits(MidTy);
unsigned SrcSize = SrcTy->getScalarSizeInBits();
unsigned DstSize = DstTy->getScalarSizeInBits();
- if (SrcSize <= PtrSize && SrcSize == DstSize)
+ // TODO: Could also produce zext or trunc here.
+ if (SrcSize <= MidSize && SrcSize == DstSize)
return Instruction::BitCast;
return 0;
}
diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp
index 6b3cd27..71a8a38 100644
--- a/llvm/lib/IR/Verifier.cpp
+++ b/llvm/lib/IR/Verifier.cpp
@@ -543,6 +543,7 @@ private:
void visitAliasScopeListMetadata(const MDNode *MD);
void visitAccessGroupMetadata(const MDNode *MD);
void visitCapturesMetadata(Instruction &I, const MDNode *Captures);
+ void visitAllocTokenMetadata(Instruction &I, MDNode *MD);
template <class Ty> bool isValidMetadataArray(const MDTuple &N);
#define HANDLE_SPECIALIZED_MDNODE_LEAF(CLASS) void visit##CLASS(const CLASS &N);
@@ -5395,6 +5396,12 @@ void Verifier::visitCapturesMetadata(Instruction &I, const MDNode *Captures) {
}
}
+void Verifier::visitAllocTokenMetadata(Instruction &I, MDNode *MD) {
+ Check(isa<CallBase>(I), "!alloc_token should only exist on calls", &I);
+ Check(MD->getNumOperands() == 1, "!alloc_token must have 1 operand", MD);
+ Check(isa<MDString>(MD->getOperand(0)), "expected string", MD);
+}
+
/// verifyInstruction - Verify that an instruction is well formed.
///
void Verifier::visitInstruction(Instruction &I) {
@@ -5625,6 +5632,9 @@ void Verifier::visitInstruction(Instruction &I) {
if (MDNode *Captures = I.getMetadata(LLVMContext::MD_captures))
visitCapturesMetadata(I, Captures);
+ if (MDNode *MD = I.getMetadata(LLVMContext::MD_alloc_token))
+ visitAllocTokenMetadata(I, MD);
+
if (MDNode *N = I.getDebugLoc().getAsMDNode()) {
CheckDI(isa<DILocation>(N), "invalid !dbg metadata attachment", &I, N);
visitMDNode(*N, AreDebugLocsAllowed::Yes);
diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp
index c234623..20dcde8 100644
--- a/llvm/lib/Passes/PassBuilder.cpp
+++ b/llvm/lib/Passes/PassBuilder.cpp
@@ -240,6 +240,7 @@
#include "llvm/Transforms/IPO/WholeProgramDevirt.h"
#include "llvm/Transforms/InstCombine/InstCombine.h"
#include "llvm/Transforms/Instrumentation/AddressSanitizer.h"
+#include "llvm/Transforms/Instrumentation/AllocToken.h"
#include "llvm/Transforms/Instrumentation/BoundsChecking.h"
#include "llvm/Transforms/Instrumentation/CGProfile.h"
#include "llvm/Transforms/Instrumentation/ControlHeightReduction.h"
diff --git a/llvm/lib/Passes/PassRegistry.def b/llvm/lib/Passes/PassRegistry.def
index 88550ea..c5c0d64 100644
--- a/llvm/lib/Passes/PassRegistry.def
+++ b/llvm/lib/Passes/PassRegistry.def
@@ -125,6 +125,7 @@ MODULE_PASS("openmp-opt", OpenMPOptPass())
MODULE_PASS("openmp-opt-postlink",
OpenMPOptPass(ThinOrFullLTOPhase::FullLTOPostLink))
MODULE_PASS("partial-inliner", PartialInlinerPass())
+MODULE_PASS("alloc-token", AllocTokenPass())
MODULE_PASS("pgo-icall-prom", PGOIndirectCallPromotion())
MODULE_PASS("pgo-instr-gen", PGOInstrumentationGen())
MODULE_PASS("pgo-instr-use", PGOInstrumentationUse())
diff --git a/llvm/lib/Support/SpecialCaseList.cpp b/llvm/lib/Support/SpecialCaseList.cpp
index 8d4e043..04f092b 100644
--- a/llvm/lib/Support/SpecialCaseList.cpp
+++ b/llvm/lib/Support/SpecialCaseList.cpp
@@ -15,9 +15,12 @@
#include "llvm/Support/SpecialCaseList.h"
#include "llvm/ADT/STLExtras.h"
+#include "llvm/ADT/StringExtras.h"
+#include "llvm/ADT/StringRef.h"
#include "llvm/Support/LineIterator.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/VirtualFileSystem.h"
+#include <limits>
#include <stdio.h>
#include <string>
#include <system_error>
@@ -135,7 +138,7 @@ SpecialCaseList::addSection(StringRef SectionStr, unsigned FileNo,
Sections.emplace_back(SectionStr, FileNo);
auto &Section = Sections.back();
- if (auto Err = Section.SectionMatcher->insert(SectionStr, LineNo, UseGlobs)) {
+ if (auto Err = Section.SectionMatcher.insert(SectionStr, LineNo, UseGlobs)) {
return createStringError(errc::invalid_argument,
"malformed section at line " + Twine(LineNo) +
": '" + SectionStr +
@@ -147,19 +150,25 @@ SpecialCaseList::addSection(StringRef SectionStr, unsigned FileNo,
bool SpecialCaseList::parse(unsigned FileIdx, const MemoryBuffer *MB,
std::string &Error) {
+ unsigned long long Version = 2;
+
+ StringRef Header = MB->getBuffer();
+ if (Header.consume_front("#!special-case-list-v"))
+ consumeUnsignedInteger(Header, 10, Version);
+
+ // In https://reviews.llvm.org/D154014 we added glob support and planned
+ // to remove regex support in patterns. We temporarily support the
+ // original behavior using regexes if "#!special-case-list-v1" is the
+ // first line of the file. For more details, see
+ // https://discourse.llvm.org/t/use-glob-instead-of-regex-for-specialcaselists/71666
+ bool UseGlobs = Version > 1;
+
Section *CurrentSection;
if (auto Err = addSection("*", FileIdx, 1).moveInto(CurrentSection)) {
Error = toString(std::move(Err));
return false;
}
- // In https://reviews.llvm.org/D154014 we added glob support and planned to
- // remove regex support in patterns. We temporarily support the original
- // behavior using regexes if "#!special-case-list-v1" is the first line of the
- // file. For more details, see
- // https://discourse.llvm.org/t/use-glob-instead-of-regex-for-specialcaselists/71666
- bool UseGlobs = !MB->getBuffer().starts_with("#!special-case-list-v1\n");
-
for (line_iterator LineIt(*MB, /*SkipBlanks=*/true, /*CommentMarker=*/'#');
!LineIt.is_at_eof(); LineIt++) {
unsigned LineNo = LineIt.line_number();
@@ -218,8 +227,8 @@ std::pair<unsigned, unsigned>
SpecialCaseList::inSectionBlame(StringRef Section, StringRef Prefix,
StringRef Query, StringRef Category) const {
for (const auto &S : reverse(Sections)) {
- if (S.SectionMatcher->match(Section)) {
- unsigned Blame = inSectionBlame(S.Entries, Prefix, Query, Category);
+ if (S.SectionMatcher.match(Section)) {
+ unsigned Blame = S.getLastMatch(Prefix, Query, Category);
if (Blame)
return {S.FileIdx, Blame};
}
@@ -227,9 +236,9 @@ SpecialCaseList::inSectionBlame(StringRef Section, StringRef Prefix,
return NotFound;
}
-unsigned SpecialCaseList::inSectionBlame(const SectionEntries &Entries,
- StringRef Prefix, StringRef Query,
- StringRef Category) const {
+unsigned SpecialCaseList::Section::getLastMatch(StringRef Prefix,
+ StringRef Query,
+ StringRef Category) const {
SectionEntries::const_iterator I = Entries.find(Prefix);
if (I == Entries.end())
return 0;
diff --git a/llvm/lib/Target/AArch64/GISel/AArch64RegisterBankInfo.cpp b/llvm/lib/Target/AArch64/GISel/AArch64RegisterBankInfo.cpp
index f90bcc7..830a35bb 100644
--- a/llvm/lib/Target/AArch64/GISel/AArch64RegisterBankInfo.cpp
+++ b/llvm/lib/Target/AArch64/GISel/AArch64RegisterBankInfo.cpp
@@ -590,6 +590,8 @@ bool AArch64RegisterBankInfo::onlyDefinesFP(const MachineInstr &MI,
unsigned Depth) const {
switch (MI.getOpcode()) {
case AArch64::G_DUP:
+ case AArch64::G_SADDLP:
+ case AArch64::G_UADDLP:
case TargetOpcode::G_SITOFP:
case TargetOpcode::G_UITOFP:
case TargetOpcode::G_EXTRACT_VECTOR_ELT:
@@ -798,6 +800,8 @@ AArch64RegisterBankInfo::getInstrMapping(const MachineInstr &MI) const {
if (Ty.isVector())
OpRegBankIdx[Idx] = PMI_FirstFPR;
else if (isPreISelGenericFloatingPointOpcode(Opc) ||
+ (MO.isDef() && onlyDefinesFP(MI, MRI, TRI)) ||
+ (MO.isUse() && onlyUsesFP(MI, MRI, TRI)) ||
Ty.getSizeInBits() > 64)
OpRegBankIdx[Idx] = PMI_FirstFPR;
else
diff --git a/llvm/lib/Target/AMDGPU/AMDGPU.td b/llvm/lib/Target/AMDGPU/AMDGPU.td
index 1a697f7..502a8e8 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPU.td
+++ b/llvm/lib/Target/AMDGPU/AMDGPU.td
@@ -2592,6 +2592,9 @@ def UseFakeTrue16Insts : True16PredicateClass<"Subtarget->hasTrue16BitInsts() &&
// FIXME When we default to RealTrue16 instead of Fake, change the line as follows.
// AssemblerPredicate<(all_of FeatureTrue16BitInsts, (not FeatureRealTrue16Insts))>;
+def UseTrue16WithSramECC : True16PredicateClass<"Subtarget->useRealTrue16Insts() && "
+ "!Subtarget->d16PreservesUnusedBits()">;
+
def HasD16Writes32BitVgpr: Predicate<"Subtarget->hasD16Writes32BitVgpr()">,
AssemblerPredicate<(all_of FeatureTrue16BitInsts, FeatureRealTrue16Insts, FeatureD16Writes32BitVgpr)>;
def NotHasD16Writes32BitVgpr: Predicate<"!Subtarget->hasD16Writes32BitVgpr()">,
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAttributor.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAttributor.cpp
index cb49936..65d049e 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUAttributor.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUAttributor.cpp
@@ -1504,7 +1504,6 @@ static bool runImpl(Module &M, AnalysisGetter &AG, TargetMachine &TM,
A.getOrCreateAAFor<AAAMDAttributes>(IRPosition::function(*F));
A.getOrCreateAAFor<AAUniformWorkGroupSize>(IRPosition::function(*F));
A.getOrCreateAAFor<AAAMDMaxNumWorkgroups>(IRPosition::function(*F));
- A.getOrCreateAAFor<AAAMDGPUNoAGPR>(IRPosition::function(*F));
CallingConv::ID CC = F->getCallingConv();
if (!AMDGPU::isEntryFunctionCC(CC)) {
A.getOrCreateAAFor<AAAMDFlatWorkGroupSize>(IRPosition::function(*F));
@@ -1515,6 +1514,9 @@ static bool runImpl(Module &M, AnalysisGetter &AG, TargetMachine &TM,
if (!F->isDeclaration() && ST.hasClusters())
A.getOrCreateAAFor<AAAMDGPUClusterDims>(IRPosition::function(*F));
+ if (ST.hasGFX90AInsts())
+ A.getOrCreateAAFor<AAAMDGPUNoAGPR>(IRPosition::function(*F));
+
for (auto &I : instructions(F)) {
Value *Ptr = nullptr;
if (auto *LI = dyn_cast<LoadInst>(&I))
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
index 280fbe2..723d07e 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
@@ -929,8 +929,10 @@ void AMDGPUTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
ThinOrFullLTOPhase Phase) {
if (Level != OptimizationLevel::O0) {
if (!isLTOPreLink(Phase)) {
- AMDGPUAttributorOptions Opts;
- MPM.addPass(AMDGPUAttributorPass(*this, Opts, Phase));
+ if (getTargetTriple().isAMDGCN()) {
+ AMDGPUAttributorOptions Opts;
+ MPM.addPass(AMDGPUAttributorPass(*this, Opts, Phase));
+ }
}
}
});
@@ -1296,7 +1298,8 @@ void AMDGPUPassConfig::addIRPasses() {
if (LowerCtorDtor)
addPass(createAMDGPUCtorDtorLoweringLegacyPass());
- if (isPassEnabled(EnableImageIntrinsicOptimizer))
+ if (TM.getTargetTriple().isAMDGCN() &&
+ isPassEnabled(EnableImageIntrinsicOptimizer))
addPass(createAMDGPUImageIntrinsicOptimizerPass(&TM));
// This can be disabled by passing ::Disable here or on the command line
diff --git a/llvm/lib/Target/AMDGPU/DSInstructions.td b/llvm/lib/Target/AMDGPU/DSInstructions.td
index b2ff5a1..18582ed 100644
--- a/llvm/lib/Target/AMDGPU/DSInstructions.td
+++ b/llvm/lib/Target/AMDGPU/DSInstructions.td
@@ -951,6 +951,11 @@ class DSReadPat <DS_Pseudo inst, ValueType vt, PatFrag frag, int gds=0> : GCNPat
(inst $ptr, Offset:$offset, (i1 gds))
>;
+class DSReadPat_t16 <DS_Pseudo inst, ValueType vt, PatFrag frag, int gds=0> : GCNPat <
+ (vt (frag (DS1Addr1Offset i32:$ptr, i32:$offset))),
+ (EXTRACT_SUBREG (inst $ptr, Offset:$offset, (i1 gds)), lo16)
+>;
+
multiclass DSReadPat_mc<DS_Pseudo inst, ValueType vt, string frag> {
let OtherPredicates = [LDSRequiresM0Init] in {
@@ -968,13 +973,14 @@ multiclass DSReadPat_t16<DS_Pseudo inst, ValueType vt, string frag> {
def : DSReadPat<inst, vt, !cast<PatFrag>(frag#"_m0")>;
}
- let OtherPredicates = [NotLDSRequiresM0Init] in {
- let True16Predicate = NotUseRealTrue16Insts in {
- def : DSReadPat<!cast<DS_Pseudo>(!cast<string>(inst)#"_gfx9"), vt, !cast<PatFrag>(frag)>;
- }
- let True16Predicate = UseRealTrue16Insts in {
- def : DSReadPat<!cast<DS_Pseudo>(!cast<string>(inst)#"_t16"), vt, !cast<PatFrag>(frag)>;
- }
+ let OtherPredicates = [NotLDSRequiresM0Init], True16Predicate = NotUseRealTrue16Insts in {
+ def : DSReadPat<!cast<DS_Pseudo>(!cast<string>(inst)#"_gfx9"), vt, !cast<PatFrag>(frag)>;
+ }
+ let OtherPredicates = [NotLDSRequiresM0Init, D16PreservesUnusedBits], True16Predicate = UseRealTrue16Insts in {
+ def : DSReadPat<!cast<DS_Pseudo>(!cast<string>(inst)#"_t16"), vt, !cast<PatFrag>(frag)>;
+ }
+ let OtherPredicates = [NotLDSRequiresM0Init], True16Predicate = UseTrue16WithSramECC in {
+ def : DSReadPat_t16<!cast<DS_Pseudo>(!cast<string>(inst)#"_gfx9"), vt, !cast<PatFrag>(frag)>;
}
}
diff --git a/llvm/lib/Target/AMDGPU/FLATInstructions.td b/llvm/lib/Target/AMDGPU/FLATInstructions.td
index 5a22b23..e86816d 100644
--- a/llvm/lib/Target/AMDGPU/FLATInstructions.td
+++ b/llvm/lib/Target/AMDGPU/FLATInstructions.td
@@ -1383,6 +1383,11 @@ class FlatLoadPat_D16_t16 <FLAT_Pseudo inst, SDPatternOperator node, ValueType v
(inst $vaddr, $offset, (i32 0))
>;
+class FlatLoadPat_t16 <FLAT_Pseudo inst, SDPatternOperator node, ValueType vt> : GCNPat <
+ (vt (node (FlatOffset i64:$vaddr, i32:$offset))),
+ (EXTRACT_SUBREG (inst $vaddr, $offset), lo16)
+>;
+
class FlatSignedLoadPat_D16 <FLAT_Pseudo inst, SDPatternOperator node, ValueType vt> : GCNPat <
(node (GlobalOffset (i64 VReg_64:$vaddr), i32:$offset), vt:$in),
(inst $vaddr, $offset, 0, $in)
@@ -1393,6 +1398,11 @@ class FlatSignedLoadPat_D16_t16 <FLAT_Pseudo inst, SDPatternOperator node, Value
(inst $vaddr, $offset, (i32 0))
>;
+class FlatSignedLoadPat_t16 <FLAT_Pseudo inst, SDPatternOperator node, ValueType vt> : GCNPat <
+ (vt (node (GlobalOffset (i64 VReg_64:$vaddr), i32:$offset))),
+ (EXTRACT_SUBREG (inst $vaddr, $offset, (i32 0)), lo16)
+>;
+
class GlobalLoadSaddrPat_D16 <FLAT_Pseudo inst, SDPatternOperator node, ValueType vt> : GCNPat <
(vt (node (GlobalSAddr (i64 SReg_64:$saddr), (i32 VGPR_32:$voffset), i32:$offset, CPol:$cpol), vt:$in)),
(inst $saddr, $voffset, $offset, $cpol, $in)
@@ -1408,6 +1418,11 @@ class FlatLoadSaddrPat_D16_t16 <FLAT_Pseudo inst, SDPatternOperator node, ValueT
(inst $saddr, $voffset, $offset, $cpol)
>;
+class FlatLoadSaddrPat_t16 <FLAT_Pseudo inst, SDPatternOperator node, ValueType vt> : GCNPat <
+ (vt (node (GlobalSAddr (i64 SReg_64:$saddr), (i32 VGPR_32:$voffset), i32:$offset, CPol:$cpol))),
+ (EXTRACT_SUBREG (inst $saddr, $voffset, $offset, $cpol), lo16)
+>;
+
class FlatLoadLDSSignedPat_M0 <FLAT_Pseudo inst, SDPatternOperator node> : GCNPat <
(node (i64 VReg_64:$vaddr), (i32 VGPR_32:$dsaddr), (i32 timm:$offset), (i32 timm:$cpol), M0),
(inst $dsaddr, $vaddr, $offset, $cpol)
@@ -1443,6 +1458,11 @@ class GlobalLoadSaddrPat_D16_t16 <FLAT_Pseudo inst, SDPatternOperator node, Valu
(inst $saddr, $voffset, $offset, $cpol)
>;
+class GlobalLoadSaddrPat_t16 <FLAT_Pseudo inst, SDPatternOperator node, ValueType vt> : GCNPat <
+ (vt (node (GlobalSAddr (i64 SReg_64:$saddr), (i32 VGPR_32:$voffset), i32:$offset, CPol:$cpol))),
+ (EXTRACT_SUBREG (inst $saddr, $voffset, $offset, $cpol), lo16)
+>;
+
class FlatLoadSignedPat <FLAT_Pseudo inst, SDPatternOperator node, ValueType vt> : GCNPat <
(vt (node (GlobalOffset (i64 VReg_64:$vaddr), i32:$offset))),
(inst $vaddr, $offset)
@@ -1625,6 +1645,11 @@ class ScratchLoadSignedPat_D16_t16 <FLAT_Pseudo inst, SDPatternOperator node, Va
(inst $vaddr, $offset, 0)
>;
+class ScratchLoadSignedPat_t16 <FLAT_Pseudo inst, SDPatternOperator node, ValueType vt> : GCNPat <
+ (vt (node (ScratchOffset (i32 VGPR_32:$vaddr), i32:$offset))),
+ (EXTRACT_SUBREG (inst $vaddr, $offset), lo16)
+>;
+
class ScratchStoreSignedPat <FLAT_Pseudo inst, SDPatternOperator node, ValueType vt> : GCNPat <
(node vt:$data, (ScratchOffset (i32 VGPR_32:$vaddr), i32:$offset)),
(inst getVregSrcForVT<vt>.ret:$data, $vaddr, $offset)
@@ -1645,6 +1670,11 @@ class ScratchLoadSaddrPat_D16_t16 <FLAT_Pseudo inst, SDPatternOperator node, Val
(inst $saddr, $offset, 0)
>;
+class ScratchLoadSaddrPat_t16 <FLAT_Pseudo inst, SDPatternOperator node, ValueType vt> : GCNPat <
+ (vt (node (ScratchSAddr (i32 SGPR_32:$saddr), i32:$offset))),
+ (EXTRACT_SUBREG (inst $saddr, $offset), lo16)
+>;
+
class ScratchStoreSaddrPat <FLAT_Pseudo inst, SDPatternOperator node,
ValueType vt> : GCNPat <
(node vt:$data, (ScratchSAddr (i32 SGPR_32:$saddr), i32:$offset)),
@@ -1672,6 +1702,11 @@ class ScratchLoadSVaddrPat_D16_t16 <FLAT_Pseudo inst, SDPatternOperator node, Va
(inst $vaddr, $saddr, $offset, $cpol)
>;
+class ScratchLoadSVaddrPat_t16 <FLAT_Pseudo inst, SDPatternOperator node, ValueType vt> : GCNPat <
+ (vt (node (ScratchSVAddr (i32 VGPR_32:$vaddr), (i32 SGPR_32:$saddr), i32:$offset, CPol:$cpol))),
+ (EXTRACT_SUBREG (inst $vaddr, $saddr, $offset, $cpol), lo16)
+>;
+
multiclass GlobalLoadLDSPats_M0<FLAT_Pseudo inst, SDPatternOperator node> {
def : FlatLoadLDSSignedPat_M0 <inst, node> {
let AddedComplexity = 10;
@@ -1764,6 +1799,16 @@ multiclass GlobalFLATLoadPats_D16_t16<string inst, SDPatternOperator node, Value
}
}
+multiclass GlobalFLATLoadPats_t16<FLAT_Pseudo inst, SDPatternOperator node, ValueType vt> {
+ def : FlatSignedLoadPat_t16<inst, node, vt> {
+ let AddedComplexity = 10;
+ }
+
+ def : GlobalLoadSaddrPat_t16<!cast<FLAT_Pseudo>(!cast<string>(inst)#"_SADDR"), node, vt> {
+ let AddedComplexity = 11;
+ }
+}
+
multiclass GlobalFLATStorePats<FLAT_Pseudo inst, SDPatternOperator node,
ValueType vt> {
def : FlatStoreSignedPat <inst, node, vt> {
@@ -1872,8 +1917,8 @@ multiclass ScratchFLATStorePats<FLAT_Pseudo inst, SDPatternOperator node,
}
}
-multiclass ScratchFLATStorePats_t16<string inst, SDPatternOperator node,
- ValueType vt> {
+multiclass ScratchFLATStorePats_D16_t16<string inst, SDPatternOperator node,
+ ValueType vt> {
def : ScratchStoreSignedPat <!cast<FLAT_Pseudo>(inst#"_t16"), node, vt> {
let AddedComplexity = 25;
}
@@ -1918,6 +1963,21 @@ multiclass ScratchFLATLoadPats_D16_t16<string inst, SDPatternOperator node, Valu
}
}
+multiclass ScratchFLATLoadPats_t16<FLAT_Pseudo inst, SDPatternOperator node, ValueType vt> {
+ def : ScratchLoadSignedPat_t16 <inst, node, vt> {
+ let AddedComplexity = 25;
+ }
+
+ def : ScratchLoadSaddrPat_t16<!cast<FLAT_Pseudo>(!cast<string>(inst)#"_SADDR"), node, vt> {
+ let AddedComplexity = 26;
+ }
+
+ def : ScratchLoadSVaddrPat_t16<!cast<FLAT_Pseudo>(!cast<string>(inst)#"_SVS"), node, vt> {
+ let SubtargetPredicate = HasFlatScratchSVSMode;
+ let AddedComplexity = 27;
+ }
+}
+
multiclass FlatLoadPats<FLAT_Pseudo inst, SDPatternOperator node, ValueType vt> {
def : FlatLoadPat <inst, node, vt> {
let OtherPredicates = [HasFlatAddressSpace];
@@ -1947,6 +2007,17 @@ multiclass FlatLoadPats_D16_t16<FLAT_Pseudo inst, SDPatternOperator node, ValueT
}
}
+multiclass FlatLoadPats_t16<FLAT_Pseudo inst, SDPatternOperator node, ValueType vt> {
+ def : FlatLoadPat_t16 <inst, node, vt> {
+ let OtherPredicates = [HasFlatAddressSpace];
+ }
+
+ def : FlatLoadSaddrPat_t16<!cast<FLAT_Pseudo>(!cast<string>(inst)#"_SADDR"), node, vt> {
+ let AddedComplexity = 9;
+ let SubtargetPredicate = HasFlatGVSMode;
+ }
+}
+
multiclass FlatStorePats<FLAT_Pseudo inst, SDPatternOperator node, ValueType vt> {
def : FlatStorePat <inst, node, vt> {
let OtherPredicates = [HasFlatAddressSpace];
@@ -1997,6 +2068,17 @@ let True16Predicate = NotUseRealTrue16Insts in {
defm : FlatStorePats <FLAT_STORE_SHORT, atomic_store_16_flat, i16>;
}
+let True16Predicate = UseTrue16WithSramECC in {
+ defm : FlatLoadPats_t16 <FLAT_LOAD_UBYTE, extloadi8_flat, i16>;
+ defm : FlatLoadPats_t16 <FLAT_LOAD_UBYTE, zextloadi8_flat, i16>;
+ defm : FlatLoadPats_t16 <FLAT_LOAD_SBYTE, sextloadi8_flat, i16>;
+ defm : FlatLoadPats_t16 <FLAT_LOAD_USHORT, load_flat, i16>;
+ defm : FlatLoadPats_t16 <FLAT_LOAD_UBYTE, atomic_load_aext_8_flat, i16>;
+ defm : FlatLoadPats_t16 <FLAT_LOAD_UBYTE, atomic_load_zext_8_flat, i16>;
+ defm : FlatLoadPats_t16 <FLAT_LOAD_USHORT, atomic_load_nonext_16_flat, i16>;
+ defm : FlatLoadPats_t16 <FLAT_LOAD_SBYTE, atomic_load_sext_8_flat, i16>;
+}
+
let OtherPredicates = [D16PreservesUnusedBits, HasFlatAddressSpace], True16Predicate = UseRealTrue16Insts in {
defm : FlatLoadPats_D16_t16<FLAT_LOAD_UBYTE_D16_t16, extloadi8_flat, i16>;
defm : FlatLoadPats_D16_t16<FLAT_LOAD_UBYTE_D16_t16, zextloadi8_flat, i16>;
@@ -2006,11 +2088,14 @@ let OtherPredicates = [D16PreservesUnusedBits, HasFlatAddressSpace], True16Predi
defm : FlatLoadPats_D16_t16<FLAT_LOAD_UBYTE_D16_t16, atomic_load_zext_8_flat, i16>;
defm : FlatLoadPats_D16_t16<FLAT_LOAD_SHORT_D16_t16, atomic_load_nonext_16_flat, i16>;
defm : FlatLoadPats_D16_t16<FLAT_LOAD_SBYTE_D16_t16, atomic_load_sext_8_flat, i16>;
+} // End let OtherPredicates = [D16PreservesUnusedBits, HasFlatAddressSpace], True16Predicate = UseRealTrue16Insts
+
+let OtherPredicates = [D16PreservesUnusedBits], True16Predicate = UseRealTrue16Insts in {
defm : FlatStorePats_t16 <FLAT_STORE_BYTE, truncstorei8_flat, i16>;
defm : FlatStorePats_t16 <FLAT_STORE_SHORT, store_flat, i16>;
defm : FlatStorePats_t16 <FLAT_STORE_BYTE, atomic_store_8_flat, i16>;
defm : FlatStorePats_t16 <FLAT_STORE_SHORT, atomic_store_16_flat, i16>;
-} // End let OtherPredicates = [D16PreservesUnusedBits, HasFlatAddressSpace], True16Predicate = UseRealTrue16Insts
+}
defm : FlatLoadPats <FLAT_LOAD_DWORD, atomic_load_nonext_32_flat, i32>;
defm : FlatLoadPats <FLAT_LOAD_DWORDX2, atomic_load_nonext_64_flat, i64>;
@@ -2140,6 +2225,20 @@ defm : GlobalFLATLoadPats <GLOBAL_LOAD_USHORT, atomic_load_nonext_16_global, i16
defm : GlobalFLATLoadPats <GLOBAL_LOAD_USHORT, atomic_load_zext_16_global, i16>;
}
+let True16Predicate = UseTrue16WithSramECC in {
+defm : GlobalFLATLoadPats_t16 <GLOBAL_LOAD_UBYTE, extloadi8_global, i16>;
+defm : GlobalFLATLoadPats_t16 <GLOBAL_LOAD_UBYTE, zextloadi8_global, i16>;
+defm : GlobalFLATLoadPats_t16 <GLOBAL_LOAD_SBYTE, sextloadi8_global, i16>;
+defm : GlobalFLATLoadPats_t16 <GLOBAL_LOAD_SSHORT, atomic_load_sext_16_global, i32>;
+defm : GlobalFLATLoadPats_t16 <GLOBAL_LOAD_USHORT, atomic_load_zext_16_global, i32>;
+defm : GlobalFLATLoadPats_t16 <GLOBAL_LOAD_USHORT, load_global, i16>;
+defm : GlobalFLATLoadPats_t16 <GLOBAL_LOAD_UBYTE, atomic_load_aext_8_global, i16>;
+defm : GlobalFLATLoadPats_t16 <GLOBAL_LOAD_UBYTE, atomic_load_zext_8_global, i16>;
+defm : GlobalFLATLoadPats_t16 <GLOBAL_LOAD_SBYTE, atomic_load_sext_8_global, i16>;
+defm : GlobalFLATLoadPats_t16 <GLOBAL_LOAD_USHORT, atomic_load_nonext_16_global, i16>;
+defm : GlobalFLATLoadPats_t16 <GLOBAL_LOAD_USHORT, atomic_load_zext_16_global, i16>;
+}
+
let OtherPredicates = [D16PreservesUnusedBits], True16Predicate = UseRealTrue16Insts in {
defm : GlobalFLATLoadPats_D16_t16<"GLOBAL_LOAD_UBYTE_D16", extloadi8_global, i16>;
defm : GlobalFLATLoadPats_D16_t16<"GLOBAL_LOAD_UBYTE_D16", zextloadi8_global, i16>;
@@ -2192,6 +2291,13 @@ defm : GlobalFLATStorePats <GLOBAL_STORE_BYTE, atomic_store_8_global, i16>;
defm : GlobalFLATStorePats <GLOBAL_STORE_SHORT, atomic_store_16_global, i16>;
}
+let OtherPredicates = [HasFlatGlobalInsts], True16Predicate = UseRealTrue16Insts in {
+defm : GlobalFLATStorePats_D16_t16 <"GLOBAL_STORE_BYTE", truncstorei8_global, i16>;
+defm : GlobalFLATStorePats_D16_t16 <"GLOBAL_STORE_SHORT", store_global, i16>;
+defm : GlobalFLATStorePats_D16_t16 <"GLOBAL_STORE_BYTE", atomic_store_8_global, i16>;
+defm : GlobalFLATStorePats_D16_t16 <"GLOBAL_STORE_SHORT", atomic_store_16_global, i16>;
+}
+
let OtherPredicates = [HasD16LoadStore] in {
defm : GlobalFLATStorePats <GLOBAL_STORE_SHORT_D16_HI, truncstorei16_hi16_global, i32>;
defm : GlobalFLATStorePats <GLOBAL_STORE_BYTE_D16_HI, truncstorei8_hi16_global, i32>;
@@ -2362,14 +2468,24 @@ defm : ScratchFLATStorePats <SCRATCH_STORE_SHORT, store_private, i16>;
defm : ScratchFLATStorePats <SCRATCH_STORE_BYTE, truncstorei8_private, i16>;
}
-let True16Predicate = UseRealTrue16Insts in {
+let True16Predicate = UseTrue16WithSramECC in {
+defm : ScratchFLATLoadPats_t16 <SCRATCH_LOAD_UBYTE, extloadi8_private, i16>;
+defm : ScratchFLATLoadPats_t16 <SCRATCH_LOAD_UBYTE, zextloadi8_private, i16>;
+defm : ScratchFLATLoadPats_t16 <SCRATCH_LOAD_SBYTE, sextloadi8_private, i16>;
+defm : ScratchFLATLoadPats_t16 <SCRATCH_LOAD_USHORT, load_private, i16>;
+}
+
+let OtherPredicates = [D16PreservesUnusedBits], True16Predicate = UseRealTrue16Insts in {
defm : ScratchFLATLoadPats_D16_t16<"SCRATCH_LOAD_UBYTE_D16", extloadi8_private, i16>;
defm : ScratchFLATLoadPats_D16_t16<"SCRATCH_LOAD_UBYTE_D16", zextloadi8_private, i16>;
defm : ScratchFLATLoadPats_D16_t16<"SCRATCH_LOAD_SBYTE_D16", sextloadi8_private, i16>;
defm : ScratchFLATLoadPats_D16_t16<"SCRATCH_LOAD_SHORT_D16", load_private, i16>;
-defm : ScratchFLATStorePats_t16 <"SCRATCH_STORE_SHORT", store_private, i16>;
-defm : ScratchFLATStorePats_t16 <"SCRATCH_STORE_BYTE", truncstorei8_private, i16>;
-} // End True16Predicate = UseRealTrue16Insts
+} // End OtherPredicates = [D16PreservesUnusedBits], True16Predicate = UseRealTrue16Insts
+
+let True16Predicate = UseRealTrue16Insts in {
+defm : ScratchFLATStorePats_D16_t16 <"SCRATCH_STORE_SHORT", store_private, i16>;
+defm : ScratchFLATStorePats_D16_t16 <"SCRATCH_STORE_BYTE", truncstorei8_private, i16>;
+}
foreach vt = Reg32Types.types in {
defm : ScratchFLATLoadPats <SCRATCH_LOAD_DWORD, load_private, vt>;
diff --git a/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp b/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp
index 2e8a676..ce1cdb3 100644
--- a/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp
+++ b/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp
@@ -232,6 +232,7 @@ getReservedRegs(const MachineFunction &MF) const {
markSuperRegs(Reserved, ARM::SP);
markSuperRegs(Reserved, ARM::PC);
markSuperRegs(Reserved, ARM::FPSCR);
+ markSuperRegs(Reserved, ARM::FPSCR_RM);
markSuperRegs(Reserved, ARM::APSR_NZCV);
if (TFI->isFPReserved(MF))
markSuperRegs(Reserved, STI.getFramePointerReg());
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
index f4ac6bb..2a40fb9 100644
--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
+++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
@@ -1353,6 +1353,7 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
setOperationAction(ISD::FLOG, MVT::f16, Promote);
setOperationAction(ISD::FLOG10, MVT::f16, Promote);
setOperationAction(ISD::FLOG2, MVT::f16, Promote);
+ setOperationAction(ISD::LRINT, MVT::f16, Expand);
setOperationAction(ISD::FROUND, MVT::f16, Legal);
setOperationAction(ISD::FROUNDEVEN, MVT::f16, Legal);
diff --git a/llvm/lib/Target/ARM/ARMInstrVFP.td b/llvm/lib/Target/ARM/ARMInstrVFP.td
index 31650e0..6771106 100644
--- a/llvm/lib/Target/ARM/ARMInstrVFP.td
+++ b/llvm/lib/Target/ARM/ARMInstrVFP.td
@@ -435,14 +435,14 @@ def : VFP2MnemonicAlias<"fstmfdx", "fstmdbx">;
// FP Binary Operations.
//
-let TwoOperandAliasConstraint = "$Dn = $Dd" in
+let TwoOperandAliasConstraint = "$Dn = $Dd", mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VADDD : ADbI<0b11100, 0b11, 0, 0,
(outs DPR:$Dd), (ins DPR:$Dn, DPR:$Dm),
IIC_fpALU64, "vadd", ".f64\t$Dd, $Dn, $Dm",
[(set DPR:$Dd, (fadd DPR:$Dn, (f64 DPR:$Dm)))]>,
Sched<[WriteFPALU64]>;
-let TwoOperandAliasConstraint = "$Sn = $Sd" in
+let TwoOperandAliasConstraint = "$Sn = $Sd", mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VADDS : ASbIn<0b11100, 0b11, 0, 0,
(outs SPR:$Sd), (ins SPR:$Sn, SPR:$Sm),
IIC_fpALU32, "vadd", ".f32\t$Sd, $Sn, $Sm",
@@ -453,21 +453,21 @@ def VADDS : ASbIn<0b11100, 0b11, 0, 0,
let D = VFPNeonA8Domain;
}
-let TwoOperandAliasConstraint = "$Sn = $Sd" in
+let TwoOperandAliasConstraint = "$Sn = $Sd", mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VADDH : AHbI<0b11100, 0b11, 0, 0,
(outs HPR:$Sd), (ins HPR:$Sn, HPR:$Sm),
IIC_fpALU16, "vadd", ".f16\t$Sd, $Sn, $Sm",
[(set (f16 HPR:$Sd), (fadd (f16 HPR:$Sn), (f16 HPR:$Sm)))]>,
Sched<[WriteFPALU32]>;
-let TwoOperandAliasConstraint = "$Dn = $Dd" in
+let TwoOperandAliasConstraint = "$Dn = $Dd", mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VSUBD : ADbI<0b11100, 0b11, 1, 0,
(outs DPR:$Dd), (ins DPR:$Dn, DPR:$Dm),
IIC_fpALU64, "vsub", ".f64\t$Dd, $Dn, $Dm",
[(set DPR:$Dd, (fsub DPR:$Dn, (f64 DPR:$Dm)))]>,
Sched<[WriteFPALU64]>;
-let TwoOperandAliasConstraint = "$Sn = $Sd" in
+let TwoOperandAliasConstraint = "$Sn = $Sd", mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VSUBS : ASbIn<0b11100, 0b11, 1, 0,
(outs SPR:$Sd), (ins SPR:$Sn, SPR:$Sm),
IIC_fpALU32, "vsub", ".f32\t$Sd, $Sn, $Sm",
@@ -478,42 +478,42 @@ def VSUBS : ASbIn<0b11100, 0b11, 1, 0,
let D = VFPNeonA8Domain;
}
-let TwoOperandAliasConstraint = "$Sn = $Sd" in
+let TwoOperandAliasConstraint = "$Sn = $Sd", mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VSUBH : AHbI<0b11100, 0b11, 1, 0,
(outs HPR:$Sd), (ins HPR:$Sn, HPR:$Sm),
IIC_fpALU16, "vsub", ".f16\t$Sd, $Sn, $Sm",
[(set (f16 HPR:$Sd), (fsub (f16 HPR:$Sn), (f16 HPR:$Sm)))]>,
Sched<[WriteFPALU32]>;
-let TwoOperandAliasConstraint = "$Dn = $Dd" in
+let TwoOperandAliasConstraint = "$Dn = $Dd", mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VDIVD : ADbI<0b11101, 0b00, 0, 0,
(outs DPR:$Dd), (ins DPR:$Dn, DPR:$Dm),
IIC_fpDIV64, "vdiv", ".f64\t$Dd, $Dn, $Dm",
[(set DPR:$Dd, (fdiv DPR:$Dn, (f64 DPR:$Dm)))]>,
Sched<[WriteFPDIV64]>;
-let TwoOperandAliasConstraint = "$Sn = $Sd" in
+let TwoOperandAliasConstraint = "$Sn = $Sd", mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VDIVS : ASbI<0b11101, 0b00, 0, 0,
(outs SPR:$Sd), (ins SPR:$Sn, SPR:$Sm),
IIC_fpDIV32, "vdiv", ".f32\t$Sd, $Sn, $Sm",
[(set SPR:$Sd, (fdiv SPR:$Sn, SPR:$Sm))]>,
Sched<[WriteFPDIV32]>;
-let TwoOperandAliasConstraint = "$Sn = $Sd" in
+let TwoOperandAliasConstraint = "$Sn = $Sd", mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VDIVH : AHbI<0b11101, 0b00, 0, 0,
(outs HPR:$Sd), (ins HPR:$Sn, HPR:$Sm),
IIC_fpDIV16, "vdiv", ".f16\t$Sd, $Sn, $Sm",
[(set (f16 HPR:$Sd), (fdiv (f16 HPR:$Sn), (f16 HPR:$Sm)))]>,
Sched<[WriteFPDIV32]>;
-let TwoOperandAliasConstraint = "$Dn = $Dd" in
+let TwoOperandAliasConstraint = "$Dn = $Dd", mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VMULD : ADbI<0b11100, 0b10, 0, 0,
(outs DPR:$Dd), (ins DPR:$Dn, DPR:$Dm),
IIC_fpMUL64, "vmul", ".f64\t$Dd, $Dn, $Dm",
[(set DPR:$Dd, (fmul DPR:$Dn, (f64 DPR:$Dm)))]>,
Sched<[WriteFPMUL64, ReadFPMUL, ReadFPMUL]>;
-let TwoOperandAliasConstraint = "$Sn = $Sd" in
+let TwoOperandAliasConstraint = "$Sn = $Sd", mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VMULS : ASbIn<0b11100, 0b10, 0, 0,
(outs SPR:$Sd), (ins SPR:$Sn, SPR:$Sm),
IIC_fpMUL32, "vmul", ".f32\t$Sd, $Sn, $Sm",
@@ -524,21 +524,21 @@ def VMULS : ASbIn<0b11100, 0b10, 0, 0,
let D = VFPNeonA8Domain;
}
-let TwoOperandAliasConstraint = "$Sn = $Sd" in
+let TwoOperandAliasConstraint = "$Sn = $Sd", mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VMULH : AHbI<0b11100, 0b10, 0, 0,
(outs HPR:$Sd), (ins HPR:$Sn, HPR:$Sm),
IIC_fpMUL16, "vmul", ".f16\t$Sd, $Sn, $Sm",
[(set (f16 HPR:$Sd), (fmul (f16 HPR:$Sn), (f16 HPR:$Sm)))]>,
Sched<[WriteFPMUL32, ReadFPMUL, ReadFPMUL]>;
-let TwoOperandAliasConstraint = "$Dn = $Dd" in
+let TwoOperandAliasConstraint = "$Dn = $Dd", mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VNMULD : ADbI<0b11100, 0b10, 1, 0,
(outs DPR:$Dd), (ins DPR:$Dn, DPR:$Dm),
IIC_fpMUL64, "vnmul", ".f64\t$Dd, $Dn, $Dm",
[(set DPR:$Dd, (fneg (fmul DPR:$Dn, (f64 DPR:$Dm))))]>,
Sched<[WriteFPMUL64, ReadFPMUL, ReadFPMUL]>;
-let TwoOperandAliasConstraint = "$Sn = $Sd" in
+let TwoOperandAliasConstraint = "$Sn = $Sd", mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VNMULS : ASbI<0b11100, 0b10, 1, 0,
(outs SPR:$Sd), (ins SPR:$Sn, SPR:$Sm),
IIC_fpMUL32, "vnmul", ".f32\t$Sd, $Sn, $Sm",
@@ -549,7 +549,7 @@ def VNMULS : ASbI<0b11100, 0b10, 1, 0,
let D = VFPNeonA8Domain;
}
-let TwoOperandAliasConstraint = "$Sn = $Sd" in
+let TwoOperandAliasConstraint = "$Sn = $Sd", mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VNMULH : AHbI<0b11100, 0b10, 1, 0,
(outs HPR:$Sd), (ins HPR:$Sn, HPR:$Sm),
IIC_fpMUL16, "vnmul", ".f16\t$Sd, $Sn, $Sm",
@@ -589,7 +589,7 @@ defm VSELVS : vsel_inst<"vs", 0b01, 6>;
multiclass vmaxmin_inst<string op, bit opc, SDNode SD> {
let DecoderNamespace = "VFPV8", PostEncoderMethod = "",
- isUnpredicable = 1 in {
+ isUnpredicable = 1, mayRaiseFPException = 1 in {
def H : AHbInp<0b11101, 0b00, opc,
(outs HPR:$Sd), (ins HPR:$Sn, HPR:$Sm),
NoItinerary, !strconcat(op, ".f16\t$Sd, $Sn, $Sm"),
@@ -621,7 +621,7 @@ def : Pat<(fmul (fneg SPR:$a), SPR:$b),
(VNMULS SPR:$a, SPR:$b)>, Requires<[NoHonorSignDependentRounding]>;
// These are encoded as unary instructions.
-let Defs = [FPSCR_NZCV] in {
+let Defs = [FPSCR_NZCV], mayRaiseFPException = 1, Uses = [FPSCR_RM] in {
def VCMPED : ADuI<0b11101, 0b11, 0b0100, 0b11, 0,
(outs), (ins DPR:$Dd, DPR:$Dm),
IIC_fpCMP64, "vcmpe", ".f64\t$Dd, $Dm", "",
@@ -684,7 +684,7 @@ def VABSH : AHuI<0b11101, 0b11, 0b0000, 0b11, 0,
IIC_fpUNA16, "vabs", ".f16\t$Sd, $Sm",
[(set (f16 HPR:$Sd), (fabs (f16 HPR:$Sm)))]>;
-let Defs = [FPSCR_NZCV] in {
+let Defs = [FPSCR_NZCV], mayRaiseFPException = 1, Uses = [FPSCR_RM] in {
def VCMPEZD : ADuI<0b11101, 0b11, 0b0101, 0b11, 0,
(outs), (ins DPR:$Dd),
IIC_fpCMP64, "vcmpe", ".f64\t$Dd, #0", "",
@@ -742,6 +742,7 @@ def VCMPZH : AHuI<0b11101, 0b11, 0b0101, 0b01, 0,
}
} // Defs = [FPSCR_NZCV]
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VCVTDS : ASuI<0b11101, 0b11, 0b0111, 0b11, 0,
(outs DPR:$Dd), (ins SPR:$Sm),
IIC_fpCVTDS, "vcvt", ".f64.f32\t$Dd, $Sm", "",
@@ -762,6 +763,7 @@ def VCVTDS : ASuI<0b11101, 0b11, 0b0111, 0b11, 0,
}
// Special case encoding: bits 11-8 is 0b1011.
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VCVTSD : VFPAI<(outs SPR:$Sd), (ins DPR:$Dm), VFPUnaryFrm,
IIC_fpCVTSD, "vcvt", ".f32.f64\t$Sd, $Dm", "",
[(set SPR:$Sd, (fpround DPR:$Dm))]>,
@@ -787,7 +789,7 @@ def VCVTSD : VFPAI<(outs SPR:$Sd), (ins DPR:$Dm), VFPUnaryFrm,
}
// Between half, single and double-precision.
-let hasSideEffects = 0 in
+let hasSideEffects = 0, mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VCVTBHS: ASuI<0b11101, 0b11, 0b0010, 0b01, 0, (outs SPR:$Sd), (ins SPR:$Sm),
/* FIXME */ IIC_fpCVTSH, "vcvtb", ".f32.f16\t$Sd, $Sm", "",
[/* Intentionally left blank, see patterns below */]>,
@@ -799,7 +801,7 @@ def : FP16Pat<(f32 (fpextend (f16 HPR:$Sm))),
def : FP16Pat<(f16_to_fp GPR:$a),
(VCVTBHS (COPY_TO_REGCLASS GPR:$a, SPR))>;
-let hasSideEffects = 0 in
+let hasSideEffects = 0, mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VCVTBSH: ASuI<0b11101, 0b11, 0b0011, 0b01, 0, (outs SPR:$Sd), (ins SPR:$Sda, SPR:$Sm),
/* FIXME */ IIC_fpCVTHS, "vcvtb", ".f16.f32\t$Sd, $Sm", "$Sd = $Sda",
[/* Intentionally left blank, see patterns below */]>,
@@ -821,7 +823,7 @@ def : FP16Pat<(insertelt (v4f16 DPR:$src1), (f16 (fpround (f32 SPR:$src2))), imm
SPR:$src2),
(SSubReg_f16_reg imm:$lane)))>;
-let hasSideEffects = 0 in
+let hasSideEffects = 0, mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VCVTTHS: ASuI<0b11101, 0b11, 0b0010, 0b11, 0, (outs SPR:$Sd), (ins SPR:$Sm),
/* FIXME */ IIC_fpCVTSH, "vcvtt", ".f32.f16\t$Sd, $Sm", "",
[/* Intentionally left blank, see patterns below */]>,
@@ -835,7 +837,7 @@ def : FP16Pat<(f32 (fpextend (extractelt (v4f16 DPR:$src), imm_odd:$lane))),
(v2f32 (COPY_TO_REGCLASS (v4f16 DPR:$src), DPR_VFP2)),
(SSubReg_f16_reg imm_odd:$lane)))>;
-let hasSideEffects = 0 in
+let hasSideEffects = 0, mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VCVTTSH: ASuI<0b11101, 0b11, 0b0011, 0b11, 0, (outs SPR:$Sd), (ins SPR:$Sda, SPR:$Sm),
/* FIXME */ IIC_fpCVTHS, "vcvtt", ".f16.f32\t$Sd, $Sm", "$Sd = $Sda",
[/* Intentionally left blank, see patterns below */]>,
@@ -853,6 +855,7 @@ def : FP16Pat<(insertelt (v4f16 DPR:$src1), (f16 (fpround (f32 SPR:$src2))), imm
SPR:$src2),
(SSubReg_f16_reg imm:$lane)))>;
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VCVTBHD : ADuI<0b11101, 0b11, 0b0010, 0b01, 0,
(outs DPR:$Dd), (ins SPR:$Sm),
NoItinerary, "vcvtb", ".f64.f16\t$Dd, $Sm", "",
@@ -876,6 +879,7 @@ def : FP16Pat<(f64 (f16_to_fp GPR:$a)),
(VCVTBHD (COPY_TO_REGCLASS GPR:$a, SPR))>,
Requires<[HasFPARMv8, HasDPVFP]>;
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VCVTBDH : ADuI<0b11101, 0b11, 0b0011, 0b01, 0,
(outs SPR:$Sd), (ins SPR:$Sda, DPR:$Dm),
NoItinerary, "vcvtb", ".f16.f64\t$Sd, $Dm", "$Sd = $Sda",
@@ -901,6 +905,7 @@ def : FP16Pat<(fp_to_f16 (f64 DPR:$a)),
(i32 (COPY_TO_REGCLASS (VCVTBDH (IMPLICIT_DEF), DPR:$a), GPR))>,
Requires<[HasFPARMv8, HasDPVFP]>;
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VCVTTHD : ADuI<0b11101, 0b11, 0b0010, 0b11, 0,
(outs DPR:$Dd), (ins SPR:$Sm),
NoItinerary, "vcvtt", ".f64.f16\t$Dd, $Sm", "",
@@ -915,6 +920,7 @@ def VCVTTHD : ADuI<0b11101, 0b11, 0b0010, 0b11, 0,
let hasSideEffects = 0;
}
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VCVTTDH : ADuI<0b11101, 0b11, 0b0011, 0b11, 0,
(outs SPR:$Sd), (ins SPR:$Sda, DPR:$Dm),
NoItinerary, "vcvtt", ".f16.f64\t$Sd, $Dm", "$Sd = $Sda",
@@ -934,7 +940,8 @@ def VCVTTDH : ADuI<0b11101, 0b11, 0b0011, 0b11, 0,
multiclass vcvt_inst<string opc, bits<2> rm,
SDPatternOperator node = null_frag> {
- let PostEncoderMethod = "", DecoderNamespace = "VFPV8", hasSideEffects = 0 in {
+ let PostEncoderMethod = "", DecoderNamespace = "VFPV8", hasSideEffects = 0,
+ mayRaiseFPException = 1 in {
def SH : AHuInp<0b11101, 0b11, 0b1100, 0b11, 0,
(outs SPR:$Sd), (ins HPR:$Sm),
NoItinerary, !strconcat("vcvt", opc, ".s32.f16\t$Sd, $Sm"),
@@ -1055,7 +1062,9 @@ def VNEGH : AHuI<0b11101, 0b11, 0b0001, 0b01, 0,
IIC_fpUNA16, "vneg", ".f16\t$Sd, $Sm",
[(set (f16 HPR:$Sd), (fneg (f16 HPR:$Sm)))]>;
-multiclass vrint_inst_zrx<string opc, bit op, bit op2, SDPatternOperator node> {
+multiclass vrint_inst_zrx<string opc, bit op, bit op2, SDPatternOperator node,
+ list<Register> uses = [], bit fpexc = 0> {
+ let Uses = uses, mayRaiseFPException = fpexc in {
def H : AHuI<0b11101, 0b11, 0b0110, 0b11, 0,
(outs HPR:$Sd), (ins HPR:$Sm),
NoItinerary, !strconcat("vrint", opc), ".f16\t$Sd, $Sm",
@@ -1081,6 +1090,7 @@ multiclass vrint_inst_zrx<string opc, bit op, bit op2, SDPatternOperator node> {
let Inst{7} = op2;
let Inst{16} = op;
}
+ }
def : InstAlias<!strconcat("vrint", opc, "$p.f16.f16\t$Sd, $Sm"),
(!cast<Instruction>(NAME#"H") SPR:$Sd, SPR:$Sm, pred:$p), 0>,
@@ -1093,9 +1103,9 @@ multiclass vrint_inst_zrx<string opc, bit op, bit op2, SDPatternOperator node> {
Requires<[HasFPARMv8,HasDPVFP]>;
}
-defm VRINTZ : vrint_inst_zrx<"z", 0, 1, ftrunc>;
-defm VRINTR : vrint_inst_zrx<"r", 0, 0, fnearbyint>;
-defm VRINTX : vrint_inst_zrx<"x", 1, 0, frint>;
+defm VRINTZ : vrint_inst_zrx<"z", 0, 1, ftrunc, [], 0>;
+defm VRINTR : vrint_inst_zrx<"r", 0, 0, fnearbyint, [FPSCR_RM], 0>;
+defm VRINTX : vrint_inst_zrx<"x", 1, 0, frint, [FPSCR_RM], 1>;
multiclass vrint_inst_anpm<string opc, bits<2> rm,
SDPatternOperator node = null_frag> {
@@ -1140,18 +1150,21 @@ defm VRINTN : vrint_inst_anpm<"n", 0b01, froundeven>;
defm VRINTP : vrint_inst_anpm<"p", 0b10, fceil>;
defm VRINTM : vrint_inst_anpm<"m", 0b11, ffloor>;
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VSQRTD : ADuI<0b11101, 0b11, 0b0001, 0b11, 0,
(outs DPR:$Dd), (ins DPR:$Dm),
IIC_fpSQRT64, "vsqrt", ".f64\t$Dd, $Dm", "",
[(set DPR:$Dd, (fsqrt (f64 DPR:$Dm)))]>,
Sched<[WriteFPSQRT64]>;
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VSQRTS : ASuI<0b11101, 0b11, 0b0001, 0b11, 0,
(outs SPR:$Sd), (ins SPR:$Sm),
IIC_fpSQRT32, "vsqrt", ".f32\t$Sd, $Sm", "",
[(set SPR:$Sd, (fsqrt SPR:$Sm))]>,
Sched<[WriteFPSQRT32]>;
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VSQRTH : AHuI<0b11101, 0b11, 0b0001, 0b11, 0,
(outs HPR:$Sd), (ins HPR:$Sm),
IIC_fpSQRT16, "vsqrt", ".f16\t$Sd, $Sm",
@@ -1486,6 +1499,7 @@ class AVConv1IHs_Encode<bits<5> opcod1, bits<2> opcod2, bits<4> opcod3,
let hasSideEffects = 0;
}
+let mayRaiseFPException = 1 in
def VSITOD : AVConv1IDs_Encode<0b11101, 0b11, 0b1000, 0b1011,
(outs DPR:$Dd), (ins SPR:$Sm),
IIC_fpCVTID, "vcvt", ".f64.s32\t$Dd, $Sm",
@@ -1502,6 +1516,7 @@ let Predicates=[HasVFP2, HasDPVFP] in {
(VSITOD (VLDRS addrmode5:$a))>;
}
+let mayRaiseFPException = 1 in
def VSITOS : AVConv1InSs_Encode<0b11101, 0b11, 0b1000, 0b1010,
(outs SPR:$Sd),(ins SPR:$Sm),
IIC_fpCVTIS, "vcvt", ".f32.s32\t$Sd, $Sm",
@@ -1520,6 +1535,7 @@ def : VFPNoNEONPat<(f32 (sint_to_fp GPR:$a)),
def : VFPNoNEONPat<(f32 (sint_to_fp (i32 (alignedload32 addrmode5:$a)))),
(VSITOS (VLDRS addrmode5:$a))>;
+let mayRaiseFPException = 1 in
def VSITOH : AVConv1IHs_Encode<0b11101, 0b11, 0b1000, 0b1001,
(outs HPR:$Sd), (ins SPR:$Sm),
IIC_fpCVTIH, "vcvt", ".f16.s32\t$Sd, $Sm",
@@ -1532,6 +1548,7 @@ def VSITOH : AVConv1IHs_Encode<0b11101, 0b11, 0b1000, 0b1001,
def : VFPNoNEONPat<(f16 (sint_to_fp GPR:$a)),
(VSITOH (COPY_TO_REGCLASS GPR:$a, SPR))>;
+let mayRaiseFPException = 1 in
def VUITOD : AVConv1IDs_Encode<0b11101, 0b11, 0b1000, 0b1011,
(outs DPR:$Dd), (ins SPR:$Sm),
IIC_fpCVTID, "vcvt", ".f64.u32\t$Dd, $Sm",
@@ -1548,6 +1565,7 @@ let Predicates=[HasVFP2, HasDPVFP] in {
(VUITOD (VLDRS addrmode5:$a))>;
}
+let mayRaiseFPException = 1 in
def VUITOS : AVConv1InSs_Encode<0b11101, 0b11, 0b1000, 0b1010,
(outs SPR:$Sd), (ins SPR:$Sm),
IIC_fpCVTIS, "vcvt", ".f32.u32\t$Sd, $Sm",
@@ -1566,6 +1584,7 @@ def : VFPNoNEONPat<(f32 (uint_to_fp GPR:$a)),
def : VFPNoNEONPat<(f32 (uint_to_fp (i32 (alignedload32 addrmode5:$a)))),
(VUITOS (VLDRS addrmode5:$a))>;
+let mayRaiseFPException = 1 in
def VUITOH : AVConv1IHs_Encode<0b11101, 0b11, 0b1000, 0b1001,
(outs HPR:$Sd), (ins SPR:$Sm),
IIC_fpCVTIH, "vcvt", ".f16.u32\t$Sd, $Sm",
@@ -1640,6 +1659,7 @@ class AVConv1IsH_Encode<bits<5> opcod1, bits<2> opcod2, bits<4> opcod3,
}
// Always set Z bit in the instruction, i.e. "round towards zero" variants.
+let mayRaiseFPException = 1 in
def VTOSIZD : AVConv1IsD_Encode<0b11101, 0b11, 0b1101, 0b1011,
(outs SPR:$Sd), (ins DPR:$Dm),
IIC_fpCVTDI, "vcvt", ".s32.f64\t$Sd, $Dm",
@@ -1660,6 +1680,7 @@ let Predicates=[HasVFP2, HasDPVFP] in {
(VSTRS (VTOSIZD DPR:$a), addrmode5:$ptr)>;
}
+let mayRaiseFPException = 1 in
def VTOSIZS : AVConv1InsS_Encode<0b11101, 0b11, 0b1101, 0b1010,
(outs SPR:$Sd), (ins SPR:$Sm),
IIC_fpCVTSI, "vcvt", ".s32.f32\t$Sd, $Sm",
@@ -1684,6 +1705,7 @@ def : VFPPat<(alignedstore32 (i32 (fp_to_sint_sat (f32 SPR:$a), i32)),
addrmode5:$ptr),
(VSTRS (VTOSIZS SPR:$a), addrmode5:$ptr)>;
+let mayRaiseFPException = 1 in
def VTOSIZH : AVConv1IsH_Encode<0b11101, 0b11, 0b1101, 0b1001,
(outs SPR:$Sd), (ins HPR:$Sm),
IIC_fpCVTHI, "vcvt", ".s32.f16\t$Sd, $Sm",
@@ -1698,6 +1720,7 @@ def : VFPNoNEONPat<(i32 (fp_to_sint (f16 HPR:$a))),
def : VFPPat<(i32 (fp_to_sint_sat (f16 HPR:$a), i32)),
(COPY_TO_REGCLASS (VTOSIZH (f16 HPR:$a)), GPR)>;
+let mayRaiseFPException = 1 in
def VTOUIZD : AVConv1IsD_Encode<0b11101, 0b11, 0b1100, 0b1011,
(outs SPR:$Sd), (ins DPR:$Dm),
IIC_fpCVTDI, "vcvt", ".u32.f64\t$Sd, $Dm",
@@ -1718,6 +1741,7 @@ let Predicates=[HasVFP2, HasDPVFP] in {
(VSTRS (VTOUIZD DPR:$a), addrmode5:$ptr)>;
}
+let mayRaiseFPException = 1 in
def VTOUIZS : AVConv1InsS_Encode<0b11101, 0b11, 0b1100, 0b1010,
(outs SPR:$Sd), (ins SPR:$Sm),
IIC_fpCVTSI, "vcvt", ".u32.f32\t$Sd, $Sm",
@@ -1742,6 +1766,7 @@ def : VFPPat<(alignedstore32 (i32 (fp_to_uint_sat (f32 SPR:$a), i32)),
addrmode5:$ptr),
(VSTRS (VTOUIZS SPR:$a), addrmode5:$ptr)>;
+let mayRaiseFPException = 1 in
def VTOUIZH : AVConv1IsH_Encode<0b11101, 0b11, 0b1100, 0b1001,
(outs SPR:$Sd), (ins HPR:$Sm),
IIC_fpCVTHI, "vcvt", ".u32.f16\t$Sd, $Sm",
@@ -1757,7 +1782,7 @@ def : VFPPat<(i32 (fp_to_uint_sat (f16 HPR:$a), i32)),
(COPY_TO_REGCLASS (VTOUIZH (f16 HPR:$a)), GPR)>;
// And the Z bit '0' variants, i.e. use the rounding mode specified by FPSCR.
-let Uses = [FPSCR] in {
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in {
def VTOSIRD : AVConv1IsD_Encode<0b11101, 0b11, 0b1101, 0b1011,
(outs SPR:$Sd), (ins DPR:$Dm),
IIC_fpCVTDI, "vcvtr", ".s32.f64\t$Sd, $Dm",
@@ -1807,7 +1832,7 @@ def VTOUIRH : AVConv1IsH_Encode<0b11101, 0b11, 0b1100, 0b1001,
let Inst{7} = 0; // Z bit
let isUnpredicable = 1;
}
-}
+} // mayRaiseFPException = 1, Uses = [FPSCR_RM]
// v8.3-a Javascript Convert to Signed fixed-point
def VJCVT : AVConv1IsD_Encode<0b11101, 0b11, 0b1001, 0b1011,
@@ -1825,7 +1850,7 @@ def VJCVT : AVConv1IsD_Encode<0b11101, 0b11, 0b1001, 0b1011,
// S32 (U=0, sx=1) -> SL
// U32 (U=1, sx=1) -> UL
-let Constraints = "$a = $dst" in {
+let Constraints = "$a = $dst", mayRaiseFPException = 1 in {
// FP to Fixed-Point:
@@ -2026,9 +2051,10 @@ def VULTOD : AVConv1XInsD_Encode<0b11101, 0b11, 0b1011, 0b1011, 1,
IIC_fpCVTID, "vcvt", ".f64.u32\t$dst, $a, $fbits", []>,
Sched<[WriteFPCVT]>;
-} // End of 'let Constraints = "$a = $dst" in'
+} // End of 'let Constraints = "$a = $dst", mayRaiseFPException = 1 in'
// BFloat16 - Single precision, unary, predicated
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
class BF16_VCVT<string opc, bits<2> op7_6>
: VFPAI<(outs SPR:$Sd), (ins SPR:$dst, SPR:$Sm),
VFPUnaryFrm, NoItinerary,
@@ -2063,6 +2089,7 @@ def BF16_VCVTT : BF16_VCVT<"vcvtt", 0b11>;
// FP Multiply-Accumulate Operations.
//
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VMLAD : ADbI<0b11100, 0b00, 0, 0,
(outs DPR:$Dd), (ins DPR:$Ddin, DPR:$Dn, DPR:$Dm),
IIC_fpMAC64, "vmla", ".f64\t$Dd, $Dn, $Dm",
@@ -2072,6 +2099,7 @@ def VMLAD : ADbI<0b11100, 0b00, 0, 0,
Requires<[HasVFP2,HasDPVFP,UseFPVMLx]>,
Sched<[WriteFPMAC64, ReadFPMAC, ReadFPMUL, ReadFPMUL]>;
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VMLAS : ASbIn<0b11100, 0b00, 0, 0,
(outs SPR:$Sd), (ins SPR:$Sdin, SPR:$Sn, SPR:$Sm),
IIC_fpMAC32, "vmla", ".f32\t$Sd, $Sn, $Sm",
@@ -2085,6 +2113,7 @@ def VMLAS : ASbIn<0b11100, 0b00, 0, 0,
let D = VFPNeonA8Domain;
}
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VMLAH : AHbI<0b11100, 0b00, 0, 0,
(outs HPR:$Sd), (ins HPR:$Sdin, HPR:$Sn, HPR:$Sm),
IIC_fpMAC16, "vmla", ".f16\t$Sd, $Sn, $Sm",
@@ -2104,6 +2133,7 @@ def : Pat<(fadd_mlx HPR:$dstin, (fmul_su (f16 HPR:$a), HPR:$b)),
Requires<[HasFullFP16,DontUseNEONForFP, UseFPVMLx]>;
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VMLSD : ADbI<0b11100, 0b00, 1, 0,
(outs DPR:$Dd), (ins DPR:$Ddin, DPR:$Dn, DPR:$Dm),
IIC_fpMAC64, "vmls", ".f64\t$Dd, $Dn, $Dm",
@@ -2113,6 +2143,7 @@ def VMLSD : ADbI<0b11100, 0b00, 1, 0,
Requires<[HasVFP2,HasDPVFP,UseFPVMLx]>,
Sched<[WriteFPMAC64, ReadFPMAC, ReadFPMUL, ReadFPMUL]>;
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VMLSS : ASbIn<0b11100, 0b00, 1, 0,
(outs SPR:$Sd), (ins SPR:$Sdin, SPR:$Sn, SPR:$Sm),
IIC_fpMAC32, "vmls", ".f32\t$Sd, $Sn, $Sm",
@@ -2126,6 +2157,7 @@ def VMLSS : ASbIn<0b11100, 0b00, 1, 0,
let D = VFPNeonA8Domain;
}
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VMLSH : AHbI<0b11100, 0b00, 1, 0,
(outs HPR:$Sd), (ins HPR:$Sdin, HPR:$Sn, HPR:$Sm),
IIC_fpMAC16, "vmls", ".f16\t$Sd, $Sn, $Sm",
@@ -2144,6 +2176,7 @@ def : Pat<(fsub_mlx HPR:$dstin, (fmul_su (f16 HPR:$a), HPR:$b)),
(VMLSH HPR:$dstin, (f16 HPR:$a), HPR:$b)>,
Requires<[HasFullFP16,DontUseNEONForFP,UseFPVMLx]>;
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VNMLAD : ADbI<0b11100, 0b01, 1, 0,
(outs DPR:$Dd), (ins DPR:$Ddin, DPR:$Dn, DPR:$Dm),
IIC_fpMAC64, "vnmla", ".f64\t$Dd, $Dn, $Dm",
@@ -2153,6 +2186,7 @@ def VNMLAD : ADbI<0b11100, 0b01, 1, 0,
Requires<[HasVFP2,HasDPVFP,UseFPVMLx]>,
Sched<[WriteFPMAC64, ReadFPMAC, ReadFPMUL, ReadFPMUL]>;
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VNMLAS : ASbI<0b11100, 0b01, 1, 0,
(outs SPR:$Sd), (ins SPR:$Sdin, SPR:$Sn, SPR:$Sm),
IIC_fpMAC32, "vnmla", ".f32\t$Sd, $Sn, $Sm",
@@ -2166,6 +2200,7 @@ def VNMLAS : ASbI<0b11100, 0b01, 1, 0,
let D = VFPNeonA8Domain;
}
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VNMLAH : AHbI<0b11100, 0b01, 1, 0,
(outs HPR:$Sd), (ins HPR:$Sdin, HPR:$Sn, HPR:$Sm),
IIC_fpMAC16, "vnmla", ".f16\t$Sd, $Sn, $Sm",
@@ -2196,6 +2231,7 @@ def : Pat<(fsub_mlx (fneg HPR:$dstin), (fmul_su (f16 HPR:$a), HPR:$b)),
(VNMLAH HPR:$dstin, (f16 HPR:$a), HPR:$b)>,
Requires<[HasFullFP16,DontUseNEONForFP,UseFPVMLx]>;
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VNMLSD : ADbI<0b11100, 0b01, 0, 0,
(outs DPR:$Dd), (ins DPR:$Ddin, DPR:$Dn, DPR:$Dm),
IIC_fpMAC64, "vnmls", ".f64\t$Dd, $Dn, $Dm",
@@ -2205,6 +2241,7 @@ def VNMLSD : ADbI<0b11100, 0b01, 0, 0,
Requires<[HasVFP2,HasDPVFP,UseFPVMLx]>,
Sched<[WriteFPMAC64, ReadFPMAC, ReadFPMUL, ReadFPMUL]>;
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VNMLSS : ASbI<0b11100, 0b01, 0, 0,
(outs SPR:$Sd), (ins SPR:$Sdin, SPR:$Sn, SPR:$Sm),
IIC_fpMAC32, "vnmls", ".f32\t$Sd, $Sn, $Sm",
@@ -2217,6 +2254,7 @@ def VNMLSS : ASbI<0b11100, 0b01, 0, 0,
let D = VFPNeonA8Domain;
}
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VNMLSH : AHbI<0b11100, 0b01, 0, 0,
(outs HPR:$Sd), (ins HPR:$Sdin, HPR:$Sn, HPR:$Sm),
IIC_fpMAC16, "vnmls", ".f16\t$Sd, $Sn, $Sm",
@@ -2237,6 +2275,7 @@ def : Pat<(fsub_mlx (fmul_su (f16 HPR:$a), HPR:$b), HPR:$dstin),
//===----------------------------------------------------------------------===//
// Fused FP Multiply-Accumulate Operations.
//
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VFMAD : ADbI<0b11101, 0b10, 0, 0,
(outs DPR:$Dd), (ins DPR:$Ddin, DPR:$Dn, DPR:$Dm),
IIC_fpFMAC64, "vfma", ".f64\t$Dd, $Dn, $Dm",
@@ -2246,6 +2285,7 @@ def VFMAD : ADbI<0b11101, 0b10, 0, 0,
Requires<[HasVFP4,HasDPVFP,UseFusedMAC]>,
Sched<[WriteFPMAC64, ReadFPMAC, ReadFPMUL, ReadFPMUL]>;
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VFMAS : ASbIn<0b11101, 0b10, 0, 0,
(outs SPR:$Sd), (ins SPR:$Sdin, SPR:$Sn, SPR:$Sm),
IIC_fpFMAC32, "vfma", ".f32\t$Sd, $Sn, $Sm",
@@ -2258,6 +2298,7 @@ def VFMAS : ASbIn<0b11101, 0b10, 0, 0,
// VFP pipelines.
}
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VFMAH : AHbI<0b11101, 0b10, 0, 0,
(outs HPR:$Sd), (ins HPR:$Sdin, HPR:$Sn, HPR:$Sm),
IIC_fpFMAC16, "vfma", ".f16\t$Sd, $Sn, $Sm",
@@ -2289,6 +2330,7 @@ def : Pat<(f16 (fma HPR:$Sn, HPR:$Sm, (f16 HPR:$Sdin))),
(VFMAH (f16 HPR:$Sdin), (f16 HPR:$Sn), (f16 HPR:$Sm))>,
Requires<[HasFullFP16]>;
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VFMSD : ADbI<0b11101, 0b10, 1, 0,
(outs DPR:$Dd), (ins DPR:$Ddin, DPR:$Dn, DPR:$Dm),
IIC_fpFMAC64, "vfms", ".f64\t$Dd, $Dn, $Dm",
@@ -2298,6 +2340,7 @@ def VFMSD : ADbI<0b11101, 0b10, 1, 0,
Requires<[HasVFP4,HasDPVFP,UseFusedMAC]>,
Sched<[WriteFPMAC64, ReadFPMAC, ReadFPMUL, ReadFPMUL]>;
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VFMSS : ASbIn<0b11101, 0b10, 1, 0,
(outs SPR:$Sd), (ins SPR:$Sdin, SPR:$Sn, SPR:$Sm),
IIC_fpFMAC32, "vfms", ".f32\t$Sd, $Sn, $Sm",
@@ -2310,6 +2353,7 @@ def VFMSS : ASbIn<0b11101, 0b10, 1, 0,
// VFP pipelines.
}
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VFMSH : AHbI<0b11101, 0b10, 1, 0,
(outs HPR:$Sd), (ins HPR:$Sdin, HPR:$Sn, HPR:$Sm),
IIC_fpFMAC16, "vfms", ".f16\t$Sd, $Sn, $Sm",
@@ -2341,6 +2385,7 @@ def : Pat<(f16 (fma (fneg (f16 HPR:$Sn)), (f16 HPR:$Sm), (f16 HPR:$Sdin))),
(VFMSH (f16 HPR:$Sdin), (f16 HPR:$Sn), (f16 HPR:$Sm))>,
Requires<[HasFullFP16]>;
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VFNMAD : ADbI<0b11101, 0b01, 1, 0,
(outs DPR:$Dd), (ins DPR:$Ddin, DPR:$Dn, DPR:$Dm),
IIC_fpFMAC64, "vfnma", ".f64\t$Dd, $Dn, $Dm",
@@ -2350,6 +2395,7 @@ def VFNMAD : ADbI<0b11101, 0b01, 1, 0,
Requires<[HasVFP4,HasDPVFP,UseFusedMAC]>,
Sched<[WriteFPMAC64, ReadFPMAC, ReadFPMUL, ReadFPMUL]>;
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VFNMAS : ASbI<0b11101, 0b01, 1, 0,
(outs SPR:$Sd), (ins SPR:$Sdin, SPR:$Sn, SPR:$Sm),
IIC_fpFMAC32, "vfnma", ".f32\t$Sd, $Sn, $Sm",
@@ -2362,6 +2408,7 @@ def VFNMAS : ASbI<0b11101, 0b01, 1, 0,
// VFP pipelines.
}
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VFNMAH : AHbI<0b11101, 0b01, 1, 0,
(outs HPR:$Sd), (ins HPR:$Sdin, HPR:$Sn, HPR:$Sm),
IIC_fpFMAC16, "vfnma", ".f16\t$Sd, $Sn, $Sm",
@@ -2400,6 +2447,7 @@ def : Pat<(f16 (fma (fneg (f16 HPR:$Sn)), (f16 HPR:$Sm), (fneg (f16 HPR:$Sdin)))
(VFNMAH (f16 HPR:$Sdin), (f16 HPR:$Sn), (f16 HPR:$Sm))>,
Requires<[HasFullFP16]>;
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VFNMSD : ADbI<0b11101, 0b01, 0, 0,
(outs DPR:$Dd), (ins DPR:$Ddin, DPR:$Dn, DPR:$Dm),
IIC_fpFMAC64, "vfnms", ".f64\t$Dd, $Dn, $Dm",
@@ -2409,6 +2457,7 @@ def VFNMSD : ADbI<0b11101, 0b01, 0, 0,
Requires<[HasVFP4,HasDPVFP,UseFusedMAC]>,
Sched<[WriteFPMAC64, ReadFPMAC, ReadFPMUL, ReadFPMUL]>;
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VFNMSS : ASbI<0b11101, 0b01, 0, 0,
(outs SPR:$Sd), (ins SPR:$Sdin, SPR:$Sn, SPR:$Sm),
IIC_fpFMAC32, "vfnms", ".f32\t$Sd, $Sn, $Sm",
@@ -2420,6 +2469,7 @@ def VFNMSS : ASbI<0b11101, 0b01, 0, 0,
// VFP pipelines.
}
+let mayRaiseFPException = 1, Uses = [FPSCR_RM] in
def VFNMSH : AHbI<0b11101, 0b01, 0, 0,
(outs HPR:$Sd), (ins HPR:$Sdin, HPR:$Sn, HPR:$Sm),
IIC_fpFMAC16, "vfnms", ".f16\t$Sd, $Sn, $Sm",
diff --git a/llvm/lib/Target/ARM/ARMRegisterInfo.td b/llvm/lib/Target/ARM/ARMRegisterInfo.td
index 5a31b88..de42195 100644
--- a/llvm/lib/Target/ARM/ARMRegisterInfo.td
+++ b/llvm/lib/Target/ARM/ARMRegisterInfo.td
@@ -177,8 +177,9 @@ def Q15 : ARMReg<15, "q15", [D30, D31]>;
}
// Current Program Status Register.
-// We model fpscr with two registers: FPSCR models the control bits and will be
-// reserved. FPSCR_NZCV models the flag bits and will be unreserved. APSR_NZCV
+// We model fpscr with three registers. FPSCR models the control bits and will be
+// reserved. FPSCR_RM models rounding mode control bits and will be reserved.
+// FPSCR_NZCV models the flag bits and will be unreserved. APSR_NZCV
// models the APSR when it's accessed by some special instructions. In such cases
// it has the same encoding as PC.
def CPSR : ARMReg<0, "cpsr">;
@@ -189,6 +190,9 @@ def FPSCR : ARMReg<3, "fpscr">;
def FPSCR_NZCV : ARMReg<3, "fpscr_nzcv"> {
let Aliases = [FPSCR];
}
+def FPSCR_RM : ARMReg<3, "fpscr_rm"> {
+ let Aliases = [FPSCR];
+}
def ITSTATE : ARMReg<4, "itstate">;
// Special Registers - only available in privileged mode.
diff --git a/llvm/lib/Target/BPF/BPFCheckAndAdjustIR.cpp b/llvm/lib/Target/BPF/BPFCheckAndAdjustIR.cpp
index b202b202..e3c39a1 100644
--- a/llvm/lib/Target/BPF/BPFCheckAndAdjustIR.cpp
+++ b/llvm/lib/Target/BPF/BPFCheckAndAdjustIR.cpp
@@ -26,6 +26,7 @@
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
+#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/IntrinsicsBPF.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Type.h"
@@ -478,9 +479,95 @@ static void aspaceWrapOperand(DenseMap<Value *, Value *> &Cache, Instruction *I,
}
}
+static Value *wrapPtrIfASNotZero(DenseMap<Value *, Value *> &Cache,
+ CallInst *CI, Value *P) {
+ if (auto *PTy = dyn_cast<PointerType>(P->getType())) {
+ if (PTy->getAddressSpace() == 0)
+ return P;
+ }
+ return aspaceWrapValue(Cache, CI->getFunction(), P);
+}
+
+static Instruction *aspaceMemSet(Intrinsic::ID ID,
+ DenseMap<Value *, Value *> &Cache,
+ CallInst *CI) {
+ auto *MI = cast<MemIntrinsic>(CI);
+ IRBuilder<> B(CI);
+
+ Value *OldDst = CI->getArgOperand(0);
+ Value *NewDst = wrapPtrIfASNotZero(Cache, CI, OldDst);
+ if (OldDst == NewDst)
+ return nullptr;
+
+ // memset(new_dst, val, len, align, isvolatile, md)
+ Value *Val = CI->getArgOperand(1);
+ Value *Len = CI->getArgOperand(2);
+
+ auto *MS = cast<MemSetInst>(CI);
+ MaybeAlign Align = MS->getDestAlign();
+ bool IsVolatile = MS->isVolatile();
+
+ if (ID == Intrinsic::memset)
+ return B.CreateMemSet(NewDst, Val, Len, Align, IsVolatile,
+ MI->getAAMetadata());
+ else
+ return B.CreateMemSetInline(NewDst, Align, Val, Len, IsVolatile,
+ MI->getAAMetadata());
+}
+
+static Instruction *aspaceMemCpy(Intrinsic::ID ID,
+ DenseMap<Value *, Value *> &Cache,
+ CallInst *CI) {
+ auto *MI = cast<MemIntrinsic>(CI);
+ IRBuilder<> B(CI);
+
+ Value *OldDst = CI->getArgOperand(0);
+ Value *OldSrc = CI->getArgOperand(1);
+ Value *NewDst = wrapPtrIfASNotZero(Cache, CI, OldDst);
+ Value *NewSrc = wrapPtrIfASNotZero(Cache, CI, OldSrc);
+ if (OldDst == NewDst && OldSrc == NewSrc)
+ return nullptr;
+
+ // memcpy(new_dst, dst_align, new_src, src_align, len, isvolatile, md)
+ Value *Len = CI->getArgOperand(2);
+
+ auto *MT = cast<MemTransferInst>(CI);
+ MaybeAlign DstAlign = MT->getDestAlign();
+ MaybeAlign SrcAlign = MT->getSourceAlign();
+ bool IsVolatile = MT->isVolatile();
+
+ return B.CreateMemTransferInst(ID, NewDst, DstAlign, NewSrc, SrcAlign, Len,
+ IsVolatile, MI->getAAMetadata());
+}
+
+static Instruction *aspaceMemMove(DenseMap<Value *, Value *> &Cache,
+ CallInst *CI) {
+ auto *MI = cast<MemIntrinsic>(CI);
+ IRBuilder<> B(CI);
+
+ Value *OldDst = CI->getArgOperand(0);
+ Value *OldSrc = CI->getArgOperand(1);
+ Value *NewDst = wrapPtrIfASNotZero(Cache, CI, OldDst);
+ Value *NewSrc = wrapPtrIfASNotZero(Cache, CI, OldSrc);
+ if (OldDst == NewDst && OldSrc == NewSrc)
+ return nullptr;
+
+ // memmove(new_dst, dst_align, new_src, src_align, len, isvolatile, md)
+ Value *Len = CI->getArgOperand(2);
+
+ auto *MT = cast<MemTransferInst>(CI);
+ MaybeAlign DstAlign = MT->getDestAlign();
+ MaybeAlign SrcAlign = MT->getSourceAlign();
+ bool IsVolatile = MT->isVolatile();
+
+ return B.CreateMemMove(NewDst, DstAlign, NewSrc, SrcAlign, Len, IsVolatile,
+ MI->getAAMetadata());
+}
+
// Support for BPF address spaces:
// - for each function in the module M, update pointer operand of
// each memory access instruction (load/store/cmpxchg/atomicrmw)
+// or intrinsic call insns (memset/memcpy/memmove)
// by casting it from non-zero address space to zero address space, e.g:
//
// (load (ptr addrspace (N) %p) ...)
@@ -493,21 +580,60 @@ bool BPFCheckAndAdjustIR::insertASpaceCasts(Module &M) {
for (Function &F : M) {
DenseMap<Value *, Value *> CastsCache;
for (BasicBlock &BB : F) {
- for (Instruction &I : BB) {
+ for (Instruction &I : llvm::make_early_inc_range(BB)) {
unsigned PtrOpNum;
- if (auto *LD = dyn_cast<LoadInst>(&I))
+ if (auto *LD = dyn_cast<LoadInst>(&I)) {
PtrOpNum = LD->getPointerOperandIndex();
- else if (auto *ST = dyn_cast<StoreInst>(&I))
+ aspaceWrapOperand(CastsCache, &I, PtrOpNum);
+ continue;
+ }
+ if (auto *ST = dyn_cast<StoreInst>(&I)) {
PtrOpNum = ST->getPointerOperandIndex();
- else if (auto *CmpXchg = dyn_cast<AtomicCmpXchgInst>(&I))
+ aspaceWrapOperand(CastsCache, &I, PtrOpNum);
+ continue;
+ }
+ if (auto *CmpXchg = dyn_cast<AtomicCmpXchgInst>(&I)) {
PtrOpNum = CmpXchg->getPointerOperandIndex();
- else if (auto *RMW = dyn_cast<AtomicRMWInst>(&I))
+ aspaceWrapOperand(CastsCache, &I, PtrOpNum);
+ continue;
+ }
+ if (auto *RMW = dyn_cast<AtomicRMWInst>(&I)) {
PtrOpNum = RMW->getPointerOperandIndex();
+ aspaceWrapOperand(CastsCache, &I, PtrOpNum);
+ continue;
+ }
+
+ auto *CI = dyn_cast<CallInst>(&I);
+ if (!CI)
+ continue;
+
+ Function *Callee = CI->getCalledFunction();
+ if (!Callee || !Callee->isIntrinsic())
+ continue;
+
+ // Check memset/memcpy/memmove
+ Intrinsic::ID ID = Callee->getIntrinsicID();
+ bool IsSet = ID == Intrinsic::memset || ID == Intrinsic::memset_inline;
+ bool IsCpy = ID == Intrinsic::memcpy || ID == Intrinsic::memcpy_inline;
+ bool IsMove = ID == Intrinsic::memmove;
+ if (!IsSet && !IsCpy && !IsMove)
+ continue;
+
+ Instruction *New;
+ if (IsSet)
+ New = aspaceMemSet(ID, CastsCache, CI);
+ else if (IsCpy)
+ New = aspaceMemCpy(ID, CastsCache, CI);
else
+ New = aspaceMemMove(CastsCache, CI);
+
+ if (!New)
continue;
- aspaceWrapOperand(CastsCache, &I, PtrOpNum);
+ I.replaceAllUsesWith(New);
+ New->takeName(&I);
+ I.eraseFromParent();
}
}
Changed |= !CastsCache.empty();
diff --git a/llvm/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp b/llvm/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp
index 71c21e4..186fdd1 100644
--- a/llvm/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp
+++ b/llvm/lib/Target/RISCV/GISel/RISCVInstructionSelector.cpp
@@ -736,6 +736,62 @@ bool RISCVInstructionSelector::select(MachineInstr &MI) {
MI.eraseFromParent();
return true;
}
+ case TargetOpcode::G_ZEXT:
+ case TargetOpcode::G_SEXT: {
+ bool IsSigned = Opc != TargetOpcode::G_ZEXT;
+ Register DstReg = MI.getOperand(0).getReg();
+ Register SrcReg = MI.getOperand(1).getReg();
+ LLT SrcTy = MRI->getType(SrcReg);
+ unsigned SrcSize = SrcTy.getSizeInBits();
+
+ if (SrcTy.isVector())
+ return false; // Should be handled by imported patterns.
+
+ assert((*RBI.getRegBank(DstReg, *MRI, TRI)).getID() ==
+ RISCV::GPRBRegBankID &&
+ "Unexpected ext regbank");
+
+ // Use addiw SrcReg, 0 (sext.w) for i32.
+ if (IsSigned && SrcSize == 32) {
+ MI.setDesc(TII.get(RISCV::ADDIW));
+ MI.addOperand(MachineOperand::CreateImm(0));
+ return constrainSelectedInstRegOperands(MI, TII, TRI, RBI);
+ }
+
+ // Use add.uw SrcReg, X0 (zext.w) for i32 with Zba.
+ if (!IsSigned && SrcSize == 32 && STI.hasStdExtZba()) {
+ MI.setDesc(TII.get(RISCV::ADD_UW));
+ MI.addOperand(MachineOperand::CreateReg(RISCV::X0, /*isDef=*/false));
+ return constrainSelectedInstRegOperands(MI, TII, TRI, RBI);
+ }
+
+ // Use sext.h/zext.h for i16 with Zbb.
+ if (SrcSize == 16 && STI.hasStdExtZbb()) {
+ MI.setDesc(TII.get(IsSigned ? RISCV::SEXT_H
+ : STI.isRV64() ? RISCV::ZEXT_H_RV64
+ : RISCV::ZEXT_H_RV32));
+ return constrainSelectedInstRegOperands(MI, TII, TRI, RBI);
+ }
+
+ // Use pack(w) SrcReg, X0 for i16 zext with Zbkb.
+ if (!IsSigned && SrcSize == 16 && STI.hasStdExtZbkb()) {
+ MI.setDesc(TII.get(STI.is64Bit() ? RISCV::PACKW : RISCV::PACK));
+ MI.addOperand(MachineOperand::CreateReg(RISCV::X0, /*isDef=*/false));
+ return constrainSelectedInstRegOperands(MI, TII, TRI, RBI);
+ }
+
+ // Fall back to shift pair.
+ auto ShiftLeft =
+ MIB.buildInstr(RISCV::SLLI, {&RISCV::GPRRegClass}, {SrcReg})
+ .addImm(STI.getXLen() - SrcSize);
+ constrainSelectedInstRegOperands(*ShiftLeft, TII, TRI, RBI);
+ auto ShiftRight = MIB.buildInstr(IsSigned ? RISCV::SRAI : RISCV::SRLI,
+ {DstReg}, {ShiftLeft})
+ .addImm(STI.getXLen() - SrcSize);
+ constrainSelectedInstRegOperands(*ShiftRight, TII, TRI, RBI);
+ MI.eraseFromParent();
+ return true;
+ }
case TargetOpcode::G_FCONSTANT: {
// TODO: Use constant pool for complex constants.
Register DstReg = MI.getOperand(0).getReg();
diff --git a/llvm/lib/Target/RISCV/RISCVExpandAtomicPseudoInsts.cpp b/llvm/lib/Target/RISCV/RISCVExpandAtomicPseudoInsts.cpp
index a537904..1c7cbb9 100644
--- a/llvm/lib/Target/RISCV/RISCVExpandAtomicPseudoInsts.cpp
+++ b/llvm/lib/Target/RISCV/RISCVExpandAtomicPseudoInsts.cpp
@@ -166,7 +166,7 @@ static unsigned getLRForRMW32(AtomicOrdering Ordering,
return RISCV::LR_W;
return RISCV::LR_W_AQ;
case AtomicOrdering::SequentiallyConsistent:
- return RISCV::LR_W_AQ_RL;
+ return RISCV::LR_W_AQRL;
}
}
@@ -210,7 +210,7 @@ static unsigned getLRForRMW64(AtomicOrdering Ordering,
return RISCV::LR_D;
return RISCV::LR_D_AQ;
case AtomicOrdering::SequentiallyConsistent:
- return RISCV::LR_D_AQ_RL;
+ return RISCV::LR_D_AQRL;
}
}
diff --git a/llvm/lib/Target/RISCV/RISCVFeatures.td b/llvm/lib/Target/RISCV/RISCVFeatures.td
index 27cf057..40c05e8 100644
--- a/llvm/lib/Target/RISCV/RISCVFeatures.td
+++ b/llvm/lib/Target/RISCV/RISCVFeatures.td
@@ -265,7 +265,7 @@ def HasStdExtZacas : Predicate<"Subtarget->hasStdExtZacas()">,
def NoStdExtZacas : Predicate<"!Subtarget->hasStdExtZacas()">;
def FeatureStdExtZalasr
- : RISCVExperimentalExtension<0, 1, "Load-Acquire and Store-Release Instructions">;
+ : RISCVExperimentalExtension<0, 9, "Load-Acquire and Store-Release Instructions">;
def HasStdExtZalasr : Predicate<"Subtarget->hasStdExtZalasr()">,
AssemblerPredicate<(all_of FeatureStdExtZalasr),
"'Zalasr' (Load-Acquire and Store-Release Instructions)">;
diff --git a/llvm/lib/Target/RISCV/RISCVGISel.td b/llvm/lib/Target/RISCV/RISCVGISel.td
index 6d01250..7dd3385 100644
--- a/llvm/lib/Target/RISCV/RISCVGISel.td
+++ b/llvm/lib/Target/RISCV/RISCVGISel.td
@@ -133,64 +133,10 @@ def : LdPat<extloadi16, LH, i32>;
def : StPat<truncstorei8, SB, GPR, i32>;
def : StPat<truncstorei16, SH, GPR, i32>;
-def : Pat<(sext (i32 GPR:$src)), (ADDIW GPR:$src, 0)>;
-
def : Pat<(sext_inreg (i64 (add GPR:$rs1, simm12_lo:$imm)), i32),
(ADDIW GPR:$rs1, simm12_lo:$imm)>;
}
-let Predicates = [IsRV64, NoStdExtZba] in
-def : Pat<(zext (i32 GPR:$src)), (SRLI (i64 (SLLI GPR:$src, 32)), 32)>;
-
-let Predicates = [IsRV32, NoStdExtZbb, NoStdExtZbkb] in
-def : Pat<(XLenVT (zext (i16 GPR:$src))),
- (SRLI (XLenVT (SLLI GPR:$src, 16)), 16)>;
-
-let Predicates = [IsRV64, NoStdExtZbb, NoStdExtZbkb] in {
-def : Pat<(i64 (zext (i16 GPR:$src))),
- (SRLI (XLenVT (SLLI GPR:$src, 48)), 48)>;
-def : Pat<(i32 (zext (i16 GPR:$src))),
- (SRLI (XLenVT (SLLI GPR:$src, 48)), 48)>;
-}
-
-let Predicates = [IsRV32, NoStdExtZbb] in
-def : Pat<(XLenVT (sext (i16 GPR:$src))),
- (SRAI (XLenVT (SLLI GPR:$src, 16)), 16)>;
-
-let Predicates = [IsRV64, NoStdExtZbb] in {
-def : Pat<(i64 (sext (i16 GPR:$src))),
- (SRAI (XLenVT (SLLI GPR:$src, 48)), 48)>;
-def : Pat<(i32 (sext (i16 GPR:$src))),
- (SRAI (XLenVT (SLLI GPR:$src, 48)), 48)>;
-}
-
-//===----------------------------------------------------------------------===//
-// Zb* RV64 patterns not used by SelectionDAG.
-//===----------------------------------------------------------------------===//
-
-let Predicates = [HasStdExtZba, IsRV64] in {
-def : Pat<(zext (i32 GPR:$src)), (ADD_UW GPR:$src, (XLenVT X0))>;
-}
-
-let Predicates = [HasStdExtZbb] in
-def : Pat<(i32 (sext (i16 GPR:$rs))), (SEXT_H GPR:$rs)>;
-let Predicates = [HasStdExtZbb, IsRV64] in
-def : Pat<(i64 (sext (i16 GPR:$rs))), (SEXT_H GPR:$rs)>;
-
-let Predicates = [HasStdExtZbb, IsRV32] in
-def : Pat<(i32 (zext (i16 GPR:$rs))), (ZEXT_H_RV32 GPR:$rs)>;
-let Predicates = [HasStdExtZbb, IsRV64] in {
-def : Pat<(i64 (zext (i16 GPR:$rs))), (ZEXT_H_RV64 GPR:$rs)>;
-def : Pat<(i32 (zext (i16 GPR:$rs))), (ZEXT_H_RV64 GPR:$rs)>;
-}
-
-let Predicates = [HasStdExtZbkb, NoStdExtZbb, IsRV32] in
-def : Pat<(i32 (zext (i16 GPR:$rs))), (PACK GPR:$rs, (XLenVT X0))>;
-let Predicates = [HasStdExtZbkb, NoStdExtZbb, IsRV64] in {
-def : Pat<(i64 (zext (i16 GPR:$rs))), (PACKW GPR:$rs, (XLenVT X0))>;
-def : Pat<(i32 (zext (i16 GPR:$rs))), (PACKW GPR:$rs, (XLenVT X0))>;
-}
-
//===----------------------------------------------------------------------===//
// Zalasr patterns not used by SelectionDAG
//===----------------------------------------------------------------------===//
diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
index 6234714..a3a4cf2 100644
--- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
@@ -16498,43 +16498,60 @@ static SDValue expandMul(SDNode *N, SelectionDAG &DAG,
SDValue X = N->getOperand(0);
if (Subtarget.hasShlAdd(3)) {
- for (uint64_t Divisor : {3, 5, 9}) {
- if (MulAmt % Divisor != 0)
- continue;
- uint64_t MulAmt2 = MulAmt / Divisor;
- // 3/5/9 * 2^N -> shl (shXadd X, X), N
- if (isPowerOf2_64(MulAmt2)) {
- SDLoc DL(N);
- SDValue X = N->getOperand(0);
- // Put the shift first if we can fold a zext into the
- // shift forming a slli.uw.
- if (X.getOpcode() == ISD::AND && isa<ConstantSDNode>(X.getOperand(1)) &&
- X.getConstantOperandVal(1) == UINT64_C(0xffffffff)) {
- SDValue Shl = DAG.getNode(ISD::SHL, DL, VT, X,
- DAG.getConstant(Log2_64(MulAmt2), DL, VT));
- return DAG.getNode(RISCVISD::SHL_ADD, DL, VT, Shl,
- DAG.getConstant(Log2_64(Divisor - 1), DL, VT),
- Shl);
- }
- // Otherwise, put rhe shl second so that it can fold with following
- // instructions (e.g. sext or add).
- SDValue Mul359 =
- DAG.getNode(RISCVISD::SHL_ADD, DL, VT, X,
- DAG.getConstant(Log2_64(Divisor - 1), DL, VT), X);
- return DAG.getNode(ISD::SHL, DL, VT, Mul359,
- DAG.getConstant(Log2_64(MulAmt2), DL, VT));
- }
-
- // 3/5/9 * 3/5/9 -> shXadd (shYadd X, X), (shYadd X, X)
- if (MulAmt2 == 3 || MulAmt2 == 5 || MulAmt2 == 9) {
- SDLoc DL(N);
- SDValue Mul359 =
- DAG.getNode(RISCVISD::SHL_ADD, DL, VT, X,
- DAG.getConstant(Log2_64(Divisor - 1), DL, VT), X);
- return DAG.getNode(RISCVISD::SHL_ADD, DL, VT, Mul359,
- DAG.getConstant(Log2_64(MulAmt2 - 1), DL, VT),
- Mul359);
+ int Shift;
+ if (int ShXAmount = isShifted359(MulAmt, Shift)) {
+ // 3/5/9 * 2^N -> shl (shXadd X, X), N
+ SDLoc DL(N);
+ SDValue X = N->getOperand(0);
+ // Put the shift first if we can fold a zext into the shift forming
+ // a slli.uw.
+ if (X.getOpcode() == ISD::AND && isa<ConstantSDNode>(X.getOperand(1)) &&
+ X.getConstantOperandVal(1) == UINT64_C(0xffffffff)) {
+ SDValue Shl =
+ DAG.getNode(ISD::SHL, DL, VT, X, DAG.getConstant(Shift, DL, VT));
+ return DAG.getNode(RISCVISD::SHL_ADD, DL, VT, Shl,
+ DAG.getConstant(ShXAmount, DL, VT), Shl);
}
+ // Otherwise, put the shl second so that it can fold with following
+ // instructions (e.g. sext or add).
+ SDValue Mul359 = DAG.getNode(RISCVISD::SHL_ADD, DL, VT, X,
+ DAG.getConstant(ShXAmount, DL, VT), X);
+ return DAG.getNode(ISD::SHL, DL, VT, Mul359,
+ DAG.getConstant(Shift, DL, VT));
+ }
+
+ // 3/5/9 * 3/5/9 -> shXadd (shYadd X, X), (shYadd X, X)
+ int ShX;
+ int ShY;
+ switch (MulAmt) {
+ case 3 * 5:
+ ShY = 1;
+ ShX = 2;
+ break;
+ case 3 * 9:
+ ShY = 1;
+ ShX = 3;
+ break;
+ case 5 * 5:
+ ShX = ShY = 2;
+ break;
+ case 5 * 9:
+ ShY = 2;
+ ShX = 3;
+ break;
+ case 9 * 9:
+ ShX = ShY = 3;
+ break;
+ default:
+ ShX = ShY = 0;
+ break;
+ }
+ if (ShX) {
+ SDLoc DL(N);
+ SDValue Mul359 = DAG.getNode(RISCVISD::SHL_ADD, DL, VT, X,
+ DAG.getConstant(ShY, DL, VT), X);
+ return DAG.getNode(RISCVISD::SHL_ADD, DL, VT, Mul359,
+ DAG.getConstant(ShX, DL, VT), Mul359);
}
// If this is a power 2 + 2/4/8, we can use a shift followed by a single
@@ -16557,18 +16574,14 @@ static SDValue expandMul(SDNode *N, SelectionDAG &DAG,
// variants we could implement. e.g.
// (2^(1,2,3) * 3,5,9 + 1) << C2
// 2^(C1>3) * 3,5,9 +/- 1
- for (uint64_t Divisor : {3, 5, 9}) {
- uint64_t C = MulAmt - 1;
- if (C <= Divisor)
- continue;
- unsigned TZ = llvm::countr_zero(C);
- if ((C >> TZ) == Divisor && (TZ == 1 || TZ == 2 || TZ == 3)) {
+ if (int ShXAmount = isShifted359(MulAmt - 1, Shift)) {
+ assert(Shift != 0 && "MulAmt=4,6,10 handled before");
+ if (Shift <= 3) {
SDLoc DL(N);
- SDValue Mul359 =
- DAG.getNode(RISCVISD::SHL_ADD, DL, VT, X,
- DAG.getConstant(Log2_64(Divisor - 1), DL, VT), X);
+ SDValue Mul359 = DAG.getNode(RISCVISD::SHL_ADD, DL, VT, X,
+ DAG.getConstant(ShXAmount, DL, VT), X);
return DAG.getNode(RISCVISD::SHL_ADD, DL, VT, Mul359,
- DAG.getConstant(TZ, DL, VT), X);
+ DAG.getConstant(Shift, DL, VT), X);
}
}
@@ -16576,7 +16589,7 @@ static SDValue expandMul(SDNode *N, SelectionDAG &DAG,
if (MulAmt > 2 && isPowerOf2_64((MulAmt - 1) & (MulAmt - 2))) {
unsigned ScaleShift = llvm::countr_zero(MulAmt - 1);
if (ScaleShift >= 1 && ScaleShift < 4) {
- unsigned ShiftAmt = Log2_64(((MulAmt - 1) & (MulAmt - 2)));
+ unsigned ShiftAmt = llvm::countr_zero((MulAmt - 1) & (MulAmt - 2));
SDLoc DL(N);
SDValue Shift1 =
DAG.getNode(ISD::SHL, DL, VT, X, DAG.getConstant(ShiftAmt, DL, VT));
@@ -16589,7 +16602,7 @@ static SDValue expandMul(SDNode *N, SelectionDAG &DAG,
// 2^N - 3/5/9 --> (sub (shl X, C1), (shXadd X, x))
for (uint64_t Offset : {3, 5, 9}) {
if (isPowerOf2_64(MulAmt + Offset)) {
- unsigned ShAmt = Log2_64(MulAmt + Offset);
+ unsigned ShAmt = llvm::countr_zero(MulAmt + Offset);
if (ShAmt >= VT.getSizeInBits())
continue;
SDLoc DL(N);
@@ -16608,21 +16621,16 @@ static SDValue expandMul(SDNode *N, SelectionDAG &DAG,
uint64_t MulAmt2 = MulAmt / Divisor;
// 3/5/9 * 3/5/9 * 2^N - In particular, this covers multiples
// of 25 which happen to be quite common.
- for (uint64_t Divisor2 : {3, 5, 9}) {
- if (MulAmt2 % Divisor2 != 0)
- continue;
- uint64_t MulAmt3 = MulAmt2 / Divisor2;
- if (isPowerOf2_64(MulAmt3)) {
- SDLoc DL(N);
- SDValue Mul359A =
- DAG.getNode(RISCVISD::SHL_ADD, DL, VT, X,
- DAG.getConstant(Log2_64(Divisor - 1), DL, VT), X);
- SDValue Mul359B = DAG.getNode(
- RISCVISD::SHL_ADD, DL, VT, Mul359A,
- DAG.getConstant(Log2_64(Divisor2 - 1), DL, VT), Mul359A);
- return DAG.getNode(ISD::SHL, DL, VT, Mul359B,
- DAG.getConstant(Log2_64(MulAmt3), DL, VT));
- }
+ if (int ShBAmount = isShifted359(MulAmt2, Shift)) {
+ SDLoc DL(N);
+ SDValue Mul359A =
+ DAG.getNode(RISCVISD::SHL_ADD, DL, VT, X,
+ DAG.getConstant(Log2_64(Divisor - 1), DL, VT), X);
+ SDValue Mul359B =
+ DAG.getNode(RISCVISD::SHL_ADD, DL, VT, Mul359A,
+ DAG.getConstant(ShBAmount, DL, VT), Mul359A);
+ return DAG.getNode(ISD::SHL, DL, VT, Mul359B,
+ DAG.getConstant(Shift, DL, VT));
}
}
}
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfo.cpp b/llvm/lib/Target/RISCV/RISCVInstrInfo.cpp
index 7db4832..96e1078 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfo.cpp
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfo.cpp
@@ -4586,24 +4586,23 @@ void RISCVInstrInfo::mulImm(MachineFunction &MF, MachineBasicBlock &MBB,
.addReg(DestReg, RegState::Kill)
.addImm(ShiftAmount)
.setMIFlag(Flag);
- } else if (STI.hasShlAdd(3) &&
- ((Amount % 3 == 0 && isPowerOf2_64(Amount / 3)) ||
- (Amount % 5 == 0 && isPowerOf2_64(Amount / 5)) ||
- (Amount % 9 == 0 && isPowerOf2_64(Amount / 9)))) {
+ } else if (int ShXAmount, ShiftAmount;
+ STI.hasShlAdd(3) &&
+ (ShXAmount = isShifted359(Amount, ShiftAmount)) != 0) {
// We can use Zba SHXADD+SLLI instructions for multiply in some cases.
unsigned Opc;
- uint32_t ShiftAmount;
- if (Amount % 9 == 0) {
- Opc = RISCV::SH3ADD;
- ShiftAmount = Log2_64(Amount / 9);
- } else if (Amount % 5 == 0) {
- Opc = RISCV::SH2ADD;
- ShiftAmount = Log2_64(Amount / 5);
- } else if (Amount % 3 == 0) {
+ switch (ShXAmount) {
+ case 1:
Opc = RISCV::SH1ADD;
- ShiftAmount = Log2_64(Amount / 3);
- } else {
- llvm_unreachable("implied by if-clause");
+ break;
+ case 2:
+ Opc = RISCV::SH2ADD;
+ break;
+ case 3:
+ Opc = RISCV::SH3ADD;
+ break;
+ default:
+ llvm_unreachable("unexpected result of isShifted359");
}
if (ShiftAmount)
BuildMI(MBB, II, DL, get(RISCV::SLLI), DestReg)
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfo.h b/llvm/lib/Target/RISCV/RISCVInstrInfo.h
index 42a0c4c..c5eddb9 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfo.h
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfo.h
@@ -25,6 +25,25 @@
namespace llvm {
+// If Value is of the form C1<<C2, where C1 = 3, 5 or 9,
+// returns log2(C1 - 1) and assigns Shift = C2.
+// Otherwise, returns 0.
+template <typename T> int isShifted359(T Value, int &Shift) {
+ if (Value == 0)
+ return 0;
+ Shift = llvm::countr_zero(Value);
+ switch (Value >> Shift) {
+ case 3:
+ return 1;
+ case 5:
+ return 2;
+ case 9:
+ return 3;
+ default:
+ return 0;
+ }
+}
+
class RISCVSubtarget;
static const MachineMemOperand::Flags MONontemporalBit0 =
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoA.td b/llvm/lib/Target/RISCV/RISCVInstrInfoA.td
index 25accd9..2e4326f 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoA.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoA.td
@@ -24,10 +24,10 @@ class LR_r<bit aq, bit rl, bits<3> funct3, string opcodestr>
}
multiclass LR_r_aq_rl<bits<3> funct3, string opcodestr> {
- def "" : LR_r<0, 0, funct3, opcodestr>;
- def _AQ : LR_r<1, 0, funct3, opcodestr # ".aq">;
- def _RL : LR_r<0, 1, funct3, opcodestr # ".rl">;
- def _AQ_RL : LR_r<1, 1, funct3, opcodestr # ".aqrl">;
+ def "" : LR_r<0, 0, funct3, opcodestr>;
+ def _AQ : LR_r<1, 0, funct3, opcodestr # ".aq">;
+ def _RL : LR_r<0, 1, funct3, opcodestr # ".rl">;
+ def _AQRL : LR_r<1, 1, funct3, opcodestr # ".aqrl">;
}
let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in
@@ -37,10 +37,10 @@ class SC_r<bit aq, bit rl, bits<3> funct3, string opcodestr>
opcodestr, "$rd, $rs2, $rs1">;
multiclass SC_r_aq_rl<bits<3> funct3, string opcodestr> {
- def "" : SC_r<0, 0, funct3, opcodestr>;
- def _AQ : SC_r<1, 0, funct3, opcodestr # ".aq">;
- def _RL : SC_r<0, 1, funct3, opcodestr # ".rl">;
- def _AQ_RL : SC_r<1, 1, funct3, opcodestr # ".aqrl">;
+ def "" : SC_r<0, 0, funct3, opcodestr>;
+ def _AQ : SC_r<1, 0, funct3, opcodestr # ".aq">;
+ def _RL : SC_r<0, 1, funct3, opcodestr # ".rl">;
+ def _AQRL : SC_r<1, 1, funct3, opcodestr # ".aqrl">;
}
let hasSideEffects = 0, mayLoad = 1, mayStore = 1 in
@@ -50,10 +50,10 @@ class AMO_rr<bits<5> funct5, bit aq, bit rl, bits<3> funct3, string opcodestr>
opcodestr, "$rd, $rs2, $rs1">;
multiclass AMO_rr_aq_rl<bits<5> funct5, bits<3> funct3, string opcodestr> {
- def "" : AMO_rr<funct5, 0, 0, funct3, opcodestr>;
- def _AQ : AMO_rr<funct5, 1, 0, funct3, opcodestr # ".aq">;
- def _RL : AMO_rr<funct5, 0, 1, funct3, opcodestr # ".rl">;
- def _AQ_RL : AMO_rr<funct5, 1, 1, funct3, opcodestr # ".aqrl">;
+ def "" : AMO_rr<funct5, 0, 0, funct3, opcodestr>;
+ def _AQ : AMO_rr<funct5, 1, 0, funct3, opcodestr # ".aq">;
+ def _RL : AMO_rr<funct5, 0, 1, funct3, opcodestr # ".rl">;
+ def _AQRL : AMO_rr<funct5, 1, 1, funct3, opcodestr # ".aqrl">;
}
//===----------------------------------------------------------------------===//
@@ -198,9 +198,9 @@ let Predicates = !listconcat([HasStdExtA, NoStdExtZtso], ExtraPreds) in {
def : PatGprGpr<!cast<PatFrag>(AtomicOp#"_release"),
!cast<RVInst>(BaseInst#"_RL"), vt>;
def : PatGprGpr<!cast<PatFrag>(AtomicOp#"_acq_rel"),
- !cast<RVInst>(BaseInst#"_AQ_RL"), vt>;
+ !cast<RVInst>(BaseInst#"_AQRL"), vt>;
def : PatGprGpr<!cast<PatFrag>(AtomicOp#"_seq_cst"),
- !cast<RVInst>(BaseInst#"_AQ_RL"), vt>;
+ !cast<RVInst>(BaseInst#"_AQRL"), vt>;
}
let Predicates = !listconcat([HasStdExtA, HasStdExtZtso], ExtraPreds) in {
def : PatGprGpr<!cast<PatFrag>(AtomicOp#"_monotonic"),
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoZa.td b/llvm/lib/Target/RISCV/RISCVInstrInfoZa.td
index 7cf6d5f..c691aa6 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoZa.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoZa.td
@@ -9,8 +9,8 @@
// This file describes the RISC-V instructions from the standard atomic 'Za*'
// extensions:
// - Zawrs (v1.0) : Wait-on-Reservation-Set.
-// - Zacas (v1.0-rc1) : Atomic Compare-and-Swap.
-// - Zabha (v1.0-rc1) : Byte and Halfword Atomic Memory Operations.
+// - Zacas (v1.0) : Atomic Compare-and-Swap.
+// - Zabha (v1.0) : Byte and Halfword Atomic Memory Operations.
//
//===----------------------------------------------------------------------===//
@@ -49,10 +49,10 @@ class AMO_cas<bits<5> funct5, bit aq, bit rl, bits<3> funct3, string opcodestr,
multiclass AMO_cas_aq_rl<bits<5> funct5, bits<3> funct3, string opcodestr,
DAGOperand RC> {
- def "" : AMO_cas<funct5, 0, 0, funct3, opcodestr, RC>;
- def _AQ : AMO_cas<funct5, 1, 0, funct3, opcodestr # ".aq", RC>;
- def _RL : AMO_cas<funct5, 0, 1, funct3, opcodestr # ".rl", RC>;
- def _AQ_RL : AMO_cas<funct5, 1, 1, funct3, opcodestr # ".aqrl", RC>;
+ def "" : AMO_cas<funct5, 0, 0, funct3, opcodestr, RC>;
+ def _AQ : AMO_cas<funct5, 1, 0, funct3, opcodestr # ".aq", RC>;
+ def _RL : AMO_cas<funct5, 0, 1, funct3, opcodestr # ".rl", RC>;
+ def _AQRL : AMO_cas<funct5, 1, 1, funct3, opcodestr # ".aqrl", RC>;
}
let Predicates = [HasStdExtZacas], IsSignExtendingOpW = 1 in {
@@ -86,11 +86,11 @@ multiclass AMOCASPat<string AtomicOp, string BaseInst, ValueType vt = XLenVT,
def : Pat<(!cast<PatFrag>(AtomicOp#"_acq_rel") (vt GPR:$addr),
(vt GPR:$cmp),
(vt GPR:$new)),
- (!cast<RVInst>(BaseInst#"_AQ_RL") GPR:$cmp, GPR:$addr, GPR:$new)>;
+ (!cast<RVInst>(BaseInst#"_AQRL") GPR:$cmp, GPR:$addr, GPR:$new)>;
def : Pat<(!cast<PatFrag>(AtomicOp#"_seq_cst") (vt GPR:$addr),
(vt GPR:$cmp),
(vt GPR:$new)),
- (!cast<RVInst>(BaseInst#"_AQ_RL") GPR:$cmp, GPR:$addr, GPR:$new)>;
+ (!cast<RVInst>(BaseInst#"_AQRL") GPR:$cmp, GPR:$addr, GPR:$new)>;
} // Predicates = !listconcat([HasStdExtZacas, NoStdExtZtso], ExtraPreds)
let Predicates = !listconcat([HasStdExtZacas, HasStdExtZtso], ExtraPreds) in {
def : Pat<(!cast<PatFrag>(AtomicOp#"_monotonic") (vt GPR:$addr),
@@ -140,7 +140,7 @@ def WRS_STO : WRSInst<0b000000011101, "wrs.sto">, Sched<[]>;
// Zabha (Byte and Halfword Atomic Memory Operations)
//===----------------------------------------------------------------------===//
-let Predicates = [HasStdExtZabha] in {
+let Predicates = [HasStdExtZabha], IsSignExtendingOpW = 1 in {
defm AMOSWAP_B : AMO_rr_aq_rl<0b00001, 0b000, "amoswap.b">,
Sched<[WriteAtomicB, ReadAtomicBA, ReadAtomicBD]>;
defm AMOADD_B : AMO_rr_aq_rl<0b00000, 0b000, "amoadd.b">,
@@ -181,7 +181,7 @@ defm AMOMAXU_H : AMO_rr_aq_rl<0b11100, 0b001, "amomaxu.h">,
}
// If Zacas extension is also implemented, Zabha further provides AMOCAS.[B|H].
-let Predicates = [HasStdExtZabha, HasStdExtZacas] in {
+let Predicates = [HasStdExtZabha, HasStdExtZacas], IsSignExtendingOpW = 1 in {
defm AMOCAS_B : AMO_cas_aq_rl<0b00101, 0b000, "amocas.b", GPR>;
defm AMOCAS_H : AMO_cas_aq_rl<0b00101, 0b001, "amocas.h", GPR>;
}
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoZalasr.td b/llvm/lib/Target/RISCV/RISCVInstrInfoZalasr.td
index 1deecd2..f7ceb0d 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoZalasr.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoZalasr.td
@@ -30,21 +30,22 @@ class SRL_r<bit aq, bit rl, bits<3> funct3, string opcodestr>
opcodestr, "$rs2, $rs1"> {
let rd = 0;
}
+
multiclass LAQ_r_aq_rl<bits<3> funct3, string opcodestr> {
- def _AQ : LAQ_r<1, 0, funct3, opcodestr # ".aq">;
- def _AQ_RL : LAQ_r<1, 1, funct3, opcodestr # ".aqrl">;
+ def _AQ : LAQ_r<1, 0, funct3, opcodestr # ".aq">;
+ def _AQRL : LAQ_r<1, 1, funct3, opcodestr # ".aqrl">;
}
multiclass SRL_r_aq_rl<bits<3> funct3, string opcodestr> {
- def _RL : SRL_r<0, 1, funct3, opcodestr # ".rl">;
- def _AQ_RL : SRL_r<1, 1, funct3, opcodestr # ".aqrl">;
+ def _RL : SRL_r<0, 1, funct3, opcodestr # ".rl">;
+ def _AQRL : SRL_r<1, 1, funct3, opcodestr # ".aqrl">;
}
//===----------------------------------------------------------------------===//
// Instructions
//===----------------------------------------------------------------------===//
-let Predicates = [HasStdExtZalasr] in {
+let Predicates = [HasStdExtZalasr], IsSignExtendingOpW = 1 in {
defm LB : LAQ_r_aq_rl<0b000, "lb">;
defm LH : LAQ_r_aq_rl<0b001, "lh">;
defm LW : LAQ_r_aq_rl<0b010, "lw">;
diff --git a/llvm/lib/Target/RISCV/RISCVSchedSiFive7.td b/llvm/lib/Target/RISCV/RISCVSchedSiFive7.td
index 3f2e7db..3e07eff 100644
--- a/llvm/lib/Target/RISCV/RISCVSchedSiFive7.td
+++ b/llvm/lib/Target/RISCV/RISCVSchedSiFive7.td
@@ -567,9 +567,12 @@ multiclass SiFive7WriteResBase<int VLEN,
defvar VLDSX0Cycles = SiFive7GetCyclesDefault<mx>.c;
defvar Cycles = SiFive7GetCyclesOnePerElement<mx, 8, VLEN>.c;
defvar IsWorstCase = SiFive7IsWorstCaseMX<mx, SchedMxList>.c;
- defm : LMULWriteResMXVariant<"WriteVLDS8", VLDSX0Pred, [VCQ, VL],
- 4, [0, 1], [1, !add(1, VLDSX0Cycles)], !add(3, Cycles),
- [0, 1], [1, !add(1, Cycles)], mx, IsWorstCase>;
+ defm : LMULWriteResMXVariant<"WriteVLDS8", VLDSX0Pred,
+ // Predicated
+ [VCQ, VL], 4, [0, 1], [1, !add(1, VLDSX0Cycles)],
+ // Not Predicated
+ [VCQ, VL], !add(3, Cycles), [0, 1], [1, !add(1, Cycles)],
+ mx, IsWorstCase>;
let Latency = !add(3, Cycles), AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, !add(1, Cycles)] in {
defm : LMULWriteResMX<"WriteVLDUX8", [VCQ, VL], mx, IsWorstCase>;
defm : LMULWriteResMX<"WriteVLDOX8", [VCQ, VL], mx, IsWorstCase>;
@@ -587,9 +590,12 @@ multiclass SiFive7WriteResBase<int VLEN,
defvar VLDSX0Cycles = SiFive7GetCyclesDefault<mx>.c;
defvar Cycles = SiFive7GetCyclesOnePerElement<mx, 16, VLEN>.c;
defvar IsWorstCase = SiFive7IsWorstCaseMX<mx, SchedMxList>.c;
- defm : LMULWriteResMXVariant<"WriteVLDS16", VLDSX0Pred, [VCQ, VL],
- 4, [0, 1], [1, !add(1, VLDSX0Cycles)], !add(3, Cycles),
- [0, 1], [1, !add(1, Cycles)], mx, IsWorstCase>;
+ defm : LMULWriteResMXVariant<"WriteVLDS16", VLDSX0Pred,
+ // Predicated
+ [VCQ, VL], 4, [0, 1], [1, !add(1, VLDSX0Cycles)],
+ // Not Predicated
+ [VCQ, VL], !add(3, Cycles), [0, 1], [1, !add(1, Cycles)],
+ mx, IsWorstCase>;
let Latency = !add(3, Cycles), AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, !add(1, Cycles)] in {
defm : LMULWriteResMX<"WriteVLDUX16", [VCQ, VL], mx, IsWorstCase>;
defm : LMULWriteResMX<"WriteVLDOX16", [VCQ, VL], mx, IsWorstCase>;
@@ -604,9 +610,12 @@ multiclass SiFive7WriteResBase<int VLEN,
defvar VLDSX0Cycles = SiFive7GetCyclesDefault<mx>.c;
defvar Cycles = SiFive7GetCyclesOnePerElement<mx, 32, VLEN>.c;
defvar IsWorstCase = SiFive7IsWorstCaseMX<mx, SchedMxList>.c;
- defm : LMULWriteResMXVariant<"WriteVLDS32", VLDSX0Pred, [VCQ, VL],
- 4, [0, 1], [1, !add(1, VLDSX0Cycles)], !add(3, Cycles),
- [0, 1], [1, !add(1, Cycles)], mx, IsWorstCase>;
+ defm : LMULWriteResMXVariant<"WriteVLDS32", VLDSX0Pred,
+ // Predicated
+ [VCQ, VL], 4, [0, 1], [1, !add(1, VLDSX0Cycles)],
+ // Not Predicated
+ [VCQ, VL], !add(3, Cycles), [0, 1], [1, !add(1, Cycles)],
+ mx, IsWorstCase>;
let Latency = !add(3, Cycles), AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, !add(1, Cycles)] in {
defm : LMULWriteResMX<"WriteVLDUX32", [VCQ, VL], mx, IsWorstCase>;
defm : LMULWriteResMX<"WriteVLDOX32", [VCQ, VL], mx, IsWorstCase>;
@@ -621,9 +630,12 @@ multiclass SiFive7WriteResBase<int VLEN,
defvar VLDSX0Cycles = SiFive7GetCyclesDefault<mx>.c;
defvar Cycles = SiFive7GetCyclesOnePerElement<mx, 64, VLEN>.c;
defvar IsWorstCase = SiFive7IsWorstCaseMX<mx, SchedMxList>.c;
- defm : LMULWriteResMXVariant<"WriteVLDS64", VLDSX0Pred, [VCQ, VL],
- 4, [0, 1], [1, !add(1, VLDSX0Cycles)], !add(3, Cycles),
- [0, 1], [1, !add(1, Cycles)], mx, IsWorstCase>;
+ defm : LMULWriteResMXVariant<"WriteVLDS64", VLDSX0Pred,
+ // Predicated
+ [VCQ, VL], 4, [0, 1], [1, !add(1, VLDSX0Cycles)],
+ // Not Predicated
+ [VCQ, VL], !add(3, Cycles), [0, 1], [1, !add(1, Cycles)],
+ mx, IsWorstCase>;
let Latency = !add(3, Cycles), AcquireAtCycles = [0, 1], ReleaseAtCycles = [1, !add(1, Cycles)] in {
defm : LMULWriteResMX<"WriteVLDUX64", [VCQ, VL], mx, IsWorstCase>;
defm : LMULWriteResMX<"WriteVLDOX64", [VCQ, VL], mx, IsWorstCase>;
diff --git a/llvm/lib/Target/RISCV/RISCVScheduleV.td b/llvm/lib/Target/RISCV/RISCVScheduleV.td
index 6c7658c..01a4308 100644
--- a/llvm/lib/Target/RISCV/RISCVScheduleV.td
+++ b/llvm/lib/Target/RISCV/RISCVScheduleV.td
@@ -67,42 +67,41 @@ multiclass LMULSEWWriteResMXSEW<string name, list<ProcResourceKind> resources,
// ReleaseAtCycles predCycles if the SchedPredicate Pred is true, otherwise has
// Latency noPredLat and ReleaseAtCycles noPredCycles. The WorstCase SchedWrite
// is created similarly if IsWorstCase is true.
-multiclass LMULWriteResMXVariant<string name, SchedPredicateBase Pred,
- list<ProcResourceKind> resources,
- int predLat, list<int> predAcquireCycles,
- list<int> predReleaseCycles, int noPredLat,
- list<int> noPredAcquireCycles,
- list<int> noPredReleaseCycles,
- string mx, bit IsWorstCase> {
- defvar nameMX = name # "_" # mx;
-
+multiclass LMULWriteResVariantImpl<string name, string writeResName, SchedPredicateBase Pred,
+ list<ProcResourceKind> predResources,
+ int predLat, list<int> predAcquireCycles,
+ list<int> predReleaseCycles,
+ list<ProcResourceKind> noPredResources,
+ int noPredLat, list<int> noPredAcquireCycles,
+ list<int> noPredReleaseCycles,
+ bit IsWorstCase> {
// Define the different behaviors
- def nameMX # "_Pred" : SchedWriteRes<resources>{
+ def writeResName # "_Pred" : SchedWriteRes<predResources>{
let Latency = predLat;
let AcquireAtCycles = predAcquireCycles;
let ReleaseAtCycles = predReleaseCycles;
}
- def nameMX # "_NoPred" : SchedWriteRes<resources> {
+ def writeResName # "_NoPred" : SchedWriteRes<noPredResources> {
let Latency = noPredLat;
let AcquireAtCycles = noPredAcquireCycles;
let ReleaseAtCycles = noPredReleaseCycles;
}
// Define SchedVars
- def nameMX # PredSchedVar
- : SchedVar<Pred, [!cast<SchedWriteRes>(NAME # nameMX # "_Pred")]>;
- def nameMX # NoPredSchedVar
- : SchedVar<NoSchedPred, [!cast<SchedWriteRes>(NAME # nameMX #"_NoPred")]>;
+ def writeResName # PredSchedVar
+ : SchedVar<Pred, [!cast<SchedWriteRes>(NAME # writeResName # "_Pred")]>;
+ def writeResName # NoPredSchedVar
+ : SchedVar<NoSchedPred, [!cast<SchedWriteRes>(NAME # writeResName #"_NoPred")]>;
// Allow multiclass to refer to SchedVars -- need to have NAME prefix.
- defvar PredSchedVar = !cast<SchedVar>(NAME # nameMX # PredSchedVar);
- defvar NoPredSchedVar = !cast<SchedVar>(NAME # nameMX # NoPredSchedVar);
+ defvar PredSchedVar = !cast<SchedVar>(NAME # writeResName # PredSchedVar);
+ defvar NoPredSchedVar = !cast<SchedVar>(NAME # writeResName # NoPredSchedVar);
// Tie behavior to predicate
- def NAME # nameMX # "_Variant"
+ def NAME # writeResName # "_Variant"
: SchedWriteVariant<[PredSchedVar, NoPredSchedVar]>;
def : SchedAlias<
- !cast<SchedReadWrite>(nameMX),
- !cast<SchedReadWrite>(NAME # nameMX # "_Variant")>;
+ !cast<SchedReadWrite>(writeResName),
+ !cast<SchedReadWrite>(NAME # writeResName # "_Variant")>;
if IsWorstCase then {
def NAME # name # "_WorstCase_Variant"
@@ -113,6 +112,22 @@ multiclass LMULWriteResMXVariant<string name, SchedPredicateBase Pred,
}
}
+multiclass LMULWriteResMXVariant<string name, SchedPredicateBase Pred,
+ list<ProcResourceKind> predResources,
+ int predLat, list<int> predAcquireCycles,
+ list<int> predReleaseCycles,
+ list<ProcResourceKind> noPredResources,
+ int noPredLat, list<int> noPredAcquireCycles,
+ list<int> noPredReleaseCycles,
+ string mx, bit IsWorstCase> {
+ defm "" : LMULWriteResVariantImpl<name, name # "_" # mx, Pred, predResources,
+ predLat, predAcquireCycles,
+ predReleaseCycles, noPredResources,
+ noPredLat, noPredAcquireCycles,
+ noPredReleaseCycles,
+ IsWorstCase>;
+}
+
// Define multiclasses to define SchedWrite, SchedRead, WriteRes, and
// ReadAdvance for each (name, LMUL) pair and for each LMUL in each of the
// SchedMxList variants above. Each multiclass is responsible for defining
diff --git a/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp b/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp
index ee25f69..7bc0b5b 100644
--- a/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp
+++ b/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp
@@ -2747,20 +2747,72 @@ bool RISCVTTIImpl::getTgtMemIntrinsic(IntrinsicInst *Inst,
Intrinsic::ID IID = Inst->getIntrinsicID();
LLVMContext &C = Inst->getContext();
bool HasMask = false;
+
+ auto getSegNum = [](const IntrinsicInst *II, unsigned PtrOperandNo,
+ bool IsWrite) -> int64_t {
+ if (auto *TarExtTy =
+ dyn_cast<TargetExtType>(II->getArgOperand(0)->getType()))
+ return TarExtTy->getIntParameter(0);
+
+ return 1;
+ };
+
switch (IID) {
case Intrinsic::riscv_vle_mask:
case Intrinsic::riscv_vse_mask:
+ case Intrinsic::riscv_vlseg2_mask:
+ case Intrinsic::riscv_vlseg3_mask:
+ case Intrinsic::riscv_vlseg4_mask:
+ case Intrinsic::riscv_vlseg5_mask:
+ case Intrinsic::riscv_vlseg6_mask:
+ case Intrinsic::riscv_vlseg7_mask:
+ case Intrinsic::riscv_vlseg8_mask:
+ case Intrinsic::riscv_vsseg2_mask:
+ case Intrinsic::riscv_vsseg3_mask:
+ case Intrinsic::riscv_vsseg4_mask:
+ case Intrinsic::riscv_vsseg5_mask:
+ case Intrinsic::riscv_vsseg6_mask:
+ case Intrinsic::riscv_vsseg7_mask:
+ case Intrinsic::riscv_vsseg8_mask:
HasMask = true;
[[fallthrough]];
case Intrinsic::riscv_vle:
- case Intrinsic::riscv_vse: {
+ case Intrinsic::riscv_vse:
+ case Intrinsic::riscv_vlseg2:
+ case Intrinsic::riscv_vlseg3:
+ case Intrinsic::riscv_vlseg4:
+ case Intrinsic::riscv_vlseg5:
+ case Intrinsic::riscv_vlseg6:
+ case Intrinsic::riscv_vlseg7:
+ case Intrinsic::riscv_vlseg8:
+ case Intrinsic::riscv_vsseg2:
+ case Intrinsic::riscv_vsseg3:
+ case Intrinsic::riscv_vsseg4:
+ case Intrinsic::riscv_vsseg5:
+ case Intrinsic::riscv_vsseg6:
+ case Intrinsic::riscv_vsseg7:
+ case Intrinsic::riscv_vsseg8: {
// Intrinsic interface:
// riscv_vle(merge, ptr, vl)
// riscv_vle_mask(merge, ptr, mask, vl, policy)
// riscv_vse(val, ptr, vl)
// riscv_vse_mask(val, ptr, mask, vl, policy)
+ // riscv_vlseg#(merge, ptr, vl, sew)
+ // riscv_vlseg#_mask(merge, ptr, mask, vl, policy, sew)
+ // riscv_vsseg#(val, ptr, vl, sew)
+ // riscv_vsseg#_mask(val, ptr, mask, vl, sew)
bool IsWrite = Inst->getType()->isVoidTy();
Type *Ty = IsWrite ? Inst->getArgOperand(0)->getType() : Inst->getType();
+ // The results of segment loads are TargetExtType.
+ if (auto *TarExtTy = dyn_cast<TargetExtType>(Ty)) {
+ unsigned SEW =
+ 1 << cast<ConstantInt>(Inst->getArgOperand(Inst->arg_size() - 1))
+ ->getZExtValue();
+ Ty = TarExtTy->getTypeParameter(0U);
+ Ty = ScalableVectorType::get(
+ IntegerType::get(C, SEW),
+ cast<ScalableVectorType>(Ty)->getMinNumElements() * 8 / SEW);
+ }
const auto *RVVIInfo = RISCVVIntrinsicsTable::getRISCVVIntrinsicInfo(IID);
unsigned VLIndex = RVVIInfo->VLOperand;
unsigned PtrOperandNo = VLIndex - 1 - HasMask;
@@ -2771,23 +2823,72 @@ bool RISCVTTIImpl::getTgtMemIntrinsic(IntrinsicInst *Inst,
if (HasMask)
Mask = Inst->getArgOperand(VLIndex - 1);
Value *EVL = Inst->getArgOperand(VLIndex);
+ unsigned SegNum = getSegNum(Inst, PtrOperandNo, IsWrite);
+ // RVV uses contiguous elements as a segment.
+ if (SegNum > 1) {
+ unsigned ElemSize = Ty->getScalarSizeInBits();
+ auto *SegTy = IntegerType::get(C, ElemSize * SegNum);
+ Ty = VectorType::get(SegTy, cast<VectorType>(Ty));
+ }
Info.InterestingOperands.emplace_back(Inst, PtrOperandNo, IsWrite, Ty,
Alignment, Mask, EVL);
return true;
}
case Intrinsic::riscv_vlse_mask:
case Intrinsic::riscv_vsse_mask:
+ case Intrinsic::riscv_vlsseg2_mask:
+ case Intrinsic::riscv_vlsseg3_mask:
+ case Intrinsic::riscv_vlsseg4_mask:
+ case Intrinsic::riscv_vlsseg5_mask:
+ case Intrinsic::riscv_vlsseg6_mask:
+ case Intrinsic::riscv_vlsseg7_mask:
+ case Intrinsic::riscv_vlsseg8_mask:
+ case Intrinsic::riscv_vssseg2_mask:
+ case Intrinsic::riscv_vssseg3_mask:
+ case Intrinsic::riscv_vssseg4_mask:
+ case Intrinsic::riscv_vssseg5_mask:
+ case Intrinsic::riscv_vssseg6_mask:
+ case Intrinsic::riscv_vssseg7_mask:
+ case Intrinsic::riscv_vssseg8_mask:
HasMask = true;
[[fallthrough]];
case Intrinsic::riscv_vlse:
- case Intrinsic::riscv_vsse: {
+ case Intrinsic::riscv_vsse:
+ case Intrinsic::riscv_vlsseg2:
+ case Intrinsic::riscv_vlsseg3:
+ case Intrinsic::riscv_vlsseg4:
+ case Intrinsic::riscv_vlsseg5:
+ case Intrinsic::riscv_vlsseg6:
+ case Intrinsic::riscv_vlsseg7:
+ case Intrinsic::riscv_vlsseg8:
+ case Intrinsic::riscv_vssseg2:
+ case Intrinsic::riscv_vssseg3:
+ case Intrinsic::riscv_vssseg4:
+ case Intrinsic::riscv_vssseg5:
+ case Intrinsic::riscv_vssseg6:
+ case Intrinsic::riscv_vssseg7:
+ case Intrinsic::riscv_vssseg8: {
// Intrinsic interface:
// riscv_vlse(merge, ptr, stride, vl)
// riscv_vlse_mask(merge, ptr, stride, mask, vl, policy)
// riscv_vsse(val, ptr, stride, vl)
// riscv_vsse_mask(val, ptr, stride, mask, vl, policy)
+ // riscv_vlsseg#(merge, ptr, offset, vl, sew)
+ // riscv_vlsseg#_mask(merge, ptr, offset, mask, vl, policy, sew)
+ // riscv_vssseg#(val, ptr, offset, vl, sew)
+ // riscv_vssseg#_mask(val, ptr, offset, mask, vl, sew)
bool IsWrite = Inst->getType()->isVoidTy();
Type *Ty = IsWrite ? Inst->getArgOperand(0)->getType() : Inst->getType();
+ // The results of segment loads are TargetExtType.
+ if (auto *TarExtTy = dyn_cast<TargetExtType>(Ty)) {
+ unsigned SEW =
+ 1 << cast<ConstantInt>(Inst->getArgOperand(Inst->arg_size() - 1))
+ ->getZExtValue();
+ Ty = TarExtTy->getTypeParameter(0U);
+ Ty = ScalableVectorType::get(
+ IntegerType::get(C, SEW),
+ cast<ScalableVectorType>(Ty)->getMinNumElements() * 8 / SEW);
+ }
const auto *RVVIInfo = RISCVVIntrinsicsTable::getRISCVVIntrinsicInfo(IID);
unsigned VLIndex = RVVIInfo->VLOperand;
unsigned PtrOperandNo = VLIndex - 2 - HasMask;
@@ -2809,6 +2910,13 @@ bool RISCVTTIImpl::getTgtMemIntrinsic(IntrinsicInst *Inst,
if (HasMask)
Mask = Inst->getArgOperand(VLIndex - 1);
Value *EVL = Inst->getArgOperand(VLIndex);
+ unsigned SegNum = getSegNum(Inst, PtrOperandNo, IsWrite);
+ // RVV uses contiguous elements as a segment.
+ if (SegNum > 1) {
+ unsigned ElemSize = Ty->getScalarSizeInBits();
+ auto *SegTy = IntegerType::get(C, ElemSize * SegNum);
+ Ty = VectorType::get(SegTy, cast<VectorType>(Ty));
+ }
Info.InterestingOperands.emplace_back(Inst, PtrOperandNo, IsWrite, Ty,
Alignment, Mask, EVL, Stride);
return true;
@@ -2817,19 +2925,89 @@ bool RISCVTTIImpl::getTgtMemIntrinsic(IntrinsicInst *Inst,
case Intrinsic::riscv_vluxei_mask:
case Intrinsic::riscv_vsoxei_mask:
case Intrinsic::riscv_vsuxei_mask:
+ case Intrinsic::riscv_vloxseg2_mask:
+ case Intrinsic::riscv_vloxseg3_mask:
+ case Intrinsic::riscv_vloxseg4_mask:
+ case Intrinsic::riscv_vloxseg5_mask:
+ case Intrinsic::riscv_vloxseg6_mask:
+ case Intrinsic::riscv_vloxseg7_mask:
+ case Intrinsic::riscv_vloxseg8_mask:
+ case Intrinsic::riscv_vluxseg2_mask:
+ case Intrinsic::riscv_vluxseg3_mask:
+ case Intrinsic::riscv_vluxseg4_mask:
+ case Intrinsic::riscv_vluxseg5_mask:
+ case Intrinsic::riscv_vluxseg6_mask:
+ case Intrinsic::riscv_vluxseg7_mask:
+ case Intrinsic::riscv_vluxseg8_mask:
+ case Intrinsic::riscv_vsoxseg2_mask:
+ case Intrinsic::riscv_vsoxseg3_mask:
+ case Intrinsic::riscv_vsoxseg4_mask:
+ case Intrinsic::riscv_vsoxseg5_mask:
+ case Intrinsic::riscv_vsoxseg6_mask:
+ case Intrinsic::riscv_vsoxseg7_mask:
+ case Intrinsic::riscv_vsoxseg8_mask:
+ case Intrinsic::riscv_vsuxseg2_mask:
+ case Intrinsic::riscv_vsuxseg3_mask:
+ case Intrinsic::riscv_vsuxseg4_mask:
+ case Intrinsic::riscv_vsuxseg5_mask:
+ case Intrinsic::riscv_vsuxseg6_mask:
+ case Intrinsic::riscv_vsuxseg7_mask:
+ case Intrinsic::riscv_vsuxseg8_mask:
HasMask = true;
[[fallthrough]];
case Intrinsic::riscv_vloxei:
case Intrinsic::riscv_vluxei:
case Intrinsic::riscv_vsoxei:
- case Intrinsic::riscv_vsuxei: {
+ case Intrinsic::riscv_vsuxei:
+ case Intrinsic::riscv_vloxseg2:
+ case Intrinsic::riscv_vloxseg3:
+ case Intrinsic::riscv_vloxseg4:
+ case Intrinsic::riscv_vloxseg5:
+ case Intrinsic::riscv_vloxseg6:
+ case Intrinsic::riscv_vloxseg7:
+ case Intrinsic::riscv_vloxseg8:
+ case Intrinsic::riscv_vluxseg2:
+ case Intrinsic::riscv_vluxseg3:
+ case Intrinsic::riscv_vluxseg4:
+ case Intrinsic::riscv_vluxseg5:
+ case Intrinsic::riscv_vluxseg6:
+ case Intrinsic::riscv_vluxseg7:
+ case Intrinsic::riscv_vluxseg8:
+ case Intrinsic::riscv_vsoxseg2:
+ case Intrinsic::riscv_vsoxseg3:
+ case Intrinsic::riscv_vsoxseg4:
+ case Intrinsic::riscv_vsoxseg5:
+ case Intrinsic::riscv_vsoxseg6:
+ case Intrinsic::riscv_vsoxseg7:
+ case Intrinsic::riscv_vsoxseg8:
+ case Intrinsic::riscv_vsuxseg2:
+ case Intrinsic::riscv_vsuxseg3:
+ case Intrinsic::riscv_vsuxseg4:
+ case Intrinsic::riscv_vsuxseg5:
+ case Intrinsic::riscv_vsuxseg6:
+ case Intrinsic::riscv_vsuxseg7:
+ case Intrinsic::riscv_vsuxseg8: {
// Intrinsic interface (only listed ordered version):
// riscv_vloxei(merge, ptr, index, vl)
// riscv_vloxei_mask(merge, ptr, index, mask, vl, policy)
// riscv_vsoxei(val, ptr, index, vl)
// riscv_vsoxei_mask(val, ptr, index, mask, vl, policy)
+ // riscv_vloxseg#(merge, ptr, index, vl, sew)
+ // riscv_vloxseg#_mask(merge, ptr, index, mask, vl, policy, sew)
+ // riscv_vsoxseg#(val, ptr, index, vl, sew)
+ // riscv_vsoxseg#_mask(val, ptr, index, mask, vl, sew)
bool IsWrite = Inst->getType()->isVoidTy();
Type *Ty = IsWrite ? Inst->getArgOperand(0)->getType() : Inst->getType();
+ // The results of segment loads are TargetExtType.
+ if (auto *TarExtTy = dyn_cast<TargetExtType>(Ty)) {
+ unsigned SEW =
+ 1 << cast<ConstantInt>(Inst->getArgOperand(Inst->arg_size() - 1))
+ ->getZExtValue();
+ Ty = TarExtTy->getTypeParameter(0U);
+ Ty = ScalableVectorType::get(
+ IntegerType::get(C, SEW),
+ cast<ScalableVectorType>(Ty)->getMinNumElements() * 8 / SEW);
+ }
const auto *RVVIInfo = RISCVVIntrinsicsTable::getRISCVVIntrinsicInfo(IID);
unsigned VLIndex = RVVIInfo->VLOperand;
unsigned PtrOperandNo = VLIndex - 2 - HasMask;
@@ -2845,6 +3023,13 @@ bool RISCVTTIImpl::getTgtMemIntrinsic(IntrinsicInst *Inst,
Mask = ConstantInt::getTrue(MaskType);
}
Value *EVL = Inst->getArgOperand(VLIndex);
+ unsigned SegNum = getSegNum(Inst, PtrOperandNo, IsWrite);
+ // RVV uses contiguous elements as a segment.
+ if (SegNum > 1) {
+ unsigned ElemSize = Ty->getScalarSizeInBits();
+ auto *SegTy = IntegerType::get(C, ElemSize * SegNum);
+ Ty = VectorType::get(SegTy, cast<VectorType>(Ty));
+ }
Value *OffsetOp = Inst->getArgOperand(PtrOperandNo + 1);
Info.InterestingOperands.emplace_back(Inst, PtrOperandNo, IsWrite, Ty,
Align(1), Mask, EVL,
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
index 163bf9b..6472334 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
@@ -3209,7 +3209,8 @@ static SDValue performAnyAllCombine(SDNode *N, SelectionDAG &DAG) {
using namespace llvm::SDPatternMatch;
SDValue LHS;
- if (!sd_match(N->getOperand(1),
+ if (N->getNumOperands() < 2 ||
+ !sd_match(N->getOperand(1),
m_c_SetCC(m_Value(LHS), m_Zero(), m_CondCode())))
return SDValue();
EVT LT = LHS.getValueType();
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
index 9ca8194..56194fe 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
@@ -137,13 +137,10 @@ InstCombinerImpl::isEliminableCastPair(const CastInst *CI1,
Instruction::CastOps secondOp = CI2->getOpcode();
Type *SrcIntPtrTy =
SrcTy->isPtrOrPtrVectorTy() ? DL.getIntPtrType(SrcTy) : nullptr;
- Type *MidIntPtrTy =
- MidTy->isPtrOrPtrVectorTy() ? DL.getIntPtrType(MidTy) : nullptr;
Type *DstIntPtrTy =
DstTy->isPtrOrPtrVectorTy() ? DL.getIntPtrType(DstTy) : nullptr;
unsigned Res = CastInst::isEliminableCastPair(firstOp, secondOp, SrcTy, MidTy,
- DstTy, SrcIntPtrTy, MidIntPtrTy,
- DstIntPtrTy);
+ DstTy, &DL);
// We don't want to form an inttoptr or ptrtoint that converts to an integer
// type that differs from the pointer size.
diff --git a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
index cdae9a7..3704ad7 100644
--- a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
@@ -2662,7 +2662,7 @@ void ModuleAddressSanitizer::instrumentGlobals(IRBuilder<> &IRB,
G->eraseFromParent();
NewGlobals[i] = NewGlobal;
- Constant *ODRIndicator = ConstantPointerNull::get(PtrTy);
+ Constant *ODRIndicator = Constant::getNullValue(IntptrTy);
GlobalValue *InstrumentedGlobal = NewGlobal;
bool CanUsePrivateAliases =
@@ -2677,8 +2677,7 @@ void ModuleAddressSanitizer::instrumentGlobals(IRBuilder<> &IRB,
// ODR should not happen for local linkage.
if (NewGlobal->hasLocalLinkage()) {
- ODRIndicator =
- ConstantExpr::getIntToPtr(ConstantInt::get(IntptrTy, -1), PtrTy);
+ ODRIndicator = ConstantInt::get(IntptrTy, -1);
} else if (UseOdrIndicator) {
// With local aliases, we need to provide another externally visible
// symbol __odr_asan_XXX to detect ODR violation.
@@ -2692,7 +2691,7 @@ void ModuleAddressSanitizer::instrumentGlobals(IRBuilder<> &IRB,
ODRIndicatorSym->setVisibility(NewGlobal->getVisibility());
ODRIndicatorSym->setDLLStorageClass(NewGlobal->getDLLStorageClass());
ODRIndicatorSym->setAlignment(Align(1));
- ODRIndicator = ODRIndicatorSym;
+ ODRIndicator = ConstantExpr::getPtrToInt(ODRIndicatorSym, IntptrTy);
}
Constant *Initializer = ConstantStruct::get(
@@ -2703,8 +2702,7 @@ void ModuleAddressSanitizer::instrumentGlobals(IRBuilder<> &IRB,
ConstantExpr::getPointerCast(Name, IntptrTy),
ConstantExpr::getPointerCast(getOrCreateModuleName(), IntptrTy),
ConstantInt::get(IntptrTy, MD.IsDynInit),
- Constant::getNullValue(IntptrTy),
- ConstantExpr::getPointerCast(ODRIndicator, IntptrTy));
+ Constant::getNullValue(IntptrTy), ODRIndicator);
LLVM_DEBUG(dbgs() << "NEW GLOBAL: " << *NewGlobal << "\n");
diff --git a/llvm/lib/Transforms/Instrumentation/AllocToken.cpp b/llvm/lib/Transforms/Instrumentation/AllocToken.cpp
new file mode 100644
index 0000000..782d5a1
--- /dev/null
+++ b/llvm/lib/Transforms/Instrumentation/AllocToken.cpp
@@ -0,0 +1,494 @@
+//===- AllocToken.cpp - Allocation token instrumentation ------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements AllocToken, an instrumentation pass that
+// replaces allocation calls with token-enabled versions.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/Transforms/Instrumentation/AllocToken.h"
+#include "llvm/ADT/DenseMap.h"
+#include "llvm/ADT/SmallPtrSet.h"
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/ADT/Statistic.h"
+#include "llvm/ADT/StringExtras.h"
+#include "llvm/ADT/StringRef.h"
+#include "llvm/Analysis/MemoryBuiltins.h"
+#include "llvm/Analysis/OptimizationRemarkEmitter.h"
+#include "llvm/Analysis/TargetLibraryInfo.h"
+#include "llvm/IR/Analysis.h"
+#include "llvm/IR/Attributes.h"
+#include "llvm/IR/Constants.h"
+#include "llvm/IR/DerivedTypes.h"
+#include "llvm/IR/Function.h"
+#include "llvm/IR/GlobalValue.h"
+#include "llvm/IR/IRBuilder.h"
+#include "llvm/IR/InstIterator.h"
+#include "llvm/IR/InstrTypes.h"
+#include "llvm/IR/Instructions.h"
+#include "llvm/IR/Metadata.h"
+#include "llvm/IR/Module.h"
+#include "llvm/IR/PassManager.h"
+#include "llvm/IR/Type.h"
+#include "llvm/Support/Casting.h"
+#include "llvm/Support/CommandLine.h"
+#include "llvm/Support/Compiler.h"
+#include "llvm/Support/ErrorHandling.h"
+#include "llvm/Support/RandomNumberGenerator.h"
+#include "llvm/Support/SipHash.h"
+#include "llvm/Support/raw_ostream.h"
+#include <cassert>
+#include <cstddef>
+#include <cstdint>
+#include <limits>
+#include <memory>
+#include <optional>
+#include <string>
+#include <utility>
+#include <variant>
+
+using namespace llvm;
+
+#define DEBUG_TYPE "alloc-token"
+
+namespace {
+
+//===--- Constants --------------------------------------------------------===//
+
+enum class TokenMode : unsigned {
+ /// Incrementally increasing token ID.
+ Increment = 0,
+
+ /// Simple mode that returns a statically-assigned random token ID.
+ Random = 1,
+
+ /// Token ID based on allocated type hash.
+ TypeHash = 2,
+};
+
+//===--- Command-line options ---------------------------------------------===//
+
+cl::opt<TokenMode>
+ ClMode("alloc-token-mode", cl::Hidden, cl::desc("Token assignment mode"),
+ cl::init(TokenMode::TypeHash),
+ cl::values(clEnumValN(TokenMode::Increment, "increment",
+ "Incrementally increasing token ID"),
+ clEnumValN(TokenMode::Random, "random",
+ "Statically-assigned random token ID"),
+ clEnumValN(TokenMode::TypeHash, "typehash",
+ "Token ID based on allocated type hash")));
+
+cl::opt<std::string> ClFuncPrefix("alloc-token-prefix",
+ cl::desc("The allocation function prefix"),
+ cl::Hidden, cl::init("__alloc_token_"));
+
+cl::opt<uint64_t> ClMaxTokens("alloc-token-max",
+ cl::desc("Maximum number of tokens (0 = no max)"),
+ cl::Hidden, cl::init(0));
+
+cl::opt<bool>
+ ClFastABI("alloc-token-fast-abi",
+ cl::desc("The token ID is encoded in the function name"),
+ cl::Hidden, cl::init(false));
+
+// Instrument libcalls only by default - compatible allocators only need to take
+// care of providing standard allocation functions. With extended coverage, also
+// instrument non-libcall allocation function calls with !alloc_token
+// metadata.
+cl::opt<bool>
+ ClExtended("alloc-token-extended",
+ cl::desc("Extend coverage to custom allocation functions"),
+ cl::Hidden, cl::init(false));
+
+// C++ defines ::operator new (and variants) as replaceable (vs. standard
+// library versions), which are nobuiltin, and are therefore not covered by
+// isAllocationFn(). Cover by default, as users of AllocToken are already
+// required to provide token-aware allocation functions (no defaults).
+cl::opt<bool> ClCoverReplaceableNew("alloc-token-cover-replaceable-new",
+ cl::desc("Cover replaceable operator new"),
+ cl::Hidden, cl::init(true));
+
+cl::opt<uint64_t> ClFallbackToken(
+ "alloc-token-fallback",
+ cl::desc("The default fallback token where none could be determined"),
+ cl::Hidden, cl::init(0));
+
+//===--- Statistics -------------------------------------------------------===//
+
+STATISTIC(NumFunctionsInstrumented, "Functions instrumented");
+STATISTIC(NumAllocationsInstrumented, "Allocations instrumented");
+
+//===----------------------------------------------------------------------===//
+
+/// Returns the !alloc_token metadata if available.
+///
+/// Expected format is: !{<type-name>}
+MDNode *getAllocTokenMetadata(const CallBase &CB) {
+ MDNode *Ret = CB.getMetadata(LLVMContext::MD_alloc_token);
+ if (!Ret)
+ return nullptr;
+ assert(Ret->getNumOperands() == 1 && "bad !alloc_token");
+ assert(isa<MDString>(Ret->getOperand(0)));
+ return Ret;
+}
+
+class ModeBase {
+public:
+ explicit ModeBase(const IntegerType &TokenTy, uint64_t MaxTokens)
+ : MaxTokens(MaxTokens ? MaxTokens : TokenTy.getBitMask()) {
+ assert(MaxTokens <= TokenTy.getBitMask());
+ }
+
+protected:
+ uint64_t boundedToken(uint64_t Val) const {
+ assert(MaxTokens != 0);
+ return Val % MaxTokens;
+ }
+
+ const uint64_t MaxTokens;
+};
+
+/// Implementation for TokenMode::Increment.
+class IncrementMode : public ModeBase {
+public:
+ using ModeBase::ModeBase;
+
+ uint64_t operator()(const CallBase &CB, OptimizationRemarkEmitter &) {
+ return boundedToken(Counter++);
+ }
+
+private:
+ uint64_t Counter = 0;
+};
+
+/// Implementation for TokenMode::Random.
+class RandomMode : public ModeBase {
+public:
+ RandomMode(const IntegerType &TokenTy, uint64_t MaxTokens,
+ std::unique_ptr<RandomNumberGenerator> RNG)
+ : ModeBase(TokenTy, MaxTokens), RNG(std::move(RNG)) {}
+ uint64_t operator()(const CallBase &CB, OptimizationRemarkEmitter &) {
+ return boundedToken((*RNG)());
+ }
+
+private:
+ std::unique_ptr<RandomNumberGenerator> RNG;
+};
+
+/// Implementation for TokenMode::TypeHash. The implementation ensures
+/// hashes are stable across different compiler invocations. Uses SipHash as the
+/// hash function.
+class TypeHashMode : public ModeBase {
+public:
+ using ModeBase::ModeBase;
+
+ uint64_t operator()(const CallBase &CB, OptimizationRemarkEmitter &ORE) {
+ if (MDNode *N = getAllocTokenMetadata(CB)) {
+ MDString *S = cast<MDString>(N->getOperand(0));
+ return boundedToken(getStableSipHash(S->getString()));
+ }
+ remarkNoMetadata(CB, ORE);
+ return ClFallbackToken;
+ }
+
+ /// Remark that there was no precise type information.
+ static void remarkNoMetadata(const CallBase &CB,
+ OptimizationRemarkEmitter &ORE) {
+ ORE.emit([&] {
+ ore::NV FuncNV("Function", CB.getParent()->getParent());
+ const Function *Callee = CB.getCalledFunction();
+ ore::NV CalleeNV("Callee", Callee ? Callee->getName() : "<unknown>");
+ return OptimizationRemark(DEBUG_TYPE, "NoAllocToken", &CB)
+ << "Call to '" << CalleeNV << "' in '" << FuncNV
+ << "' without source-level type token";
+ });
+ }
+};
+
+// Apply opt overrides.
+AllocTokenOptions transformOptionsFromCl(AllocTokenOptions Opts) {
+ if (!Opts.MaxTokens.has_value())
+ Opts.MaxTokens = ClMaxTokens;
+ Opts.FastABI |= ClFastABI;
+ Opts.Extended |= ClExtended;
+ return Opts;
+}
+
+class AllocToken {
+public:
+ explicit AllocToken(AllocTokenOptions Opts, Module &M,
+ ModuleAnalysisManager &MAM)
+ : Options(transformOptionsFromCl(std::move(Opts))), Mod(M),
+ FAM(MAM.getResult<FunctionAnalysisManagerModuleProxy>(M).getManager()),
+ Mode(IncrementMode(*IntPtrTy, *Options.MaxTokens)) {
+ switch (ClMode.getValue()) {
+ case TokenMode::Increment:
+ break;
+ case TokenMode::Random:
+ Mode.emplace<RandomMode>(*IntPtrTy, *Options.MaxTokens,
+ M.createRNG(DEBUG_TYPE));
+ break;
+ case TokenMode::TypeHash:
+ Mode.emplace<TypeHashMode>(*IntPtrTy, *Options.MaxTokens);
+ break;
+ }
+ }
+
+ bool instrumentFunction(Function &F);
+
+private:
+ /// Returns the LibFunc (or NotLibFunc) if this call should be instrumented.
+ std::optional<LibFunc>
+ shouldInstrumentCall(const CallBase &CB, const TargetLibraryInfo &TLI) const;
+
+ /// Returns true for functions that are eligible for instrumentation.
+ static bool isInstrumentableLibFunc(LibFunc Func, const CallBase &CB,
+ const TargetLibraryInfo &TLI);
+
+ /// Returns true for isAllocationFn() functions that we should ignore.
+ static bool ignoreInstrumentableLibFunc(LibFunc Func);
+
+ /// Replace a call/invoke with a call/invoke to the allocation function
+ /// with token ID.
+ bool replaceAllocationCall(CallBase *CB, LibFunc Func,
+ OptimizationRemarkEmitter &ORE,
+ const TargetLibraryInfo &TLI);
+
+ /// Return replacement function for a LibFunc that takes a token ID.
+ FunctionCallee getTokenAllocFunction(const CallBase &CB, uint64_t TokenID,
+ LibFunc OriginalFunc);
+
+ /// Return the token ID from metadata in the call.
+ uint64_t getToken(const CallBase &CB, OptimizationRemarkEmitter &ORE) {
+ return std::visit([&](auto &&Mode) { return Mode(CB, ORE); }, Mode);
+ }
+
+ const AllocTokenOptions Options;
+ Module &Mod;
+ IntegerType *IntPtrTy = Mod.getDataLayout().getIntPtrType(Mod.getContext());
+ FunctionAnalysisManager &FAM;
+ // Cache for replacement functions.
+ DenseMap<std::pair<LibFunc, uint64_t>, FunctionCallee> TokenAllocFunctions;
+ // Selected mode.
+ std::variant<IncrementMode, RandomMode, TypeHashMode> Mode;
+};
+
+bool AllocToken::instrumentFunction(Function &F) {
+ // Do not apply any instrumentation for naked functions.
+ if (F.hasFnAttribute(Attribute::Naked))
+ return false;
+ if (F.hasFnAttribute(Attribute::DisableSanitizerInstrumentation))
+ return false;
+ // Don't touch available_externally functions, their actual body is elsewhere.
+ if (F.getLinkage() == GlobalValue::AvailableExternallyLinkage)
+ return false;
+ // Only instrument functions that have the sanitize_alloc_token attribute.
+ if (!F.hasFnAttribute(Attribute::SanitizeAllocToken))
+ return false;
+
+ auto &ORE = FAM.getResult<OptimizationRemarkEmitterAnalysis>(F);
+ auto &TLI = FAM.getResult<TargetLibraryAnalysis>(F);
+ SmallVector<std::pair<CallBase *, LibFunc>, 4> AllocCalls;
+
+ // Collect all allocation calls to avoid iterator invalidation.
+ for (Instruction &I : instructions(F)) {
+ auto *CB = dyn_cast<CallBase>(&I);
+ if (!CB)
+ continue;
+ if (std::optional<LibFunc> Func = shouldInstrumentCall(*CB, TLI))
+ AllocCalls.emplace_back(CB, Func.value());
+ }
+
+ bool Modified = false;
+ for (auto &[CB, Func] : AllocCalls)
+ Modified |= replaceAllocationCall(CB, Func, ORE, TLI);
+
+ if (Modified)
+ NumFunctionsInstrumented++;
+ return Modified;
+}
+
+std::optional<LibFunc>
+AllocToken::shouldInstrumentCall(const CallBase &CB,
+ const TargetLibraryInfo &TLI) const {
+ const Function *Callee = CB.getCalledFunction();
+ if (!Callee)
+ return std::nullopt;
+
+ // Ignore nobuiltin of the CallBase, so that we can cover nobuiltin libcalls
+ // if requested via isInstrumentableLibFunc(). Note that isAllocationFn() is
+ // returning false for nobuiltin calls.
+ LibFunc Func;
+ if (TLI.getLibFunc(*Callee, Func)) {
+ if (isInstrumentableLibFunc(Func, CB, TLI))
+ return Func;
+ } else if (Options.Extended && getAllocTokenMetadata(CB)) {
+ return NotLibFunc;
+ }
+
+ return std::nullopt;
+}
+
+bool AllocToken::isInstrumentableLibFunc(LibFunc Func, const CallBase &CB,
+ const TargetLibraryInfo &TLI) {
+ if (ignoreInstrumentableLibFunc(Func))
+ return false;
+
+ if (isAllocationFn(&CB, &TLI))
+ return true;
+
+ switch (Func) {
+ // These libfuncs don't return normal pointers, and are therefore not handled
+ // by isAllocationFn().
+ case LibFunc_posix_memalign:
+ case LibFunc_size_returning_new:
+ case LibFunc_size_returning_new_hot_cold:
+ case LibFunc_size_returning_new_aligned:
+ case LibFunc_size_returning_new_aligned_hot_cold:
+ return true;
+
+ // See comment above ClCoverReplaceableNew.
+ case LibFunc_Znwj:
+ case LibFunc_ZnwjRKSt9nothrow_t:
+ case LibFunc_ZnwjSt11align_val_t:
+ case LibFunc_ZnwjSt11align_val_tRKSt9nothrow_t:
+ case LibFunc_Znwm:
+ case LibFunc_Znwm12__hot_cold_t:
+ case LibFunc_ZnwmRKSt9nothrow_t:
+ case LibFunc_ZnwmRKSt9nothrow_t12__hot_cold_t:
+ case LibFunc_ZnwmSt11align_val_t:
+ case LibFunc_ZnwmSt11align_val_t12__hot_cold_t:
+ case LibFunc_ZnwmSt11align_val_tRKSt9nothrow_t:
+ case LibFunc_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t:
+ case LibFunc_Znaj:
+ case LibFunc_ZnajRKSt9nothrow_t:
+ case LibFunc_ZnajSt11align_val_t:
+ case LibFunc_ZnajSt11align_val_tRKSt9nothrow_t:
+ case LibFunc_Znam:
+ case LibFunc_Znam12__hot_cold_t:
+ case LibFunc_ZnamRKSt9nothrow_t:
+ case LibFunc_ZnamRKSt9nothrow_t12__hot_cold_t:
+ case LibFunc_ZnamSt11align_val_t:
+ case LibFunc_ZnamSt11align_val_t12__hot_cold_t:
+ case LibFunc_ZnamSt11align_val_tRKSt9nothrow_t:
+ case LibFunc_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t:
+ return ClCoverReplaceableNew;
+
+ default:
+ return false;
+ }
+}
+
+bool AllocToken::ignoreInstrumentableLibFunc(LibFunc Func) {
+ switch (Func) {
+ case LibFunc_strdup:
+ case LibFunc_dunder_strdup:
+ case LibFunc_strndup:
+ case LibFunc_dunder_strndup:
+ return true;
+ default:
+ return false;
+ }
+}
+
+bool AllocToken::replaceAllocationCall(CallBase *CB, LibFunc Func,
+ OptimizationRemarkEmitter &ORE,
+ const TargetLibraryInfo &TLI) {
+ uint64_t TokenID = getToken(*CB, ORE);
+
+ FunctionCallee TokenAlloc = getTokenAllocFunction(*CB, TokenID, Func);
+ if (!TokenAlloc)
+ return false;
+ NumAllocationsInstrumented++;
+
+ if (Options.FastABI) {
+ assert(TokenAlloc.getFunctionType()->getNumParams() == CB->arg_size());
+ CB->setCalledFunction(TokenAlloc);
+ return true;
+ }
+
+ IRBuilder<> IRB(CB);
+ // Original args.
+ SmallVector<Value *, 4> NewArgs{CB->args()};
+ // Add token ID, truncated to IntPtrTy width.
+ NewArgs.push_back(ConstantInt::get(IntPtrTy, TokenID));
+ assert(TokenAlloc.getFunctionType()->getNumParams() == NewArgs.size());
+
+ // Preserve invoke vs call semantics for exception handling.
+ CallBase *NewCall;
+ if (auto *II = dyn_cast<InvokeInst>(CB)) {
+ NewCall = IRB.CreateInvoke(TokenAlloc, II->getNormalDest(),
+ II->getUnwindDest(), NewArgs);
+ } else {
+ NewCall = IRB.CreateCall(TokenAlloc, NewArgs);
+ cast<CallInst>(NewCall)->setTailCall(CB->isTailCall());
+ }
+ NewCall->setCallingConv(CB->getCallingConv());
+ NewCall->copyMetadata(*CB);
+ NewCall->setAttributes(CB->getAttributes());
+
+ // Replace all uses and delete the old call.
+ CB->replaceAllUsesWith(NewCall);
+ CB->eraseFromParent();
+ return true;
+}
+
+FunctionCallee AllocToken::getTokenAllocFunction(const CallBase &CB,
+ uint64_t TokenID,
+ LibFunc OriginalFunc) {
+ std::optional<std::pair<LibFunc, uint64_t>> Key;
+ if (OriginalFunc != NotLibFunc) {
+ Key = std::make_pair(OriginalFunc, Options.FastABI ? TokenID : 0);
+ auto It = TokenAllocFunctions.find(*Key);
+ if (It != TokenAllocFunctions.end())
+ return It->second;
+ }
+
+ const Function *Callee = CB.getCalledFunction();
+ if (!Callee)
+ return FunctionCallee();
+ const FunctionType *OldFTy = Callee->getFunctionType();
+ if (OldFTy->isVarArg())
+ return FunctionCallee();
+ // Copy params, and append token ID type.
+ Type *RetTy = OldFTy->getReturnType();
+ SmallVector<Type *, 4> NewParams{OldFTy->params()};
+ std::string TokenAllocName = ClFuncPrefix;
+ if (Options.FastABI)
+ TokenAllocName += utostr(TokenID) + "_";
+ else
+ NewParams.push_back(IntPtrTy); // token ID
+ TokenAllocName += Callee->getName();
+ FunctionType *NewFTy = FunctionType::get(RetTy, NewParams, false);
+ FunctionCallee TokenAlloc = Mod.getOrInsertFunction(TokenAllocName, NewFTy);
+ if (Function *F = dyn_cast<Function>(TokenAlloc.getCallee()))
+ F->copyAttributesFrom(Callee); // preserve attrs
+
+ if (Key.has_value())
+ TokenAllocFunctions[*Key] = TokenAlloc;
+ return TokenAlloc;
+}
+
+} // namespace
+
+AllocTokenPass::AllocTokenPass(AllocTokenOptions Opts)
+ : Options(std::move(Opts)) {}
+
+PreservedAnalyses AllocTokenPass::run(Module &M, ModuleAnalysisManager &MAM) {
+ AllocToken Pass(Options, M, MAM);
+ bool Modified = false;
+
+ for (Function &F : M) {
+ if (F.empty())
+ continue; // declaration
+ Modified |= Pass.instrumentFunction(F);
+ }
+
+ return Modified ? PreservedAnalyses::none().preserveSet<CFGAnalyses>()
+ : PreservedAnalyses::all();
+}
diff --git a/llvm/lib/Transforms/Instrumentation/CMakeLists.txt b/llvm/lib/Transforms/Instrumentation/CMakeLists.txt
index 15fd421..80576c6 100644
--- a/llvm/lib/Transforms/Instrumentation/CMakeLists.txt
+++ b/llvm/lib/Transforms/Instrumentation/CMakeLists.txt
@@ -1,5 +1,6 @@
add_llvm_component_library(LLVMInstrumentation
AddressSanitizer.cpp
+ AllocToken.cpp
BoundsChecking.cpp
CGProfile.cpp
ControlHeightReduction.cpp
diff --git a/llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp
index 480ff4a..5ba2167 100644
--- a/llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp
@@ -261,6 +261,11 @@ static cl::opt<bool> ClIgnorePersonalityRoutine(
"list, do not create a wrapper for it."),
cl::Hidden, cl::init(false));
+static cl::opt<bool> ClAddGlobalNameSuffix(
+ "dfsan-add-global-name-suffix",
+ cl::desc("Whether to add .dfsan suffix to global names"), cl::Hidden,
+ cl::init(true));
+
static StringRef getGlobalTypeString(const GlobalValue &G) {
// Types of GlobalVariables are always pointer types.
Type *GType = G.getValueType();
@@ -1256,6 +1261,9 @@ DataFlowSanitizer::WrapperKind DataFlowSanitizer::getWrapperKind(Function *F) {
}
void DataFlowSanitizer::addGlobalNameSuffix(GlobalValue *GV) {
+ if (!ClAddGlobalNameSuffix)
+ return;
+
std::string GVName = std::string(GV->getName()), Suffix = ".dfsan";
GV->setName(GVName + Suffix);
@@ -1784,10 +1792,8 @@ bool DataFlowSanitizer::runImpl(
}
Value *DFSanFunction::getArgTLS(Type *T, unsigned ArgOffset, IRBuilder<> &IRB) {
- Value *Base = IRB.CreatePointerCast(DFS.ArgTLS, DFS.IntptrTy);
- if (ArgOffset)
- Base = IRB.CreateAdd(Base, ConstantInt::get(DFS.IntptrTy, ArgOffset));
- return IRB.CreateIntToPtr(Base, PointerType::get(*DFS.Ctx, 0), "_dfsarg");
+ return IRB.CreatePtrAdd(DFS.ArgTLS, ConstantInt::get(DFS.IntptrTy, ArgOffset),
+ "_dfsarg");
}
Value *DFSanFunction::getRetvalTLS(Type *T, IRBuilder<> &IRB) {
diff --git a/llvm/lib/Transforms/Scalar/DFAJumpThreading.cpp b/llvm/lib/Transforms/Scalar/DFAJumpThreading.cpp
index e9a3e98..584cdad 100644
--- a/llvm/lib/Transforms/Scalar/DFAJumpThreading.cpp
+++ b/llvm/lib/Transforms/Scalar/DFAJumpThreading.cpp
@@ -89,6 +89,7 @@ STATISTIC(NumTransforms, "Number of transformations done");
STATISTIC(NumCloned, "Number of blocks cloned");
STATISTIC(NumPaths, "Number of individual paths threaded");
+namespace llvm {
static cl::opt<bool>
ClViewCfgBefore("dfa-jump-view-cfg-before",
cl::desc("View the CFG before DFA Jump Threading"),
@@ -120,8 +121,17 @@ static cl::opt<unsigned>
cl::desc("Maximum cost accepted for the transformation"),
cl::Hidden, cl::init(50));
-namespace {
+extern cl::opt<bool> ProfcheckDisableMetadataFixes;
+
+} // namespace llvm
+
+static cl::opt<double> MaxClonedRate(
+ "dfa-max-cloned-rate",
+ cl::desc(
+ "Maximum cloned instructions rate accepted for the transformation"),
+ cl::Hidden, cl::init(7.5));
+namespace {
class SelectInstToUnfold {
SelectInst *SI;
PHINode *SIUse;
@@ -135,10 +145,6 @@ public:
explicit operator bool() const { return SI && SIUse; }
};
-void unfold(DomTreeUpdater *DTU, LoopInfo *LI, SelectInstToUnfold SIToUnfold,
- std::vector<SelectInstToUnfold> *NewSIsToUnfold,
- std::vector<BasicBlock *> *NewBBs);
-
class DFAJumpThreading {
public:
DFAJumpThreading(AssumptionCache *AC, DominatorTree *DT, LoopInfo *LI,
@@ -152,7 +158,8 @@ private:
void
unfoldSelectInstrs(DominatorTree *DT,
const SmallVector<SelectInstToUnfold, 4> &SelectInsts) {
- DomTreeUpdater DTU(DT, DomTreeUpdater::UpdateStrategy::Eager);
+ // TODO: Have everything use a single lazy DTU
+ DomTreeUpdater DTU(DT, DomTreeUpdater::UpdateStrategy::Lazy);
SmallVector<SelectInstToUnfold, 4> Stack(SelectInsts);
while (!Stack.empty()) {
@@ -167,16 +174,18 @@ private:
}
}
+ static void unfold(DomTreeUpdater *DTU, LoopInfo *LI,
+ SelectInstToUnfold SIToUnfold,
+ std::vector<SelectInstToUnfold> *NewSIsToUnfold,
+ std::vector<BasicBlock *> *NewBBs);
+
AssumptionCache *AC;
DominatorTree *DT;
LoopInfo *LI;
TargetTransformInfo *TTI;
OptimizationRemarkEmitter *ORE;
};
-
-} // end anonymous namespace
-
-namespace {
+} // namespace
/// Unfold the select instruction held in \p SIToUnfold by replacing it with
/// control flow.
@@ -185,9 +194,10 @@ namespace {
/// created basic blocks into \p NewBBs.
///
/// TODO: merge it with CodeGenPrepare::optimizeSelectInst() if possible.
-void unfold(DomTreeUpdater *DTU, LoopInfo *LI, SelectInstToUnfold SIToUnfold,
- std::vector<SelectInstToUnfold> *NewSIsToUnfold,
- std::vector<BasicBlock *> *NewBBs) {
+void DFAJumpThreading::unfold(DomTreeUpdater *DTU, LoopInfo *LI,
+ SelectInstToUnfold SIToUnfold,
+ std::vector<SelectInstToUnfold> *NewSIsToUnfold,
+ std::vector<BasicBlock *> *NewBBs) {
SelectInst *SI = SIToUnfold.getInst();
PHINode *SIUse = SIToUnfold.getUse();
assert(SI->hasOneUse());
@@ -253,7 +263,11 @@ void unfold(DomTreeUpdater *DTU, LoopInfo *LI, SelectInstToUnfold SIToUnfold,
// Insert the real conditional branch based on the original condition.
StartBlockTerm->eraseFromParent();
- BranchInst::Create(EndBlock, NewBlock, SI->getCondition(), StartBlock);
+ auto *BI =
+ BranchInst::Create(EndBlock, NewBlock, SI->getCondition(), StartBlock);
+ if (!ProfcheckDisableMetadataFixes)
+ BI->setMetadata(LLVMContext::MD_prof,
+ SI->getMetadata(LLVMContext::MD_prof));
DTU->applyUpdates({{DominatorTree::Insert, StartBlock, EndBlock},
{DominatorTree::Insert, StartBlock, NewBlock}});
} else {
@@ -288,7 +302,11 @@ void unfold(DomTreeUpdater *DTU, LoopInfo *LI, SelectInstToUnfold SIToUnfold,
// (Use)
BranchInst::Create(EndBlock, NewBlockF);
// Insert the real conditional branch based on the original condition.
- BranchInst::Create(EndBlock, NewBlockF, SI->getCondition(), NewBlockT);
+ auto *BI =
+ BranchInst::Create(EndBlock, NewBlockF, SI->getCondition(), NewBlockT);
+ if (!ProfcheckDisableMetadataFixes)
+ BI->setMetadata(LLVMContext::MD_prof,
+ SI->getMetadata(LLVMContext::MD_prof));
DTU->applyUpdates({{DominatorTree::Insert, NewBlockT, NewBlockF},
{DominatorTree::Insert, NewBlockT, EndBlock},
{DominatorTree::Insert, NewBlockF, EndBlock}});
@@ -342,10 +360,12 @@ void unfold(DomTreeUpdater *DTU, LoopInfo *LI, SelectInstToUnfold SIToUnfold,
SI->eraseFromParent();
}
+namespace {
struct ClonedBlock {
BasicBlock *BB;
APInt State; ///< \p State corresponds to the next value of a switch stmnt.
};
+} // namespace
typedef std::deque<BasicBlock *> PathType;
typedef std::vector<PathType> PathsType;
@@ -375,6 +395,7 @@ inline raw_ostream &operator<<(raw_ostream &OS, const PathType &Path) {
return OS;
}
+namespace {
/// ThreadingPath is a path in the control flow of a loop that can be threaded
/// by cloning necessary basic blocks and replacing conditional branches with
/// unconditional ones. A threading path includes a list of basic blocks, the
@@ -814,11 +835,13 @@ struct TransformDFA {
: SwitchPaths(SwitchPaths), DT(DT), AC(AC), TTI(TTI), ORE(ORE),
EphValues(EphValues) {}
- void run() {
+ bool run() {
if (isLegalAndProfitableToTransform()) {
createAllExitPaths();
NumTransforms++;
+ return true;
}
+ return false;
}
private:
@@ -828,6 +851,7 @@ private:
/// also returns false if it is illegal to clone some required block.
bool isLegalAndProfitableToTransform() {
CodeMetrics Metrics;
+ uint64_t NumClonedInst = 0;
SwitchInst *Switch = SwitchPaths->getSwitchInst();
// Don't thread switch without multiple successors.
@@ -837,7 +861,6 @@ private:
// Note that DuplicateBlockMap is not being used as intended here. It is
// just being used to ensure (BB, State) pairs are only counted once.
DuplicateBlockMap DuplicateMap;
-
for (ThreadingPath &TPath : SwitchPaths->getThreadingPaths()) {
PathType PathBBs = TPath.getPath();
APInt NextState = TPath.getExitValue();
@@ -848,6 +871,7 @@ private:
BasicBlock *VisitedBB = getClonedBB(BB, NextState, DuplicateMap);
if (!VisitedBB) {
Metrics.analyzeBasicBlock(BB, *TTI, EphValues);
+ NumClonedInst += BB->sizeWithoutDebug();
DuplicateMap[BB].push_back({BB, NextState});
}
@@ -865,6 +889,7 @@ private:
if (VisitedBB)
continue;
Metrics.analyzeBasicBlock(BB, *TTI, EphValues);
+ NumClonedInst += BB->sizeWithoutDebug();
DuplicateMap[BB].push_back({BB, NextState});
}
@@ -901,6 +926,22 @@ private:
}
}
+ // Too much cloned instructions slow down later optimizations, especially
+ // SLPVectorizer.
+ // TODO: Thread the switch partially before reaching the threshold.
+ uint64_t NumOrigInst = 0;
+ for (auto *BB : DuplicateMap.keys())
+ NumOrigInst += BB->sizeWithoutDebug();
+ if (double(NumClonedInst) / double(NumOrigInst) > MaxClonedRate) {
+ LLVM_DEBUG(dbgs() << "DFA Jump Threading: Not jump threading, too much "
+ "instructions wll be cloned\n");
+ ORE->emit([&]() {
+ return OptimizationRemarkMissed(DEBUG_TYPE, "NotProfitable", Switch)
+ << "Too much instructions will be cloned.";
+ });
+ return false;
+ }
+
InstructionCost DuplicationCost = 0;
unsigned JumpTableSize = 0;
@@ -951,8 +992,6 @@ private:
/// Transform each threading path to effectively jump thread the DFA.
void createAllExitPaths() {
- DomTreeUpdater DTU(*DT, DomTreeUpdater::UpdateStrategy::Eager);
-
// Move the switch block to the end of the path, since it will be duplicated
BasicBlock *SwitchBlock = SwitchPaths->getSwitchBlock();
for (ThreadingPath &TPath : SwitchPaths->getThreadingPaths()) {
@@ -969,15 +1008,18 @@ private:
SmallPtrSet<BasicBlock *, 16> BlocksToClean;
BlocksToClean.insert_range(successors(SwitchBlock));
- for (ThreadingPath &TPath : SwitchPaths->getThreadingPaths()) {
- createExitPath(NewDefs, TPath, DuplicateMap, BlocksToClean, &DTU);
- NumPaths++;
- }
+ {
+ DomTreeUpdater DTU(*DT, DomTreeUpdater::UpdateStrategy::Lazy);
+ for (const ThreadingPath &TPath : SwitchPaths->getThreadingPaths()) {
+ createExitPath(NewDefs, TPath, DuplicateMap, BlocksToClean, &DTU);
+ NumPaths++;
+ }
- // After all paths are cloned, now update the last successor of the cloned
- // path so it skips over the switch statement
- for (ThreadingPath &TPath : SwitchPaths->getThreadingPaths())
- updateLastSuccessor(TPath, DuplicateMap, &DTU);
+ // After all paths are cloned, now update the last successor of the cloned
+ // path so it skips over the switch statement
+ for (const ThreadingPath &TPath : SwitchPaths->getThreadingPaths())
+ updateLastSuccessor(TPath, DuplicateMap, &DTU);
+ }
// For each instruction that was cloned and used outside, update its uses
updateSSA(NewDefs);
@@ -993,7 +1035,7 @@ private:
/// To remember the correct destination, we have to duplicate blocks
/// corresponding to each state. Also update the terminating instruction of
/// the predecessors, and phis in the successor blocks.
- void createExitPath(DefMap &NewDefs, ThreadingPath &Path,
+ void createExitPath(DefMap &NewDefs, const ThreadingPath &Path,
DuplicateBlockMap &DuplicateMap,
SmallPtrSet<BasicBlock *, 16> &BlocksToClean,
DomTreeUpdater *DTU) {
@@ -1239,7 +1281,7 @@ private:
///
/// Note that this is an optional step and would have been done in later
/// optimizations, but it makes the CFG significantly easier to work with.
- void updateLastSuccessor(ThreadingPath &TPath,
+ void updateLastSuccessor(const ThreadingPath &TPath,
DuplicateBlockMap &DuplicateMap,
DomTreeUpdater *DTU) {
APInt NextState = TPath.getExitValue();
@@ -1336,6 +1378,7 @@ private:
SmallPtrSet<const Value *, 32> EphValues;
std::vector<ThreadingPath> TPaths;
};
+} // namespace
bool DFAJumpThreading::run(Function &F) {
LLVM_DEBUG(dbgs() << "\nDFA Jump threading: " << F.getName() << "\n");
@@ -1402,9 +1445,8 @@ bool DFAJumpThreading::run(Function &F) {
for (AllSwitchPaths SwitchPaths : ThreadableLoops) {
TransformDFA Transform(&SwitchPaths, DT, AC, TTI, ORE, EphValues);
- Transform.run();
- MadeChanges = true;
- LoopInfoBroken = true;
+ if (Transform.run())
+ MadeChanges = LoopInfoBroken = true;
}
#ifdef EXPENSIVE_CHECKS
@@ -1415,8 +1457,6 @@ bool DFAJumpThreading::run(Function &F) {
return MadeChanges;
}
-} // end anonymous namespace
-
/// Integrate with the new Pass Manager
PreservedAnalyses DFAJumpThreadingPass::run(Function &F,
FunctionAnalysisManager &AM) {
diff --git a/llvm/lib/Transforms/Utils/CodeExtractor.cpp b/llvm/lib/Transforms/Utils/CodeExtractor.cpp
index bbd1ed6..5ba6f95f 100644
--- a/llvm/lib/Transforms/Utils/CodeExtractor.cpp
+++ b/llvm/lib/Transforms/Utils/CodeExtractor.cpp
@@ -970,6 +970,7 @@ Function *CodeExtractor::constructFunctionDeclaration(
case Attribute::SanitizeMemTag:
case Attribute::SanitizeRealtime:
case Attribute::SanitizeRealtimeBlocking:
+ case Attribute::SanitizeAllocToken:
case Attribute::SpeculativeLoadHardening:
case Attribute::StackProtect:
case Attribute::StackProtectReq:
diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp
index 21b2652..b6ca52e 100644
--- a/llvm/lib/Transforms/Utils/Local.cpp
+++ b/llvm/lib/Transforms/Utils/Local.cpp
@@ -3031,6 +3031,13 @@ static void combineMetadata(Instruction *K, const Instruction *J,
K->getContext(), MDNode::toCaptureComponents(JMD) |
MDNode::toCaptureComponents(KMD)));
break;
+ case LLVMContext::MD_alloc_token:
+ // Preserve !alloc_token if both K and J have it, and they are equal.
+ if (KMD == JMD)
+ K->setMetadata(Kind, JMD);
+ else
+ K->setMetadata(Kind, nullptr);
+ break;
}
}
// Set !invariant.group from J if J has it. If both instructions have it
diff --git a/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp b/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
index bf882d7..6312831 100644
--- a/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
+++ b/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
@@ -201,18 +201,27 @@ static void ConnectProlog(Loop *L, Value *BECount, unsigned Count,
/// unroll count is non-zero.
///
/// This function performs the following:
-/// - Update PHI nodes at the unrolling loop exit and epilog loop exit
-/// - Create PHI nodes at the unrolling loop exit to combine
-/// values that exit the unrolling loop code and jump around it.
+/// - Update PHI nodes at the epilog loop exit
+/// - Create PHI nodes at the unrolling loop exit and epilog preheader to
+/// combine values that exit the unrolling loop code and jump around it.
/// - Update PHI operands in the epilog loop by the new PHI nodes
-/// - Branch around the epilog loop if extra iters (ModVal) is zero.
+/// - At the unrolling loop exit, branch around the epilog loop if extra iters
+// (ModVal) is zero.
+/// - At the epilog preheader, add an llvm.assume call that extra iters is
+/// non-zero. If the unrolling loop exit is the predecessor, the above new
+/// branch guarantees that assumption. If the unrolling loop preheader is the
+/// predecessor, then the required first iteration from the original loop has
+/// yet to be executed, so it must be executed in the epilog loop. If we
+/// later unroll the epilog loop, that llvm.assume call somehow enables
+/// ScalarEvolution to compute a epilog loop maximum trip count, which enables
+/// eliminating the branch at the end of the final unrolled epilog iteration.
///
static void ConnectEpilog(Loop *L, Value *ModVal, BasicBlock *NewExit,
BasicBlock *Exit, BasicBlock *PreHeader,
BasicBlock *EpilogPreHeader, BasicBlock *NewPreHeader,
ValueToValueMapTy &VMap, DominatorTree *DT,
LoopInfo *LI, bool PreserveLCSSA, ScalarEvolution &SE,
- unsigned Count) {
+ unsigned Count, AssumptionCache &AC) {
BasicBlock *Latch = L->getLoopLatch();
assert(Latch && "Loop must have a latch");
BasicBlock *EpilogLatch = cast<BasicBlock>(VMap[Latch]);
@@ -231,7 +240,7 @@ static void ConnectEpilog(Loop *L, Value *ModVal, BasicBlock *NewExit,
// EpilogLatch
// Exit (EpilogPN)
- // Update PHI nodes at NewExit and Exit.
+ // Update PHI nodes at Exit.
for (PHINode &PN : NewExit->phis()) {
// PN should be used in another PHI located in Exit block as
// Exit was split by SplitBlockPredecessors into Exit and NewExit
@@ -246,15 +255,11 @@ static void ConnectEpilog(Loop *L, Value *ModVal, BasicBlock *NewExit,
// epilogue edges have already been added.
//
// There is EpilogPreHeader incoming block instead of NewExit as
- // NewExit was spilt 1 more time to get EpilogPreHeader.
+ // NewExit was split 1 more time to get EpilogPreHeader.
assert(PN.hasOneUse() && "The phi should have 1 use");
PHINode *EpilogPN = cast<PHINode>(PN.use_begin()->getUser());
assert(EpilogPN->getParent() == Exit && "EpilogPN should be in Exit block");
- // Add incoming PreHeader from branch around the Loop
- PN.addIncoming(PoisonValue::get(PN.getType()), PreHeader);
- SE.forgetValue(&PN);
-
Value *V = PN.getIncomingValueForBlock(Latch);
Instruction *I = dyn_cast<Instruction>(V);
if (I && L->contains(I))
@@ -271,35 +276,52 @@ static void ConnectEpilog(Loop *L, Value *ModVal, BasicBlock *NewExit,
NewExit);
// Now PHIs should look like:
// NewExit:
- // PN = PHI [I, Latch], [poison, PreHeader]
+ // PN = PHI [I, Latch]
// ...
// Exit:
// EpilogPN = PHI [PN, NewExit], [VMap[I], EpilogLatch]
}
- // Create PHI nodes at NewExit (from the unrolling loop Latch and PreHeader).
- // Update corresponding PHI nodes in epilog loop.
+ // Create PHI nodes at NewExit (from the unrolling loop Latch) and at
+ // EpilogPreHeader (from PreHeader and NewExit). Update corresponding PHI
+ // nodes in epilog loop.
for (BasicBlock *Succ : successors(Latch)) {
// Skip this as we already updated phis in exit blocks.
if (!L->contains(Succ))
continue;
+
+ // Succ here appears to always be just L->getHeader(). Otherwise, how do we
+ // know its corresponding epilog block (from VMap) is EpilogHeader and thus
+ // EpilogPreHeader is the right incoming block for VPN, as set below?
+ // TODO: Can we thus avoid the enclosing loop over successors?
+ assert(Succ == L->getHeader() &&
+ "Expect the only in-loop successor of latch to be the loop header");
+
for (PHINode &PN : Succ->phis()) {
- // Add new PHI nodes to the loop exit block and update epilog
- // PHIs with the new PHI values.
- PHINode *NewPN = PHINode::Create(PN.getType(), 2, PN.getName() + ".unr");
- NewPN->insertBefore(NewExit->getFirstNonPHIIt());
- // Adding a value to the new PHI node from the unrolling loop preheader.
- NewPN->addIncoming(PN.getIncomingValueForBlock(NewPreHeader), PreHeader);
- // Adding a value to the new PHI node from the unrolling loop latch.
- NewPN->addIncoming(PN.getIncomingValueForBlock(Latch), Latch);
+ // Add new PHI nodes to the loop exit block.
+ PHINode *NewPN0 = PHINode::Create(PN.getType(), /*NumReservedValues=*/1,
+ PN.getName() + ".unr");
+ NewPN0->insertBefore(NewExit->getFirstNonPHIIt());
+ // Add value to the new PHI node from the unrolling loop latch.
+ NewPN0->addIncoming(PN.getIncomingValueForBlock(Latch), Latch);
+
+ // Add new PHI nodes to EpilogPreHeader.
+ PHINode *NewPN1 = PHINode::Create(PN.getType(), /*NumReservedValues=*/2,
+ PN.getName() + ".epil.init");
+ NewPN1->insertBefore(EpilogPreHeader->getFirstNonPHIIt());
+ // Add value to the new PHI node from the unrolling loop preheader.
+ NewPN1->addIncoming(PN.getIncomingValueForBlock(NewPreHeader), PreHeader);
+ // Add value to the new PHI node from the epilog loop guard.
+ NewPN1->addIncoming(NewPN0, NewExit);
// Update the existing PHI node operand with the value from the new PHI
// node. Corresponding instruction in epilog loop should be PHI.
PHINode *VPN = cast<PHINode>(VMap[&PN]);
- VPN->setIncomingValueForBlock(EpilogPreHeader, NewPN);
+ VPN->setIncomingValueForBlock(EpilogPreHeader, NewPN1);
}
}
+ // In NewExit, branch around the epilog loop if no extra iters.
Instruction *InsertPt = NewExit->getTerminator();
IRBuilder<> B(InsertPt);
Value *BrLoopExit = B.CreateIsNotNull(ModVal, "lcmp.mod");
@@ -308,7 +330,7 @@ static void ConnectEpilog(Loop *L, Value *ModVal, BasicBlock *NewExit,
SmallVector<BasicBlock*, 4> Preds(predecessors(Exit));
SplitBlockPredecessors(Exit, Preds, ".epilog-lcssa", DT, LI, nullptr,
PreserveLCSSA);
- // Add the branch to the exit block (around the unrolling loop)
+ // Add the branch to the exit block (around the epilog loop)
MDNode *BranchWeights = nullptr;
if (hasBranchWeightMD(*Latch->getTerminator())) {
// Assume equal distribution in interval [0, Count).
@@ -322,10 +344,11 @@ static void ConnectEpilog(Loop *L, Value *ModVal, BasicBlock *NewExit,
DT->changeImmediateDominator(Exit, NewDom);
}
- // Split the main loop exit to maintain canonicalization guarantees.
- SmallVector<BasicBlock*, 4> NewExitPreds{Latch};
- SplitBlockPredecessors(NewExit, NewExitPreds, ".loopexit", DT, LI, nullptr,
- PreserveLCSSA);
+ // In EpilogPreHeader, assume extra iters is non-zero.
+ IRBuilder<> B2(EpilogPreHeader, EpilogPreHeader->getFirstNonPHIIt());
+ Value *ModIsNotNull = B2.CreateIsNotNull(ModVal, "lcmp.mod");
+ AssumeInst *AI = cast<AssumeInst>(B2.CreateAssumption(ModIsNotNull));
+ AC.registerAssumption(AI);
}
/// Create a clone of the blocks in a loop and connect them together. A new
@@ -795,7 +818,8 @@ bool llvm::UnrollRuntimeLoopRemainder(
ConstantInt::get(BECount->getType(),
Count - 1)) :
B.CreateIsNotNull(ModVal, "lcmp.mod");
- BasicBlock *RemainderLoop = UseEpilogRemainder ? NewExit : PrologPreHeader;
+ BasicBlock *RemainderLoop =
+ UseEpilogRemainder ? EpilogPreHeader : PrologPreHeader;
BasicBlock *UnrollingLoop = UseEpilogRemainder ? NewPreHeader : PrologExit;
// Branch to either remainder (extra iterations) loop or unrolling loop.
MDNode *BranchWeights = nullptr;
@@ -808,7 +832,7 @@ bool llvm::UnrollRuntimeLoopRemainder(
PreHeaderBR->eraseFromParent();
if (DT) {
if (UseEpilogRemainder)
- DT->changeImmediateDominator(NewExit, PreHeader);
+ DT->changeImmediateDominator(EpilogPreHeader, PreHeader);
else
DT->changeImmediateDominator(PrologExit, PreHeader);
}
@@ -880,7 +904,8 @@ bool llvm::UnrollRuntimeLoopRemainder(
// from both the original loop and the remainder code reaching the exit
// blocks. While the IDom of these exit blocks were from the original loop,
// now the IDom is the preheader (which decides whether the original loop or
- // remainder code should run).
+ // remainder code should run) unless the block still has just the original
+ // predecessor (such as NewExit in the case of an epilog remainder).
if (DT && !L->getExitingBlock()) {
SmallVector<BasicBlock *, 16> ChildrenToUpdate;
// NB! We have to examine the dom children of all loop blocks, not just
@@ -891,7 +916,8 @@ bool llvm::UnrollRuntimeLoopRemainder(
auto *DomNodeBB = DT->getNode(BB);
for (auto *DomChild : DomNodeBB->children()) {
auto *DomChildBB = DomChild->getBlock();
- if (!L->contains(LI->getLoopFor(DomChildBB)))
+ if (!L->contains(LI->getLoopFor(DomChildBB)) &&
+ DomChildBB->getUniquePredecessor() != BB)
ChildrenToUpdate.push_back(DomChildBB);
}
}
@@ -930,7 +956,7 @@ bool llvm::UnrollRuntimeLoopRemainder(
// Connect the epilog code to the original loop and update the
// PHI functions.
ConnectEpilog(L, ModVal, NewExit, LatchExit, PreHeader, EpilogPreHeader,
- NewPreHeader, VMap, DT, LI, PreserveLCSSA, *SE, Count);
+ NewPreHeader, VMap, DT, LI, PreserveLCSSA, *SE, Count, *AC);
// Update counter in loop for unrolling.
// Use an incrementing IV. Pre-incr/post-incr is backedge/trip count.
diff --git a/llvm/lib/Transforms/Vectorize/VPlan.h b/llvm/lib/Transforms/Vectorize/VPlan.h
index c167dd7..fb696be 100644
--- a/llvm/lib/Transforms/Vectorize/VPlan.h
+++ b/llvm/lib/Transforms/Vectorize/VPlan.h
@@ -2263,8 +2263,7 @@ public:
/// debug location \p DL.
VPWidenPHIRecipe(PHINode *Phi, VPValue *Start = nullptr,
DebugLoc DL = DebugLoc::getUnknown(), const Twine &Name = "")
- : VPSingleDefRecipe(VPDef::VPWidenPHISC, ArrayRef<VPValue *>(), Phi, DL),
- Name(Name.str()) {
+ : VPSingleDefRecipe(VPDef::VPWidenPHISC, {}, Phi, DL), Name(Name.str()) {
if (Start)
addOperand(Start);
}
diff --git a/llvm/lib/Transforms/Vectorize/VPlanConstruction.cpp b/llvm/lib/Transforms/Vectorize/VPlanConstruction.cpp
index c8212af..b36298f 100644
--- a/llvm/lib/Transforms/Vectorize/VPlanConstruction.cpp
+++ b/llvm/lib/Transforms/Vectorize/VPlanConstruction.cpp
@@ -763,6 +763,8 @@ void VPlanTransforms::addMinimumVectorEpilogueIterationCheck(
// Add the minimum iteration check for the epilogue vector loop.
VPValue *TC = Plan.getOrAddLiveIn(TripCount);
VPBuilder Builder(cast<VPBasicBlock>(Plan.getEntry()));
+ VPValue *VFxUF = Builder.createExpandSCEV(SE.getElementCount(
+ TripCount->getType(), (EpilogueVF * EpilogueUF), SCEV::FlagNUW));
VPValue *Count = Builder.createNaryOp(
Instruction::Sub, {TC, Plan.getOrAddLiveIn(VectorTripCount)},
DebugLoc::getUnknown(), "n.vec.remaining");
@@ -770,9 +772,6 @@ void VPlanTransforms::addMinimumVectorEpilogueIterationCheck(
// Generate code to check if the loop's trip count is less than VF * UF of
// the vector epilogue loop.
auto P = RequiresScalarEpilogue ? ICmpInst::ICMP_ULE : ICmpInst::ICMP_ULT;
- VPValue *VFxUF = Builder.createExpandSCEV(SE.getElementCount(
- TripCount->getType(), (EpilogueVF * EpilogueUF), SCEV::FlagNUW));
-
auto *CheckMinIters = Builder.createICmp(
P, Count, VFxUF, DebugLoc::getUnknown(), "min.epilog.iters.check");
VPInstruction *Branch =
diff --git a/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp b/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
index ebf833e..c8a2d84 100644
--- a/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+++ b/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
@@ -3180,9 +3180,8 @@ expandVPWidenIntOrFpInduction(VPWidenIntOrFpInductionRecipe *WidenIVR,
DebugLoc::getUnknown(), "induction");
// Create the widened phi of the vector IV.
- auto *WidePHI = new VPWidenPHIRecipe(WidenIVR->getPHINode(), nullptr,
+ auto *WidePHI = new VPWidenPHIRecipe(WidenIVR->getPHINode(), Init,
WidenIVR->getDebugLoc(), "vec.ind");
- WidePHI->addOperand(Init);
WidePHI->insertBefore(WidenIVR);
// Create the backedge value for the vector IV.
@@ -3545,8 +3544,7 @@ tryToMatchAndCreateMulAccumulateReduction(VPReductionRecipe *Red,
VPValue *A, *B;
VPValue *Tmp = nullptr;
// Sub reductions could have a sub between the add reduction and vec op.
- if (match(VecOp,
- m_Binary<Instruction::Sub>(m_SpecificInt(0), m_VPValue(Tmp)))) {
+ if (match(VecOp, m_Sub(m_ZeroInt(), m_VPValue(Tmp)))) {
Sub = VecOp->getDefiningRecipe();
VecOp = Tmp;
}
diff --git a/llvm/lib/Transforms/Vectorize/VPlanUtils.cpp b/llvm/lib/Transforms/Vectorize/VPlanUtils.cpp
index 0599930..66748c5 100644
--- a/llvm/lib/Transforms/Vectorize/VPlanUtils.cpp
+++ b/llvm/lib/Transforms/Vectorize/VPlanUtils.cpp
@@ -71,8 +71,8 @@ bool vputils::isHeaderMask(const VPValue *V, VPlan &Plan) {
m_Specific(&Plan.getVF()))) ||
IsWideCanonicalIV(A));
- return match(V, m_Binary<Instruction::ICmp>(m_VPValue(A), m_VPValue(B))) &&
- IsWideCanonicalIV(A) && B == Plan.getOrCreateBackedgeTakenCount();
+ return match(V, m_ICmp(m_VPValue(A), m_VPValue(B))) && IsWideCanonicalIV(A) &&
+ B == Plan.getOrCreateBackedgeTakenCount();
}
const SCEV *vputils::getSCEVExprForVPValue(VPValue *V, ScalarEvolution &SE) {
diff --git a/llvm/runtimes/CMakeLists.txt b/llvm/runtimes/CMakeLists.txt
index 8399292..d877f0b 100644
--- a/llvm/runtimes/CMakeLists.txt
+++ b/llvm/runtimes/CMakeLists.txt
@@ -473,7 +473,6 @@ if(build_runtimes)
if(LLVM_INCLUDE_TESTS)
foreach(dep FileCheck
clang
- clang-offload-packager
flang
count
lld
@@ -489,6 +488,7 @@ if(build_runtimes)
llvm-size
llvm-symbolizer
llvm-xray
+ llvm-offload-binary
not
obj2yaml
opt
@@ -548,7 +548,7 @@ if(build_runtimes)
# that all .mod files are also properly build.
list(APPEND extra_deps "flang" "module_files")
endif()
- foreach(dep opt llvm-link llvm-extract clang clang-offload-packager clang-nvlink-wrapper)
+ foreach(dep opt llvm-link llvm-extract clang llvm-offload-binary clang-nvlink-wrapper)
if(TARGET ${dep})
list(APPEND extra_deps ${dep})
endif()
@@ -556,8 +556,8 @@ if(build_runtimes)
endif()
if(LLVM_LIBC_GPU_BUILD)
list(APPEND extra_cmake_args "-DLLVM_LIBC_GPU_BUILD=ON")
- if(TARGET clang-offload-packager)
- list(APPEND extra_deps clang-offload-packager)
+ if(TARGET llvm-offload-binary)
+ list(APPEND extra_deps llvm-offload-binary)
endif()
if(TARGET clang-nvlink-wrapper)
list(APPEND extra_deps clang-nvlink-wrapper)
diff --git a/llvm/test/Assembler/ConstantExprFold.ll b/llvm/test/Assembler/ConstantExprFold.ll
index 840ed06..33ee492 100644
--- a/llvm/test/Assembler/ConstantExprFold.ll
+++ b/llvm/test/Assembler/ConstantExprFold.ll
@@ -30,9 +30,9 @@
; Need a function to make update_test_checks.py work.
;.
; CHECK: @A = global i64 0
-; CHECK: @add = global ptr @A
-; CHECK: @sub = global ptr @A
-; CHECK: @xor = global ptr @A
+; CHECK: @add = global ptr inttoptr (i64 ptrtoint (ptr @A to i64) to ptr)
+; CHECK: @sub = global ptr inttoptr (i64 ptrtoint (ptr @A to i64) to ptr)
+; CHECK: @xor = global ptr inttoptr (i64 ptrtoint (ptr @A to i64) to ptr)
; CHECK: @B = external global %Ty
; CHECK: @cons = weak global i32 0, align 8
; CHECK: @gep1 = global <2 x ptr> undef
diff --git a/llvm/test/Bitcode/attributes.ll b/llvm/test/Bitcode/attributes.ll
index 8c1a763..aef7810 100644
--- a/llvm/test/Bitcode/attributes.ll
+++ b/llvm/test/Bitcode/attributes.ll
@@ -516,6 +516,11 @@ define void @f93() sanitize_realtime_blocking {
ret void;
}
+; CHECK: define void @f_sanitize_alloc_token() #55
+define void @f_sanitize_alloc_token() sanitize_alloc_token {
+ ret void;
+}
+
; CHECK: define void @f87() [[FNRETTHUNKEXTERN:#[0-9]+]]
define void @f87() fn_ret_thunk_extern { ret void }
@@ -627,6 +632,7 @@ define void @dead_on_return(ptr dead_on_return %p) {
; CHECK: attributes #52 = { nosanitize_bounds }
; CHECK: attributes #53 = { sanitize_realtime }
; CHECK: attributes #54 = { sanitize_realtime_blocking }
+; CHECK: attributes #55 = { sanitize_alloc_token }
; CHECK: attributes [[FNRETTHUNKEXTERN]] = { fn_ret_thunk_extern }
; CHECK: attributes [[SKIPPROFILE]] = { skipprofile }
; CHECK: attributes [[OPTDEBUG]] = { optdebug }
diff --git a/llvm/test/Bitcode/compatibility.ll b/llvm/test/Bitcode/compatibility.ll
index 0b5ce08..e21786e 100644
--- a/llvm/test/Bitcode/compatibility.ll
+++ b/llvm/test/Bitcode/compatibility.ll
@@ -1718,7 +1718,7 @@ exit:
; CHECK: select <2 x i1> <i1 true, i1 false>, <2 x i8> <i8 2, i8 3>, <2 x i8> <i8 3, i8 2>
call void @f.nobuiltin() builtin
- ; CHECK: call void @f.nobuiltin() #54
+ ; CHECK: call void @f.nobuiltin() #55
call fastcc noalias ptr @f.noalias() noinline
; CHECK: call fastcc noalias ptr @f.noalias() #12
@@ -2151,6 +2151,9 @@ declare void @f.sanitize_realtime() sanitize_realtime
declare void @f.sanitize_realtime_blocking() sanitize_realtime_blocking
; CHECK: declare void @f.sanitize_realtime_blocking() #53
+declare void @f.sanitize_alloc_token() sanitize_alloc_token
+; CHECK: declare void @f.sanitize_alloc_token() #54
+
; CHECK: declare nofpclass(snan) float @nofpclass_snan(float nofpclass(snan))
declare nofpclass(snan) float @nofpclass_snan(float nofpclass(snan))
@@ -2284,7 +2287,8 @@ define float @nofpclass_callsites(float %arg, { float } %arg1) {
; CHECK: attributes #51 = { sanitize_numerical_stability }
; CHECK: attributes #52 = { sanitize_realtime }
; CHECK: attributes #53 = { sanitize_realtime_blocking }
-; CHECK: attributes #54 = { builtin }
+; CHECK: attributes #54 = { sanitize_alloc_token }
+; CHECK: attributes #55 = { builtin }
;; Metadata
diff --git a/llvm/test/CMakeLists.txt b/llvm/test/CMakeLists.txt
index e810fcb6..f01422e 100644
--- a/llvm/test/CMakeLists.txt
+++ b/llvm/test/CMakeLists.txt
@@ -123,6 +123,7 @@ set(LLVM_TEST_DEPENDS
llvm-objdump
llvm-opt-fuzzer
llvm-opt-report
+ llvm-offload-binary
llvm-offload-wrapper
llvm-otool
llvm-pdbutil
diff --git a/llvm/test/CodeGen/AArch64/arm64-saddlp1d-uaddlp1d.mir b/llvm/test/CodeGen/AArch64/arm64-saddlp1d-uaddlp1d.mir
new file mode 100644
index 0000000..074f75a
--- /dev/null
+++ b/llvm/test/CodeGen/AArch64/arm64-saddlp1d-uaddlp1d.mir
@@ -0,0 +1,50 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
+# RUN: llc -mtriple=aarch64 -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s
+
+---
+name: saddlp1d
+legalized: true
+regBankSelected: false
+tracksRegLiveness: true
+body: |
+ bb.1.entry:
+ liveins: $x0
+
+ ; CHECK-LABEL: name: saddlp1d
+ ; CHECK: liveins: $x0
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(p0) = COPY $x0
+ ; CHECK-NEXT: [[LOAD:%[0-9]+]]:fpr(<2 x s32>) = G_LOAD [[COPY]](p0) :: (load (<2 x s32>))
+ ; CHECK-NEXT: [[SADDLP:%[0-9]+]]:fpr(s64) = G_SADDLP [[LOAD]]
+ ; CHECK-NEXT: $d0 = COPY [[SADDLP]](s64)
+ ; CHECK-NEXT: RET_ReallyLR implicit $d0
+ %0:_(p0) = COPY $x0
+ %1:_(<2 x s32>) = G_LOAD %0(p0) :: (load (<2 x s32>))
+ %2:_(s64) = G_SADDLP %1
+ $d0 = COPY %2(s64)
+ RET_ReallyLR implicit $d0
+...
+---
+name: uaddlp1d
+legalized: true
+regBankSelected: false
+failedISel: false
+tracksRegLiveness: true
+body: |
+ bb.1.entry:
+ liveins: $x0
+
+ ; CHECK-LABEL: name: uaddlp1d
+ ; CHECK: liveins: $x0
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(p0) = COPY $x0
+ ; CHECK-NEXT: [[LOAD:%[0-9]+]]:fpr(<2 x s32>) = G_LOAD [[COPY]](p0) :: (load (<2 x s32>))
+ ; CHECK-NEXT: [[UADDLP:%[0-9]+]]:fpr(s64) = G_UADDLP [[LOAD]]
+ ; CHECK-NEXT: $d0 = COPY [[UADDLP]](s64)
+ ; CHECK-NEXT: RET_ReallyLR implicit $d0
+ %0:_(p0) = COPY $x0
+ %1:_(<2 x s32>) = G_LOAD %0(p0) :: (load (<2 x s32>))
+ %2:_(s64) = G_UADDLP %1
+ $d0 = COPY %2(s64)
+ RET_ReallyLR implicit $d0
+...
diff --git a/llvm/test/CodeGen/AArch64/arm64-vadd.ll b/llvm/test/CodeGen/AArch64/arm64-vadd.ll
index 938712a..3cf0115 100644
--- a/llvm/test/CodeGen/AArch64/arm64-vadd.ll
+++ b/llvm/test/CodeGen/AArch64/arm64-vadd.ll
@@ -1,9 +1,6 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
; RUN: llc < %s -mtriple=arm64-eabi | FileCheck %s --check-prefixes=CHECK,CHECK-SD
-; RUN: llc < %s -mtriple=arm64-eabi -global-isel -global-isel-abort=2 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-GI
-
-; CHECK-GI: warning: Instruction selection used fallback path for saddlp1d
-; CHECK-GI-NEXT: warning: Instruction selection used fallback path for uaddlp1d
+; RUN: llc < %s -mtriple=arm64-eabi -global-isel | FileCheck %s --check-prefixes=CHECK,CHECK-GI
define <8 x i8> @addhn8b(ptr %A, ptr %B) nounwind {
; CHECK-LABEL: addhn8b:
diff --git a/llvm/test/CodeGen/AMDGPU/addrspacecast-constantexpr.ll b/llvm/test/CodeGen/AMDGPU/addrspacecast-constantexpr.ll
index 2d7ef2c..98fbbe1 100644
--- a/llvm/test/CodeGen/AMDGPU/addrspacecast-constantexpr.ll
+++ b/llvm/test/CodeGen/AMDGPU/addrspacecast-constantexpr.ll
@@ -169,6 +169,6 @@ attributes #1 = { nounwind }
;.
; HSA: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
-; HSA: attributes #[[ATTR1]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; HSA: attributes #[[ATTR2]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; HSA: attributes #[[ATTR1]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; HSA: attributes #[[ATTR2]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
;.
diff --git a/llvm/test/CodeGen/AMDGPU/annotate-kernel-features-hsa-call.ll b/llvm/test/CodeGen/AMDGPU/annotate-kernel-features-hsa-call.ll
index fb566e5..9283bd5 100644
--- a/llvm/test/CodeGen/AMDGPU/annotate-kernel-features-hsa-call.ll
+++ b/llvm/test/CodeGen/AMDGPU/annotate-kernel-features-hsa-call.ll
@@ -691,29 +691,29 @@ attributes #6 = { "enqueued-block" }
;.
; ATTRIBUTOR_HSA: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
-; ATTRIBUTOR_HSA: attributes #[[ATTR1]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
-; ATTRIBUTOR_HSA: attributes #[[ATTR2]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
-; ATTRIBUTOR_HSA: attributes #[[ATTR3]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "target-cpu"="fiji" "uniform-work-group-size"="false" }
-; ATTRIBUTOR_HSA: attributes #[[ATTR4]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
-; ATTRIBUTOR_HSA: attributes #[[ATTR5]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
-; ATTRIBUTOR_HSA: attributes #[[ATTR6]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
-; ATTRIBUTOR_HSA: attributes #[[ATTR7]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
-; ATTRIBUTOR_HSA: attributes #[[ATTR8]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
-; ATTRIBUTOR_HSA: attributes #[[ATTR9]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
-; ATTRIBUTOR_HSA: attributes #[[ATTR10]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
-; ATTRIBUTOR_HSA: attributes #[[ATTR11]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
-; ATTRIBUTOR_HSA: attributes #[[ATTR12]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
-; ATTRIBUTOR_HSA: attributes #[[ATTR13]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx900" "uniform-work-group-size"="false" }
-; ATTRIBUTOR_HSA: attributes #[[ATTR14]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx900" "uniform-work-group-size"="false" }
-; ATTRIBUTOR_HSA: attributes #[[ATTR15:[0-9]+]] = { nounwind "uniform-work-group-size"="false" }
-; ATTRIBUTOR_HSA: attributes #[[ATTR16]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; ATTRIBUTOR_HSA: attributes #[[ATTR17]] = { nounwind sanitize_address "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-heap-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; ATTRIBUTOR_HSA: attributes #[[ATTR18]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-heap-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_HSA: attributes #[[ATTR1]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_HSA: attributes #[[ATTR2]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_HSA: attributes #[[ATTR3]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "target-cpu"="fiji" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_HSA: attributes #[[ATTR4]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_HSA: attributes #[[ATTR5]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_HSA: attributes #[[ATTR6]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_HSA: attributes #[[ATTR7]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_HSA: attributes #[[ATTR8]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_HSA: attributes #[[ATTR9]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_HSA: attributes #[[ATTR10]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_HSA: attributes #[[ATTR11]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_HSA: attributes #[[ATTR12]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_HSA: attributes #[[ATTR13]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx900" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_HSA: attributes #[[ATTR14]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx900" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_HSA: attributes #[[ATTR15]] = { nounwind "uniform-work-group-size"="false" }
+; ATTRIBUTOR_HSA: attributes #[[ATTR16]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_HSA: attributes #[[ATTR17]] = { nounwind sanitize_address "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-heap-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_HSA: attributes #[[ATTR18]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-heap-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
; ATTRIBUTOR_HSA: attributes #[[ATTR19:[0-9]+]] = { nounwind sanitize_address "amdgpu-no-implicitarg-ptr" "uniform-work-group-size"="false" }
; ATTRIBUTOR_HSA: attributes #[[ATTR20:[0-9]+]] = { "enqueued-block" "uniform-work-group-size"="false" }
-; ATTRIBUTOR_HSA: attributes #[[ATTR21]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "enqueued-block" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_HSA: attributes #[[ATTR21]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "enqueued-block" "uniform-work-group-size"="false" }
; ATTRIBUTOR_HSA: attributes #[[ATTR22]] = { "uniform-work-group-size"="false" }
-; ATTRIBUTOR_HSA: attributes #[[ATTR23]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_HSA: attributes #[[ATTR23]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
; ATTRIBUTOR_HSA: attributes #[[ATTR24]] = { nounwind }
; ATTRIBUTOR_HSA: attributes #[[ATTR25]] = { "enqueued-block" }
;.
diff --git a/llvm/test/CodeGen/AMDGPU/annotate-kernel-features-hsa.ll b/llvm/test/CodeGen/AMDGPU/annotate-kernel-features-hsa.ll
index 484ff77..8554485 100644
--- a/llvm/test/CodeGen/AMDGPU/annotate-kernel-features-hsa.ll
+++ b/llvm/test/CodeGen/AMDGPU/annotate-kernel-features-hsa.ll
@@ -474,19 +474,19 @@ attributes #1 = { nounwind }
; AKF_HSA: [[META0:![0-9]+]] = !{i32 1, !"amdhsa_code_object_version", i32 500}
;.
; HSA: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
-; HSA: attributes #[[ATTR1]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; HSA: attributes #[[ATTR2]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; HSA: attributes #[[ATTR3]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; HSA: attributes #[[ATTR4]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; HSA: attributes #[[ATTR5]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; HSA: attributes #[[ATTR6]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "uniform-work-group-size"="false" }
-; HSA: attributes #[[ATTR7]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; HSA: attributes #[[ATTR8]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "uniform-work-group-size"="false" }
-; HSA: attributes #[[ATTR9]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workitem-id-x" "uniform-work-group-size"="false" }
-; HSA: attributes #[[ATTR10]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; HSA: attributes #[[ATTR11]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; HSA: attributes #[[ATTR12]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; HSA: attributes #[[ATTR13]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; HSA: attributes #[[ATTR1]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; HSA: attributes #[[ATTR2]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; HSA: attributes #[[ATTR3]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; HSA: attributes #[[ATTR4]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; HSA: attributes #[[ATTR5]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; HSA: attributes #[[ATTR6]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "uniform-work-group-size"="false" }
+; HSA: attributes #[[ATTR7]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; HSA: attributes #[[ATTR8]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "uniform-work-group-size"="false" }
+; HSA: attributes #[[ATTR9]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workitem-id-x" "uniform-work-group-size"="false" }
+; HSA: attributes #[[ATTR10]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; HSA: attributes #[[ATTR11]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; HSA: attributes #[[ATTR12]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; HSA: attributes #[[ATTR13]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
;.
; HSA: [[META0]] = !{i32 1, i32 3, i32 4, i32 10}
; HSA: [[META1]] = !{i32 1, i32 5, i32 6, i32 10}
diff --git a/llvm/test/CodeGen/AMDGPU/annotate-kernel-features.ll b/llvm/test/CodeGen/AMDGPU/annotate-kernel-features.ll
index 2efe024..e2a2deb 100644
--- a/llvm/test/CodeGen/AMDGPU/annotate-kernel-features.ll
+++ b/llvm/test/CodeGen/AMDGPU/annotate-kernel-features.ll
@@ -294,13 +294,13 @@ attributes #1 = { nounwind }
;.
; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
-; CHECK: attributes #[[ATTR1]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR2]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR3]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR4]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR5]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR6]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR7]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR8]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR9]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workitem-id-x" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR1]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR2]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR3]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR4]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR5]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR6]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR7]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR8]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR9]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workitem-id-x" "uniform-work-group-size"="false" }
;.
diff --git a/llvm/test/CodeGen/AMDGPU/atomic_load_local.ll b/llvm/test/CodeGen/AMDGPU/atomic_load_local.ll
index aaedb85..e67d7fdb 100644
--- a/llvm/test/CodeGen/AMDGPU/atomic_load_local.ll
+++ b/llvm/test/CodeGen/AMDGPU/atomic_load_local.ll
@@ -3,6 +3,8 @@
; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GFX9 %s
; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-TRUE16 %s
; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-FAKE16 %s
+; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1250 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX1250,GFX1250-TRUE16 %s
+; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1250 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX1250,GFX1250-FAKE16 %s
define i8 @atomic_load_monotonic_i8(ptr addrspace(3) %ptr) {
; CI-LABEL: atomic_load_monotonic_i8:
@@ -33,6 +35,14 @@ define i8 @atomic_load_monotonic_i8(ptr addrspace(3) %ptr) {
; GFX11-FAKE16-NEXT: ds_load_u8 v0, v0
; GFX11-FAKE16-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-FAKE16-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: atomic_load_monotonic_i8:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: ds_load_u8 v0, v0
+; GFX1250-NEXT: s_wait_dscnt 0x0
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
%load = load atomic i8, ptr addrspace(3) %ptr monotonic, align 1
ret i8 %load
}
@@ -66,6 +76,14 @@ define i8 @atomic_load_monotonic_i8_offset(ptr addrspace(3) %ptr) {
; GFX11-FAKE16-NEXT: ds_load_u8 v0, v0 offset:16
; GFX11-FAKE16-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-FAKE16-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: atomic_load_monotonic_i8_offset:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: ds_load_u8 v0, v0 offset:16
+; GFX1250-NEXT: s_wait_dscnt 0x0
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
%gep = getelementptr inbounds i8, ptr addrspace(3) %ptr, i8 16
%load = load atomic i8, ptr addrspace(3) %gep monotonic, align 1
ret i8 %load
@@ -100,6 +118,14 @@ define i16 @atomic_load_monotonic_i16(ptr addrspace(3) %ptr) {
; GFX11-FAKE16-NEXT: ds_load_u16 v0, v0
; GFX11-FAKE16-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-FAKE16-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: atomic_load_monotonic_i16:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: ds_load_u16 v0, v0
+; GFX1250-NEXT: s_wait_dscnt 0x0
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
%load = load atomic i16, ptr addrspace(3) %ptr monotonic, align 2
ret i16 %load
}
@@ -133,6 +159,14 @@ define i16 @atomic_load_monotonic_i16_offset(ptr addrspace(3) %ptr) {
; GFX11-FAKE16-NEXT: ds_load_u16 v0, v0 offset:32
; GFX11-FAKE16-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-FAKE16-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: atomic_load_monotonic_i16_offset:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: ds_load_u16 v0, v0 offset:32
+; GFX1250-NEXT: s_wait_dscnt 0x0
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
%gep = getelementptr inbounds i16, ptr addrspace(3) %ptr, i16 16
%load = load atomic i16, ptr addrspace(3) %gep monotonic, align 2
ret i16 %load
@@ -160,6 +194,14 @@ define i32 @atomic_load_monotonic_i32(ptr addrspace(3) %ptr) {
; GFX11-NEXT: ds_load_b32 v0, v0
; GFX11-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: atomic_load_monotonic_i32:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: ds_load_b32 v0, v0
+; GFX1250-NEXT: s_wait_dscnt 0x0
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
%load = load atomic i32, ptr addrspace(3) %ptr monotonic, align 4
ret i32 %load
}
@@ -186,6 +228,14 @@ define i32 @atomic_load_monotonic_i32_offset(ptr addrspace(3) %ptr) {
; GFX11-NEXT: ds_load_b32 v0, v0 offset:64
; GFX11-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: atomic_load_monotonic_i32_offset:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: ds_load_b32 v0, v0 offset:64
+; GFX1250-NEXT: s_wait_dscnt 0x0
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
%gep = getelementptr inbounds i32, ptr addrspace(3) %ptr, i32 16
%load = load atomic i32, ptr addrspace(3) %gep monotonic, align 4
ret i32 %load
@@ -213,6 +263,14 @@ define i64 @atomic_load_monotonic_i64(ptr addrspace(3) %ptr) {
; GFX11-NEXT: ds_load_b64 v[0:1], v0
; GFX11-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: atomic_load_monotonic_i64:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: ds_load_b64 v[0:1], v0
+; GFX1250-NEXT: s_wait_dscnt 0x0
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
%load = load atomic i64, ptr addrspace(3) %ptr monotonic, align 8
ret i64 %load
}
@@ -239,6 +297,14 @@ define i64 @atomic_load_monotonic_i64_offset(ptr addrspace(3) %ptr) {
; GFX11-NEXT: ds_load_b64 v[0:1], v0 offset:128
; GFX11-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: atomic_load_monotonic_i64_offset:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: ds_load_b64 v[0:1], v0 offset:128
+; GFX1250-NEXT: s_wait_dscnt 0x0
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
%gep = getelementptr inbounds i64, ptr addrspace(3) %ptr, i32 16
%load = load atomic i64, ptr addrspace(3) %gep monotonic, align 8
ret i64 %load
@@ -266,6 +332,14 @@ define float @atomic_load_monotonic_f32_offset(ptr addrspace(3) %ptr) {
; GFX11-NEXT: ds_load_b32 v0, v0 offset:64
; GFX11-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: atomic_load_monotonic_f32_offset:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: ds_load_b32 v0, v0 offset:64
+; GFX1250-NEXT: s_wait_dscnt 0x0
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
%gep = getelementptr inbounds float, ptr addrspace(3) %ptr, i32 16
%load = load atomic float, ptr addrspace(3) %gep monotonic, align 4
ret float %load
@@ -293,6 +367,14 @@ define double @atomic_load_monotonic_f64_offset(ptr addrspace(3) %ptr) {
; GFX11-NEXT: ds_load_b64 v[0:1], v0 offset:128
; GFX11-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: atomic_load_monotonic_f64_offset:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: ds_load_b64 v[0:1], v0 offset:128
+; GFX1250-NEXT: s_wait_dscnt 0x0
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
%gep = getelementptr inbounds double, ptr addrspace(3) %ptr, i32 16
%load = load atomic double, ptr addrspace(3) %gep monotonic, align 8
ret double %load
@@ -320,6 +402,14 @@ define ptr @atomic_load_monotonic_p0i8_offset(ptr addrspace(3) %ptr) {
; GFX11-NEXT: ds_load_b64 v[0:1], v0 offset:128
; GFX11-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: atomic_load_monotonic_p0i8_offset:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: ds_load_b64 v[0:1], v0 offset:128
+; GFX1250-NEXT: s_wait_dscnt 0x0
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
%gep = getelementptr inbounds ptr, ptr addrspace(3) %ptr, i32 16
%load = load atomic ptr, ptr addrspace(3) %gep monotonic, align 8
ret ptr %load
@@ -347,6 +437,14 @@ define ptr addrspace(3) @atomic_load_monotonic_p3i8_offset(ptr addrspace(3) %ptr
; GFX11-NEXT: ds_load_b32 v0, v0 offset:64
; GFX11-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: atomic_load_monotonic_p3i8_offset:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: ds_load_b32 v0, v0 offset:64
+; GFX1250-NEXT: s_wait_dscnt 0x0
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
%gep = getelementptr inbounds ptr addrspace(3), ptr addrspace(3) %ptr, i32 16
%load = load atomic ptr addrspace(3), ptr addrspace(3) %gep monotonic, align 4
ret ptr addrspace(3) %load
@@ -381,6 +479,14 @@ define i16 @atomic_load_monotonic_f16(ptr addrspace(3) %ptr) {
; GFX11-FAKE16-NEXT: ds_load_u16 v0, v0
; GFX11-FAKE16-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-FAKE16-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: atomic_load_monotonic_f16:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: ds_load_u16 v0, v0
+; GFX1250-NEXT: s_wait_dscnt 0x0
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
%load = load atomic half, ptr addrspace(3) %ptr monotonic, align 2
%ret = bitcast half %load to i16
ret i16 %ret
@@ -415,6 +521,14 @@ define i16 @atomic_load_monotonic_f16_offset(ptr addrspace(3) %ptr) {
; GFX11-FAKE16-NEXT: ds_load_u16 v0, v0 offset:32
; GFX11-FAKE16-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-FAKE16-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: atomic_load_monotonic_f16_offset:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: ds_load_u16 v0, v0 offset:32
+; GFX1250-NEXT: s_wait_dscnt 0x0
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
%gep = getelementptr inbounds half, ptr addrspace(3) %ptr, i32 16
%load = load atomic half, ptr addrspace(3) %gep monotonic, align 2
%ret = bitcast half %load to i16
@@ -450,6 +564,14 @@ define i16 @atomic_load_monotonic_bf16(ptr addrspace(3) %ptr) {
; GFX11-FAKE16-NEXT: ds_load_u16 v0, v0
; GFX11-FAKE16-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-FAKE16-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: atomic_load_monotonic_bf16:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: ds_load_u16 v0, v0
+; GFX1250-NEXT: s_wait_dscnt 0x0
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
%load = load atomic bfloat, ptr addrspace(3) %ptr monotonic, align 2
%ret = bitcast bfloat %load to i16
ret i16 %ret
@@ -484,6 +606,14 @@ define i16 @atomic_load_monotonic_bf16_offset(ptr addrspace(3) %ptr) {
; GFX11-FAKE16-NEXT: ds_load_u16 v0, v0 offset:32
; GFX11-FAKE16-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-FAKE16-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: atomic_load_monotonic_bf16_offset:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: ds_load_u16 v0, v0 offset:32
+; GFX1250-NEXT: s_wait_dscnt 0x0
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
%gep = getelementptr inbounds bfloat, ptr addrspace(3) %ptr, i32 16
%load = load atomic bfloat, ptr addrspace(3) %gep monotonic, align 2
%ret = bitcast bfloat %load to i16
@@ -491,3 +621,5 @@ define i16 @atomic_load_monotonic_bf16_offset(ptr addrspace(3) %ptr) {
}
;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
; GCN: {{.*}}
+; GFX1250-FAKE16: {{.*}}
+; GFX1250-TRUE16: {{.*}}
diff --git a/llvm/test/CodeGen/AMDGPU/atomic_store_local.ll b/llvm/test/CodeGen/AMDGPU/atomic_store_local.ll
index c2bb4f00..31065f2 100644
--- a/llvm/test/CodeGen/AMDGPU/atomic_store_local.ll
+++ b/llvm/test/CodeGen/AMDGPU/atomic_store_local.ll
@@ -3,6 +3,8 @@
; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GFX9 %s
; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-TRUE16 %s
; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-FAKE16 %s
+; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1250 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX1250,GFX1250-TRUE16 %s
+; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1250 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX1250,GFX1250-FAKE16 %s
define void @atomic_store_monotonic_i8(ptr addrspace(3) %ptr, i8 %val) {
; CI-LABEL: atomic_store_monotonic_i8:
@@ -41,6 +43,26 @@ define void @atomic_store_monotonic_i8(ptr addrspace(3) %ptr, i8 %val) {
; GFX11-FAKE16-NEXT: ds_store_b8 v0, v2
; GFX11-FAKE16-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-FAKE16-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-TRUE16-LABEL: atomic_store_monotonic_i8:
+; GFX1250-TRUE16: ; %bb.0:
+; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-TRUE16-NEXT: v_add_nc_u16 v1.h, v1.l, 2
+; GFX1250-TRUE16-NEXT: ds_store_b8 v0, v1
+; GFX1250-TRUE16-NEXT: ds_store_b8_d16_hi v0, v1
+; GFX1250-TRUE16-NEXT: s_wait_dscnt 0x0
+; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250-FAKE16-LABEL: atomic_store_monotonic_i8:
+; GFX1250-FAKE16: ; %bb.0:
+; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-FAKE16-NEXT: v_add_nc_u16 v2, v1, 2
+; GFX1250-FAKE16-NEXT: ds_store_b8 v0, v1
+; GFX1250-FAKE16-NEXT: ds_store_b8 v0, v2
+; GFX1250-FAKE16-NEXT: s_wait_dscnt 0x0
+; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]
%val1 = add i8 %val, 2
store atomic i8 %val, ptr addrspace(3) %ptr monotonic, align 1
store atomic i8 %val1, ptr addrspace(3) %ptr monotonic, align 1
@@ -84,6 +106,26 @@ define void @atomic_store_monotonic_offset_i8(ptr addrspace(3) %ptr, i8 %val) {
; GFX11-FAKE16-NEXT: ds_store_b8 v0, v2 offset:16
; GFX11-FAKE16-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-FAKE16-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-TRUE16-LABEL: atomic_store_monotonic_offset_i8:
+; GFX1250-TRUE16: ; %bb.0:
+; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-TRUE16-NEXT: v_add_nc_u16 v1.h, v1.l, 2
+; GFX1250-TRUE16-NEXT: ds_store_b8 v0, v1 offset:8
+; GFX1250-TRUE16-NEXT: ds_store_b8_d16_hi v0, v1 offset:16
+; GFX1250-TRUE16-NEXT: s_wait_dscnt 0x0
+; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250-FAKE16-LABEL: atomic_store_monotonic_offset_i8:
+; GFX1250-FAKE16: ; %bb.0:
+; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-FAKE16-NEXT: v_add_nc_u16 v2, v1, 2
+; GFX1250-FAKE16-NEXT: ds_store_b8 v0, v1 offset:8
+; GFX1250-FAKE16-NEXT: ds_store_b8 v0, v2 offset:16
+; GFX1250-FAKE16-NEXT: s_wait_dscnt 0x0
+; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]
%val1 = add i8 %val, 2
%gep_1 = getelementptr inbounds i8, ptr addrspace(3) %ptr, i8 8
%gep_2 = getelementptr inbounds i8, ptr addrspace(3) %ptr, i8 16
@@ -129,6 +171,26 @@ define void @atomic_store_monotonic_i16(ptr addrspace(3) %ptr, i16 %val) {
; GFX11-FAKE16-NEXT: ds_store_b16 v0, v2
; GFX11-FAKE16-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-FAKE16-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-TRUE16-LABEL: atomic_store_monotonic_i16:
+; GFX1250-TRUE16: ; %bb.0:
+; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-TRUE16-NEXT: v_add_nc_u16 v1.h, v1.l, 2
+; GFX1250-TRUE16-NEXT: ds_store_b16 v0, v1
+; GFX1250-TRUE16-NEXT: ds_store_b16_d16_hi v0, v1
+; GFX1250-TRUE16-NEXT: s_wait_dscnt 0x0
+; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250-FAKE16-LABEL: atomic_store_monotonic_i16:
+; GFX1250-FAKE16: ; %bb.0:
+; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-FAKE16-NEXT: v_add_nc_u16 v2, v1, 2
+; GFX1250-FAKE16-NEXT: ds_store_b16 v0, v1
+; GFX1250-FAKE16-NEXT: ds_store_b16 v0, v2
+; GFX1250-FAKE16-NEXT: s_wait_dscnt 0x0
+; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]
%val1 = add i16 %val, 2
store atomic i16 %val, ptr addrspace(3) %ptr monotonic, align 2
store atomic i16 %val1, ptr addrspace(3) %ptr monotonic, align 2
@@ -172,6 +234,26 @@ define void @atomic_store_monotonic_offset_i16(ptr addrspace(3) %ptr, i16 %val)
; GFX11-FAKE16-NEXT: ds_store_b16 v0, v2 offset:32
; GFX11-FAKE16-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-FAKE16-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-TRUE16-LABEL: atomic_store_monotonic_offset_i16:
+; GFX1250-TRUE16: ; %bb.0:
+; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-TRUE16-NEXT: v_add_nc_u16 v1.h, v1.l, 2
+; GFX1250-TRUE16-NEXT: ds_store_b16 v0, v1 offset:32
+; GFX1250-TRUE16-NEXT: ds_store_b16_d16_hi v0, v1 offset:32
+; GFX1250-TRUE16-NEXT: s_wait_dscnt 0x0
+; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250-FAKE16-LABEL: atomic_store_monotonic_offset_i16:
+; GFX1250-FAKE16: ; %bb.0:
+; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-FAKE16-NEXT: v_add_nc_u16 v2, v1, 2
+; GFX1250-FAKE16-NEXT: ds_store_b16 v0, v1 offset:32
+; GFX1250-FAKE16-NEXT: ds_store_b16 v0, v2 offset:32
+; GFX1250-FAKE16-NEXT: s_wait_dscnt 0x0
+; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]
%val1 = add i16 %val, 2
%gep = getelementptr inbounds i16, ptr addrspace(3) %ptr, i16 16
store atomic i16 %val, ptr addrspace(3) %gep monotonic, align 2
@@ -201,6 +283,14 @@ define void @atomic_store_monotonic_i32(ptr addrspace(3) %ptr, i32 %val) {
; GFX11-NEXT: ds_store_b32 v0, v1
; GFX11-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: atomic_store_monotonic_i32:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: ds_store_b32 v0, v1
+; GFX1250-NEXT: s_wait_dscnt 0x0
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
store atomic i32 %val, ptr addrspace(3) %ptr monotonic, align 4
ret void
}
@@ -227,6 +317,14 @@ define void @atomic_store_monotonic_offset_i32(ptr addrspace(3) %ptr, i32 %val)
; GFX11-NEXT: ds_store_b32 v0, v1 offset:64
; GFX11-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: atomic_store_monotonic_offset_i32:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: ds_store_b32 v0, v1 offset:64
+; GFX1250-NEXT: s_wait_dscnt 0x0
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
%gep = getelementptr inbounds i32, ptr addrspace(3) %ptr, i32 16
store atomic i32 %val, ptr addrspace(3) %gep monotonic, align 4
ret void
@@ -254,6 +352,15 @@ define void @atomic_store_monotonic_i64(ptr addrspace(3) %ptr, i64 %val) {
; GFX11-NEXT: ds_store_b64 v0, v[1:2]
; GFX11-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: atomic_store_monotonic_i64:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: v_dual_mov_b32 v3, v2 :: v_dual_mov_b32 v2, v1
+; GFX1250-NEXT: ds_store_b64 v0, v[2:3]
+; GFX1250-NEXT: s_wait_dscnt 0x0
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
store atomic i64 %val, ptr addrspace(3) %ptr monotonic, align 8
ret void
}
@@ -280,6 +387,15 @@ define void @atomic_store_monotonic_offset_i64(ptr addrspace(3) %ptr, i64 %val)
; GFX11-NEXT: ds_store_b64 v0, v[1:2] offset:128
; GFX11-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: atomic_store_monotonic_offset_i64:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: v_dual_mov_b32 v3, v2 :: v_dual_mov_b32 v2, v1
+; GFX1250-NEXT: ds_store_b64 v0, v[2:3] offset:128
+; GFX1250-NEXT: s_wait_dscnt 0x0
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
%gep = getelementptr inbounds i64, ptr addrspace(3) %ptr, i64 16
store atomic i64 %val, ptr addrspace(3) %gep monotonic, align 8
ret void
@@ -322,6 +438,26 @@ define void @atomic_store_monotonic_f16(ptr addrspace(3) %ptr, i16 %arg.val) {
; GFX11-FAKE16-NEXT: ds_store_b16 v0, v2
; GFX11-FAKE16-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-FAKE16-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-TRUE16-LABEL: atomic_store_monotonic_f16:
+; GFX1250-TRUE16: ; %bb.0:
+; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-TRUE16-NEXT: v_add_nc_u16 v1.h, v1.l, 2
+; GFX1250-TRUE16-NEXT: ds_store_b16 v0, v1
+; GFX1250-TRUE16-NEXT: ds_store_b16_d16_hi v0, v1
+; GFX1250-TRUE16-NEXT: s_wait_dscnt 0x0
+; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250-FAKE16-LABEL: atomic_store_monotonic_f16:
+; GFX1250-FAKE16: ; %bb.0:
+; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-FAKE16-NEXT: v_add_nc_u16 v2, v1, 2
+; GFX1250-FAKE16-NEXT: ds_store_b16 v0, v1
+; GFX1250-FAKE16-NEXT: ds_store_b16 v0, v2
+; GFX1250-FAKE16-NEXT: s_wait_dscnt 0x0
+; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]
%arg.val1 = add i16 %arg.val, 2
%val = bitcast i16 %arg.val to half
%val1 = bitcast i16 %arg.val1 to half
@@ -367,6 +503,26 @@ define void @atomic_store_monotonic_offset_f16(ptr addrspace(3) %ptr, i16 %arg.v
; GFX11-FAKE16-NEXT: ds_store_b16 v0, v2 offset:32
; GFX11-FAKE16-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-FAKE16-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-TRUE16-LABEL: atomic_store_monotonic_offset_f16:
+; GFX1250-TRUE16: ; %bb.0:
+; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-TRUE16-NEXT: v_add_nc_u16 v1.h, v1.l, 2
+; GFX1250-TRUE16-NEXT: ds_store_b16 v0, v1 offset:32
+; GFX1250-TRUE16-NEXT: ds_store_b16_d16_hi v0, v1 offset:32
+; GFX1250-TRUE16-NEXT: s_wait_dscnt 0x0
+; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250-FAKE16-LABEL: atomic_store_monotonic_offset_f16:
+; GFX1250-FAKE16: ; %bb.0:
+; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-FAKE16-NEXT: v_add_nc_u16 v2, v1, 2
+; GFX1250-FAKE16-NEXT: ds_store_b16 v0, v1 offset:32
+; GFX1250-FAKE16-NEXT: ds_store_b16 v0, v2 offset:32
+; GFX1250-FAKE16-NEXT: s_wait_dscnt 0x0
+; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]
%arg.val1 = add i16 %arg.val, 2
%val1 = bitcast i16 %arg.val1 to half
%val = bitcast i16 %arg.val to half
@@ -413,6 +569,26 @@ define void @atomic_store_monotonic_bf16(ptr addrspace(3) %ptr, i16 %arg.val) {
; GFX11-FAKE16-NEXT: ds_store_b16 v0, v2
; GFX11-FAKE16-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-FAKE16-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-TRUE16-LABEL: atomic_store_monotonic_bf16:
+; GFX1250-TRUE16: ; %bb.0:
+; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-TRUE16-NEXT: v_add_nc_u16 v1.h, v1.l, 2
+; GFX1250-TRUE16-NEXT: ds_store_b16 v0, v1
+; GFX1250-TRUE16-NEXT: ds_store_b16_d16_hi v0, v1
+; GFX1250-TRUE16-NEXT: s_wait_dscnt 0x0
+; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250-FAKE16-LABEL: atomic_store_monotonic_bf16:
+; GFX1250-FAKE16: ; %bb.0:
+; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-FAKE16-NEXT: v_add_nc_u16 v2, v1, 2
+; GFX1250-FAKE16-NEXT: ds_store_b16 v0, v1
+; GFX1250-FAKE16-NEXT: ds_store_b16 v0, v2
+; GFX1250-FAKE16-NEXT: s_wait_dscnt 0x0
+; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]
%arg.val1 = add i16 %arg.val, 2
%val1 = bitcast i16 %arg.val1 to bfloat
%val = bitcast i16 %arg.val to bfloat
@@ -458,6 +634,26 @@ define void @atomic_store_monotonic_offset_bf16(ptr addrspace(3) %ptr, i16 %arg.
; GFX11-FAKE16-NEXT: ds_store_b16 v0, v2 offset:32
; GFX11-FAKE16-NEXT: s_waitcnt lgkmcnt(0)
; GFX11-FAKE16-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-TRUE16-LABEL: atomic_store_monotonic_offset_bf16:
+; GFX1250-TRUE16: ; %bb.0:
+; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-TRUE16-NEXT: v_add_nc_u16 v1.h, v1.l, 2
+; GFX1250-TRUE16-NEXT: ds_store_b16 v0, v1 offset:32
+; GFX1250-TRUE16-NEXT: ds_store_b16_d16_hi v0, v1 offset:32
+; GFX1250-TRUE16-NEXT: s_wait_dscnt 0x0
+; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250-FAKE16-LABEL: atomic_store_monotonic_offset_bf16:
+; GFX1250-FAKE16: ; %bb.0:
+; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-FAKE16-NEXT: v_add_nc_u16 v2, v1, 2
+; GFX1250-FAKE16-NEXT: ds_store_b16 v0, v1 offset:32
+; GFX1250-FAKE16-NEXT: ds_store_b16 v0, v2 offset:32
+; GFX1250-FAKE16-NEXT: s_wait_dscnt 0x0
+; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]
%arg.val1 = add i16 %arg.val, 2
%val1 = bitcast i16 %arg.val1 to bfloat
%val = bitcast i16 %arg.val to bfloat
diff --git a/llvm/test/CodeGen/AMDGPU/attributor-flatscratchinit-undefined-behavior.ll b/llvm/test/CodeGen/AMDGPU/attributor-flatscratchinit-undefined-behavior.ll
index f63dd6e..c90611f 100644
--- a/llvm/test/CodeGen/AMDGPU/attributor-flatscratchinit-undefined-behavior.ll
+++ b/llvm/test/CodeGen/AMDGPU/attributor-flatscratchinit-undefined-behavior.ll
@@ -147,10 +147,10 @@ define amdgpu_kernel void @call_calls_intrin_ascast_cc_kernel(ptr addrspace(3) %
attributes #0 = { "amdgpu-no-flat-scratch-init" }
;.
-; GFX9: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx900" "uniform-work-group-size"="false" }
+; GFX9: attributes #[[ATTR0]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx900" "uniform-work-group-size"="false" }
; GFX9: attributes #[[ATTR1:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) "target-cpu"="gfx900" }
;.
-; GFX10: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx1010" "uniform-work-group-size"="false" }
+; GFX10: attributes #[[ATTR0]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx1010" "uniform-work-group-size"="false" }
; GFX10: attributes #[[ATTR1:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) "target-cpu"="gfx1010" }
;.
; GFX9: [[META0]] = !{i32 1, i32 5, i32 6, i32 10}
diff --git a/llvm/test/CodeGen/AMDGPU/attributor-flatscratchinit.ll b/llvm/test/CodeGen/AMDGPU/attributor-flatscratchinit.ll
index 60cd252..c005695a 100644
--- a/llvm/test/CodeGen/AMDGPU/attributor-flatscratchinit.ll
+++ b/llvm/test/CodeGen/AMDGPU/attributor-flatscratchinit.ll
@@ -723,7 +723,7 @@ define void @also_empty() {
define amdgpu_kernel void @indirect_call_known_callees(i1 %cond) {
; GFX9-LABEL: define amdgpu_kernel void @indirect_call_known_callees(
-; GFX9-SAME: i1 [[COND:%.*]]) #[[ATTR3:[0-9]+]] {
+; GFX9-SAME: i1 [[COND:%.*]]) #[[ATTR0]] {
; GFX9-NEXT: [[FPTR:%.*]] = select i1 [[COND]], ptr @empty, ptr @also_empty
; GFX9-NEXT: [[TMP1:%.*]] = icmp eq ptr [[FPTR]], @also_empty
; GFX9-NEXT: br i1 [[TMP1]], label %[[BB2:.*]], label %[[BB3:.*]]
@@ -741,7 +741,7 @@ define amdgpu_kernel void @indirect_call_known_callees(i1 %cond) {
; GFX9-NEXT: ret void
;
; GFX10-LABEL: define amdgpu_kernel void @indirect_call_known_callees(
-; GFX10-SAME: i1 [[COND:%.*]]) #[[ATTR3:[0-9]+]] {
+; GFX10-SAME: i1 [[COND:%.*]]) #[[ATTR0]] {
; GFX10-NEXT: [[FPTR:%.*]] = select i1 [[COND]], ptr @empty, ptr @also_empty
; GFX10-NEXT: [[TMP1:%.*]] = icmp eq ptr [[FPTR]], @also_empty
; GFX10-NEXT: br i1 [[TMP1]], label %[[BB2:.*]], label %[[BB3:.*]]
@@ -767,13 +767,13 @@ declare i32 @llvm.amdgcn.workgroup.id.x()
define void @use_intrinsic_workitem_id_x() {
; GFX9-LABEL: define void @use_intrinsic_workitem_id_x(
-; GFX9-SAME: ) #[[ATTR5:[0-9]+]] {
+; GFX9-SAME: ) #[[ATTR4:[0-9]+]] {
; GFX9-NEXT: [[VAL:%.*]] = call i32 @llvm.amdgcn.workitem.id.x()
; GFX9-NEXT: store volatile i32 [[VAL]], ptr addrspace(1) null, align 4
; GFX9-NEXT: ret void
;
; GFX10-LABEL: define void @use_intrinsic_workitem_id_x(
-; GFX10-SAME: ) #[[ATTR5:[0-9]+]] {
+; GFX10-SAME: ) #[[ATTR4:[0-9]+]] {
; GFX10-NEXT: [[VAL:%.*]] = call i32 @llvm.amdgcn.workitem.id.x()
; GFX10-NEXT: store volatile i32 [[VAL]], ptr addrspace(1) null, align 4
; GFX10-NEXT: ret void
@@ -803,12 +803,12 @@ define amdgpu_kernel void @use_intrinsic_workitem_id_x_cc_kernel() {
define void @call_use_intrinsic_workitem_id_x() {
; GFX9-LABEL: define void @call_use_intrinsic_workitem_id_x(
-; GFX9-SAME: ) #[[ATTR5]] {
+; GFX9-SAME: ) #[[ATTR4]] {
; GFX9-NEXT: call void @use_intrinsic_workitem_id_x()
; GFX9-NEXT: ret void
;
; GFX10-LABEL: define void @call_use_intrinsic_workitem_id_x(
-; GFX10-SAME: ) #[[ATTR5]] {
+; GFX10-SAME: ) #[[ATTR4]] {
; GFX10-NEXT: call void @use_intrinsic_workitem_id_x()
; GFX10-NEXT: ret void
;
@@ -818,12 +818,12 @@ define void @call_use_intrinsic_workitem_id_x() {
define amdgpu_kernel void @call_use_intrinsic_workitem_id_x_cc_kernel() {
; GFX9-LABEL: define amdgpu_kernel void @call_use_intrinsic_workitem_id_x_cc_kernel(
-; GFX9-SAME: ) #[[ATTR5]] {
+; GFX9-SAME: ) #[[ATTR4]] {
; GFX9-NEXT: call void @use_intrinsic_workitem_id_x()
; GFX9-NEXT: ret void
;
; GFX10-LABEL: define amdgpu_kernel void @call_use_intrinsic_workitem_id_x_cc_kernel(
-; GFX10-SAME: ) #[[ATTR5]] {
+; GFX10-SAME: ) #[[ATTR4]] {
; GFX10-NEXT: call void @use_intrinsic_workitem_id_x()
; GFX10-NEXT: ret void
;
@@ -851,12 +851,12 @@ define amdgpu_kernel void @calls_intrin_ascast_cc_kernel(ptr addrspace(3) %ptr)
define amdgpu_kernel void @with_inline_asm() {
; GFX9-LABEL: define amdgpu_kernel void @with_inline_asm(
-; GFX9-SAME: ) #[[ATTR3]] {
+; GFX9-SAME: ) #[[ATTR0]] {
; GFX9-NEXT: call void asm sideeffect "
; GFX9-NEXT: ret void
;
; GFX10-LABEL: define amdgpu_kernel void @with_inline_asm(
-; GFX10-SAME: ) #[[ATTR3]] {
+; GFX10-SAME: ) #[[ATTR0]] {
; GFX10-NEXT: call void asm sideeffect "
; GFX10-NEXT: ret void
;
@@ -865,19 +865,17 @@ define amdgpu_kernel void @with_inline_asm() {
}
;.
-; GFX9: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx900" "uniform-work-group-size"="false" }
-; GFX9: attributes #[[ATTR1]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx900" "uniform-work-group-size"="false" }
+; GFX9: attributes #[[ATTR0]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx900" "uniform-work-group-size"="false" }
+; GFX9: attributes #[[ATTR1]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx900" "uniform-work-group-size"="false" }
; GFX9: attributes #[[ATTR2]] = { "target-cpu"="gfx900" "uniform-work-group-size"="false" }
-; GFX9: attributes #[[ATTR3]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx900" "uniform-work-group-size"="false" }
-; GFX9: attributes #[[ATTR4:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) "target-cpu"="gfx900" }
-; GFX9: attributes #[[ATTR5]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx900" "uniform-work-group-size"="false" }
+; GFX9: attributes #[[ATTR3:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) "target-cpu"="gfx900" }
+; GFX9: attributes #[[ATTR4]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx900" "uniform-work-group-size"="false" }
;.
-; GFX10: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx1010" "uniform-work-group-size"="false" }
-; GFX10: attributes #[[ATTR1]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx1010" "uniform-work-group-size"="false" }
+; GFX10: attributes #[[ATTR0]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx1010" "uniform-work-group-size"="false" }
+; GFX10: attributes #[[ATTR1]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx1010" "uniform-work-group-size"="false" }
; GFX10: attributes #[[ATTR2]] = { "target-cpu"="gfx1010" "uniform-work-group-size"="false" }
-; GFX10: attributes #[[ATTR3]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx1010" "uniform-work-group-size"="false" }
-; GFX10: attributes #[[ATTR4:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) "target-cpu"="gfx1010" }
-; GFX10: attributes #[[ATTR5]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx1010" "uniform-work-group-size"="false" }
+; GFX10: attributes #[[ATTR3:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) "target-cpu"="gfx1010" }
+; GFX10: attributes #[[ATTR4]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx1010" "uniform-work-group-size"="false" }
;.
; GFX9: [[META0]] = !{i32 2, i32 10}
; GFX9: [[META1]] = !{i32 1, i32 2, i32 3, i32 10}
diff --git a/llvm/test/CodeGen/AMDGPU/bf16.ll b/llvm/test/CodeGen/AMDGPU/bf16.ll
index 6b5647e..4b14dc6 100644
--- a/llvm/test/CodeGen/AMDGPU/bf16.ll
+++ b/llvm/test/CodeGen/AMDGPU/bf16.ll
@@ -7,11 +7,9 @@
; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1010 | FileCheck %s -check-prefixes=GFX10
; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1100 -mattr=+real-true16 | FileCheck %s -check-prefixes=GFX11,GFX11TRUE16
; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16 | FileCheck %s -check-prefixes=GFX11,GFX11FAKE16
-; xUN: llc < %s -mtriple=amdgcn -mcpu=gfx1250 -mattr=+real-true16 | FileCheck %s -check-prefixes=GFX1250,GFX1250TRUE16
+; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1250 -mattr=+real-true16 | FileCheck %s -check-prefixes=GFX1250,GFX1250TRUE16
; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1250 -mattr=-real-true16 | FileCheck %s -check-prefixes=GFX1250,GFX1250FAKE16
-; FIXME: real-true16 version of gfx1250 test fails
-
define void @test_load_store(ptr addrspace(1) %in, ptr addrspace(1) %out) {
; GCN-LABEL: test_load_store:
; GCN: ; %bb.0:
@@ -2393,15 +2391,25 @@ define void @test_store_fpimm(ptr addrspace(1) %ptr0, ptr addrspace(1) %ptr1) {
; GFX11FAKE16-NEXT: global_store_b16 v[2:3], v5, off
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: test_store_fpimm:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_mov_b32_e32 v4, 0x3f80
-; GFX1250-NEXT: v_mov_b32_e32 v5, 0x4228
-; GFX1250-NEXT: global_store_b16 v[0:1], v4, off
-; GFX1250-NEXT: global_store_b16 v[2:3], v5, off
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: test_store_fpimm:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v4.l, 0x3f80
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v4.h, 0x4228
+; GFX1250TRUE16-NEXT: global_store_b16 v[0:1], v4, off
+; GFX1250TRUE16-NEXT: global_store_d16_hi_b16 v[2:3], v4, off
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: test_store_fpimm:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_mov_b32_e32 v4, 0x3f80
+; GFX1250FAKE16-NEXT: v_mov_b32_e32 v5, 0x4228
+; GFX1250FAKE16-NEXT: global_store_b16 v[0:1], v4, off
+; GFX1250FAKE16-NEXT: global_store_b16 v[2:3], v5, off
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
store bfloat 1.0, ptr addrspace(1) %ptr0
store bfloat 42.0, ptr addrspace(1) %ptr1
ret void
@@ -3796,13 +3804,21 @@ define amdgpu_gfx void @test_inreg_arg_store(bfloat inreg %in, ptr addrspace(1)
; GFX11FAKE16-NEXT: global_store_b16 v[0:1], v2, off
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: test_inreg_arg_store:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_mov_b32_e32 v2, s4
-; GFX1250-NEXT: global_store_b16 v[0:1], v2, off
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: test_inreg_arg_store:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, s4
+; GFX1250TRUE16-NEXT: global_store_b16 v[0:1], v2, off
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: test_inreg_arg_store:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_mov_b32_e32 v2, s4
+; GFX1250FAKE16-NEXT: global_store_b16 v[0:1], v2, off
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
store bfloat %in, ptr addrspace(1) %out
ret void
}
@@ -3866,12 +3882,20 @@ define bfloat @test_byval(ptr addrspace(5) byval(bfloat) %bv, bfloat %val) {
; GFX11FAKE16-NEXT: scratch_store_b16 off, v0, s32
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: test_byval:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: scratch_store_b16 off, v0, s32
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: test_byval:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v0.l
+; GFX1250TRUE16-NEXT: scratch_store_b16 off, v1, s32
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: test_byval:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: scratch_store_b16 off, v0, s32
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
store bfloat %val, ptr addrspace(5) %bv
%retval = load bfloat, ptr addrspace(5) %bv
ret bfloat %retval
@@ -6708,27 +6732,50 @@ define { <32 x i32>, bfloat } @test_overflow_stack(bfloat %a, <32 x i32> %b) {
; GFX11FAKE16-NEXT: scratch_store_b16 v0, v1, off offset:128
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: test_overflow_stack:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: s_clause 0x2
-; GFX1250-NEXT: scratch_load_b32 v33, off, s32 offset:8
-; GFX1250-NEXT: scratch_load_b32 v32, off, s32 offset:4
-; GFX1250-NEXT: scratch_load_b32 v31, off, s32
-; GFX1250-NEXT: s_clause 0x5
-; GFX1250-NEXT: scratch_store_b128 v0, v[22:25], off offset:80
-; GFX1250-NEXT: scratch_store_b128 v0, v[18:21], off offset:64
-; GFX1250-NEXT: scratch_store_b128 v0, v[14:17], off offset:48
-; GFX1250-NEXT: scratch_store_b128 v0, v[10:13], off offset:32
-; GFX1250-NEXT: scratch_store_b128 v0, v[6:9], off offset:16
-; GFX1250-NEXT: scratch_store_b128 v0, v[2:5], off
-; GFX1250-NEXT: s_wait_loadcnt 0x0
-; GFX1250-NEXT: s_clause 0x2
-; GFX1250-NEXT: scratch_store_b128 v0, v[30:33], off offset:112
-; GFX1250-NEXT: scratch_store_b128 v0, v[26:29], off offset:96
-; GFX1250-NEXT: scratch_store_b16 v0, v1, off offset:128
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: test_overflow_stack:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: s_clause 0x2
+; GFX1250TRUE16-NEXT: scratch_load_b32 v33, off, s32 offset:8
+; GFX1250TRUE16-NEXT: scratch_load_b32 v32, off, s32 offset:4
+; GFX1250TRUE16-NEXT: scratch_load_b32 v31, off, s32
+; GFX1250TRUE16-NEXT: s_clause 0x3
+; GFX1250TRUE16-NEXT: scratch_store_b128 v0, v[22:25], off offset:80
+; GFX1250TRUE16-NEXT: scratch_store_b128 v0, v[18:21], off offset:64
+; GFX1250TRUE16-NEXT: scratch_store_b128 v0, v[14:17], off offset:48
+; GFX1250TRUE16-NEXT: scratch_store_b128 v0, v[10:13], off offset:32
+; GFX1250TRUE16-NEXT: s_clause 0x1
+; GFX1250TRUE16-NEXT: scratch_store_b128 v0, v[6:9], off offset:16
+; GFX1250TRUE16-NEXT: scratch_store_b128 v0, v[2:5], off
+; GFX1250TRUE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250TRUE16-NEXT: s_clause 0x2
+; GFX1250TRUE16-NEXT: scratch_store_b128 v0, v[30:33], off offset:112
+; GFX1250TRUE16-NEXT: scratch_store_b128 v0, v[26:29], off offset:96
+; GFX1250TRUE16-NEXT: scratch_store_b16 v0, v1, off offset:128
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: test_overflow_stack:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: s_clause 0x2
+; GFX1250FAKE16-NEXT: scratch_load_b32 v33, off, s32 offset:8
+; GFX1250FAKE16-NEXT: scratch_load_b32 v32, off, s32 offset:4
+; GFX1250FAKE16-NEXT: scratch_load_b32 v31, off, s32
+; GFX1250FAKE16-NEXT: s_clause 0x5
+; GFX1250FAKE16-NEXT: scratch_store_b128 v0, v[22:25], off offset:80
+; GFX1250FAKE16-NEXT: scratch_store_b128 v0, v[18:21], off offset:64
+; GFX1250FAKE16-NEXT: scratch_store_b128 v0, v[14:17], off offset:48
+; GFX1250FAKE16-NEXT: scratch_store_b128 v0, v[10:13], off offset:32
+; GFX1250FAKE16-NEXT: scratch_store_b128 v0, v[6:9], off offset:16
+; GFX1250FAKE16-NEXT: scratch_store_b128 v0, v[2:5], off
+; GFX1250FAKE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250FAKE16-NEXT: s_clause 0x2
+; GFX1250FAKE16-NEXT: scratch_store_b128 v0, v[30:33], off offset:112
+; GFX1250FAKE16-NEXT: scratch_store_b128 v0, v[26:29], off offset:96
+; GFX1250FAKE16-NEXT: scratch_store_b16 v0, v1, off offset:128
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%ins.0 = insertvalue { <32 x i32>, bfloat } poison, <32 x i32> %b, 0
%ins.1 = insertvalue { <32 x i32>, bfloat } %ins.0 ,bfloat %a, 1
ret { <32 x i32>, bfloat } %ins.1
@@ -10726,15 +10773,29 @@ define bfloat @v_fadd_bf16(bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fadd_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_add_f32_e32 v0, v0, v1
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fadd_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, v1.l
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l
+; GFX1250TRUE16-NEXT: v_add_f32_e32 v0, v1, v2
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fadd_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_add_f32_e32 v0, v0, v1
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fadd bfloat %a, %b
ret bfloat %op
}
@@ -15268,15 +15329,26 @@ define bfloat @v_fadd_bf16_fpimm_0(bfloat %arg0) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fadd_bf16_fpimm_0:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_add_f32_e32 v0, 1.0, v0
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fadd_bf16_fpimm_0:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_add_f32_e32 v0, 1.0, v1
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fadd_bf16_fpimm_0:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_add_f32_e32 v0, 1.0, v0
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%add = fadd bfloat %arg0, 1.0
ret bfloat %add
}
@@ -15382,15 +15454,26 @@ define bfloat @v_fadd_bf16_fpimm_1(bfloat %arg0) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fadd_bf16_fpimm_1:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_add_f32_e32 v0, 0x42280000, v0
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fadd_bf16_fpimm_1:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_add_f32_e32 v0, 0x42280000, v1
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fadd_bf16_fpimm_1:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_add_f32_e32 v0, 0x42280000, v0
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%add = fadd bfloat %arg0, 42.0
ret bfloat %add
}
@@ -15507,15 +15590,29 @@ define bfloat @v_fsub_bf16(bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fsub_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_sub_f32_e32 v0, v0, v1
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fsub_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, v1.l
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l
+; GFX1250TRUE16-NEXT: v_sub_f32_e32 v0, v1, v2
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fsub_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_sub_f32_e32 v0, v0, v1
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fsub bfloat %a, %b
ret bfloat %op
}
@@ -15931,21 +16028,37 @@ define <3 x bfloat> @v_fsub_v3bf16(<3 x bfloat> %a, <3 x bfloat> %b) {
; GFX11FAKE16-NEXT: v_alignbit_b32 v1, s0, v1, 16
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fsub_v3bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v3, 16, v3
-; GFX1250-NEXT: v_and_b32_e32 v4, 0xffff0000, v2
-; GFX1250-NEXT: v_and_b32_e32 v5, 0xffff0000, v0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v2, 16, v2 :: v_dual_lshlrev_b32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_dual_sub_f32 v4, v5, v4 :: v_dual_lshlrev_b32 v1, 16, v1
-; GFX1250-NEXT: v_dual_sub_f32 v0, v0, v2 :: v_dual_sub_f32 v1, v1, v3
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, v4
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v1, v1, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fsub_v3bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_dual_lshlrev_b32 v3, 16, v3 :: v_dual_lshlrev_b32 v1, 16, v1
+; GFX1250TRUE16-NEXT: v_and_b32_e32 v4, 0xffff0000, v2
+; GFX1250TRUE16-NEXT: v_and_b32_e32 v5, 0xffff0000, v0
+; GFX1250TRUE16-NEXT: v_dual_lshlrev_b32 v2, 16, v2 :: v_dual_lshlrev_b32 v0, 16, v0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_sub_f32_e32 v1, v1, v3
+; GFX1250TRUE16-NEXT: v_dual_sub_f32 v3, v5, v4 :: v_dual_sub_f32 v0, v0, v2
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v1, v1, s0
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, v3
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fsub_v3bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v3, 16, v3
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v4, 0xffff0000, v2
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v5, 0xffff0000, v0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v2, 16, v2 :: v_dual_lshlrev_b32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_dual_sub_f32 v4, v5, v4 :: v_dual_lshlrev_b32 v1, 16, v1
+; GFX1250FAKE16-NEXT: v_dual_sub_f32 v0, v0, v2 :: v_dual_sub_f32 v1, v1, v3
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, v4
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v1, v1, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fsub <3 x bfloat> %a, %b
ret <3 x bfloat> %op
}
@@ -16371,12 +16484,26 @@ define bfloat @v_fmul_bf16(bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fmul_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_fma_mixlo_bf16 v0, v0, v1, 0 op_sel_hi:[1,1,0]
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fmul_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, v1.l
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l
+; GFX1250TRUE16-NEXT: v_mul_f32_e32 v0, v1, v2
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fmul_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_fma_mixlo_bf16 v0, v0, v1, 0 op_sel_hi:[1,1,0]
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fmul bfloat %a, %b
ret bfloat %op
}
@@ -21012,31 +21139,60 @@ define bfloat @v_fdiv_bf16(bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fdiv_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v0, 16, v0 :: v_dual_lshlrev_b32 v1, 16, v1
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_div_scale_f32 v2, null, v1, v1, v0
-; GFX1250-NEXT: v_rcp_f32_e32 v3, v2
-; GFX1250-NEXT: v_nop
-; GFX1250-NEXT: s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_fma_f32 v4, -v2, v3, 1.0
-; GFX1250-NEXT: v_fmac_f32_e32 v3, v4, v3
-; GFX1250-NEXT: v_div_scale_f32 v4, vcc_lo, v0, v1, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_mul_f32_e32 v5, v4, v3
-; GFX1250-NEXT: v_fma_f32 v6, -v2, v5, v4
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_fmac_f32_e32 v5, v6, v3
-; GFX1250-NEXT: v_fma_f32 v2, -v2, v5, v4
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_div_fmas_f32 v2, v2, v3, v5
-; GFX1250-NEXT: v_div_fixup_f32 v0, v2, v1, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fdiv_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, v0.l
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v0.h, v1.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v0.l, v2.l
+; GFX1250TRUE16-NEXT: v_div_scale_f32 v1, null, v0, v0, v2
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(TRANS32_DEP_1)
+; GFX1250TRUE16-NEXT: v_rcp_f32_e32 v3, v1
+; GFX1250TRUE16-NEXT: v_nop
+; GFX1250TRUE16-NEXT: v_fma_f32 v4, -v1, v3, 1.0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_fmac_f32_e32 v3, v4, v3
+; GFX1250TRUE16-NEXT: v_div_scale_f32 v4, vcc_lo, v2, v0, v2
+; GFX1250TRUE16-NEXT: v_mul_f32_e32 v5, v4, v3
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_fma_f32 v6, -v1, v5, v4
+; GFX1250TRUE16-NEXT: v_fmac_f32_e32 v5, v6, v3
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_fma_f32 v1, -v1, v5, v4
+; GFX1250TRUE16-NEXT: v_div_fmas_f32 v1, v1, v3, v5
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_div_fixup_f32 v0, v1, v0, v2
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fdiv_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v0, 16, v0 :: v_dual_lshlrev_b32 v1, 16, v1
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_div_scale_f32 v2, null, v1, v1, v0
+; GFX1250FAKE16-NEXT: v_rcp_f32_e32 v3, v2
+; GFX1250FAKE16-NEXT: v_nop
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_fma_f32 v4, -v2, v3, 1.0
+; GFX1250FAKE16-NEXT: v_fmac_f32_e32 v3, v4, v3
+; GFX1250FAKE16-NEXT: v_div_scale_f32 v4, vcc_lo, v0, v1, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_mul_f32_e32 v5, v4, v3
+; GFX1250FAKE16-NEXT: v_fma_f32 v6, -v2, v5, v4
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_fmac_f32_e32 v5, v6, v3
+; GFX1250FAKE16-NEXT: v_fma_f32 v2, -v2, v5, v4
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_div_fmas_f32 v2, v2, v3, v5
+; GFX1250FAKE16-NEXT: v_div_fixup_f32 v0, v2, v1, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fdiv bfloat %a, %b
ret bfloat %op
}
@@ -21092,12 +21248,19 @@ define bfloat @v_fabs_bf16(bfloat %a) {
; GFX11FAKE16-NEXT: v_and_b32_e32 v0, 0x7fff, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fabs_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_and_b32_e32 v0, 0x7fff, v0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fabs_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_and_b16 v0.l, 0x7fff, v0.l
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fabs_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v0, 0x7fff, v0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.fabs.bf16(bfloat %a)
ret bfloat %op
}
@@ -21198,12 +21361,19 @@ define bfloat @v_fneg_bf16(bfloat %a) {
; GFX11FAKE16-NEXT: v_xor_b32_e32 v0, 0x8000, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fneg_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_xor_b32_e32 v0, 0x8000, v0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fneg_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_xor_b16 v0.l, 0x8000, v0.l
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fneg_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_xor_b32_e32 v0, 0x8000, v0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fneg bfloat %a
ret bfloat %op
}
@@ -21317,12 +21487,19 @@ define bfloat @v_fneg_fabs_bf16(bfloat %a) {
; GFX11FAKE16-NEXT: v_or_b32_e32 v0, 0x8000, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fneg_fabs_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_or_b32_e32 v0, 0x8000, v0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fneg_fabs_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_or_b16 v0.l, 0x8000, v0.l
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fneg_fabs_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_or_b32_e32 v0, 0x8000, v0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%fabs = call bfloat @llvm.fabs.bf16(bfloat %a)
%op = fneg bfloat %fabs
ret bfloat %op
@@ -21511,15 +21688,29 @@ define bfloat @v_minnum_bf16(bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_minnum_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_min_num_f32_e32 v0, v0, v1
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_minnum_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, v1.l
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l
+; GFX1250TRUE16-NEXT: v_min_num_f32_e32 v0, v1, v2
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_minnum_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_min_num_f32_e32 v0, v0, v1
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.minnum.bf16(bfloat %a, bfloat %b)
ret bfloat %op
}
@@ -26073,15 +26264,29 @@ define bfloat @v_maxnum_bf16(bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_maxnum_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_max_num_f32_e32 v0, v0, v1
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_maxnum_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, v1.l
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l
+; GFX1250TRUE16-NEXT: v_max_num_f32_e32 v0, v1, v2
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_maxnum_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_max_num_f32_e32 v0, v0, v1
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.maxnum.bf16(bfloat %a, bfloat %b)
ret bfloat %op
}
@@ -30764,12 +30969,19 @@ define bfloat @v_sqrt_bf16(bfloat %a) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_sqrt_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_sqrt_bf16_e32 v0, v0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_sqrt_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_sqrt_bf16_e32 v0.l, v0.l
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_sqrt_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_sqrt_bf16_e32 v0, v0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.sqrt.bf16(bfloat %a)
ret bfloat %op
}
@@ -30877,15 +31089,26 @@ define bfloat @v_ldexp_bf16_i32(bfloat %a, i32 %b) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_ldexp_bf16_i32:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_ldexp_f32 v0, v0, v1
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_ldexp_bf16_i32:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_ldexp_f32 v0, v2, v1
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_ldexp_bf16_i32:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_ldexp_f32 v0, v0, v1
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.ldexp.bf16.i32(bfloat %a, i32 %b)
ret bfloat %op
}
@@ -31005,16 +31228,28 @@ define { bfloat, i16 } @v_frexp_bf16_i16(bfloat %a) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_frexp_bf16_i16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v1, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_frexp_mant_f32_e32 v0, v1
-; GFX1250-NEXT: v_frexp_exp_i32_f32_e32 v1, v1
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_frexp_bf16_i16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_frexp_mant_f32_e32 v0, v1
+; GFX1250TRUE16-NEXT: v_frexp_exp_i32_f32_e32 v1, v1
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_frexp_bf16_i16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v1, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_frexp_mant_f32_e32 v0, v1
+; GFX1250FAKE16-NEXT: v_frexp_exp_i32_f32_e32 v1, v1
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call { bfloat, i16 } @llvm.frexp.bf16.i16(bfloat %a)
ret { bfloat, i16 } %op
}
@@ -31254,31 +31489,58 @@ define bfloat @v_log_bf16(bfloat %a) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_log_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_cmp_gt_f32_e32 vcc_lo, 0x800000, v0
-; GFX1250-NEXT: v_cndmask_b32_e64 v1, 0, 32, vcc_lo
-; GFX1250-NEXT: v_ldexp_f32 v0, v0, v1
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(TRANS32_DEP_1)
-; GFX1250-NEXT: v_log_f32_e32 v0, v0
-; GFX1250-NEXT: v_nop
-; GFX1250-NEXT: v_mul_f32_e32 v1, 0x3f317217, v0
-; GFX1250-NEXT: v_cmp_gt_f32_e64 s0, 0x7f800000, |v0|
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_fma_f32 v2, 0x3f317217, v0, -v1
-; GFX1250-NEXT: v_fmamk_f32 v2, v0, 0x3377d1cf, v2
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_add_f32_e32 v1, v1, v2
-; GFX1250-NEXT: v_cndmask_b32_e64 v0, v0, v1, s0
-; GFX1250-NEXT: v_cndmask_b32_e64 v1, 0, 0x41b17218, vcc_lo
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_sub_f32_e32 v0, v0, v1
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_log_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cmp_gt_f32_e32 vcc_lo, 0x800000, v1
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e64 v0, 0, 32, vcc_lo
+; GFX1250TRUE16-NEXT: v_ldexp_f32 v0, v1, v0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(TRANS32_DEP_1)
+; GFX1250TRUE16-NEXT: v_log_f32_e32 v0, v0
+; GFX1250TRUE16-NEXT: v_nop
+; GFX1250TRUE16-NEXT: v_mul_f32_e32 v1, 0x3f317217, v0
+; GFX1250TRUE16-NEXT: v_cmp_gt_f32_e64 s0, 0x7f800000, |v0|
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_fma_f32 v2, 0x3f317217, v0, -v1
+; GFX1250TRUE16-NEXT: v_fmamk_f32 v2, v0, 0x3377d1cf, v2
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_add_f32_e32 v1, v1, v2
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e64 v0, v0, v1, s0
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e64 v1, 0, 0x41b17218, vcc_lo
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_sub_f32_e32 v0, v0, v1
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_log_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cmp_gt_f32_e32 vcc_lo, 0x800000, v0
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v1, 0, 32, vcc_lo
+; GFX1250FAKE16-NEXT: v_ldexp_f32 v0, v0, v1
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(TRANS32_DEP_1)
+; GFX1250FAKE16-NEXT: v_log_f32_e32 v0, v0
+; GFX1250FAKE16-NEXT: v_nop
+; GFX1250FAKE16-NEXT: v_mul_f32_e32 v1, 0x3f317217, v0
+; GFX1250FAKE16-NEXT: v_cmp_gt_f32_e64 s0, 0x7f800000, |v0|
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_fma_f32 v2, 0x3f317217, v0, -v1
+; GFX1250FAKE16-NEXT: v_fmamk_f32 v2, v0, 0x3377d1cf, v2
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_add_f32_e32 v1, v1, v2
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v0, v0, v1, s0
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v1, 0, 0x41b17218, vcc_lo
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_sub_f32_e32 v0, v0, v1
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.log.bf16(bfloat %a)
ret bfloat %op
}
@@ -31439,12 +31701,19 @@ define bfloat @v_log2_bf16(bfloat %a) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_log2_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_log_bf16_e32 v0, v0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_log2_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_log_bf16_e32 v0.l, v0.l
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_log2_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_log_bf16_e32 v0, v0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.log2.bf16(bfloat %a)
ret bfloat %op
}
@@ -31679,31 +31948,58 @@ define bfloat @v_log10_bf16(bfloat %a) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_log10_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_cmp_gt_f32_e32 vcc_lo, 0x800000, v0
-; GFX1250-NEXT: v_cndmask_b32_e64 v1, 0, 32, vcc_lo
-; GFX1250-NEXT: v_ldexp_f32 v0, v0, v1
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(TRANS32_DEP_1)
-; GFX1250-NEXT: v_log_f32_e32 v0, v0
-; GFX1250-NEXT: v_nop
-; GFX1250-NEXT: v_mul_f32_e32 v1, 0x3e9a209a, v0
-; GFX1250-NEXT: v_cmp_gt_f32_e64 s0, 0x7f800000, |v0|
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_fma_f32 v2, 0x3e9a209a, v0, -v1
-; GFX1250-NEXT: v_fmamk_f32 v2, v0, 0x3284fbcf, v2
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_add_f32_e32 v1, v1, v2
-; GFX1250-NEXT: v_cndmask_b32_e64 v0, v0, v1, s0
-; GFX1250-NEXT: v_cndmask_b32_e64 v1, 0, 0x411a209b, vcc_lo
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_sub_f32_e32 v0, v0, v1
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_log10_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cmp_gt_f32_e32 vcc_lo, 0x800000, v1
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e64 v0, 0, 32, vcc_lo
+; GFX1250TRUE16-NEXT: v_ldexp_f32 v0, v1, v0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(TRANS32_DEP_1)
+; GFX1250TRUE16-NEXT: v_log_f32_e32 v0, v0
+; GFX1250TRUE16-NEXT: v_nop
+; GFX1250TRUE16-NEXT: v_mul_f32_e32 v1, 0x3e9a209a, v0
+; GFX1250TRUE16-NEXT: v_cmp_gt_f32_e64 s0, 0x7f800000, |v0|
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_fma_f32 v2, 0x3e9a209a, v0, -v1
+; GFX1250TRUE16-NEXT: v_fmamk_f32 v2, v0, 0x3284fbcf, v2
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_add_f32_e32 v1, v1, v2
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e64 v0, v0, v1, s0
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e64 v1, 0, 0x411a209b, vcc_lo
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_sub_f32_e32 v0, v0, v1
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_log10_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cmp_gt_f32_e32 vcc_lo, 0x800000, v0
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v1, 0, 32, vcc_lo
+; GFX1250FAKE16-NEXT: v_ldexp_f32 v0, v0, v1
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(TRANS32_DEP_1)
+; GFX1250FAKE16-NEXT: v_log_f32_e32 v0, v0
+; GFX1250FAKE16-NEXT: v_nop
+; GFX1250FAKE16-NEXT: v_mul_f32_e32 v1, 0x3e9a209a, v0
+; GFX1250FAKE16-NEXT: v_cmp_gt_f32_e64 s0, 0x7f800000, |v0|
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_fma_f32 v2, 0x3e9a209a, v0, -v1
+; GFX1250FAKE16-NEXT: v_fmamk_f32 v2, v0, 0x3284fbcf, v2
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_add_f32_e32 v1, v1, v2
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v0, v0, v1, s0
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v1, 0, 0x411a209b, vcc_lo
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_sub_f32_e32 v0, v0, v1
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.log10.bf16(bfloat %a)
ret bfloat %op
}
@@ -31946,34 +32242,65 @@ define bfloat @v_exp_bf16(bfloat %a) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_exp_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v1, 16, v0
-; GFX1250-NEXT: s_mov_b32 s0, 0x3fb8aa3b
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_mul_f32_e32 v2, 0x3fb8aa3b, v1
-; GFX1250-NEXT: v_rndne_f32_e32 v3, v2
-; GFX1250-NEXT: v_fma_mix_f32_bf16 v4, v0, s0, -v2 op_sel_hi:[1,0,0]
-; GFX1250-NEXT: s_mov_b32 s0, 0x32a5705f
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_sub_f32_e32 v2, v2, v3
-; GFX1250-NEXT: v_fma_mix_f32_bf16 v0, v0, s0, v4 op_sel_hi:[1,0,0]
-; GFX1250-NEXT: v_cmp_ngt_f32_e32 vcc_lo, 0xc2ce8ed0, v1
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_add_f32_e32 v0, v2, v0
-; GFX1250-NEXT: v_cvt_i32_f32_e32 v2, v3
-; GFX1250-NEXT: v_exp_f32_e32 v0, v0
-; GFX1250-NEXT: v_nop
-; GFX1250-NEXT: s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_ldexp_f32 v0, v0, v2
-; GFX1250-NEXT: v_cndmask_b32_e32 v0, 0, v0, vcc_lo
-; GFX1250-NEXT: v_cmp_nlt_f32_e32 vcc_lo, 0x42b17218, v1
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_cndmask_b32_e32 v0, 0x7f800000, v0, vcc_lo
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_exp_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_mov_b32 s0, 0x3fb8aa3b
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_mul_f32_e32 v2, 0x3fb8aa3b, v1
+; GFX1250TRUE16-NEXT: v_cmp_ngt_f32_e32 vcc_lo, 0xc2ce8ed0, v1
+; GFX1250TRUE16-NEXT: v_fma_mix_f32_bf16 v3, v0, s0, -v2 op_sel_hi:[1,0,0]
+; GFX1250TRUE16-NEXT: v_rndne_f32_e32 v4, v2
+; GFX1250TRUE16-NEXT: s_mov_b32 s0, 0x32a5705f
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instid1(SALU_CYCLE_1)
+; GFX1250TRUE16-NEXT: v_fma_mix_f32_bf16 v0, v0, s0, v3 op_sel_hi:[1,0,0]
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_sub_f32_e32 v2, v2, v4
+; GFX1250TRUE16-NEXT: v_add_f32_e32 v0, v2, v0
+; GFX1250TRUE16-NEXT: v_cvt_i32_f32_e32 v2, v4
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(TRANS32_DEP_1)
+; GFX1250TRUE16-NEXT: v_exp_f32_e32 v0, v0
+; GFX1250TRUE16-NEXT: v_nop
+; GFX1250TRUE16-NEXT: v_ldexp_f32 v0, v0, v2
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e32 v0, 0, v0, vcc_lo
+; GFX1250TRUE16-NEXT: v_cmp_nlt_f32_e32 vcc_lo, 0x42b17218, v1
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e32 v0, 0x7f800000, v0, vcc_lo
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_exp_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v1, 16, v0
+; GFX1250FAKE16-NEXT: s_mov_b32 s0, 0x3fb8aa3b
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_mul_f32_e32 v2, 0x3fb8aa3b, v1
+; GFX1250FAKE16-NEXT: v_rndne_f32_e32 v3, v2
+; GFX1250FAKE16-NEXT: v_fma_mix_f32_bf16 v4, v0, s0, -v2 op_sel_hi:[1,0,0]
+; GFX1250FAKE16-NEXT: s_mov_b32 s0, 0x32a5705f
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_sub_f32_e32 v2, v2, v3
+; GFX1250FAKE16-NEXT: v_fma_mix_f32_bf16 v0, v0, s0, v4 op_sel_hi:[1,0,0]
+; GFX1250FAKE16-NEXT: v_cmp_ngt_f32_e32 vcc_lo, 0xc2ce8ed0, v1
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_add_f32_e32 v0, v2, v0
+; GFX1250FAKE16-NEXT: v_cvt_i32_f32_e32 v2, v3
+; GFX1250FAKE16-NEXT: v_exp_f32_e32 v0, v0
+; GFX1250FAKE16-NEXT: v_nop
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_ldexp_f32 v0, v0, v2
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v0, 0, v0, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_nlt_f32_e32 vcc_lo, 0x42b17218, v1
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v0, 0x7f800000, v0, vcc_lo
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.exp.bf16(bfloat %a)
ret bfloat %op
}
@@ -32138,12 +32465,19 @@ define bfloat @v_exp2_bf16(bfloat %a) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_exp2_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_exp_bf16_e32 v0, v0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_exp2_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_exp_bf16_e32 v0.l, v0.l
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_exp2_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_exp_bf16_e32 v0, v0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.exp2.bf16(bfloat %a)
ret bfloat %op
}
@@ -32382,34 +32716,65 @@ define bfloat @v_exp10_bf16(bfloat %a) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_exp10_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v1, 16, v0
-; GFX1250-NEXT: s_mov_b32 s0, 0x40549a78
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_mul_f32_e32 v2, 0x40549a78, v1
-; GFX1250-NEXT: v_rndne_f32_e32 v3, v2
-; GFX1250-NEXT: v_fma_mix_f32_bf16 v4, v0, s0, -v2 op_sel_hi:[1,0,0]
-; GFX1250-NEXT: s_mov_b32 s0, 0x33979a37
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_sub_f32_e32 v2, v2, v3
-; GFX1250-NEXT: v_fma_mix_f32_bf16 v0, v0, s0, v4 op_sel_hi:[1,0,0]
-; GFX1250-NEXT: v_cmp_ngt_f32_e32 vcc_lo, 0xc23369f4, v1
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_add_f32_e32 v0, v2, v0
-; GFX1250-NEXT: v_cvt_i32_f32_e32 v2, v3
-; GFX1250-NEXT: v_exp_f32_e32 v0, v0
-; GFX1250-NEXT: v_nop
-; GFX1250-NEXT: s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_ldexp_f32 v0, v0, v2
-; GFX1250-NEXT: v_cndmask_b32_e32 v0, 0, v0, vcc_lo
-; GFX1250-NEXT: v_cmp_nlt_f32_e32 vcc_lo, 0x421a209b, v1
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_cndmask_b32_e32 v0, 0x7f800000, v0, vcc_lo
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_exp10_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_mov_b32 s0, 0x40549a78
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_mul_f32_e32 v2, 0x40549a78, v1
+; GFX1250TRUE16-NEXT: v_cmp_ngt_f32_e32 vcc_lo, 0xc23369f4, v1
+; GFX1250TRUE16-NEXT: v_fma_mix_f32_bf16 v3, v0, s0, -v2 op_sel_hi:[1,0,0]
+; GFX1250TRUE16-NEXT: v_rndne_f32_e32 v4, v2
+; GFX1250TRUE16-NEXT: s_mov_b32 s0, 0x33979a37
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instid1(SALU_CYCLE_1)
+; GFX1250TRUE16-NEXT: v_fma_mix_f32_bf16 v0, v0, s0, v3 op_sel_hi:[1,0,0]
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_sub_f32_e32 v2, v2, v4
+; GFX1250TRUE16-NEXT: v_add_f32_e32 v0, v2, v0
+; GFX1250TRUE16-NEXT: v_cvt_i32_f32_e32 v2, v4
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(TRANS32_DEP_1)
+; GFX1250TRUE16-NEXT: v_exp_f32_e32 v0, v0
+; GFX1250TRUE16-NEXT: v_nop
+; GFX1250TRUE16-NEXT: v_ldexp_f32 v0, v0, v2
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e32 v0, 0, v0, vcc_lo
+; GFX1250TRUE16-NEXT: v_cmp_nlt_f32_e32 vcc_lo, 0x421a209b, v1
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e32 v0, 0x7f800000, v0, vcc_lo
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_exp10_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v1, 16, v0
+; GFX1250FAKE16-NEXT: s_mov_b32 s0, 0x40549a78
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_mul_f32_e32 v2, 0x40549a78, v1
+; GFX1250FAKE16-NEXT: v_rndne_f32_e32 v3, v2
+; GFX1250FAKE16-NEXT: v_fma_mix_f32_bf16 v4, v0, s0, -v2 op_sel_hi:[1,0,0]
+; GFX1250FAKE16-NEXT: s_mov_b32 s0, 0x33979a37
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_sub_f32_e32 v2, v2, v3
+; GFX1250FAKE16-NEXT: v_fma_mix_f32_bf16 v0, v0, s0, v4 op_sel_hi:[1,0,0]
+; GFX1250FAKE16-NEXT: v_cmp_ngt_f32_e32 vcc_lo, 0xc23369f4, v1
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_add_f32_e32 v0, v2, v0
+; GFX1250FAKE16-NEXT: v_cvt_i32_f32_e32 v2, v3
+; GFX1250FAKE16-NEXT: v_exp_f32_e32 v0, v0
+; GFX1250FAKE16-NEXT: v_nop
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_ldexp_f32 v0, v0, v2
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v0, 0, v0, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_nlt_f32_e32 vcc_lo, 0x421a209b, v1
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v0, 0x7f800000, v0, vcc_lo
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.exp10.bf16(bfloat %a)
ret bfloat %op
}
@@ -32517,15 +32882,26 @@ define bfloat @v_ceil_bf16(bfloat %a) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_ceil_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_ceil_f32_e32 v0, v0
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_ceil_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_ceil_f32_e32 v0, v1
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_ceil_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_ceil_f32_e32 v0, v0
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.ceil.bf16(bfloat %a)
ret bfloat %op
}
@@ -32633,15 +33009,26 @@ define bfloat @v_trunc_bf16(bfloat %a) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_trunc_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_trunc_f32_e32 v0, v0
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_trunc_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_trunc_f32_e32 v0, v1
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_trunc_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_trunc_f32_e32 v0, v0
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.trunc.bf16(bfloat %a)
ret bfloat %op
}
@@ -32749,15 +33136,26 @@ define bfloat @v_rint_bf16(bfloat %a) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_rint_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_rndne_f32_e32 v0, v0
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_rint_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_rndne_f32_e32 v0, v1
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_rint_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_rndne_f32_e32 v0, v0
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.rint.bf16(bfloat %a)
ret bfloat %op
}
@@ -32865,15 +33263,26 @@ define bfloat @v_nearbyint_bf16(bfloat %a) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_nearbyint_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_rndne_f32_e32 v0, v0
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_nearbyint_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_rndne_f32_e32 v0, v1
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_nearbyint_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_rndne_f32_e32 v0, v0
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.nearbyint.bf16(bfloat %a)
ret bfloat %op
}
@@ -33031,23 +33440,42 @@ define bfloat @v_round_bf16(bfloat %a) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_round_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_trunc_f32_e32 v1, v0
-; GFX1250-NEXT: v_sub_f32_e32 v2, v0, v1
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_cmp_ge_f32_e64 s0, |v2|, 0.5
-; GFX1250-NEXT: v_cndmask_b32_e64 v2, 0, 1.0, s0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_bfi_b32 v0, 0x7fffffff, v2, v0
-; GFX1250-NEXT: v_add_f32_e32 v0, v1, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_round_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_trunc_f32_e32 v0, v1
+; GFX1250TRUE16-NEXT: v_sub_f32_e32 v2, v1, v0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cmp_ge_f32_e64 s0, |v2|, 0.5
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e64 v2, 0, 1.0, s0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_bfi_b32 v1, 0x7fffffff, v2, v1
+; GFX1250TRUE16-NEXT: v_add_f32_e32 v0, v0, v1
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_round_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_trunc_f32_e32 v1, v0
+; GFX1250FAKE16-NEXT: v_sub_f32_e32 v2, v0, v1
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cmp_ge_f32_e64 s0, |v2|, 0.5
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v2, 0, 1.0, s0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_bfi_b32 v0, 0x7fffffff, v2, v0
+; GFX1250FAKE16-NEXT: v_add_f32_e32 v0, v1, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.round.bf16(bfloat %a)
ret bfloat %op
}
@@ -33155,15 +33583,26 @@ define bfloat @v_roundeven_bf16(bfloat %a) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_roundeven_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_rndne_f32_e32 v0, v0
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_roundeven_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_rndne_f32_e32 v0, v1
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_roundeven_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_rndne_f32_e32 v0, v0
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.roundeven.bf16(bfloat %a)
ret bfloat %op
}
@@ -33271,15 +33710,26 @@ define bfloat @v_floor_bf16(bfloat %a) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_floor_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_floor_f32_e32 v0, v0
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_floor_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_floor_f32_e32 v0, v1
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_floor_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_floor_f32_e32 v0, v0
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.floor.bf16(bfloat %a)
ret bfloat %op
}
@@ -33385,15 +33835,26 @@ define bfloat @v_canonicalize_bf16(bfloat %a) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_canonicalize_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_max_num_f32_e32 v0, v0, v0
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_canonicalize_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_max_num_f32_e32 v0, v1, v1
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_canonicalize_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_max_num_f32_e32 v0, v0, v0
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.canonicalize.bf16(bfloat %a)
ret bfloat %op
}
@@ -33535,15 +33996,28 @@ define i1 @v_fcmp_oeq_bf16(bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fcmp_oeq_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_cmp_eq_f32_e32 vcc_lo, v0, v1
-; GFX1250-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fcmp_oeq_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, v1.l
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_f32_e32 vcc_lo, v1, v2
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fcmp_oeq_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cmp_eq_f32_e32 vcc_lo, v0, v1
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fcmp oeq bfloat %a, %b
ret i1 %op
}
@@ -33630,15 +34104,28 @@ define i1 @v_fcmp_ogt_bf16(bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fcmp_ogt_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_cmp_gt_f32_e32 vcc_lo, v0, v1
-; GFX1250-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fcmp_ogt_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, v1.l
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l
+; GFX1250TRUE16-NEXT: v_cmp_gt_f32_e32 vcc_lo, v1, v2
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fcmp_ogt_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cmp_gt_f32_e32 vcc_lo, v0, v1
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fcmp ogt bfloat %a, %b
ret i1 %op
}
@@ -33725,15 +34212,28 @@ define i1 @v_fcmp_oge_bf16(bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fcmp_oge_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_cmp_ge_f32_e32 vcc_lo, v0, v1
-; GFX1250-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fcmp_oge_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, v1.l
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l
+; GFX1250TRUE16-NEXT: v_cmp_ge_f32_e32 vcc_lo, v1, v2
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fcmp_oge_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cmp_ge_f32_e32 vcc_lo, v0, v1
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fcmp oge bfloat %a, %b
ret i1 %op
}
@@ -33820,15 +34320,28 @@ define i1 @v_fcmp_olt_bf16(bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fcmp_olt_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_cmp_lt_f32_e32 vcc_lo, v0, v1
-; GFX1250-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fcmp_olt_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, v1.l
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l
+; GFX1250TRUE16-NEXT: v_cmp_lt_f32_e32 vcc_lo, v1, v2
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fcmp_olt_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cmp_lt_f32_e32 vcc_lo, v0, v1
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fcmp olt bfloat %a, %b
ret i1 %op
}
@@ -33915,15 +34428,28 @@ define i1 @v_fcmp_ole_bf16(bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fcmp_ole_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_cmp_le_f32_e32 vcc_lo, v0, v1
-; GFX1250-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fcmp_ole_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, v1.l
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l
+; GFX1250TRUE16-NEXT: v_cmp_le_f32_e32 vcc_lo, v1, v2
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fcmp_ole_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cmp_le_f32_e32 vcc_lo, v0, v1
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fcmp ole bfloat %a, %b
ret i1 %op
}
@@ -34010,15 +34536,28 @@ define i1 @v_fcmp_one_bf16(bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fcmp_one_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_cmp_lg_f32_e32 vcc_lo, v0, v1
-; GFX1250-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fcmp_one_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, v1.l
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l
+; GFX1250TRUE16-NEXT: v_cmp_lg_f32_e32 vcc_lo, v1, v2
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fcmp_one_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cmp_lg_f32_e32 vcc_lo, v0, v1
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fcmp one bfloat %a, %b
ret i1 %op
}
@@ -34105,15 +34644,28 @@ define i1 @v_fcmp_uno_bf16(bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fcmp_uno_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_cmp_u_f32_e32 vcc_lo, v0, v1
-; GFX1250-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fcmp_uno_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, v1.l
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l
+; GFX1250TRUE16-NEXT: v_cmp_u_f32_e32 vcc_lo, v1, v2
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fcmp_uno_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cmp_u_f32_e32 vcc_lo, v0, v1
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fcmp uno bfloat %a, %b
ret i1 %op
}
@@ -34200,15 +34752,28 @@ define i1 @v_fcmp_ueq_bf16(bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fcmp_ueq_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_cmp_nlg_f32_e32 vcc_lo, v0, v1
-; GFX1250-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fcmp_ueq_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, v1.l
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l
+; GFX1250TRUE16-NEXT: v_cmp_nlg_f32_e32 vcc_lo, v1, v2
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fcmp_ueq_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cmp_nlg_f32_e32 vcc_lo, v0, v1
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fcmp ueq bfloat %a, %b
ret i1 %op
}
@@ -34295,15 +34860,28 @@ define i1 @v_fcmp_ugt_bf16(bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fcmp_ugt_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_cmp_nle_f32_e32 vcc_lo, v0, v1
-; GFX1250-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fcmp_ugt_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, v1.l
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l
+; GFX1250TRUE16-NEXT: v_cmp_nle_f32_e32 vcc_lo, v1, v2
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fcmp_ugt_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cmp_nle_f32_e32 vcc_lo, v0, v1
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fcmp ugt bfloat %a, %b
ret i1 %op
}
@@ -34390,15 +34968,28 @@ define i1 @v_fcmp_uge_bf16(bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fcmp_uge_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_cmp_nlt_f32_e32 vcc_lo, v0, v1
-; GFX1250-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fcmp_uge_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, v1.l
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l
+; GFX1250TRUE16-NEXT: v_cmp_nlt_f32_e32 vcc_lo, v1, v2
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fcmp_uge_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cmp_nlt_f32_e32 vcc_lo, v0, v1
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fcmp uge bfloat %a, %b
ret i1 %op
}
@@ -34485,15 +35076,28 @@ define i1 @v_fcmp_ult_bf16(bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fcmp_ult_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_cmp_nge_f32_e32 vcc_lo, v0, v1
-; GFX1250-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fcmp_ult_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, v1.l
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l
+; GFX1250TRUE16-NEXT: v_cmp_nge_f32_e32 vcc_lo, v1, v2
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fcmp_ult_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cmp_nge_f32_e32 vcc_lo, v0, v1
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fcmp ult bfloat %a, %b
ret i1 %op
}
@@ -34580,15 +35184,28 @@ define i1 @v_fcmp_ule_bf16(bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fcmp_ule_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_cmp_ngt_f32_e32 vcc_lo, v0, v1
-; GFX1250-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fcmp_ule_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, v1.l
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l
+; GFX1250TRUE16-NEXT: v_cmp_ngt_f32_e32 vcc_lo, v1, v2
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fcmp_ule_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cmp_ngt_f32_e32 vcc_lo, v0, v1
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fcmp ule bfloat %a, %b
ret i1 %op
}
@@ -34675,15 +35292,28 @@ define i1 @v_fcmp_une_bf16(bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fcmp_une_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_cmp_neq_f32_e32 vcc_lo, v0, v1
-; GFX1250-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fcmp_une_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, v1.l
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l
+; GFX1250TRUE16-NEXT: v_cmp_neq_f32_e32 vcc_lo, v1, v2
+; GFX1250TRUE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fcmp_une_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cmp_neq_f32_e32 vcc_lo, v0, v1
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fcmp une bfloat %a, %b
ret i1 %op
}
@@ -34790,14 +35420,24 @@ define i16 @v_fptosi_bf16_to_i16(bfloat %x) {
; GFX11FAKE16-NEXT: v_cvt_i32_f32_e32 v0, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fptosi_bf16_to_i16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_cvt_i32_f32_e32 v0, v0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fptosi_bf16_to_i16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cvt_i32_f32_e32 v0, v1
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fptosi_bf16_to_i16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cvt_i32_f32_e32 v0, v0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fptosi bfloat %x to i16
ret i16 %op
}
@@ -34899,18 +35539,31 @@ define <2 x i16> @v_fptosi_v2bf16_to_v2i16(<2 x bfloat> %x) {
; GFX11FAKE16-NEXT: v_perm_b32 v0, v0, v1, 0x5040100
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fptosi_v2bf16_to_v2i16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v1, 16, v0
-; GFX1250-NEXT: v_and_b32_e32 v0, 0xffff0000, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_cvt_i32_f32_e32 v1, v1
-; GFX1250-NEXT: v_cvt_i32_f32_e32 v0, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_perm_b32 v0, v0, v1, 0x5040100
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fptosi_v2bf16_to_v2i16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_and_b32_e32 v1, 0xffff0000, v0
+; GFX1250TRUE16-NEXT: v_lshlrev_b32_e32 v0, 16, v0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_cvt_i32_f32_e32 v1, v1
+; GFX1250TRUE16-NEXT: v_cvt_i32_f32_e32 v0, v0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v0.h, v1.l
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fptosi_v2bf16_to_v2i16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v1, 16, v0
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v0, 0xffff0000, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_cvt_i32_f32_e32 v1, v1
+; GFX1250FAKE16-NEXT: v_cvt_i32_f32_e32 v0, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_perm_b32 v0, v0, v1, 0x5040100
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fptosi <2 x bfloat> %x to <2 x i16>
ret <2 x i16> %op
}
@@ -35032,19 +35685,33 @@ define <3 x i16> @v_fptosi_v3bf16_to_v3i16(<3 x bfloat> %x) {
; GFX11FAKE16-NEXT: v_perm_b32 v0, v0, v2, 0x5040100
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fptosi_v3bf16_to_v3i16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v2, 16, v0 :: v_dual_lshlrev_b32 v1, 16, v1
-; GFX1250-NEXT: v_and_b32_e32 v0, 0xffff0000, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_3)
-; GFX1250-NEXT: v_cvt_i32_f32_e32 v2, v2
-; GFX1250-NEXT: v_cvt_i32_f32_e32 v1, v1
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_cvt_i32_f32_e32 v0, v0
-; GFX1250-NEXT: v_perm_b32 v0, v0, v2, 0x5040100
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fptosi_v3bf16_to_v3i16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_and_b32_e32 v2, 0xffff0000, v0
+; GFX1250TRUE16-NEXT: v_dual_lshlrev_b32 v0, 16, v0 :: v_dual_lshlrev_b32 v1, 16, v1
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_cvt_i32_f32_e32 v2, v2
+; GFX1250TRUE16-NEXT: v_cvt_i32_f32_e32 v0, v0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250TRUE16-NEXT: v_cvt_i32_f32_e32 v1, v1
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v0.h, v2.l
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fptosi_v3bf16_to_v3i16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v2, 16, v0 :: v_dual_lshlrev_b32 v1, 16, v1
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v0, 0xffff0000, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_cvt_i32_f32_e32 v2, v2
+; GFX1250FAKE16-NEXT: v_cvt_i32_f32_e32 v1, v1
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cvt_i32_f32_e32 v0, v0
+; GFX1250FAKE16-NEXT: v_perm_b32 v0, v0, v2, 0x5040100
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fptosi <3 x bfloat> %x to <3 x i16>
ret <3 x i16> %op
}
@@ -35198,23 +35865,41 @@ define <4 x i16> @v_fptosi_v4bf16_to_v4i16(<4 x bfloat> %x) {
; GFX11FAKE16-NEXT: v_perm_b32 v1, v1, v2, 0x5040100
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fptosi_v4bf16_to_v4i16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshlrev_b32 v2, 16, v1 :: v_dual_lshlrev_b32 v3, 16, v0
-; GFX1250-NEXT: v_and_b32_e32 v0, 0xffff0000, v0
-; GFX1250-NEXT: v_and_b32_e32 v1, 0xffff0000, v1
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_4)
-; GFX1250-NEXT: v_cvt_i32_f32_e32 v2, v2
-; GFX1250-NEXT: v_cvt_i32_f32_e32 v3, v3
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
-; GFX1250-NEXT: v_cvt_i32_f32_e32 v0, v0
-; GFX1250-NEXT: v_cvt_i32_f32_e32 v1, v1
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_perm_b32 v0, v0, v3, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v1, v1, v2, 0x5040100
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fptosi_v4bf16_to_v4i16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_and_b32_e32 v2, 0xffff0000, v0
+; GFX1250TRUE16-NEXT: v_and_b32_e32 v3, 0xffff0000, v1
+; GFX1250TRUE16-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250TRUE16-NEXT: v_cvt_i32_f32_e32 v2, v2
+; GFX1250TRUE16-NEXT: v_cvt_i32_f32_e32 v3, v3
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_4)
+; GFX1250TRUE16-NEXT: v_cvt_i32_f32_e32 v1, v1
+; GFX1250TRUE16-NEXT: v_cvt_i32_f32_e32 v0, v0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v0.h, v2.l
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v3.l
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fptosi_v4bf16_to_v4i16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshlrev_b32 v2, 16, v1 :: v_dual_lshlrev_b32 v3, 16, v0
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v0, 0xffff0000, v0
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v1, 0xffff0000, v1
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_4)
+; GFX1250FAKE16-NEXT: v_cvt_i32_f32_e32 v2, v2
+; GFX1250FAKE16-NEXT: v_cvt_i32_f32_e32 v3, v3
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
+; GFX1250FAKE16-NEXT: v_cvt_i32_f32_e32 v0, v0
+; GFX1250FAKE16-NEXT: v_cvt_i32_f32_e32 v1, v1
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_perm_b32 v0, v0, v3, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v1, v1, v2, 0x5040100
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fptosi <4 x bfloat> %x to <4 x i16>
ret <4 x i16> %op
}
@@ -35274,14 +35959,24 @@ define i32 @v_fptosi_bf16_to_i32(bfloat %x) {
; GFX11FAKE16-NEXT: v_cvt_i32_f32_e32 v0, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fptosi_bf16_to_i32:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_cvt_i32_f32_e32 v0, v0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fptosi_bf16_to_i32:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cvt_i32_f32_e32 v0, v1
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fptosi_bf16_to_i32:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cvt_i32_f32_e32 v0, v0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fptosi bfloat %x to i32
ret i32 %op
}
@@ -35729,26 +36424,48 @@ define i64 @v_fptosi_bf16_to_i64(bfloat %x) {
; GFX11FAKE16-NEXT: v_sub_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fptosi_bf16_to_i64:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshlrev_b32_e32 v0, 16, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_trunc_f32_e32 v0, v0
-; GFX1250-NEXT: v_mul_f32_e64 v1, 0x2f800000, |v0|
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_floor_f32_e32 v1, v1
-; GFX1250-NEXT: v_fma_f32 v2, 0xcf800000, v1, |v0|
-; GFX1250-NEXT: v_ashrrev_i32_e32 v0, 31, v0
-; GFX1250-NEXT: v_cvt_u32_f32_e32 v3, v1
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_cvt_u32_f32_e32 v2, v2
-; GFX1250-NEXT: v_dual_mov_b32 v1, v0 :: v_dual_bitop2_b32 v3, v3, v0 bitop3:0x14
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_xor_b32_e32 v2, v2, v0
-; GFX1250-NEXT: v_sub_nc_u64_e32 v[0:1], v[2:3], v[0:1]
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fptosi_bf16_to_i64:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_trunc_f32_e32 v0, v1
+; GFX1250TRUE16-NEXT: v_mul_f32_e64 v1, 0x2f800000, |v0|
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_floor_f32_e32 v1, v1
+; GFX1250TRUE16-NEXT: v_fma_f32 v2, 0xcf800000, v1, |v0|
+; GFX1250TRUE16-NEXT: v_ashrrev_i32_e32 v0, 31, v0
+; GFX1250TRUE16-NEXT: v_cvt_u32_f32_e32 v3, v1
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_cvt_u32_f32_e32 v2, v2
+; GFX1250TRUE16-NEXT: v_dual_mov_b32 v1, v0 :: v_dual_bitop2_b32 v3, v3, v0 bitop3:0x14
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_xor_b32_e32 v2, v2, v0
+; GFX1250TRUE16-NEXT: v_sub_nc_u64_e32 v[0:1], v[2:3], v[0:1]
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fptosi_bf16_to_i64:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshlrev_b32_e32 v0, 16, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_trunc_f32_e32 v0, v0
+; GFX1250FAKE16-NEXT: v_mul_f32_e64 v1, 0x2f800000, |v0|
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_floor_f32_e32 v1, v1
+; GFX1250FAKE16-NEXT: v_fma_f32 v2, 0xcf800000, v1, |v0|
+; GFX1250FAKE16-NEXT: v_ashrrev_i32_e32 v0, 31, v0
+; GFX1250FAKE16-NEXT: v_cvt_u32_f32_e32 v3, v1
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_cvt_u32_f32_e32 v2, v2
+; GFX1250FAKE16-NEXT: v_dual_mov_b32 v1, v0 :: v_dual_bitop2_b32 v3, v3, v0 bitop3:0x14
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_xor_b32_e32 v2, v2, v0
+; GFX1250FAKE16-NEXT: v_sub_nc_u64_e32 v[0:1], v[2:3], v[0:1]
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = fptosi bfloat %x to i64
ret i64 %op
}
@@ -37293,22 +38010,39 @@ define <3 x bfloat> @v_sitofp_v3i16_to_v3bf16(<3 x i16> %x) {
; GFX11FAKE16-NEXT: v_alignbit_b32 v1, s0, v1, 16
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_sitofp_v3i16_to_v3bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_ashrrev_i32_e32 v2, 16, v0
-; GFX1250-NEXT: v_bfe_i32 v0, v0, 0, 16
-; GFX1250-NEXT: v_bfe_i32 v1, v1, 0, 16
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
-; GFX1250-NEXT: v_cvt_f32_i32_e32 v2, v2
-; GFX1250-NEXT: v_cvt_f32_i32_e32 v0, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_cvt_f32_i32_e32 v1, v1
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, v2
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2)
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v1, v1, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_sitofp_v3i16_to_v3bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_bfe_i32 v1, v1, 0, 16
+; GFX1250TRUE16-NEXT: v_ashrrev_i32_e32 v2, 16, v0
+; GFX1250TRUE16-NEXT: v_bfe_i32 v0, v0, 0, 16
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250TRUE16-NEXT: v_cvt_f32_i32_e32 v1, v1
+; GFX1250TRUE16-NEXT: v_cvt_f32_i32_e32 v2, v2
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250TRUE16-NEXT: v_cvt_f32_i32_e32 v0, v0
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v1, v1, s0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, v2
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_sitofp_v3i16_to_v3bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_ashrrev_i32_e32 v2, 16, v0
+; GFX1250FAKE16-NEXT: v_bfe_i32 v0, v0, 0, 16
+; GFX1250FAKE16-NEXT: v_bfe_i32 v1, v1, 0, 16
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_cvt_f32_i32_e32 v2, v2
+; GFX1250FAKE16-NEXT: v_cvt_f32_i32_e32 v0, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_cvt_f32_i32_e32 v1, v1
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, v2
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v1, v1, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = sitofp <3 x i16> %x to <3 x bfloat>
ret <3 x bfloat> %op
}
@@ -37972,17 +38706,31 @@ define <3 x bfloat> @v_sitofp_v3i32_to_v3bf16(<3 x i32> %x) {
; GFX11FAKE16-NEXT: v_alignbit_b32 v1, s0, v2, 16
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_sitofp_v3i32_to_v3bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_cvt_f32_i32_e32 v1, v1
-; GFX1250-NEXT: v_cvt_f32_i32_e32 v0, v0
-; GFX1250-NEXT: v_cvt_f32_i32_e32 v2, v2
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, v1
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v1, v2, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_sitofp_v3i32_to_v3bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_cvt_f32_i32_e32 v2, v2
+; GFX1250TRUE16-NEXT: v_cvt_f32_i32_e32 v1, v1
+; GFX1250TRUE16-NEXT: v_cvt_f32_i32_e32 v0, v0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v2, v2, s0
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, v1
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_sitofp_v3i32_to_v3bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_cvt_f32_i32_e32 v1, v1
+; GFX1250FAKE16-NEXT: v_cvt_f32_i32_e32 v0, v0
+; GFX1250FAKE16-NEXT: v_cvt_f32_i32_e32 v2, v2
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, v1
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v1, v2, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = sitofp <3 x i32> %x to <3 x bfloat>
ret <3 x bfloat> %op
}
@@ -39232,52 +39980,101 @@ define <3 x bfloat> @v_sitofp_v3i64_to_v3bf16(<3 x i64> %x) {
; GFX11FAKE16-NEXT: v_alignbit_b32 v1, s0, v1, 16
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_sitofp_v3i64_to_v3bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_xor_b32_e32 v8, v4, v5
-; GFX1250-NEXT: v_xor_b32_e32 v6, v2, v3
-; GFX1250-NEXT: v_cls_i32_e32 v10, v3
-; GFX1250-NEXT: v_cls_i32_e32 v9, v5
-; GFX1250-NEXT: v_cls_i32_e32 v11, v1
-; GFX1250-NEXT: v_dual_ashrrev_i32 v8, 31, v8 :: v_dual_bitop2_b32 v7, v0, v1 bitop3:0x14
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_dual_ashrrev_i32 v6, 31, v6 :: v_dual_ashrrev_i32 v7, 31, v7
-; GFX1250-NEXT: v_dual_add_nc_u32 v6, 32, v6 :: v_dual_add_nc_u32 v7, 32, v7
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_add_min_u32_e64 v6, v10, -1, v6
-; GFX1250-NEXT: v_add_min_u32_e64 v7, v11, -1, v7
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_lshlrev_b64_e32 v[2:3], v6, v[2:3]
-; GFX1250-NEXT: v_lshlrev_b64_e32 v[0:1], v7, v[0:1]
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
-; GFX1250-NEXT: v_min_u32_e32 v2, 1, v2
-; GFX1250-NEXT: v_add_nc_u32_e32 v8, 32, v8
-; GFX1250-NEXT: v_min_u32_e32 v0, 1, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
-; GFX1250-NEXT: v_or_b32_e32 v2, v3, v2
-; GFX1250-NEXT: v_add_min_u32_e64 v8, v9, -1, v8
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
-; GFX1250-NEXT: v_dual_sub_nc_u32 v3, 32, v6 :: v_dual_bitop2_b32 v0, v1, v0 bitop3:0x54
-; GFX1250-NEXT: v_cvt_f32_i32_e32 v2, v2
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)
-; GFX1250-NEXT: v_lshlrev_b64_e32 v[4:5], v8, v[4:5]
-; GFX1250-NEXT: v_sub_nc_u32_e32 v8, 32, v8
-; GFX1250-NEXT: v_ldexp_f32 v2, v2, v3
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_min_u32_e32 v4, 1, v4
-; GFX1250-NEXT: v_dual_sub_nc_u32 v4, 32, v7 :: v_dual_bitop2_b32 v1, v5, v4 bitop3:0x54
-; GFX1250-NEXT: v_cvt_f32_i32_e32 v0, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_cvt_f32_i32_e32 v1, v1
-; GFX1250-NEXT: v_ldexp_f32 v0, v0, v4
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_ldexp_f32 v1, v1, v8
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, v2
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2)
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v1, v1, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_sitofp_v3i64_to_v3bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_xor_b32_e32 v7, v2, v3
+; GFX1250TRUE16-NEXT: v_xor_b32_e32 v6, v4, v5
+; GFX1250TRUE16-NEXT: v_cls_i32_e32 v10, v3
+; GFX1250TRUE16-NEXT: v_cls_i32_e32 v9, v5
+; GFX1250TRUE16-NEXT: v_cls_i32_e32 v11, v1
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_dual_ashrrev_i32 v7, 31, v7 :: v_dual_ashrrev_i32 v6, 31, v6
+; GFX1250TRUE16-NEXT: v_xor_b32_e32 v8, v0, v1
+; GFX1250TRUE16-NEXT: v_dual_add_nc_u32 v7, 32, v7 :: v_dual_add_nc_u32 v6, 32, v6
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_ashrrev_i32_e32 v8, 31, v8
+; GFX1250TRUE16-NEXT: v_add_min_u32_e64 v7, v10, -1, v7
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_add_min_u32_e64 v6, v9, -1, v6
+; GFX1250TRUE16-NEXT: v_lshlrev_b64_e32 v[2:3], v7, v[2:3]
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_lshlrev_b64_e32 v[4:5], v6, v[4:5]
+; GFX1250TRUE16-NEXT: v_min_u32_e32 v2, 1, v2
+; GFX1250TRUE16-NEXT: v_add_nc_u32_e32 v8, 32, v8
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250TRUE16-NEXT: v_min_u32_e32 v4, 1, v4
+; GFX1250TRUE16-NEXT: v_or_b32_e32 v2, v3, v2
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250TRUE16-NEXT: v_add_min_u32_e64 v8, v11, -1, v8
+; GFX1250TRUE16-NEXT: v_dual_sub_nc_u32 v3, 32, v6 :: v_dual_bitop2_b32 v4, v5, v4 bitop3:0x54
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250TRUE16-NEXT: v_cvt_f32_i32_e32 v2, v2
+; GFX1250TRUE16-NEXT: v_lshlrev_b64_e32 v[0:1], v8, v[0:1]
+; GFX1250TRUE16-NEXT: v_sub_nc_u32_e32 v5, 32, v8
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_min_u32_e32 v0, 1, v0
+; GFX1250TRUE16-NEXT: v_or_b32_e32 v0, v1, v0
+; GFX1250TRUE16-NEXT: v_cvt_f32_i32_e32 v1, v4
+; GFX1250TRUE16-NEXT: v_sub_nc_u32_e32 v4, 32, v7
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250TRUE16-NEXT: v_cvt_f32_i32_e32 v0, v0
+; GFX1250TRUE16-NEXT: v_ldexp_f32 v1, v1, v3
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250TRUE16-NEXT: v_ldexp_f32 v2, v2, v4
+; GFX1250TRUE16-NEXT: v_ldexp_f32 v0, v0, v5
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v1, v1, s0
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, v2
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_sitofp_v3i64_to_v3bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_xor_b32_e32 v8, v4, v5
+; GFX1250FAKE16-NEXT: v_xor_b32_e32 v6, v2, v3
+; GFX1250FAKE16-NEXT: v_cls_i32_e32 v10, v3
+; GFX1250FAKE16-NEXT: v_cls_i32_e32 v9, v5
+; GFX1250FAKE16-NEXT: v_cls_i32_e32 v11, v1
+; GFX1250FAKE16-NEXT: v_dual_ashrrev_i32 v8, 31, v8 :: v_dual_bitop2_b32 v7, v0, v1 bitop3:0x14
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_dual_ashrrev_i32 v6, 31, v6 :: v_dual_ashrrev_i32 v7, 31, v7
+; GFX1250FAKE16-NEXT: v_dual_add_nc_u32 v6, 32, v6 :: v_dual_add_nc_u32 v7, 32, v7
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_add_min_u32_e64 v6, v10, -1, v6
+; GFX1250FAKE16-NEXT: v_add_min_u32_e64 v7, v11, -1, v7
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_lshlrev_b64_e32 v[2:3], v6, v[2:3]
+; GFX1250FAKE16-NEXT: v_lshlrev_b64_e32 v[0:1], v7, v[0:1]
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_min_u32_e32 v2, 1, v2
+; GFX1250FAKE16-NEXT: v_add_nc_u32_e32 v8, 32, v8
+; GFX1250FAKE16-NEXT: v_min_u32_e32 v0, 1, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_or_b32_e32 v2, v3, v2
+; GFX1250FAKE16-NEXT: v_add_min_u32_e64 v8, v9, -1, v8
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_dual_sub_nc_u32 v3, 32, v6 :: v_dual_bitop2_b32 v0, v1, v0 bitop3:0x54
+; GFX1250FAKE16-NEXT: v_cvt_f32_i32_e32 v2, v2
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_lshlrev_b64_e32 v[4:5], v8, v[4:5]
+; GFX1250FAKE16-NEXT: v_sub_nc_u32_e32 v8, 32, v8
+; GFX1250FAKE16-NEXT: v_ldexp_f32 v2, v2, v3
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_min_u32_e32 v4, 1, v4
+; GFX1250FAKE16-NEXT: v_dual_sub_nc_u32 v4, 32, v7 :: v_dual_bitop2_b32 v1, v5, v4 bitop3:0x54
+; GFX1250FAKE16-NEXT: v_cvt_f32_i32_e32 v0, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_cvt_f32_i32_e32 v1, v1
+; GFX1250FAKE16-NEXT: v_ldexp_f32 v0, v0, v4
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_ldexp_f32 v1, v1, v8
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, v2
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v1, v1, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = sitofp <3 x i64> %x to <3 x bfloat>
ret <3 x bfloat> %op
}
@@ -40015,15 +40812,26 @@ define bfloat @v_uitofp_i16_to_bf16(i16 %x) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_uitofp_i16_to_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_and_b32_e32 v0, 0xffff, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_cvt_f32_u32_e32 v0, v0
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_uitofp_i16_to_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cvt_f32_u32_e32 v0, v1
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_uitofp_i16_to_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v0, 0xffff, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cvt_f32_u32_e32 v0, v0
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = uitofp i16 %x to bfloat
ret bfloat %op
}
@@ -40167,18 +40975,32 @@ define <2 x bfloat> @v_uitofp_v2i16_to_v2bf16(<2 x i16> %x) {
; GFX11FAKE16-NEXT: v_perm_b32 v0, v0, v1, 0x7060302
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_uitofp_v2i16_to_v2bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshrrev_b32_e32 v1, 16, v0
-; GFX1250-NEXT: v_and_b32_e32 v0, 0xffff, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_cvt_f32_u32_e32 v1, v1
-; GFX1250-NEXT: v_cvt_f32_u32_e32 v0, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, v1
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_uitofp_v2i16_to_v2bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, 0
+; GFX1250TRUE16-NEXT: v_and_b32_e32 v2, 0xffff, v0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v0.h
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_cvt_f32_u32_e32 v0, v2
+; GFX1250TRUE16-NEXT: v_cvt_f32_u32_e32 v1, v1
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, v1
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_uitofp_v2i16_to_v2bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v0
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v0, 0xffff, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_cvt_f32_u32_e32 v1, v1
+; GFX1250FAKE16-NEXT: v_cvt_f32_u32_e32 v0, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, v1
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = uitofp <2 x i16> %x to <2 x bfloat>
ret <2 x bfloat> %op
}
@@ -40373,22 +41195,41 @@ define <3 x bfloat> @v_uitofp_v3i16_to_v3bf16(<3 x i16> %x) {
; GFX11FAKE16-NEXT: v_alignbit_b32 v1, s0, v1, 16
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_uitofp_v3i16_to_v3bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_lshrrev_b32_e32 v2, 16, v0
-; GFX1250-NEXT: v_and_b32_e32 v0, 0xffff, v0
-; GFX1250-NEXT: v_and_b32_e32 v1, 0xffff, v1
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
-; GFX1250-NEXT: v_cvt_f32_u32_e32 v2, v2
-; GFX1250-NEXT: v_cvt_f32_u32_e32 v0, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_cvt_f32_u32_e32 v1, v1
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, v2
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2)
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v1, v1, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_uitofp_v3i16_to_v3bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_and_b32_e32 v1, 0xffff, v1
+; GFX1250TRUE16-NEXT: v_and_b32_e32 v2, 0xffff, v0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v3.h, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v3.l, v0.h
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
+; GFX1250TRUE16-NEXT: v_cvt_f32_u32_e32 v0, v1
+; GFX1250TRUE16-NEXT: v_cvt_f32_u32_e32 v1, v2
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250TRUE16-NEXT: v_cvt_f32_u32_e32 v2, v3
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v3, v0, s0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v1, v2
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v3.l
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_uitofp_v3i16_to_v3bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshrrev_b32_e32 v2, 16, v0
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v0, 0xffff, v0
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v1, 0xffff, v1
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_cvt_f32_u32_e32 v2, v2
+; GFX1250FAKE16-NEXT: v_cvt_f32_u32_e32 v0, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_cvt_f32_u32_e32 v1, v1
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, v2
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v1, v1, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = uitofp <3 x i16> %x to <3 x bfloat>
ret <3 x bfloat> %op
}
@@ -40626,23 +41467,43 @@ define <4 x bfloat> @v_uitofp_v4i16_to_v4bf16(<4 x i16> %x) {
; GFX11FAKE16-NEXT: v_perm_b32 v1, v1, v2, 0x7060302
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_uitofp_v4i16_to_v4bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshrrev_b32 v2, 16, v1 :: v_dual_lshrrev_b32 v3, 16, v0
-; GFX1250-NEXT: v_and_b32_e32 v0, 0xffff, v0
-; GFX1250-NEXT: v_and_b32_e32 v1, 0xffff, v1
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_4)
-; GFX1250-NEXT: v_cvt_f32_u32_e32 v2, v2
-; GFX1250-NEXT: v_cvt_f32_u32_e32 v3, v3
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
-; GFX1250-NEXT: v_cvt_f32_u32_e32 v0, v0
-; GFX1250-NEXT: v_cvt_f32_u32_e32 v1, v1
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, v3
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v1, v1, v2
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_uitofp_v4i16_to_v4bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.h, 0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, v1.h
+; GFX1250TRUE16-NEXT: v_and_b32_e32 v3, 0xffff, v0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_4)
+; GFX1250TRUE16-NEXT: v_cvt_f32_u32_e32 v4, v2
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v2.l, v0.h
+; GFX1250TRUE16-NEXT: v_and_b32_e32 v0, 0xffff, v1
+; GFX1250TRUE16-NEXT: v_cvt_f32_u32_e32 v1, v3
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250TRUE16-NEXT: v_cvt_f32_u32_e32 v2, v2
+; GFX1250TRUE16-NEXT: v_cvt_f32_u32_e32 v3, v0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v1, v2
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v1, v3, v4
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_uitofp_v4i16_to_v4bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v2, 16, v1 :: v_dual_lshrrev_b32 v3, 16, v0
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v0, 0xffff, v0
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v1, 0xffff, v1
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_4)
+; GFX1250FAKE16-NEXT: v_cvt_f32_u32_e32 v2, v2
+; GFX1250FAKE16-NEXT: v_cvt_f32_u32_e32 v3, v3
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
+; GFX1250FAKE16-NEXT: v_cvt_f32_u32_e32 v0, v0
+; GFX1250FAKE16-NEXT: v_cvt_f32_u32_e32 v1, v1
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, v3
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v1, v1, v2
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = uitofp <4 x i16> %x to <4 x bfloat>
ret <4 x bfloat> %op
}
@@ -41058,17 +41919,31 @@ define <3 x bfloat> @v_uitofp_v3i32_to_v3bf16(<3 x i32> %x) {
; GFX11FAKE16-NEXT: v_alignbit_b32 v1, s0, v2, 16
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_uitofp_v3i32_to_v3bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_cvt_f32_u32_e32 v1, v1
-; GFX1250-NEXT: v_cvt_f32_u32_e32 v0, v0
-; GFX1250-NEXT: v_cvt_f32_u32_e32 v2, v2
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, v1
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v1, v2, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_uitofp_v3i32_to_v3bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_cvt_f32_u32_e32 v2, v2
+; GFX1250TRUE16-NEXT: v_cvt_f32_u32_e32 v1, v1
+; GFX1250TRUE16-NEXT: v_cvt_f32_u32_e32 v0, v0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v2, v2, s0
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, v1
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_uitofp_v3i32_to_v3bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_cvt_f32_u32_e32 v1, v1
+; GFX1250FAKE16-NEXT: v_cvt_f32_u32_e32 v0, v0
+; GFX1250FAKE16-NEXT: v_cvt_f32_u32_e32 v2, v2
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, v1
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v1, v2, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = uitofp <3 x i32> %x to <3 x bfloat>
ret <3 x bfloat> %op
}
@@ -42105,44 +42980,84 @@ define <3 x bfloat> @v_uitofp_v3i64_to_v3bf16(<3 x i64> %x) {
; GFX11FAKE16-NEXT: v_alignbit_b32 v1, s0, v1, 16
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_uitofp_v3i64_to_v3bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_clz_i32_u32_e32 v6, v3
-; GFX1250-NEXT: v_clz_i32_u32_e32 v7, v1
-; GFX1250-NEXT: v_clz_i32_u32_e32 v8, v5
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
-; GFX1250-NEXT: v_min_u32_e32 v6, 32, v6
-; GFX1250-NEXT: v_min_u32_e32 v7, 32, v7
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
-; GFX1250-NEXT: v_min_u32_e32 v8, 32, v8
-; GFX1250-NEXT: v_lshlrev_b64_e32 v[2:3], v6, v[2:3]
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
-; GFX1250-NEXT: v_lshlrev_b64_e32 v[0:1], v7, v[0:1]
-; GFX1250-NEXT: v_lshlrev_b64_e32 v[4:5], v8, v[4:5]
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
-; GFX1250-NEXT: v_min_u32_e32 v2, 1, v2
-; GFX1250-NEXT: v_min_u32_e32 v0, 1, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
-; GFX1250-NEXT: v_min_u32_e32 v4, 1, v4
-; GFX1250-NEXT: v_dual_sub_nc_u32 v8, 32, v8 :: v_dual_bitop2_b32 v2, v3, v2 bitop3:0x54
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
-; GFX1250-NEXT: v_dual_sub_nc_u32 v3, 32, v6 :: v_dual_bitop2_b32 v0, v1, v0 bitop3:0x54
-; GFX1250-NEXT: v_dual_sub_nc_u32 v4, 32, v7 :: v_dual_bitop2_b32 v1, v5, v4 bitop3:0x54
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
-; GFX1250-NEXT: v_cvt_f32_u32_e32 v2, v2
-; GFX1250-NEXT: v_cvt_f32_u32_e32 v0, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
-; GFX1250-NEXT: v_cvt_f32_u32_e32 v1, v1
-; GFX1250-NEXT: v_ldexp_f32 v2, v2, v3
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
-; GFX1250-NEXT: v_ldexp_f32 v0, v0, v4
-; GFX1250-NEXT: v_ldexp_f32 v1, v1, v8
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v0, v0, v2
-; GFX1250-NEXT: v_cvt_pk_bf16_f32 v1, v1, s0
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_uitofp_v3i64_to_v3bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_clz_i32_u32_e32 v6, v5
+; GFX1250TRUE16-NEXT: v_clz_i32_u32_e32 v7, v3
+; GFX1250TRUE16-NEXT: v_clz_i32_u32_e32 v8, v1
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250TRUE16-NEXT: v_min_u32_e32 v6, 32, v6
+; GFX1250TRUE16-NEXT: v_min_u32_e32 v7, 32, v7
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250TRUE16-NEXT: v_min_u32_e32 v8, 32, v8
+; GFX1250TRUE16-NEXT: v_lshlrev_b64_e32 v[4:5], v6, v[4:5]
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250TRUE16-NEXT: v_lshlrev_b64_e32 v[2:3], v7, v[2:3]
+; GFX1250TRUE16-NEXT: v_lshlrev_b64_e32 v[0:1], v8, v[0:1]
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250TRUE16-NEXT: v_min_u32_e32 v4, 1, v4
+; GFX1250TRUE16-NEXT: v_min_u32_e32 v2, 1, v2
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250TRUE16-NEXT: v_min_u32_e32 v0, 1, v0
+; GFX1250TRUE16-NEXT: v_or_b32_e32 v4, v5, v4
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250TRUE16-NEXT: v_or_b32_e32 v2, v3, v2
+; GFX1250TRUE16-NEXT: v_dual_sub_nc_u32 v3, 32, v6 :: v_dual_bitop2_b32 v0, v1, v0 bitop3:0x54
+; GFX1250TRUE16-NEXT: v_sub_nc_u32_e32 v5, 32, v8
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_3) | instid1(VALU_DEP_4)
+; GFX1250TRUE16-NEXT: v_cvt_f32_u32_e32 v1, v4
+; GFX1250TRUE16-NEXT: v_sub_nc_u32_e32 v4, 32, v7
+; GFX1250TRUE16-NEXT: v_cvt_f32_u32_e32 v2, v2
+; GFX1250TRUE16-NEXT: v_cvt_f32_u32_e32 v0, v0
+; GFX1250TRUE16-NEXT: v_ldexp_f32 v1, v1, v3
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250TRUE16-NEXT: v_ldexp_f32 v2, v2, v4
+; GFX1250TRUE16-NEXT: v_ldexp_f32 v0, v0, v5
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v1, v1, s0
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, v2
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_uitofp_v3i64_to_v3bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_clz_i32_u32_e32 v6, v3
+; GFX1250FAKE16-NEXT: v_clz_i32_u32_e32 v7, v1
+; GFX1250FAKE16-NEXT: v_clz_i32_u32_e32 v8, v5
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_min_u32_e32 v6, 32, v6
+; GFX1250FAKE16-NEXT: v_min_u32_e32 v7, 32, v7
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_min_u32_e32 v8, 32, v8
+; GFX1250FAKE16-NEXT: v_lshlrev_b64_e32 v[2:3], v6, v[2:3]
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_lshlrev_b64_e32 v[0:1], v7, v[0:1]
+; GFX1250FAKE16-NEXT: v_lshlrev_b64_e32 v[4:5], v8, v[4:5]
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_min_u32_e32 v2, 1, v2
+; GFX1250FAKE16-NEXT: v_min_u32_e32 v0, 1, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_min_u32_e32 v4, 1, v4
+; GFX1250FAKE16-NEXT: v_dual_sub_nc_u32 v8, 32, v8 :: v_dual_bitop2_b32 v2, v3, v2 bitop3:0x54
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_dual_sub_nc_u32 v3, 32, v6 :: v_dual_bitop2_b32 v0, v1, v0 bitop3:0x54
+; GFX1250FAKE16-NEXT: v_dual_sub_nc_u32 v4, 32, v7 :: v_dual_bitop2_b32 v1, v5, v4 bitop3:0x54
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_cvt_f32_u32_e32 v2, v2
+; GFX1250FAKE16-NEXT: v_cvt_f32_u32_e32 v0, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_cvt_f32_u32_e32 v1, v1
+; GFX1250FAKE16-NEXT: v_ldexp_f32 v2, v2, v3
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_ldexp_f32 v0, v0, v4
+; GFX1250FAKE16-NEXT: v_ldexp_f32 v1, v1, v8
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, v2
+; GFX1250FAKE16-NEXT: v_cvt_pk_bf16_f32 v1, v1, s0
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = uitofp <3 x i64> %x to <3 x bfloat>
ret <3 x bfloat> %op
}
@@ -42717,15 +43632,25 @@ define bfloat @v_select_bf16(i1 %cond, bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_cndmask_b32_e32 v0, v2, v1, vcc_lo
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_select_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_and_b32_e32 v0, 1, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
-; GFX1250-NEXT: v_cndmask_b32_e32 v0, v2, v1, vcc_lo
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_select_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_and_b32_e32 v0, 1, v0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v0.l, v2.l, v1.l, vcc_lo
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_select_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v0, 1, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v0, v2, v1, vcc_lo
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = select i1 %cond, bfloat %a, bfloat %b
ret bfloat %op
}
@@ -42810,16 +43735,27 @@ define bfloat @v_select_fneg_lhs_bf16(i1 %cond, bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_cndmask_b32_e32 v0, v2, v1, vcc_lo
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_select_fneg_lhs_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_and_b32_e32 v0, 1, v0
-; GFX1250-NEXT: v_xor_b32_e32 v1, 0x8000, v1
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
-; GFX1250-NEXT: v_cndmask_b32_e32 v0, v2, v1, vcc_lo
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_select_fneg_lhs_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_and_b32_e32 v0, 1, v0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
+; GFX1250TRUE16-NEXT: v_xor_b16 v0.l, 0x8000, v1.l
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v0.l, v2.l, v0.l, vcc_lo
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_select_fneg_lhs_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v0, 1, v0
+; GFX1250FAKE16-NEXT: v_xor_b32_e32 v1, 0x8000, v1
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v0, v2, v1, vcc_lo
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%neg.a = fneg bfloat %a
%op = select i1 %cond, bfloat %neg.a, bfloat %b
ret bfloat %op
@@ -42905,16 +43841,27 @@ define bfloat @v_select_fneg_rhs_bf16(i1 %cond, bfloat %a, bfloat %b) {
; GFX11FAKE16-NEXT: v_cndmask_b32_e32 v0, v2, v1, vcc_lo
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_select_fneg_rhs_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_and_b32_e32 v0, 1, v0
-; GFX1250-NEXT: v_xor_b32_e32 v2, 0x8000, v2
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
-; GFX1250-NEXT: v_cndmask_b32_e32 v0, v2, v1, vcc_lo
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_select_fneg_rhs_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_and_b32_e32 v0, 1, v0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
+; GFX1250TRUE16-NEXT: v_xor_b16 v0.l, 0x8000, v2.l
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v0.l, v0.l, v1.l, vcc_lo
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_select_fneg_rhs_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v0, 1, v0
+; GFX1250FAKE16-NEXT: v_xor_b32_e32 v2, 0x8000, v2
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v0, v2, v1, vcc_lo
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%neg.b = fneg bfloat %b
%op = select i1 %cond, bfloat %a, bfloat %neg.b
ret bfloat %op
@@ -43025,18 +43972,29 @@ define <2 x bfloat> @v_select_v2bf16(i1 %cond, <2 x bfloat> %a, <2 x bfloat> %b)
; GFX11FAKE16-NEXT: v_perm_b32 v0, v1, v0, 0x5040100
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_select_v2bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshrrev_b32 v3, 16, v1 :: v_dual_bitop2_b32 v0, 1, v0 bitop3:0x40
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
-; GFX1250-NEXT: v_dual_lshrrev_b32 v4, 16, v2 :: v_dual_cndmask_b32 v0, v2, v1, vcc_lo
-; GFX1250-NEXT: v_cndmask_b32_e32 v1, v4, v3, vcc_lo
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_perm_b32 v0, v1, v0, 0x5040100
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_select_v2bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_and_b32_e32 v0, 1, v0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v0.l, v2.l, v1.l, vcc_lo
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v0.h, v2.h, v1.h, vcc_lo
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_select_v2bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v3, 16, v1 :: v_dual_bitop2_b32 v0, 1, v0 bitop3:0x40
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v4, 16, v2 :: v_dual_cndmask_b32 v0, v2, v1, vcc_lo
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v1, v4, v3, vcc_lo
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_perm_b32 v0, v1, v0, 0x5040100
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = select i1 %cond, <2 x bfloat> %a, <2 x bfloat> %b
ret <2 x bfloat> %op
}
@@ -43155,20 +44113,34 @@ define <2 x bfloat> @v_vselect_v2bf16(<2 x i1> %cond, <2 x bfloat> %a, <2 x bflo
; GFX11FAKE16-NEXT: v_perm_b32 v0, v1, v0, 0x5040100
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_vselect_v2bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_dual_lshrrev_b32 v4, 16, v2 :: v_dual_bitop2_b32 v0, 1, v0 bitop3:0x40
-; GFX1250-NEXT: v_dual_lshrrev_b32 v5, 16, v3 :: v_dual_bitop2_b32 v1, 1, v1 bitop3:0x40
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
-; GFX1250-NEXT: v_cndmask_b32_e32 v0, v3, v2, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v1
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_cndmask_b32_e32 v1, v5, v4, vcc_lo
-; GFX1250-NEXT: v_perm_b32 v0, v1, v0, 0x5040100
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_vselect_v2bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_and_b16 v0.l, 1, v0.l
+; GFX1250TRUE16-NEXT: v_and_b16 v0.h, 1, v1.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e32 vcc_lo, 1, v0.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s0, 1, v0.h
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v0.l, v3.l, v2.l, vcc_lo
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v0.h, v3.h, v2.h, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_vselect_v2bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v4, 16, v2 :: v_dual_bitop2_b32 v0, 1, v0 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v5, 16, v3 :: v_dual_bitop2_b32 v1, 1, v1 bitop3:0x40
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v0, v3, v2, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v1
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v1, v5, v4, vcc_lo
+; GFX1250FAKE16-NEXT: v_perm_b32 v0, v1, v0, 0x5040100
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = select <2 x i1> %cond, <2 x bfloat> %a, <2 x bfloat> %b
ret <2 x bfloat> %op
}
@@ -43256,16 +44228,26 @@ define amdgpu_ps i32 @s_select_bf16(bfloat inreg %a, bfloat inreg %b, i32 %c) {
; GFX11FAKE16-NEXT: v_readfirstlane_b32 s0, v0
; GFX11FAKE16-NEXT: ; return to shader part epilog
;
-; GFX1250-LABEL: s_select_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: v_mov_b32_e32 v1, s0
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_cndmask_b32_e32 v0, s1, v1, vcc_lo
-; GFX1250-NEXT: v_and_b32_e32 v0, 0xffff, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_readfirstlane_b32 s0, v0
-; GFX1250-NEXT: ; return to shader part epilog
+; GFX1250TRUE16-LABEL: s_select_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, s0
+; GFX1250TRUE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v0.h, 0
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v0.l, s1, v1.l, vcc_lo
+; GFX1250TRUE16-NEXT: v_readfirstlane_b32 s0, v0
+; GFX1250TRUE16-NEXT: ; return to shader part epilog
+;
+; GFX1250FAKE16-LABEL: s_select_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: v_mov_b32_e32 v1, s0
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v0, s1, v1, vcc_lo
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v0, 0xffff, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_readfirstlane_b32 s0, v0
+; GFX1250FAKE16-NEXT: ; return to shader part epilog
%cond = icmp eq i32 %c, 0
%op = select i1 %cond, bfloat %a, bfloat %b
%cast = bitcast bfloat %op to i16
@@ -43402,20 +44384,34 @@ define amdgpu_ps i32 @s_select_v2bf16(<2 x bfloat> inreg %a, <2 x bfloat> inreg
; GFX11FAKE16-NEXT: v_readfirstlane_b32 s0, v0
; GFX11FAKE16-NEXT: ; return to shader part epilog
;
-; GFX1250-LABEL: s_select_v2bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_lshr_b32 s2, s0, 16
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0
-; GFX1250-NEXT: v_dual_mov_b32 v1, s2 :: v_dual_mov_b32 v2, s0
-; GFX1250-NEXT: s_lshr_b32 s3, s1, 16
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)
-; GFX1250-NEXT: v_cndmask_b32_e32 v0, s3, v1, vcc_lo
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_cndmask_b32_e32 v1, s1, v2, vcc_lo
-; GFX1250-NEXT: v_perm_b32 v0, v0, v1, 0x5040100
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_readfirstlane_b32 s0, v0
-; GFX1250-NEXT: ; return to shader part epilog
+; GFX1250TRUE16-LABEL: s_select_v2bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_lshr_b32 s2, s0, 16
+; GFX1250TRUE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, s2
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v0.l, s0
+; GFX1250TRUE16-NEXT: s_lshr_b32 s0, s1, 16
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instid1(SALU_CYCLE_1)
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v0.h, s0, v1.l, vcc_lo
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v0.l, s1, v0.l, vcc_lo
+; GFX1250TRUE16-NEXT: v_readfirstlane_b32 s0, v0
+; GFX1250TRUE16-NEXT: ; return to shader part epilog
+;
+; GFX1250FAKE16-LABEL: s_select_v2bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_lshr_b32 s2, s0, 16
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0
+; GFX1250FAKE16-NEXT: v_dual_mov_b32 v1, s2 :: v_dual_mov_b32 v2, s0
+; GFX1250FAKE16-NEXT: s_lshr_b32 s3, s1, 16
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v0, s3, v1, vcc_lo
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v1, s1, v2, vcc_lo
+; GFX1250FAKE16-NEXT: v_perm_b32 v0, v0, v1, 0x5040100
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_readfirstlane_b32 s0, v0
+; GFX1250FAKE16-NEXT: ; return to shader part epilog
%cond = icmp eq i32 %c, 0
%op = select i1 %cond, <2 x bfloat> %a, <2 x bfloat> %b
%cast = bitcast <2 x bfloat> %op to i32
@@ -43554,21 +44550,36 @@ define amdgpu_ps i32 @s_vselect_v2bf16(<2 x bfloat> inreg %a, <2 x bfloat> inreg
; GFX11FAKE16-NEXT: v_readfirstlane_b32 s0, v0
; GFX11FAKE16-NEXT: ; return to shader part epilog
;
-; GFX1250-LABEL: s_vselect_v2bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_lshr_b32 s2, s0, 16
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v1
-; GFX1250-NEXT: v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s0
-; GFX1250-NEXT: s_lshr_b32 s0, s1, 16
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)
-; GFX1250-NEXT: v_cndmask_b32_e32 v1, s0, v2, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_cndmask_b32_e32 v0, s1, v3, vcc_lo
-; GFX1250-NEXT: v_perm_b32 v0, v1, v0, 0x5040100
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_1)
-; GFX1250-NEXT: v_readfirstlane_b32 s0, v0
-; GFX1250-NEXT: ; return to shader part epilog
+; GFX1250TRUE16-LABEL: s_vselect_v2bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_lshr_b32 s3, s0, 16
+; GFX1250TRUE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0
+; GFX1250TRUE16-NEXT: v_cmp_eq_u32_e64 s2, 0, v1
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v0.l, s3
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v0.h, s0
+; GFX1250TRUE16-NEXT: s_lshr_b32 s0, s1, 16
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instid1(SALU_CYCLE_1)
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v1.h, s0, v0.l, s2
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v1.l, s1, v0.h, vcc_lo
+; GFX1250TRUE16-NEXT: v_readfirstlane_b32 s0, v1
+; GFX1250TRUE16-NEXT: ; return to shader part epilog
+;
+; GFX1250FAKE16-LABEL: s_vselect_v2bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_lshr_b32 s2, s0, 16
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v1
+; GFX1250FAKE16-NEXT: v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s0
+; GFX1250FAKE16-NEXT: s_lshr_b32 s0, s1, 16
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v1, s0, v2, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v0, s1, v3, vcc_lo
+; GFX1250FAKE16-NEXT: v_perm_b32 v0, v1, v0, 0x5040100
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_readfirstlane_b32 s0, v0
+; GFX1250FAKE16-NEXT: ; return to shader part epilog
%cond = icmp eq <2 x i32> %c, zeroinitializer
%op = select <2 x i1> %cond, <2 x bfloat> %a, <2 x bfloat> %b
%cast = bitcast <2 x bfloat> %op to i32
@@ -45557,32 +46568,55 @@ define amdgpu_ps <2 x i32> @s_vselect_v4bf16(<4 x bfloat> inreg %a, <4 x bfloat>
; GFX11FAKE16-NEXT: v_readfirstlane_b32 s1, v1
; GFX11FAKE16-NEXT: ; return to shader part epilog
;
-; GFX1250-LABEL: s_vselect_v4bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_lshr_b32 s4, s1, 16
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v3
-; GFX1250-NEXT: v_dual_mov_b32 v4, s4 :: v_dual_mov_b32 v5, s1
-; GFX1250-NEXT: s_lshr_b32 s4, s3, 16
-; GFX1250-NEXT: s_lshr_b32 s5, s0, 16
-; GFX1250-NEXT: v_mov_b32_e32 v6, s0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2)
-; GFX1250-NEXT: v_cndmask_b32_e32 v3, s4, v4, vcc_lo
-; GFX1250-NEXT: v_mov_b32_e32 v4, s5
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v1
-; GFX1250-NEXT: s_lshr_b32 s0, s2, 16
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instid1(SALU_CYCLE_1)
-; GFX1250-NEXT: v_cndmask_b32_e32 v1, s0, v4, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0
-; GFX1250-NEXT: v_cndmask_b32_e32 v0, s2, v6, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v2
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_perm_b32 v0, v1, v0, 0x5040100
-; GFX1250-NEXT: v_cndmask_b32_e32 v2, s3, v5, vcc_lo
-; GFX1250-NEXT: v_readfirstlane_b32 s0, v0
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_perm_b32 v1, v3, v2, 0x5040100
-; GFX1250-NEXT: v_readfirstlane_b32 s1, v1
-; GFX1250-NEXT: ; return to shader part epilog
+; GFX1250TRUE16-LABEL: s_vselect_v4bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_lshr_b32 s7, s1, 16
+; GFX1250TRUE16-NEXT: s_lshr_b32 s9, s0, 16
+; GFX1250TRUE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0
+; GFX1250TRUE16-NEXT: v_cmp_eq_u32_e64 s4, 0, v1
+; GFX1250TRUE16-NEXT: v_cmp_eq_u32_e64 s5, 0, v2
+; GFX1250TRUE16-NEXT: v_cmp_eq_u32_e64 s6, 0, v3
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v0.l, s7
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v0.h, s9
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.l, s0
+; GFX1250TRUE16-NEXT: v_mov_b16_e32 v1.h, s1
+; GFX1250TRUE16-NEXT: s_lshr_b32 s8, s3, 16
+; GFX1250TRUE16-NEXT: s_lshr_b32 s0, s2, 16
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v2.h, s8, v0.l, s6
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v0.h, s0, v0.h, s4
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v0.l, s2, v1.l, vcc_lo
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v2.l, s3, v1.h, s5
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250TRUE16-NEXT: v_readfirstlane_b32 s0, v0
+; GFX1250TRUE16-NEXT: v_readfirstlane_b32 s1, v2
+; GFX1250TRUE16-NEXT: ; return to shader part epilog
+;
+; GFX1250FAKE16-LABEL: s_vselect_v4bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_lshr_b32 s4, s1, 16
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v3
+; GFX1250FAKE16-NEXT: v_dual_mov_b32 v4, s4 :: v_dual_mov_b32 v5, s1
+; GFX1250FAKE16-NEXT: s_lshr_b32 s4, s3, 16
+; GFX1250FAKE16-NEXT: s_lshr_b32 s5, s0, 16
+; GFX1250FAKE16-NEXT: v_mov_b32_e32 v6, s0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v3, s4, v4, vcc_lo
+; GFX1250FAKE16-NEXT: v_mov_b32_e32 v4, s5
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v1
+; GFX1250FAKE16-NEXT: s_lshr_b32 s0, s2, 16
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instid1(SALU_CYCLE_1)
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v1, s0, v4, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v0, s2, v6, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v2
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_perm_b32 v0, v1, v0, 0x5040100
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v2, s3, v5, vcc_lo
+; GFX1250FAKE16-NEXT: v_readfirstlane_b32 s0, v0
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_perm_b32 v1, v3, v2, 0x5040100
+; GFX1250FAKE16-NEXT: v_readfirstlane_b32 s1, v1
+; GFX1250FAKE16-NEXT: ; return to shader part epilog
%cond = icmp eq <4 x i32> %c, zeroinitializer
%op = select <4 x i1> %cond, <4 x bfloat> %a, <4 x bfloat> %b
%cast = bitcast <4 x bfloat> %op to <2 x i32>
@@ -45787,27 +46821,49 @@ define <4 x bfloat> @v_vselect_v4bf16(<4 x i1> %cond, <4 x bfloat> %a, <4 x bflo
; GFX11FAKE16-NEXT: v_perm_b32 v1, v3, v2, 0x5040100
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_vselect_v4bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_and_b32_e32 v2, 1, v2
-; GFX1250-NEXT: v_dual_lshrrev_b32 v8, 16, v4 :: v_dual_bitop2_b32 v1, 1, v1 bitop3:0x40
-; GFX1250-NEXT: v_dual_lshrrev_b32 v9, 16, v6 :: v_dual_bitop2_b32 v3, 1, v3 bitop3:0x40
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v2
-; GFX1250-NEXT: v_dual_cndmask_b32 v2, v7, v5, vcc_lo :: v_dual_bitop2_b32 v0, 1, v0 bitop3:0x40
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
-; GFX1250-NEXT: v_dual_lshrrev_b32 v7, 16, v7 :: v_dual_lshrrev_b32 v5, 16, v5
-; GFX1250-NEXT: v_cndmask_b32_e32 v0, v6, v4, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v1
-; GFX1250-NEXT: v_cndmask_b32_e32 v1, v9, v8, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v3
-; GFX1250-NEXT: v_cndmask_b32_e32 v3, v7, v5, vcc_lo
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_perm_b32 v0, v1, v0, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v1, v3, v2, 0x5040100
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_vselect_v4bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_and_b16 v0.h, 1, v2.l
+; GFX1250TRUE16-NEXT: v_and_b16 v0.l, 1, v0.l
+; GFX1250TRUE16-NEXT: v_and_b16 v1.l, 1, v1.l
+; GFX1250TRUE16-NEXT: v_and_b16 v1.h, 1, v3.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e32 vcc_lo, 1, v0.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s0, 1, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s1, 1, v1.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s2, 1, v1.h
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v1.l, v7.l, v5.l, vcc_lo
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v0.l, v6.l, v4.l, s0
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v0.h, v6.h, v4.h, s1
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4)
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v1.h, v7.h, v5.h, s2
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_vselect_v4bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v2, 1, v2
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v8, 16, v4 :: v_dual_bitop2_b32 v1, 1, v1 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v9, 16, v6 :: v_dual_bitop2_b32 v3, 1, v3 bitop3:0x40
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v2
+; GFX1250FAKE16-NEXT: v_dual_cndmask_b32 v2, v7, v5, vcc_lo :: v_dual_bitop2_b32 v0, 1, v0 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v7, 16, v7 :: v_dual_lshrrev_b32 v5, 16, v5
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v0, v6, v4, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v1
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v1, v9, v8, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v3
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v3, v7, v5, vcc_lo
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_perm_b32 v0, v1, v0, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v1, v3, v2, 0x5040100
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = select <4 x i1> %cond, <4 x bfloat> %a, <4 x bfloat> %b
ret <4 x bfloat> %op
}
@@ -46161,45 +47217,77 @@ define <8 x bfloat> @v_vselect_v8bf16(<8 x i1> %cond, <8 x bfloat> %a, <8 x bflo
; GFX11FAKE16-NEXT: v_perm_b32 v3, v7, v6, 0x5040100
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_vselect_v8bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_and_b32_e32 v6, 1, v6
-; GFX1250-NEXT: v_and_b32_e32 v4, 1, v4
-; GFX1250-NEXT: v_dual_lshrrev_b32 v17, 16, v14 :: v_dual_bitop2_b32 v5, 1, v5 bitop3:0x40
-; GFX1250-NEXT: v_dual_lshrrev_b32 v16, 16, v10 :: v_dual_bitop2_b32 v3, 1, v3 bitop3:0x40
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_4)
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v6
-; GFX1250-NEXT: v_and_b32_e32 v1, 1, v1
-; GFX1250-NEXT: v_dual_cndmask_b32 v6, v15, v11, vcc_lo :: v_dual_bitop2_b32 v0, 1, v0 bitop3:0x40
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v4
-; GFX1250-NEXT: v_and_b32_e32 v7, 1, v7
-; GFX1250-NEXT: v_lshrrev_b32_e32 v11, 16, v11
-; GFX1250-NEXT: v_dual_cndmask_b32 v4, v14, v10 :: v_dual_lshrrev_b32 v15, 16, v15
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v5
-; GFX1250-NEXT: v_dual_lshrrev_b32 v14, 16, v12 :: v_dual_bitop2_b32 v2, 1, v2 bitop3:0x40
-; GFX1250-NEXT: v_lshrrev_b32_e32 v10, 16, v8
-; GFX1250-NEXT: v_cndmask_b32_e32 v5, v17, v16, vcc_lo
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3)
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v2
-; GFX1250-NEXT: v_cndmask_b32_e32 v2, v13, v9, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
-; GFX1250-NEXT: v_lshrrev_b32_e32 v9, 16, v9
-; GFX1250-NEXT: v_dual_cndmask_b32 v0, v12, v8 :: v_dual_lshrrev_b32 v13, 16, v13
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v1
-; GFX1250-NEXT: v_cndmask_b32_e32 v1, v14, v10, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v3
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_3)
-; GFX1250-NEXT: v_perm_b32 v0, v1, v0, 0x5040100
-; GFX1250-NEXT: v_cndmask_b32_e32 v3, v13, v9, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v7
-; GFX1250-NEXT: v_cndmask_b32_e32 v7, v15, v11, vcc_lo
-; GFX1250-NEXT: v_perm_b32 v1, v3, v2, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v2, v5, v4, 0x5040100
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3)
-; GFX1250-NEXT: v_perm_b32 v3, v7, v6, 0x5040100
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_vselect_v8bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_and_b16 v0.h, 1, v1.l
+; GFX1250TRUE16-NEXT: v_and_b16 v0.l, 1, v0.l
+; GFX1250TRUE16-NEXT: v_and_b16 v1.l, 1, v3.l
+; GFX1250TRUE16-NEXT: v_and_b16 v1.h, 1, v5.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e32 vcc_lo, 1, v0.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s0, 1, v0.l
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_4)
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s1, 1, v1.l
+; GFX1250TRUE16-NEXT: v_and_b16 v0.l, 1, v6.l
+; GFX1250TRUE16-NEXT: v_and_b16 v0.h, 1, v4.l
+; GFX1250TRUE16-NEXT: v_and_b16 v1.l, 1, v2.l
+; GFX1250TRUE16-NEXT: v_and_b16 v2.l, 1, v7.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s5, 1, v1.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s2, 1, v0.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s3, 1, v0.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s4, 1, v1.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s6, 1, v2.l
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v0.l, v12.l, v8.l, s0
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v3.l, v15.l, v11.l, s2
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v2.l, v14.l, v10.l, s3
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v1.l, v13.l, v9.l, s4
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v0.h, v12.h, v8.h, vcc_lo
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v1.h, v13.h, v9.h, s1
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v2.h, v14.h, v10.h, s5
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v3.h, v15.h, v11.h, s6
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_vselect_v8bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v6, 1, v6
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v4, 1, v4
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v17, 16, v14 :: v_dual_bitop2_b32 v5, 1, v5 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v16, 16, v10 :: v_dual_bitop2_b32 v3, 1, v3 bitop3:0x40
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_4)
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v6
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v1, 1, v1
+; GFX1250FAKE16-NEXT: v_dual_cndmask_b32 v6, v15, v11, vcc_lo :: v_dual_bitop2_b32 v0, 1, v0 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v4
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v7, 1, v7
+; GFX1250FAKE16-NEXT: v_lshrrev_b32_e32 v11, 16, v11
+; GFX1250FAKE16-NEXT: v_dual_cndmask_b32 v4, v14, v10 :: v_dual_lshrrev_b32 v15, 16, v15
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v5
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v14, 16, v12 :: v_dual_bitop2_b32 v2, 1, v2 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_lshrrev_b32_e32 v10, 16, v8
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v5, v17, v16, vcc_lo
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v2
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v2, v13, v9, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
+; GFX1250FAKE16-NEXT: v_lshrrev_b32_e32 v9, 16, v9
+; GFX1250FAKE16-NEXT: v_dual_cndmask_b32 v0, v12, v8 :: v_dual_lshrrev_b32 v13, 16, v13
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v1
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v1, v14, v10, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v3
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_perm_b32 v0, v1, v0, 0x5040100
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v3, v13, v9, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v7
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v7, v15, v11, vcc_lo
+; GFX1250FAKE16-NEXT: v_perm_b32 v1, v3, v2, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v2, v5, v4, 0x5040100
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_perm_b32 v3, v7, v6, 0x5040100
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = select <8 x i1> %cond, <8 x bfloat> %a, <8 x bfloat> %b
ret <8 x bfloat> %op
}
@@ -46939,73 +48027,129 @@ define <16 x bfloat> @v_vselect_v16bf16(<16 x i1> %cond, <16 x bfloat> %a, <16 x
; GFX11FAKE16-NEXT: v_perm_b32 v7, v15, v14, 0x5040100
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_vselect_v16bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: scratch_load_b32 v31, off, s32
-; GFX1250-NEXT: v_dual_lshrrev_b32 v52, 16, v25 :: v_dual_bitop2_b32 v12, 1, v12 bitop3:0x40
-; GFX1250-NEXT: v_dual_lshrrev_b32 v53, 16, v16 :: v_dual_bitop2_b32 v13, 1, v13 bitop3:0x40
-; GFX1250-NEXT: v_dual_lshrrev_b32 v33, 16, v22 :: v_dual_bitop2_b32 v0, 1, v0 bitop3:0x40
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3)
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v12
-; GFX1250-NEXT: v_dual_lshrrev_b32 v34, 16, v30 :: v_dual_bitop2_b32 v3, 1, v3 bitop3:0x40
-; GFX1250-NEXT: v_dual_lshrrev_b32 v51, 16, v17 :: v_dual_bitop2_b32 v10, 1, v10 bitop3:0x40
-; GFX1250-NEXT: v_cndmask_b32_e32 v12, v30, v22, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v13
-; GFX1250-NEXT: v_dual_lshrrev_b32 v50, 16, v26 :: v_dual_bitop2_b32 v11, 1, v11 bitop3:0x40
-; GFX1250-NEXT: v_and_b32_e32 v14, 1, v14
-; GFX1250-NEXT: v_dual_lshrrev_b32 v35, 16, v21 :: v_dual_bitop2_b32 v2, 1, v2 bitop3:0x40
-; GFX1250-NEXT: v_cndmask_b32_e32 v13, v34, v33, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v10
-; GFX1250-NEXT: v_dual_lshrrev_b32 v36, 16, v29 :: v_dual_bitop2_b32 v4, 1, v4 bitop3:0x40
-; GFX1250-NEXT: v_dual_lshrrev_b32 v49, 16, v18 :: v_dual_bitop2_b32 v8, 1, v8 bitop3:0x40
-; GFX1250-NEXT: v_cndmask_b32_e32 v10, v29, v21, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v11
-; GFX1250-NEXT: v_dual_lshrrev_b32 v37, 16, v20 :: v_dual_bitop2_b32 v5, 1, v5 bitop3:0x40
-; GFX1250-NEXT: v_dual_lshrrev_b32 v38, 16, v28 :: v_dual_bitop2_b32 v7, 1, v7 bitop3:0x40
-; GFX1250-NEXT: v_dual_lshrrev_b32 v48, 16, v27 :: v_dual_bitop2_b32 v9, 1, v9 bitop3:0x40
-; GFX1250-NEXT: v_cndmask_b32_e32 v11, v36, v35, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v8
-; GFX1250-NEXT: v_dual_lshrrev_b32 v39, 16, v19 :: v_dual_bitop2_b32 v6, 1, v6 bitop3:0x40
-; GFX1250-NEXT: v_dual_lshrrev_b32 v32, 16, v23 :: v_dual_bitop2_b32 v1, 1, v1 bitop3:0x40
-; GFX1250-NEXT: v_cndmask_b32_e32 v8, v28, v20, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v9
-; GFX1250-NEXT: v_dual_lshrrev_b32 v54, 16, v24 :: v_dual_bitop2_b32 v15, 1, v15 bitop3:0x40
-; GFX1250-NEXT: v_cndmask_b32_e32 v9, v38, v37, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v6
-; GFX1250-NEXT: v_cndmask_b32_e32 v6, v27, v19, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v4
-; GFX1250-NEXT: v_cndmask_b32_e32 v4, v26, v18, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v2
-; GFX1250-NEXT: v_cndmask_b32_e32 v2, v25, v17, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v3
-; GFX1250-NEXT: v_cndmask_b32_e32 v3, v52, v51, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
-; GFX1250-NEXT: v_cndmask_b32_e32 v0, v24, v16, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v1
-; GFX1250-NEXT: v_cndmask_b32_e32 v1, v54, v53, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v5
-; GFX1250-NEXT: v_cndmask_b32_e32 v5, v50, v49, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v7
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_4)
-; GFX1250-NEXT: v_perm_b32 v0, v1, v0, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v1, v3, v2, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v2, v5, v4, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v4, v9, v8, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v5, v11, v10, 0x5040100
-; GFX1250-NEXT: s_wait_loadcnt 0x0
-; GFX1250-NEXT: v_lshrrev_b32_e32 v3, 16, v31
-; GFX1250-NEXT: v_cndmask_b32_e32 v7, v48, v39, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v14
-; GFX1250-NEXT: v_cndmask_b32_e32 v14, v31, v23, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v15
-; GFX1250-NEXT: v_cndmask_b32_e32 v15, v3, v32, vcc_lo
-; GFX1250-NEXT: v_perm_b32 v3, v7, v6, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v6, v13, v12, 0x5040100
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_3)
-; GFX1250-NEXT: v_perm_b32 v7, v15, v14, 0x5040100
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_vselect_v16bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: scratch_load_b32 v31, off, s32
+; GFX1250TRUE16-NEXT: v_and_b16 v0.h, 1, v1.l
+; GFX1250TRUE16-NEXT: v_and_b16 v0.l, 1, v0.l
+; GFX1250TRUE16-NEXT: v_and_b16 v1.l, 1, v3.l
+; GFX1250TRUE16-NEXT: v_and_b16 v1.h, 1, v2.l
+; GFX1250TRUE16-NEXT: v_and_b16 v2.l, 1, v5.l
+; GFX1250TRUE16-NEXT: v_and_b16 v2.h, 1, v4.l
+; GFX1250TRUE16-NEXT: v_and_b16 v3.l, 1, v7.l
+; GFX1250TRUE16-NEXT: v_and_b16 v3.h, 1, v6.l
+; GFX1250TRUE16-NEXT: v_and_b16 v4.l, 1, v9.l
+; GFX1250TRUE16-NEXT: v_and_b16 v4.h, 1, v8.l
+; GFX1250TRUE16-NEXT: v_and_b16 v5.l, 1, v11.l
+; GFX1250TRUE16-NEXT: v_and_b16 v5.h, 1, v10.l
+; GFX1250TRUE16-NEXT: v_and_b16 v6.l, 1, v13.l
+; GFX1250TRUE16-NEXT: v_and_b16 v6.h, 1, v12.l
+; GFX1250TRUE16-NEXT: v_and_b16 v7.l, 1, v15.l
+; GFX1250TRUE16-NEXT: v_and_b16 v7.h, 1, v14.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e32 vcc_lo, 1, v0.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s0, 1, v0.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s1, 1, v1.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s2, 1, v1.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s3, 1, v2.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s4, 1, v2.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s5, 1, v3.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s6, 1, v3.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s7, 1, v4.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s8, 1, v4.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s9, 1, v5.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s10, 1, v6.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s11, 1, v6.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s12, 1, v5.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s13, 1, v7.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s14, 1, v7.h
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v6.l, v30.l, v22.l, s10
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v6.h, v30.h, v22.h, s11
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v5.l, v29.l, v21.l, s12
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v5.h, v29.h, v21.h, s9
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v4.l, v28.l, v20.l, s8
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v4.h, v28.h, v20.h, s7
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v3.l, v27.l, v19.l, s6
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v3.h, v27.h, v19.h, s5
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v2.l, v26.l, v18.l, s4
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v1.l, v25.l, v17.l, s2
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v0.l, v24.l, v16.l, s0
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v0.h, v24.h, v16.h, vcc_lo
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v1.h, v25.h, v17.h, s1
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v2.h, v26.h, v18.h, s3
+; GFX1250TRUE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v7.l, v31.l, v23.l, s14
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v7.h, v31.h, v23.h, s13
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_vselect_v16bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: scratch_load_b32 v31, off, s32
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v52, 16, v25 :: v_dual_bitop2_b32 v12, 1, v12 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v53, 16, v16 :: v_dual_bitop2_b32 v13, 1, v13 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v33, 16, v22 :: v_dual_bitop2_b32 v0, 1, v0 bitop3:0x40
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v12
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v34, 16, v30 :: v_dual_bitop2_b32 v3, 1, v3 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v51, 16, v17 :: v_dual_bitop2_b32 v10, 1, v10 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v12, v30, v22, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v13
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v50, 16, v26 :: v_dual_bitop2_b32 v11, 1, v11 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v14, 1, v14
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v35, 16, v21 :: v_dual_bitop2_b32 v2, 1, v2 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v13, v34, v33, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v10
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v36, 16, v29 :: v_dual_bitop2_b32 v4, 1, v4 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v49, 16, v18 :: v_dual_bitop2_b32 v8, 1, v8 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v10, v29, v21, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v11
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v37, 16, v20 :: v_dual_bitop2_b32 v5, 1, v5 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v38, 16, v28 :: v_dual_bitop2_b32 v7, 1, v7 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v48, 16, v27 :: v_dual_bitop2_b32 v9, 1, v9 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v11, v36, v35, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v8
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v39, 16, v19 :: v_dual_bitop2_b32 v6, 1, v6 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v32, 16, v23 :: v_dual_bitop2_b32 v1, 1, v1 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v8, v28, v20, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v9
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v54, 16, v24 :: v_dual_bitop2_b32 v15, 1, v15 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v9, v38, v37, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v6
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v6, v27, v19, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v4
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v4, v26, v18, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v2
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v2, v25, v17, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v3
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v3, v52, v51, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v0, v24, v16, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v1
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v1, v54, v53, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v5
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v5, v50, v49, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v7
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_4)
+; GFX1250FAKE16-NEXT: v_perm_b32 v0, v1, v0, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v1, v3, v2, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v2, v5, v4, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v4, v9, v8, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v5, v11, v10, 0x5040100
+; GFX1250FAKE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250FAKE16-NEXT: v_lshrrev_b32_e32 v3, 16, v31
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v7, v48, v39, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v14
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v14, v31, v23, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v15
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v15, v3, v32, vcc_lo
+; GFX1250FAKE16-NEXT: v_perm_b32 v3, v7, v6, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v6, v13, v12, 0x5040100
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_3)
+; GFX1250FAKE16-NEXT: v_perm_b32 v7, v15, v14, 0x5040100
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = select <16 x i1> %cond, <16 x bfloat> %a, <16 x bfloat> %b
ret <16 x bfloat> %op
}
@@ -48861,177 +50005,330 @@ define <32 x bfloat> @v_vselect_v32bf16(<32 x i1> %cond, <32 x bfloat> %a, <32 x
; GFX11FAKE16-NEXT: v_perm_b32 v15, v31, v30, 0x5040100
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_vselect_v32bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: s_clause 0x1b
-; GFX1250-NEXT: scratch_load_b32 v31, off, s32 offset:60
-; GFX1250-NEXT: scratch_load_b32 v32, off, s32 offset:124
-; GFX1250-NEXT: scratch_load_u16 v33, off, s32
-; GFX1250-NEXT: scratch_load_b32 v34, off, s32 offset:128
-; GFX1250-NEXT: scratch_load_b32 v35, off, s32 offset:64
-; GFX1250-NEXT: scratch_load_b32 v36, off, s32 offset:120
-; GFX1250-NEXT: scratch_load_b32 v37, off, s32 offset:56
-; GFX1250-NEXT: scratch_load_b32 v38, off, s32 offset:116
-; GFX1250-NEXT: scratch_load_b32 v39, off, s32 offset:52
-; GFX1250-NEXT: scratch_load_b32 v48, off, s32 offset:112
-; GFX1250-NEXT: scratch_load_b32 v49, off, s32 offset:48
-; GFX1250-NEXT: scratch_load_b32 v50, off, s32 offset:108
-; GFX1250-NEXT: scratch_load_b32 v51, off, s32 offset:44
-; GFX1250-NEXT: scratch_load_b32 v52, off, s32 offset:104
-; GFX1250-NEXT: scratch_load_b32 v53, off, s32 offset:40
-; GFX1250-NEXT: scratch_load_b32 v54, off, s32 offset:100
-; GFX1250-NEXT: scratch_load_b32 v55, off, s32 offset:36
-; GFX1250-NEXT: scratch_load_b32 v64, off, s32 offset:76
-; GFX1250-NEXT: scratch_load_b32 v65, off, s32 offset:12
-; GFX1250-NEXT: scratch_load_b32 v66, off, s32 offset:96
-; GFX1250-NEXT: scratch_load_b32 v67, off, s32 offset:32
-; GFX1250-NEXT: scratch_load_b32 v68, off, s32 offset:80
-; GFX1250-NEXT: scratch_load_b32 v69, off, s32 offset:84
-; GFX1250-NEXT: scratch_load_b32 v70, off, s32 offset:92
-; GFX1250-NEXT: scratch_load_b32 v71, off, s32 offset:28
-; GFX1250-NEXT: scratch_load_b32 v80, off, s32 offset:20
-; GFX1250-NEXT: scratch_load_b32 v81, off, s32 offset:88
-; GFX1250-NEXT: scratch_load_b32 v82, off, s32 offset:24
-; GFX1250-NEXT: v_and_b32_e32 v30, 1, v30
-; GFX1250-NEXT: v_and_b32_e32 v29, 1, v29
-; GFX1250-NEXT: v_and_b32_e32 v26, 1, v26
-; GFX1250-NEXT: v_and_b32_e32 v24, 1, v24
-; GFX1250-NEXT: v_and_b32_e32 v22, 1, v22
-; GFX1250-NEXT: v_and_b32_e32 v20, 1, v20
-; GFX1250-NEXT: v_and_b32_e32 v18, 1, v18
-; GFX1250-NEXT: v_and_b32_e32 v16, 1, v16
-; GFX1250-NEXT: v_and_b32_e32 v10, 1, v10
-; GFX1250-NEXT: v_and_b32_e32 v6, 1, v6
-; GFX1250-NEXT: v_and_b32_e32 v4, 1, v4
-; GFX1250-NEXT: v_and_b32_e32 v1, 1, v1
-; GFX1250-NEXT: v_and_b32_e32 v3, 1, v3
-; GFX1250-NEXT: v_and_b32_e32 v5, 1, v5
-; GFX1250-NEXT: v_and_b32_e32 v23, 1, v23
-; GFX1250-NEXT: v_and_b32_e32 v9, 1, v9
-; GFX1250-NEXT: v_and_b32_e32 v13, 1, v13
-; GFX1250-NEXT: v_and_b32_e32 v15, 1, v15
-; GFX1250-NEXT: v_and_b32_e32 v21, 1, v21
-; GFX1250-NEXT: v_and_b32_e32 v11, 1, v11
-; GFX1250-NEXT: v_and_b32_e32 v19, 1, v19
-; GFX1250-NEXT: s_wait_loadcnt 0x1a
-; GFX1250-NEXT: v_dual_lshrrev_b32 v83, 16, v32 :: v_dual_bitop2_b32 v17, 1, v17 bitop3:0x40
-; GFX1250-NEXT: v_cmp_eq_u32_e64 s1, 1, v30
-; GFX1250-NEXT: v_and_b32_e32 v28, 1, v28
-; GFX1250-NEXT: s_wait_loadcnt 0x17
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
-; GFX1250-NEXT: v_dual_cndmask_b32 v30, v34, v35, s1 :: v_dual_bitop2_b32 v33, 1, v33 bitop3:0x40
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v28
-; GFX1250-NEXT: v_lshrrev_b32_e32 v28, 16, v31
-; GFX1250-NEXT: v_cmp_eq_u32_e64 s0, 1, v29
-; GFX1250-NEXT: scratch_load_b32 v29, off, s32 offset:16
-; GFX1250-NEXT: v_dual_lshrrev_b32 v35, 16, v35 :: v_dual_lshrrev_b32 v34, 16, v34
-; GFX1250-NEXT: v_cndmask_b32_e32 v31, v32, v31, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v33
-; GFX1250-NEXT: scratch_load_b32 v32, off, s32 offset:72
-; GFX1250-NEXT: v_cndmask_b32_e64 v28, v83, v28, s0
-; GFX1250-NEXT: scratch_load_b32 v83, off, s32 offset:4
-; GFX1250-NEXT: v_cndmask_b32_e32 v34, v34, v35, vcc_lo
-; GFX1250-NEXT: s_clause 0x1
-; GFX1250-NEXT: scratch_load_b32 v35, off, s32 offset:68
-; GFX1250-NEXT: scratch_load_b32 v33, off, s32 offset:8
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v26
-; GFX1250-NEXT: s_wait_loadcnt 0x1a
-; GFX1250-NEXT: v_dual_cndmask_b32 v26, v36, v37, vcc_lo :: v_dual_bitop2_b32 v0, 1, v0 bitop3:0x40
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v24
-; GFX1250-NEXT: v_dual_lshrrev_b32 v37, 16, v37 :: v_dual_bitop2_b32 v2, 1, v2 bitop3:0x40
-; GFX1250-NEXT: s_wait_loadcnt 0x18
-; GFX1250-NEXT: v_dual_lshrrev_b32 v36, 16, v36 :: v_dual_cndmask_b32 v24, v38, v39, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v22
-; GFX1250-NEXT: v_dual_lshrrev_b32 v38, 16, v38 :: v_dual_bitop2_b32 v7, 1, v7 bitop3:0x40
-; GFX1250-NEXT: s_wait_loadcnt 0x16
-; GFX1250-NEXT: v_dual_cndmask_b32 v22, v48, v49 :: v_dual_lshrrev_b32 v39, 16, v39
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v20
-; GFX1250-NEXT: v_dual_lshrrev_b32 v49, 16, v49 :: v_dual_bitop2_b32 v8, 1, v8 bitop3:0x40
-; GFX1250-NEXT: s_wait_loadcnt 0x14
-; GFX1250-NEXT: v_dual_lshrrev_b32 v48, 16, v48 :: v_dual_cndmask_b32 v20, v50, v51, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v18
-; GFX1250-NEXT: v_dual_lshrrev_b32 v51, 16, v51 :: v_dual_bitop2_b32 v12, 1, v12 bitop3:0x40
-; GFX1250-NEXT: s_wait_loadcnt 0x12
-; GFX1250-NEXT: v_dual_lshrrev_b32 v50, 16, v50 :: v_dual_cndmask_b32 v18, v52, v53, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v16
-; GFX1250-NEXT: v_dual_lshrrev_b32 v53, 16, v53 :: v_dual_bitop2_b32 v14, 1, v14 bitop3:0x40
-; GFX1250-NEXT: s_wait_loadcnt 0x10
-; GFX1250-NEXT: v_dual_lshrrev_b32 v52, 16, v52 :: v_dual_cndmask_b32 v16, v54, v55, vcc_lo
-; GFX1250-NEXT: s_delay_alu instid0(VALU_DEP_2)
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v14
-; GFX1250-NEXT: v_dual_lshrrev_b32 v55, 16, v55 :: v_dual_lshrrev_b32 v54, 16, v54
-; GFX1250-NEXT: s_wait_loadcnt 0xc
-; GFX1250-NEXT: v_cndmask_b32_e32 v14, v66, v67, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v12
-; GFX1250-NEXT: v_dual_lshrrev_b32 v67, 16, v67 :: v_dual_lshrrev_b32 v66, 16, v66
-; GFX1250-NEXT: s_wait_loadcnt 0x8
-; GFX1250-NEXT: v_cndmask_b32_e32 v12, v70, v71, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v10
-; GFX1250-NEXT: v_dual_lshrrev_b32 v70, 16, v70 :: v_dual_bitop2_b32 v25, 1, v25 bitop3:0x40
-; GFX1250-NEXT: s_wait_loadcnt 0x5
-; GFX1250-NEXT: v_dual_cndmask_b32 v10, v81, v82 :: v_dual_lshrrev_b32 v71, 16, v71
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v8
-; GFX1250-NEXT: v_dual_lshrrev_b32 v82, 16, v82 :: v_dual_bitop2_b32 v27, 1, v27 bitop3:0x40
-; GFX1250-NEXT: v_dual_cndmask_b32 v8, v69, v80 :: v_dual_lshrrev_b32 v81, 16, v81
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v6
-; GFX1250-NEXT: v_dual_lshrrev_b32 v80, 16, v80 :: v_dual_lshrrev_b32 v69, 16, v69
-; GFX1250-NEXT: s_wait_loadcnt 0x4
-; GFX1250-NEXT: v_dual_cndmask_b32 v6, v68, v29 :: v_dual_lshrrev_b32 v29, 16, v29
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v4
-; GFX1250-NEXT: v_dual_lshrrev_b32 v68, 16, v68 :: v_dual_cndmask_b32 v4, v64, v65, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v2
-; GFX1250-NEXT: v_dual_lshrrev_b32 v65, 16, v65 :: v_dual_lshrrev_b32 v64, 16, v64
-; GFX1250-NEXT: s_wait_loadcnt 0x0
-; GFX1250-NEXT: v_dual_cndmask_b32 v2, v32, v33 :: v_dual_lshrrev_b32 v33, 16, v33
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
-; GFX1250-NEXT: v_dual_lshrrev_b32 v32, 16, v32 :: v_dual_cndmask_b32 v0, v35, v83, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v27
-; GFX1250-NEXT: v_dual_lshrrev_b32 v83, 16, v83 :: v_dual_cndmask_b32 v27, v36, v37, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v25
-; GFX1250-NEXT: v_cndmask_b32_e32 v25, v38, v39, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v23
-; GFX1250-NEXT: v_dual_lshrrev_b32 v35, 16, v35 :: v_dual_cndmask_b32 v23, v48, v49, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v21
-; GFX1250-NEXT: v_cndmask_b32_e32 v21, v50, v51, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v19
-; GFX1250-NEXT: v_cndmask_b32_e32 v19, v52, v53, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v17
-; GFX1250-NEXT: v_cndmask_b32_e32 v17, v54, v55, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v15
-; GFX1250-NEXT: v_cndmask_b32_e32 v15, v66, v67, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v13
-; GFX1250-NEXT: v_cndmask_b32_e32 v13, v70, v71, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v11
-; GFX1250-NEXT: v_cndmask_b32_e32 v11, v81, v82, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v7
-; GFX1250-NEXT: v_cndmask_b32_e32 v7, v68, v29, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v3
-; GFX1250-NEXT: v_cndmask_b32_e32 v3, v32, v33, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v1
-; GFX1250-NEXT: v_cndmask_b32_e32 v1, v35, v83, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v5
-; GFX1250-NEXT: v_cndmask_b32_e32 v5, v64, v65, vcc_lo
-; GFX1250-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v9
-; GFX1250-NEXT: v_cndmask_b32_e32 v9, v69, v80, vcc_lo
-; GFX1250-NEXT: v_perm_b32 v0, v1, v0, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v1, v3, v2, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v2, v5, v4, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v3, v7, v6, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v4, v9, v8, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v5, v11, v10, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v6, v13, v12, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v7, v15, v14, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v8, v17, v16, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v9, v19, v18, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v10, v21, v20, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v11, v23, v22, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v12, v25, v24, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v13, v27, v26, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v14, v28, v31, 0x5040100
-; GFX1250-NEXT: v_perm_b32 v15, v34, v30, 0x5040100
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_vselect_v32bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: s_clause 0x20
+; GFX1250TRUE16-NEXT: scratch_load_u16 v31, off, s32
+; GFX1250TRUE16-NEXT: scratch_load_b32 v32, off, s32 offset:68
+; GFX1250TRUE16-NEXT: scratch_load_b32 v33, off, s32 offset:72
+; GFX1250TRUE16-NEXT: scratch_load_b32 v34, off, s32 offset:76
+; GFX1250TRUE16-NEXT: scratch_load_b32 v35, off, s32 offset:124
+; GFX1250TRUE16-NEXT: scratch_load_b32 v36, off, s32 offset:128
+; GFX1250TRUE16-NEXT: scratch_load_b32 v37, off, s32 offset:64
+; GFX1250TRUE16-NEXT: scratch_load_b32 v38, off, s32 offset:60
+; GFX1250TRUE16-NEXT: scratch_load_b32 v39, off, s32 offset:120
+; GFX1250TRUE16-NEXT: scratch_load_b32 v48, off, s32 offset:56
+; GFX1250TRUE16-NEXT: scratch_load_b32 v49, off, s32 offset:116
+; GFX1250TRUE16-NEXT: scratch_load_b32 v50, off, s32 offset:52
+; GFX1250TRUE16-NEXT: scratch_load_b32 v51, off, s32 offset:112
+; GFX1250TRUE16-NEXT: scratch_load_b32 v52, off, s32 offset:48
+; GFX1250TRUE16-NEXT: scratch_load_b32 v53, off, s32 offset:108
+; GFX1250TRUE16-NEXT: scratch_load_b32 v54, off, s32 offset:44
+; GFX1250TRUE16-NEXT: scratch_load_b32 v55, off, s32 offset:104
+; GFX1250TRUE16-NEXT: scratch_load_b32 v64, off, s32 offset:40
+; GFX1250TRUE16-NEXT: scratch_load_b32 v65, off, s32 offset:100
+; GFX1250TRUE16-NEXT: scratch_load_b32 v66, off, s32 offset:36
+; GFX1250TRUE16-NEXT: scratch_load_b32 v67, off, s32 offset:96
+; GFX1250TRUE16-NEXT: scratch_load_b32 v68, off, s32 offset:32
+; GFX1250TRUE16-NEXT: scratch_load_b32 v69, off, s32 offset:92
+; GFX1250TRUE16-NEXT: scratch_load_b32 v70, off, s32 offset:28
+; GFX1250TRUE16-NEXT: scratch_load_b32 v71, off, s32 offset:88
+; GFX1250TRUE16-NEXT: scratch_load_b32 v80, off, s32 offset:24
+; GFX1250TRUE16-NEXT: scratch_load_b32 v81, off, s32 offset:84
+; GFX1250TRUE16-NEXT: scratch_load_b32 v82, off, s32 offset:20
+; GFX1250TRUE16-NEXT: scratch_load_b32 v83, off, s32 offset:80
+; GFX1250TRUE16-NEXT: scratch_load_b32 v84, off, s32 offset:16
+; GFX1250TRUE16-NEXT: scratch_load_b32 v85, off, s32 offset:12
+; GFX1250TRUE16-NEXT: scratch_load_b32 v86, off, s32 offset:8
+; GFX1250TRUE16-NEXT: scratch_load_b32 v87, off, s32 offset:4
+; GFX1250TRUE16-NEXT: v_and_b16 v0.h, 1, v1.l
+; GFX1250TRUE16-NEXT: v_and_b16 v0.l, 1, v0.l
+; GFX1250TRUE16-NEXT: v_and_b16 v1.l, 1, v3.l
+; GFX1250TRUE16-NEXT: v_and_b16 v1.h, 1, v2.l
+; GFX1250TRUE16-NEXT: v_and_b16 v2.l, 1, v9.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e32 vcc_lo, 1, v0.h
+; GFX1250TRUE16-NEXT: v_and_b16 v0.h, 1, v4.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s1, 1, v0.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s0, 1, v1.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s2, 1, v1.h
+; GFX1250TRUE16-NEXT: v_and_b16 v0.l, 1, v5.l
+; GFX1250TRUE16-NEXT: v_and_b16 v1.l, 1, v7.l
+; GFX1250TRUE16-NEXT: v_and_b16 v1.h, 1, v6.l
+; GFX1250TRUE16-NEXT: v_and_b16 v2.h, 1, v8.l
+; GFX1250TRUE16-NEXT: v_and_b16 v3.l, 1, v11.l
+; GFX1250TRUE16-NEXT: v_and_b16 v3.h, 1, v10.l
+; GFX1250TRUE16-NEXT: v_and_b16 v4.l, 1, v13.l
+; GFX1250TRUE16-NEXT: v_and_b16 v4.h, 1, v12.l
+; GFX1250TRUE16-NEXT: v_and_b16 v5.l, 1, v15.l
+; GFX1250TRUE16-NEXT: v_and_b16 v5.h, 1, v14.l
+; GFX1250TRUE16-NEXT: v_and_b16 v6.l, 1, v17.l
+; GFX1250TRUE16-NEXT: v_and_b16 v6.h, 1, v16.l
+; GFX1250TRUE16-NEXT: v_and_b16 v7.l, 1, v19.l
+; GFX1250TRUE16-NEXT: v_and_b16 v7.h, 1, v18.l
+; GFX1250TRUE16-NEXT: v_and_b16 v8.l, 1, v21.l
+; GFX1250TRUE16-NEXT: v_and_b16 v8.h, 1, v20.l
+; GFX1250TRUE16-NEXT: v_and_b16 v9.l, 1, v23.l
+; GFX1250TRUE16-NEXT: v_and_b16 v9.h, 1, v22.l
+; GFX1250TRUE16-NEXT: v_and_b16 v10.l, 1, v25.l
+; GFX1250TRUE16-NEXT: v_and_b16 v10.h, 1, v24.l
+; GFX1250TRUE16-NEXT: v_and_b16 v11.l, 1, v27.l
+; GFX1250TRUE16-NEXT: v_and_b16 v11.h, 1, v26.l
+; GFX1250TRUE16-NEXT: v_and_b16 v12.l, 1, v29.l
+; GFX1250TRUE16-NEXT: v_and_b16 v12.h, 1, v28.l
+; GFX1250TRUE16-NEXT: v_and_b16 v13.l, 1, v30.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s4, 1, v0.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s3, 1, v0.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s5, 1, v1.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s6, 1, v1.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s7, 1, v2.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s8, 1, v2.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s9, 1, v3.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s10, 1, v3.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s11, 1, v4.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s12, 1, v4.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s13, 1, v5.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s14, 1, v5.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s15, 1, v6.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s16, 1, v6.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s17, 1, v7.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s18, 1, v7.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s19, 1, v8.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s20, 1, v8.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s21, 1, v9.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s22, 1, v9.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s23, 1, v10.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s24, 1, v10.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s25, 1, v11.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s26, 1, v13.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s27, 1, v12.h
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s28, 1, v12.l
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s29, 1, v11.h
+; GFX1250TRUE16-NEXT: s_wait_loadcnt 0x20
+; GFX1250TRUE16-NEXT: v_and_b16 v0.h, 1, v31.l
+; GFX1250TRUE16-NEXT: s_wait_loadcnt 0x1a
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v15.l, v36.l, v37.l, s26
+; GFX1250TRUE16-NEXT: s_wait_loadcnt 0x19
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v14.l, v35.l, v38.l, s27
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v14.h, v35.h, v38.h, s28
+; GFX1250TRUE16-NEXT: s_wait_loadcnt 0x17
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v13.l, v39.l, v48.l, s29
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v13.h, v39.h, v48.h, s25
+; GFX1250TRUE16-NEXT: s_wait_loadcnt 0x15
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v12.l, v49.l, v50.l, s24
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v12.h, v49.h, v50.h, s23
+; GFX1250TRUE16-NEXT: s_wait_loadcnt 0x13
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v11.l, v51.l, v52.l, s22
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v11.h, v51.h, v52.h, s21
+; GFX1250TRUE16-NEXT: s_wait_loadcnt 0x11
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v10.l, v53.l, v54.l, s20
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v10.h, v53.h, v54.h, s19
+; GFX1250TRUE16-NEXT: s_wait_loadcnt 0xf
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v9.l, v55.l, v64.l, s18
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v9.h, v55.h, v64.h, s17
+; GFX1250TRUE16-NEXT: s_wait_loadcnt 0xd
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v8.l, v65.l, v66.l, s16
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v8.h, v65.h, v66.h, s15
+; GFX1250TRUE16-NEXT: s_wait_loadcnt 0xb
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v7.l, v67.l, v68.l, s14
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v7.h, v67.h, v68.h, s13
+; GFX1250TRUE16-NEXT: s_wait_loadcnt 0x9
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v6.l, v69.l, v70.l, s12
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v6.h, v69.h, v70.h, s11
+; GFX1250TRUE16-NEXT: s_wait_loadcnt 0x7
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v5.l, v71.l, v80.l, s10
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v5.h, v71.h, v80.h, s9
+; GFX1250TRUE16-NEXT: s_wait_loadcnt 0x5
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v4.l, v81.l, v82.l, s8
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v4.h, v81.h, v82.h, s7
+; GFX1250TRUE16-NEXT: s_wait_loadcnt 0x3
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v3.l, v83.l, v84.l, s6
+; GFX1250TRUE16-NEXT: s_wait_loadcnt 0x2
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v2.l, v34.l, v85.l, s4
+; GFX1250TRUE16-NEXT: s_wait_loadcnt 0x1
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v1.l, v33.l, v86.l, s2
+; GFX1250TRUE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v0.l, v32.l, v87.l, s1
+; GFX1250TRUE16-NEXT: v_cmp_eq_u16_e64 s1, 1, v0.h
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v0.h, v32.h, v87.h, vcc_lo
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v1.h, v33.h, v86.h, s0
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v2.h, v34.h, v85.h, s3
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v3.h, v83.h, v84.h, s5
+; GFX1250TRUE16-NEXT: v_cndmask_b16 v15.h, v36.h, v37.h, s1
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_vselect_v32bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: s_clause 0x1b
+; GFX1250FAKE16-NEXT: scratch_load_b32 v31, off, s32 offset:60
+; GFX1250FAKE16-NEXT: scratch_load_b32 v32, off, s32 offset:124
+; GFX1250FAKE16-NEXT: scratch_load_u16 v33, off, s32
+; GFX1250FAKE16-NEXT: scratch_load_b32 v34, off, s32 offset:128
+; GFX1250FAKE16-NEXT: scratch_load_b32 v35, off, s32 offset:64
+; GFX1250FAKE16-NEXT: scratch_load_b32 v36, off, s32 offset:120
+; GFX1250FAKE16-NEXT: scratch_load_b32 v37, off, s32 offset:56
+; GFX1250FAKE16-NEXT: scratch_load_b32 v38, off, s32 offset:116
+; GFX1250FAKE16-NEXT: scratch_load_b32 v39, off, s32 offset:52
+; GFX1250FAKE16-NEXT: scratch_load_b32 v48, off, s32 offset:112
+; GFX1250FAKE16-NEXT: scratch_load_b32 v49, off, s32 offset:48
+; GFX1250FAKE16-NEXT: scratch_load_b32 v50, off, s32 offset:108
+; GFX1250FAKE16-NEXT: scratch_load_b32 v51, off, s32 offset:44
+; GFX1250FAKE16-NEXT: scratch_load_b32 v52, off, s32 offset:104
+; GFX1250FAKE16-NEXT: scratch_load_b32 v53, off, s32 offset:40
+; GFX1250FAKE16-NEXT: scratch_load_b32 v54, off, s32 offset:100
+; GFX1250FAKE16-NEXT: scratch_load_b32 v55, off, s32 offset:36
+; GFX1250FAKE16-NEXT: scratch_load_b32 v64, off, s32 offset:76
+; GFX1250FAKE16-NEXT: scratch_load_b32 v65, off, s32 offset:12
+; GFX1250FAKE16-NEXT: scratch_load_b32 v66, off, s32 offset:96
+; GFX1250FAKE16-NEXT: scratch_load_b32 v67, off, s32 offset:32
+; GFX1250FAKE16-NEXT: scratch_load_b32 v68, off, s32 offset:80
+; GFX1250FAKE16-NEXT: scratch_load_b32 v69, off, s32 offset:84
+; GFX1250FAKE16-NEXT: scratch_load_b32 v70, off, s32 offset:92
+; GFX1250FAKE16-NEXT: scratch_load_b32 v71, off, s32 offset:28
+; GFX1250FAKE16-NEXT: scratch_load_b32 v80, off, s32 offset:20
+; GFX1250FAKE16-NEXT: scratch_load_b32 v81, off, s32 offset:88
+; GFX1250FAKE16-NEXT: scratch_load_b32 v82, off, s32 offset:24
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v30, 1, v30
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v29, 1, v29
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v26, 1, v26
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v24, 1, v24
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v22, 1, v22
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v20, 1, v20
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v18, 1, v18
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v16, 1, v16
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v10, 1, v10
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v6, 1, v6
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v4, 1, v4
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v1, 1, v1
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v3, 1, v3
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v5, 1, v5
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v23, 1, v23
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v9, 1, v9
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v13, 1, v13
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v15, 1, v15
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v21, 1, v21
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v11, 1, v11
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v19, 1, v19
+; GFX1250FAKE16-NEXT: s_wait_loadcnt 0x1a
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v83, 16, v32 :: v_dual_bitop2_b32 v17, 1, v17 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e64 s1, 1, v30
+; GFX1250FAKE16-NEXT: v_and_b32_e32 v28, 1, v28
+; GFX1250FAKE16-NEXT: s_wait_loadcnt 0x17
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_dual_cndmask_b32 v30, v34, v35, s1 :: v_dual_bitop2_b32 v33, 1, v33 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v28
+; GFX1250FAKE16-NEXT: v_lshrrev_b32_e32 v28, 16, v31
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e64 s0, 1, v29
+; GFX1250FAKE16-NEXT: scratch_load_b32 v29, off, s32 offset:16
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v35, 16, v35 :: v_dual_lshrrev_b32 v34, 16, v34
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v31, v32, v31, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v33
+; GFX1250FAKE16-NEXT: scratch_load_b32 v32, off, s32 offset:72
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e64 v28, v83, v28, s0
+; GFX1250FAKE16-NEXT: scratch_load_b32 v83, off, s32 offset:4
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v34, v34, v35, vcc_lo
+; GFX1250FAKE16-NEXT: s_clause 0x1
+; GFX1250FAKE16-NEXT: scratch_load_b32 v35, off, s32 offset:68
+; GFX1250FAKE16-NEXT: scratch_load_b32 v33, off, s32 offset:8
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v26
+; GFX1250FAKE16-NEXT: s_wait_loadcnt 0x1a
+; GFX1250FAKE16-NEXT: v_dual_cndmask_b32 v26, v36, v37, vcc_lo :: v_dual_bitop2_b32 v0, 1, v0 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v24
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v37, 16, v37 :: v_dual_bitop2_b32 v2, 1, v2 bitop3:0x40
+; GFX1250FAKE16-NEXT: s_wait_loadcnt 0x18
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v36, 16, v36 :: v_dual_cndmask_b32 v24, v38, v39, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v22
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v38, 16, v38 :: v_dual_bitop2_b32 v7, 1, v7 bitop3:0x40
+; GFX1250FAKE16-NEXT: s_wait_loadcnt 0x16
+; GFX1250FAKE16-NEXT: v_dual_cndmask_b32 v22, v48, v49 :: v_dual_lshrrev_b32 v39, 16, v39
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v20
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v49, 16, v49 :: v_dual_bitop2_b32 v8, 1, v8 bitop3:0x40
+; GFX1250FAKE16-NEXT: s_wait_loadcnt 0x14
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v48, 16, v48 :: v_dual_cndmask_b32 v20, v50, v51, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v18
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v51, 16, v51 :: v_dual_bitop2_b32 v12, 1, v12 bitop3:0x40
+; GFX1250FAKE16-NEXT: s_wait_loadcnt 0x12
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v50, 16, v50 :: v_dual_cndmask_b32 v18, v52, v53, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v16
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v53, 16, v53 :: v_dual_bitop2_b32 v14, 1, v14 bitop3:0x40
+; GFX1250FAKE16-NEXT: s_wait_loadcnt 0x10
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v52, 16, v52 :: v_dual_cndmask_b32 v16, v54, v55, vcc_lo
+; GFX1250FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_2)
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v14
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v55, 16, v55 :: v_dual_lshrrev_b32 v54, 16, v54
+; GFX1250FAKE16-NEXT: s_wait_loadcnt 0xc
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v14, v66, v67, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v12
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v67, 16, v67 :: v_dual_lshrrev_b32 v66, 16, v66
+; GFX1250FAKE16-NEXT: s_wait_loadcnt 0x8
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v12, v70, v71, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v10
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v70, 16, v70 :: v_dual_bitop2_b32 v25, 1, v25 bitop3:0x40
+; GFX1250FAKE16-NEXT: s_wait_loadcnt 0x5
+; GFX1250FAKE16-NEXT: v_dual_cndmask_b32 v10, v81, v82 :: v_dual_lshrrev_b32 v71, 16, v71
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v8
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v82, 16, v82 :: v_dual_bitop2_b32 v27, 1, v27 bitop3:0x40
+; GFX1250FAKE16-NEXT: v_dual_cndmask_b32 v8, v69, v80 :: v_dual_lshrrev_b32 v81, 16, v81
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v6
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v80, 16, v80 :: v_dual_lshrrev_b32 v69, 16, v69
+; GFX1250FAKE16-NEXT: s_wait_loadcnt 0x4
+; GFX1250FAKE16-NEXT: v_dual_cndmask_b32 v6, v68, v29 :: v_dual_lshrrev_b32 v29, 16, v29
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v4
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v68, 16, v68 :: v_dual_cndmask_b32 v4, v64, v65, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v2
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v65, 16, v65 :: v_dual_lshrrev_b32 v64, 16, v64
+; GFX1250FAKE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250FAKE16-NEXT: v_dual_cndmask_b32 v2, v32, v33 :: v_dual_lshrrev_b32 v33, 16, v33
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v0
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v32, 16, v32 :: v_dual_cndmask_b32 v0, v35, v83, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v27
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v83, 16, v83 :: v_dual_cndmask_b32 v27, v36, v37, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v25
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v25, v38, v39, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v23
+; GFX1250FAKE16-NEXT: v_dual_lshrrev_b32 v35, 16, v35 :: v_dual_cndmask_b32 v23, v48, v49, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v21
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v21, v50, v51, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v19
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v19, v52, v53, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v17
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v17, v54, v55, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v15
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v15, v66, v67, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v13
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v13, v70, v71, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v11
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v11, v81, v82, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v7
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v7, v68, v29, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v3
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v3, v32, v33, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v1
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v1, v35, v83, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v5
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v5, v64, v65, vcc_lo
+; GFX1250FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 1, v9
+; GFX1250FAKE16-NEXT: v_cndmask_b32_e32 v9, v69, v80, vcc_lo
+; GFX1250FAKE16-NEXT: v_perm_b32 v0, v1, v0, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v1, v3, v2, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v2, v5, v4, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v3, v7, v6, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v4, v9, v8, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v5, v11, v10, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v6, v13, v12, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v7, v15, v14, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v8, v17, v16, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v9, v19, v18, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v10, v21, v20, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v11, v23, v22, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v12, v25, v24, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v13, v27, v26, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v14, v28, v31, 0x5040100
+; GFX1250FAKE16-NEXT: v_perm_b32 v15, v34, v30, 0x5040100
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = select <32 x i1> %cond, <32 x bfloat> %a, <32 x bfloat> %b
ret <32 x bfloat> %op
}
@@ -49167,12 +50464,21 @@ define bfloat @v_fma_bf16(bfloat %a, bfloat %b, bfloat %c) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fma_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_fma_mixlo_bf16 v0, v0, v1, v2 op_sel_hi:[1,1,1]
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fma_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_fma_mix_f32_bf16 v0, v0, v1, v2 op_sel_hi:[1,1,1]
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fma_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_fma_mixlo_bf16 v0, v0, v1, v2 op_sel_hi:[1,1,1]
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.fma.bf16(bfloat %a, bfloat %b, bfloat %c)
ret bfloat %op
}
@@ -54791,12 +56097,21 @@ define bfloat @v_fmuladd_bf16(bfloat %a, bfloat %b, bfloat %c) {
; GFX11FAKE16-NEXT: v_lshrrev_b32_e32 v0, 16, v0
; GFX11FAKE16-NEXT: s_setpc_b64 s[30:31]
;
-; GFX1250-LABEL: v_fmuladd_bf16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: v_fma_mixlo_bf16 v0, v0, v1, v2 op_sel_hi:[1,1,1]
-; GFX1250-NEXT: s_set_pc_i64 s[30:31]
+; GFX1250TRUE16-LABEL: v_fmuladd_bf16:
+; GFX1250TRUE16: ; %bb.0:
+; GFX1250TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250TRUE16-NEXT: v_fma_mix_f32_bf16 v0, v0, v1, v2 op_sel_hi:[1,1,1]
+; GFX1250TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s0
+; GFX1250TRUE16-NEXT: s_set_pc_i64 s[30:31]
+;
+; GFX1250FAKE16-LABEL: v_fmuladd_bf16:
+; GFX1250FAKE16: ; %bb.0:
+; GFX1250FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250FAKE16-NEXT: v_fma_mixlo_bf16 v0, v0, v1, v2 op_sel_hi:[1,1,1]
+; GFX1250FAKE16-NEXT: s_set_pc_i64 s[30:31]
%op = call bfloat @llvm.fmuladd.bf16(bfloat %a, bfloat %b, bfloat %c)
ret bfloat %op
}
@@ -55652,5 +56967,3 @@ define <4 x bfloat> @v_fmuladd_v4bf16(<4 x bfloat> %a, <4 x bfloat> %b, <4 x bfl
%op = call <4 x bfloat> @llvm.fmuladd.v4bf16(<4 x bfloat> %a, <4 x bfloat> %b, <4 x bfloat> %c)
ret <4 x bfloat> %op
}
-;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
-; GFX1250FAKE16: {{.*}}
diff --git a/llvm/test/CodeGen/AMDGPU/calling-conventions.ll b/llvm/test/CodeGen/AMDGPU/calling-conventions.ll
index 363a248..cbf6b66 100644
--- a/llvm/test/CodeGen/AMDGPU/calling-conventions.ll
+++ b/llvm/test/CodeGen/AMDGPU/calling-conventions.ll
@@ -1262,7 +1262,7 @@ define amdgpu_ps void @ps_mesa_i16(i16 %arg0) {
; GFX1250-TRUE16-LABEL: ps_mesa_i16:
; GFX1250-TRUE16: ; %bb.0:
; GFX1250-TRUE16-NEXT: v_add_nc_u16 v0.l, v0.l, v0.l
-; GFX1250-TRUE16-NEXT: flat_store_b16 v[0:1], v0
+; GFX1250-TRUE16-NEXT: global_store_b16 v[0:1], v0, off
; GFX1250-TRUE16-NEXT: s_endpgm
;
; GFX1250-FAKE16-LABEL: ps_mesa_i16:
@@ -3013,7 +3013,7 @@ define amdgpu_cs void @amdgpu_cs_v8i1(<8 x i1> %arg0) {
; GFX1250-TRUE16-NEXT: v_lshlrev_b16 v0.h, 4, v0.h
; GFX1250-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
; GFX1250-TRUE16-NEXT: v_bitop3_b16 v0.l, v0.l, v0.h, 15 bitop3:0xec
-; GFX1250-TRUE16-NEXT: flat_store_b8 v[0:1], v0
+; GFX1250-TRUE16-NEXT: global_store_b8 v[0:1], v0, off
; GFX1250-TRUE16-NEXT: s_endpgm
;
; GFX1250-FAKE16-LABEL: amdgpu_cs_v8i1:
@@ -3297,7 +3297,7 @@ define amdgpu_cs void @amdgpu_cs_v16i1(<16 x i1> %arg0) {
; GFX1250-TRUE16-NEXT: v_or_b16 v0.h, v1.h, v1.l
; GFX1250-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
; GFX1250-TRUE16-NEXT: v_bitop3_b16 v0.l, v0.l, v0.h, 0xff bitop3:0xec
-; GFX1250-TRUE16-NEXT: flat_store_b16 v[0:1], v0
+; GFX1250-TRUE16-NEXT: global_store_b16 v[0:1], v0, off
; GFX1250-TRUE16-NEXT: s_endpgm
;
; GFX1250-FAKE16-LABEL: amdgpu_cs_v16i1:
diff --git a/llvm/test/CodeGen/AMDGPU/direct-indirect-call.ll b/llvm/test/CodeGen/AMDGPU/direct-indirect-call.ll
index f706f53..eb40e5c 100644
--- a/llvm/test/CodeGen/AMDGPU/direct-indirect-call.ll
+++ b/llvm/test/CodeGen/AMDGPU/direct-indirect-call.ll
@@ -35,6 +35,6 @@ define amdgpu_kernel void @test_direct_indirect_call() {
ret void
}
;.
-; CHECK: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR0]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
; CHECK: attributes #[[ATTR1]] = { "uniform-work-group-size"="false" }
;.
diff --git a/llvm/test/CodeGen/AMDGPU/duplicate-attribute-indirect.ll b/llvm/test/CodeGen/AMDGPU/duplicate-attribute-indirect.ll
index 8da204b..c02ff28 100644
--- a/llvm/test/CodeGen/AMDGPU/duplicate-attribute-indirect.ll
+++ b/llvm/test/CodeGen/AMDGPU/duplicate-attribute-indirect.ll
@@ -28,6 +28,6 @@ define amdgpu_kernel void @test_simple_indirect_call() #0 {
attributes #0 = { "amdgpu-no-dispatch-id" }
;.
-; ATTRIBUTOR_GCN: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_GCN: attributes #[[ATTR0]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
; ATTRIBUTOR_GCN: attributes #[[ATTR1]] = { "amdgpu-no-dispatch-id" "uniform-work-group-size"="false" }
;.
diff --git a/llvm/test/CodeGen/AMDGPU/fcanonicalize-elimination.ll b/llvm/test/CodeGen/AMDGPU/fcanonicalize-elimination.ll
index ab51693..05d3e9c3 100644
--- a/llvm/test/CodeGen/AMDGPU/fcanonicalize-elimination.ll
+++ b/llvm/test/CodeGen/AMDGPU/fcanonicalize-elimination.ll
@@ -497,12 +497,10 @@ define amdgpu_kernel void @test_fold_canonicalize_minnum_value_f32(ptr addrspace
ret void
}
-; FIXME: Should there be more checks here? minnum with NaN operand is simplified away.
+; FIXME: Should there be more checks here? minnum with sNaN operand is simplified to qNaN.
; GCN-LABEL: test_fold_canonicalize_sNaN_value_f32:
-; GCN: {{flat|global}}_load_dword [[LOAD:v[0-9]+]]
-; VI: v_mul_f32_e32 v{{[0-9]+}}, 1.0, [[LOAD]]
-; GFX9: v_max_f32_e32 v{{[0-9]+}}, [[LOAD]], [[LOAD]]
+; GCN: v_mov_b32_e32 v{{.+}}, 0x7fc00000
define amdgpu_kernel void @test_fold_canonicalize_sNaN_value_f32(ptr addrspace(1) %arg) {
%id = tail call i32 @llvm.amdgcn.workitem.id.x()
%gep = getelementptr inbounds float, ptr addrspace(1) %arg, i32 %id
diff --git a/llvm/test/CodeGen/AMDGPU/fneg-combines.new.ll b/llvm/test/CodeGen/AMDGPU/fneg-combines.new.ll
index 3de6df2..833be20 100644
--- a/llvm/test/CodeGen/AMDGPU/fneg-combines.new.ll
+++ b/llvm/test/CodeGen/AMDGPU/fneg-combines.new.ll
@@ -1949,8 +1949,7 @@ define float @v_fneg_self_minimumnum_f32_ieee(float %a) #0 {
; GCN-LABEL: v_fneg_self_minimumnum_f32_ieee:
; GCN: ; %bb.0:
; GCN-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GCN-NEXT: v_mul_f32_e32 v0, -1.0, v0
-; GCN-NEXT: v_max_f32_e32 v0, v0, v0
+; GCN-NEXT: v_xor_b32_e32 v0, 0x80000000, v0
; GCN-NEXT: s_setpc_b64 s[30:31]
%min = call float @llvm.minimumnum.f32(float %a, float %a)
%min.fneg = fneg float %min
@@ -1961,7 +1960,7 @@ define float @v_fneg_self_minimumnum_f32_no_ieee(float %a) #4 {
; GCN-LABEL: v_fneg_self_minimumnum_f32_no_ieee:
; GCN: ; %bb.0:
; GCN-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GCN-NEXT: v_max_f32_e64 v0, -v0, -v0
+; GCN-NEXT: v_xor_b32_e32 v0, 0x80000000, v0
; GCN-NEXT: s_setpc_b64 s[30:31]
%min = call float @llvm.minimumnum.f32(float %a, float %a)
%min.fneg = fneg float %min
@@ -2285,8 +2284,7 @@ define float @v_fneg_self_maximumnum_f32_ieee(float %a) #0 {
; GCN-LABEL: v_fneg_self_maximumnum_f32_ieee:
; GCN: ; %bb.0:
; GCN-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GCN-NEXT: v_mul_f32_e32 v0, -1.0, v0
-; GCN-NEXT: v_min_f32_e32 v0, v0, v0
+; GCN-NEXT: v_xor_b32_e32 v0, 0x80000000, v0
; GCN-NEXT: s_setpc_b64 s[30:31]
%max = call float @llvm.maximumnum.f32(float %a, float %a)
%max.fneg = fneg float %max
@@ -2297,7 +2295,7 @@ define float @v_fneg_self_maximumnum_f32_no_ieee(float %a) #4 {
; GCN-LABEL: v_fneg_self_maximumnum_f32_no_ieee:
; GCN: ; %bb.0:
; GCN-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GCN-NEXT: v_min_f32_e64 v0, -v0, -v0
+; GCN-NEXT: v_xor_b32_e32 v0, 0x80000000, v0
; GCN-NEXT: s_setpc_b64 s[30:31]
%max = call float @llvm.maximumnum.f32(float %a, float %a)
%max.fneg = fneg float %max
diff --git a/llvm/test/CodeGen/AMDGPU/fptrunc.f16.ll b/llvm/test/CodeGen/AMDGPU/fptrunc.f16.ll
index 40d2765..b0dd187 100644
--- a/llvm/test/CodeGen/AMDGPU/fptrunc.f16.ll
+++ b/llvm/test/CodeGen/AMDGPU/fptrunc.f16.ll
@@ -11,9 +11,9 @@
; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1100 -global-isel=0 -mattr=-flat-for-global,-real-true16 -denormal-fp-math=preserve-sign < %s | FileCheck -enable-var-scope -check-prefixes=GFX11-SDAG-FAKE16 %s
; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1100 -global-isel=1 -mattr=-flat-for-global,+real-true16 -denormal-fp-math=preserve-sign < %s | FileCheck -enable-var-scope -check-prefixes=GFX11-GISEL-TRUE16 %s
; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1100 -global-isel=1 -mattr=-flat-for-global,-real-true16 -denormal-fp-math=preserve-sign < %s | FileCheck -enable-var-scope -check-prefixes=GFX11-GISEL-FAKE16 %s
-; TODO: FIXME-TRUE16 llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1250 -global-isel=0 -mattr=-flat-for-global,+real-true16 -denormal-fp-math=preserve-sign < %s | FileCheck -enable-var-scope -check-prefixes=GFX1250-SDAG-TRUE16 %s
+; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1250 -global-isel=0 -mattr=-flat-for-global,+real-true16 -denormal-fp-math=preserve-sign < %s | FileCheck -enable-var-scope -check-prefixes=GFX1250-SDAG-TRUE16 %s
; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1250 -global-isel=0 -mattr=-flat-for-global,-real-true16 -denormal-fp-math=preserve-sign < %s | FileCheck -enable-var-scope -check-prefixes=GFX1250-SDAG-FAKE16 %s
-; TODO: FIXME-TRUE16 llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1250 -global-isel=1 -mattr=-flat-for-global,+real-true16 -denormal-fp-math=preserve-sign < %s | FileCheck -enable-var-scope -check-prefixes=GFX1250-GISEL-TRUE16 %s
+; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1250 -global-isel=1 -mattr=-flat-for-global,+real-true16 -denormal-fp-math=preserve-sign < %s | FileCheck -enable-var-scope -check-prefixes=GFX1250-GISEL-TRUE16 %s
; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1250 -global-isel=1 -mattr=-flat-for-global,-real-true16 -denormal-fp-math=preserve-sign < %s | FileCheck -enable-var-scope -check-prefixes=GFX1250-GISEL-FAKE16 %s
define amdgpu_kernel void @fptrunc_f32_to_f16(
@@ -197,6 +197,24 @@ define amdgpu_kernel void @fptrunc_f32_to_f16(
; GFX11-GISEL-FAKE16-NEXT: buffer_store_b16 v0, off, s[0:3], 0
; GFX11-GISEL-FAKE16-NEXT: s_endpgm
;
+; GFX1250-SDAG-TRUE16-LABEL: fptrunc_f32_to_f16:
+; GFX1250-SDAG-TRUE16: ; %bb.0: ; %entry
+; GFX1250-SDAG-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s6, -1
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s7, 0x31016000
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s10, s6
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s11, s7
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s8, s2
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s9, s3
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s4, s0
+; GFX1250-SDAG-TRUE16-NEXT: buffer_load_b32 v0, off, s[8:11], null
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s5, s1
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.l, v0
+; GFX1250-SDAG-TRUE16-NEXT: buffer_store_b16 v0, off, s[4:7], null
+; GFX1250-SDAG-TRUE16-NEXT: s_endpgm
+;
; GFX1250-SDAG-FAKE16-LABEL: fptrunc_f32_to_f16:
; GFX1250-SDAG-FAKE16: ; %bb.0: ; %entry
; GFX1250-SDAG-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -215,6 +233,21 @@ define amdgpu_kernel void @fptrunc_f32_to_f16(
; GFX1250-SDAG-FAKE16-NEXT: buffer_store_b16 v0, off, s[4:7], null
; GFX1250-SDAG-FAKE16-NEXT: s_endpgm
;
+; GFX1250-GISEL-TRUE16-LABEL: fptrunc_f32_to_f16:
+; GFX1250-GISEL-TRUE16: ; %bb.0: ; %entry
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b32 s2, s[2:3], 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_xcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s3, 0x31016000
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_cvt_f16_f32 s2, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_3)
+; GFX1250-GISEL-TRUE16-NEXT: v_mov_b32_e32 v0, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s2, -1
+; GFX1250-GISEL-TRUE16-NEXT: buffer_store_b16 v0, off, s[0:3], null
+; GFX1250-GISEL-TRUE16-NEXT: s_endpgm
+;
; GFX1250-GISEL-FAKE16-LABEL: fptrunc_f32_to_f16:
; GFX1250-GISEL-FAKE16: ; %bb.0: ; %entry
; GFX1250-GISEL-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -419,6 +452,24 @@ define amdgpu_kernel void @fptrunc_f32_to_f16_afn(ptr addrspace(1) %r,
; GFX11-GISEL-FAKE16-NEXT: buffer_store_b16 v0, off, s[0:3], 0
; GFX11-GISEL-FAKE16-NEXT: s_endpgm
;
+; GFX1250-SDAG-TRUE16-LABEL: fptrunc_f32_to_f16_afn:
+; GFX1250-SDAG-TRUE16: ; %bb.0: ; %entry
+; GFX1250-SDAG-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s6, -1
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s7, 0x31016000
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s10, s6
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s11, s7
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s8, s2
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s9, s3
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s4, s0
+; GFX1250-SDAG-TRUE16-NEXT: buffer_load_b32 v0, off, s[8:11], null
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s5, s1
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.l, v0
+; GFX1250-SDAG-TRUE16-NEXT: buffer_store_b16 v0, off, s[4:7], null
+; GFX1250-SDAG-TRUE16-NEXT: s_endpgm
+;
; GFX1250-SDAG-FAKE16-LABEL: fptrunc_f32_to_f16_afn:
; GFX1250-SDAG-FAKE16: ; %bb.0: ; %entry
; GFX1250-SDAG-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -437,6 +488,21 @@ define amdgpu_kernel void @fptrunc_f32_to_f16_afn(ptr addrspace(1) %r,
; GFX1250-SDAG-FAKE16-NEXT: buffer_store_b16 v0, off, s[4:7], null
; GFX1250-SDAG-FAKE16-NEXT: s_endpgm
;
+; GFX1250-GISEL-TRUE16-LABEL: fptrunc_f32_to_f16_afn:
+; GFX1250-GISEL-TRUE16: ; %bb.0: ; %entry
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b32 s2, s[2:3], 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_xcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s3, 0x31016000
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_cvt_f16_f32 s2, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_3)
+; GFX1250-GISEL-TRUE16-NEXT: v_mov_b32_e32 v0, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s2, -1
+; GFX1250-GISEL-TRUE16-NEXT: buffer_store_b16 v0, off, s[0:3], null
+; GFX1250-GISEL-TRUE16-NEXT: s_endpgm
+;
; GFX1250-GISEL-FAKE16-LABEL: fptrunc_f32_to_f16_afn:
; GFX1250-GISEL-FAKE16: ; %bb.0: ; %entry
; GFX1250-GISEL-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -1160,6 +1226,73 @@ define amdgpu_kernel void @fptrunc_f64_to_f16(
; GFX11-GISEL-FAKE16-NEXT: buffer_store_b16 v0, off, s[0:3], 0
; GFX11-GISEL-FAKE16-NEXT: s_endpgm
;
+; GFX1250-SDAG-TRUE16-LABEL: fptrunc_f64_to_f16:
+; GFX1250-SDAG-TRUE16: ; %bb.0: ; %entry
+; GFX1250-SDAG-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s6, -1
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s7, 0x31016000
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s10, s6
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s11, s7
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s8, s2
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s9, s3
+; GFX1250-SDAG-TRUE16-NEXT: buffer_load_b64 v[0:1], off, s[8:11], null
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: v_readfirstlane_b32 s2, v1
+; GFX1250-SDAG-TRUE16-NEXT: s_and_b32 s3, s2, 0x1ff
+; GFX1250-SDAG-TRUE16-NEXT: s_lshr_b32 s5, s2, 8
+; GFX1250-SDAG-TRUE16-NEXT: v_or_b32_e32 v0, s3, v0
+; GFX1250-SDAG-TRUE16-NEXT: s_bfe_u32 s3, s2, 0xb0014
+; GFX1250-SDAG-TRUE16-NEXT: s_and_b32 s5, s5, 0xffe
+; GFX1250-SDAG-TRUE16-NEXT: s_sub_co_i32 s4, 0x3f1, s3
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)
+; GFX1250-SDAG-TRUE16-NEXT: v_cmp_ne_u32_e32 vcc_lo, 0, v0
+; GFX1250-SDAG-TRUE16-NEXT: v_med3_i32 v1, s4, 0, 13
+; GFX1250-SDAG-TRUE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250-SDAG-TRUE16-NEXT: v_readfirstlane_b32 s8, v1
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT: v_readfirstlane_b32 s4, v0
+; GFX1250-SDAG-TRUE16-NEXT: s_or_b32 s4, s5, s4
+; GFX1250-SDAG-TRUE16-NEXT: s_or_b32 s5, s4, 0x1000
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT: s_lshr_b32 s9, s5, s8
+; GFX1250-SDAG-TRUE16-NEXT: s_lshl_b32 s8, s9, s8
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_lg_u32 s8, s5
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s5, 1, 0
+; GFX1250-SDAG-TRUE16-NEXT: s_addk_co_i32 s3, 0xfc10
+; GFX1250-SDAG-TRUE16-NEXT: s_or_b32 s5, s9, s5
+; GFX1250-SDAG-TRUE16-NEXT: s_lshl_b32 s8, s3, 12
+; GFX1250-SDAG-TRUE16-NEXT: s_or_b32 s8, s4, s8
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_lt_i32 s3, 1
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s5, s5, s8
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT: s_and_b32 s8, s5, 7
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_gt_i32 s8, 5
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s9, 1, 0
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_eq_u32 s8, 3
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s8, 1, 0
+; GFX1250-SDAG-TRUE16-NEXT: s_lshr_b32 s5, s5, 2
+; GFX1250-SDAG-TRUE16-NEXT: s_or_b32 s8, s8, s9
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT: s_add_co_i32 s5, s5, s8
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_lt_i32 s3, 31
+; GFX1250-SDAG-TRUE16-NEXT: s_movk_i32 s8, 0x7e00
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s5, s5, 0x7c00
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_lg_u32 s4, 0
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s4, s8, 0x7c00
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_eq_u32 s3, 0x40f
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s3, s4, s5
+; GFX1250-SDAG-TRUE16-NEXT: s_lshr_b32 s2, s2, 16
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s4, s0
+; GFX1250-SDAG-TRUE16-NEXT: s_and_b32 s2, s2, 0x8000
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s5, s1
+; GFX1250-SDAG-TRUE16-NEXT: s_or_b32 s2, s2, s3
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT: v_mov_b32_e32 v0, s2
+; GFX1250-SDAG-TRUE16-NEXT: buffer_store_b16 v0, off, s[4:7], null
+; GFX1250-SDAG-TRUE16-NEXT: s_endpgm
+;
; GFX1250-SDAG-FAKE16-LABEL: fptrunc_f64_to_f16:
; GFX1250-SDAG-FAKE16: ; %bb.0: ; %entry
; GFX1250-SDAG-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -1227,6 +1360,63 @@ define amdgpu_kernel void @fptrunc_f64_to_f16(
; GFX1250-SDAG-FAKE16-NEXT: buffer_store_b16 v0, off, s[4:7], null
; GFX1250-SDAG-FAKE16-NEXT: s_endpgm
;
+; GFX1250-GISEL-TRUE16-LABEL: fptrunc_f64_to_f16:
+; GFX1250-GISEL-TRUE16: ; %bb.0: ; %entry
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b64 s[2:3], s[2:3], 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_and_b32 s6, s3, 0x1ff
+; GFX1250-GISEL-TRUE16-NEXT: s_bfe_u32 s4, s3, 0xb0014
+; GFX1250-GISEL-TRUE16-NEXT: s_lshr_b32 s5, s3, 8
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s2, s6, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_addk_co_i32 s4, 0xfc10
+; GFX1250-GISEL-TRUE16-NEXT: s_and_b32 s5, s5, 0xffe
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_lg_u32 s2, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s2, 1, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s2, s5, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_lg_u32 s2, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s5, 1, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_sub_co_i32 s6, 1, s4
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s8, s2, 0x1000
+; GFX1250-GISEL-TRUE16-NEXT: s_max_i32 s6, s6, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_lshl_b32 s7, s4, 12
+; GFX1250-GISEL-TRUE16-NEXT: s_min_i32 s6, s6, 13
+; GFX1250-GISEL-TRUE16-NEXT: s_lshl_b32 s5, s5, 9
+; GFX1250-GISEL-TRUE16-NEXT: s_lshr_b32 s9, s8, s6
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s2, s2, s7
+; GFX1250-GISEL-TRUE16-NEXT: s_lshl_b32 s6, s9, s6
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s5, s5, 0x7c00
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_lg_u32 s6, s8
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s6, 1, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s6, s9, s6
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_lt_i32 s4, 1
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s2, s6, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_and_b32 s6, s2, 7
+; GFX1250-GISEL-TRUE16-NEXT: s_lshr_b32 s2, s2, 2
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_eq_u32 s6, 3
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s7, 1, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_gt_i32 s6, 5
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s6, 1, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s6, s7, s6
+; GFX1250-GISEL-TRUE16-NEXT: s_add_co_i32 s2, s2, s6
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_gt_i32 s4, 30
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s2, 0x7c00, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_eq_u32 s4, 0x40f
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s2, s5, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_lshr_b32 s3, s3, 16
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-GISEL-TRUE16-NEXT: s_and_b32 s3, s3, 0x8000
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s2, s3, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s3, 0x31016000
+; GFX1250-GISEL-TRUE16-NEXT: v_mov_b32_e32 v0, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s2, -1
+; GFX1250-GISEL-TRUE16-NEXT: buffer_store_b16 v0, off, s[0:3], null
+; GFX1250-GISEL-TRUE16-NEXT: s_endpgm
+;
; GFX1250-GISEL-FAKE16-LABEL: fptrunc_f64_to_f16:
; GFX1250-GISEL-FAKE16: ; %bb.0: ; %entry
; GFX1250-GISEL-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -1489,6 +1679,26 @@ define amdgpu_kernel void @fptrunc_f64_to_f16_afn(
; GFX11-GISEL-FAKE16-NEXT: buffer_store_b16 v0, off, s[0:3], 0
; GFX11-GISEL-FAKE16-NEXT: s_endpgm
;
+; GFX1250-SDAG-TRUE16-LABEL: fptrunc_f64_to_f16_afn:
+; GFX1250-SDAG-TRUE16: ; %bb.0: ; %entry
+; GFX1250-SDAG-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s6, -1
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s7, 0x31016000
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s10, s6
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s11, s7
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s8, s2
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s9, s3
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s4, s0
+; GFX1250-SDAG-TRUE16-NEXT: buffer_load_b64 v[0:1], off, s[8:11], null
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s5, s1
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.l, v0
+; GFX1250-SDAG-TRUE16-NEXT: buffer_store_b16 v0, off, s[4:7], null
+; GFX1250-SDAG-TRUE16-NEXT: s_endpgm
+;
; GFX1250-SDAG-FAKE16-LABEL: fptrunc_f64_to_f16_afn:
; GFX1250-SDAG-FAKE16: ; %bb.0: ; %entry
; GFX1250-SDAG-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -1509,6 +1719,20 @@ define amdgpu_kernel void @fptrunc_f64_to_f16_afn(
; GFX1250-SDAG-FAKE16-NEXT: buffer_store_b16 v0, off, s[4:7], null
; GFX1250-SDAG-FAKE16-NEXT: s_endpgm
;
+; GFX1250-GISEL-TRUE16-LABEL: fptrunc_f64_to_f16_afn:
+; GFX1250-GISEL-TRUE16: ; %bb.0: ; %entry
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b64 s[2:3], s[2:3], 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: v_cvt_f32_f64_e32 v0, s[2:3]
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s2, -1
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s3, 0x31016000
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-GISEL-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.l, v0
+; GFX1250-GISEL-TRUE16-NEXT: buffer_store_b16 v0, off, s[0:3], null
+; GFX1250-GISEL-TRUE16-NEXT: s_endpgm
+;
; GFX1250-GISEL-FAKE16-LABEL: fptrunc_f64_to_f16_afn:
; GFX1250-GISEL-FAKE16: ; %bb.0: ; %entry
; GFX1250-GISEL-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -1740,6 +1964,24 @@ define amdgpu_kernel void @fptrunc_v2f32_to_v2f16(
; GFX11-GISEL-FAKE16-NEXT: buffer_store_b32 v0, off, s[0:3], 0
; GFX11-GISEL-FAKE16-NEXT: s_endpgm
;
+; GFX1250-SDAG-TRUE16-LABEL: fptrunc_v2f32_to_v2f16:
+; GFX1250-SDAG-TRUE16: ; %bb.0: ; %entry
+; GFX1250-SDAG-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s6, -1
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s7, 0x31016000
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s10, s6
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s11, s7
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s8, s2
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s9, s3
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s4, s0
+; GFX1250-SDAG-TRUE16-NEXT: buffer_load_b64 v[0:1], off, s[8:11], null
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s5, s1
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: v_cvt_pk_f16_f32 v0, v0, v1
+; GFX1250-SDAG-TRUE16-NEXT: buffer_store_b32 v0, off, s[4:7], null
+; GFX1250-SDAG-TRUE16-NEXT: s_endpgm
+;
; GFX1250-SDAG-FAKE16-LABEL: fptrunc_v2f32_to_v2f16:
; GFX1250-SDAG-FAKE16: ; %bb.0: ; %entry
; GFX1250-SDAG-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -1758,6 +2000,20 @@ define amdgpu_kernel void @fptrunc_v2f32_to_v2f16(
; GFX1250-SDAG-FAKE16-NEXT: buffer_store_b32 v0, off, s[4:7], null
; GFX1250-SDAG-FAKE16-NEXT: s_endpgm
;
+; GFX1250-GISEL-TRUE16-LABEL: fptrunc_v2f32_to_v2f16:
+; GFX1250-GISEL-TRUE16: ; %bb.0: ; %entry
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b64 s[2:3], s[2:3], 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: v_mov_b64_e32 v[0:1], s[2:3]
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s2, -1
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s3, 0x31016000
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-GISEL-TRUE16-NEXT: v_cvt_pk_f16_f32 v0, v0, v1
+; GFX1250-GISEL-TRUE16-NEXT: buffer_store_b32 v0, off, s[0:3], null
+; GFX1250-GISEL-TRUE16-NEXT: s_endpgm
+;
; GFX1250-GISEL-FAKE16-LABEL: fptrunc_v2f32_to_v2f16:
; GFX1250-GISEL-FAKE16: ; %bb.0: ; %entry
; GFX1250-GISEL-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -3017,6 +3273,122 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
; GFX11-GISEL-FAKE16-NEXT: buffer_store_b32 v0, off, s[0:3], 0
; GFX11-GISEL-FAKE16-NEXT: s_endpgm
;
+; GFX1250-SDAG-TRUE16-LABEL: fptrunc_v2f64_to_v2f16:
+; GFX1250-SDAG-TRUE16: ; %bb.0: ; %entry
+; GFX1250-SDAG-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s6, -1
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s7, 0x31016000
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s10, s6
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s11, s7
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s8, s2
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s9, s3
+; GFX1250-SDAG-TRUE16-NEXT: buffer_load_b128 v[0:3], off, s[8:11], null
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: v_readfirstlane_b32 s2, v3
+; GFX1250-SDAG-TRUE16-NEXT: s_and_b32 s3, s2, 0x1ff
+; GFX1250-SDAG-TRUE16-NEXT: s_lshr_b32 s5, s2, 8
+; GFX1250-SDAG-TRUE16-NEXT: v_or_b32_e32 v2, s3, v2
+; GFX1250-SDAG-TRUE16-NEXT: s_bfe_u32 s3, s2, 0xb0014
+; GFX1250-SDAG-TRUE16-NEXT: s_and_b32 s5, s5, 0xffe
+; GFX1250-SDAG-TRUE16-NEXT: s_sub_co_i32 s4, 0x3f1, s3
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)
+; GFX1250-SDAG-TRUE16-NEXT: v_cmp_ne_u32_e32 vcc_lo, 0, v2
+; GFX1250-SDAG-TRUE16-NEXT: v_med3_i32 v3, s4, 0, 13
+; GFX1250-SDAG-TRUE16-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc_lo
+; GFX1250-SDAG-TRUE16-NEXT: v_readfirstlane_b32 s8, v3
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT: v_readfirstlane_b32 s4, v2
+; GFX1250-SDAG-TRUE16-NEXT: s_or_b32 s4, s5, s4
+; GFX1250-SDAG-TRUE16-NEXT: s_or_b32 s5, s4, 0x1000
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT: s_lshr_b32 s9, s5, s8
+; GFX1250-SDAG-TRUE16-NEXT: s_lshl_b32 s8, s9, s8
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_lg_u32 s8, s5
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s5, 1, 0
+; GFX1250-SDAG-TRUE16-NEXT: s_addk_co_i32 s3, 0xfc10
+; GFX1250-SDAG-TRUE16-NEXT: s_or_b32 s5, s9, s5
+; GFX1250-SDAG-TRUE16-NEXT: s_lshl_b32 s8, s3, 12
+; GFX1250-SDAG-TRUE16-NEXT: s_or_b32 s8, s4, s8
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_lt_i32 s3, 1
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s5, s5, s8
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT: s_and_b32 s8, s5, 7
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_gt_i32 s8, 5
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s9, 1, 0
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_eq_u32 s8, 3
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s8, 1, 0
+; GFX1250-SDAG-TRUE16-NEXT: s_lshr_b32 s5, s5, 2
+; GFX1250-SDAG-TRUE16-NEXT: s_or_b32 s8, s8, s9
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT: s_add_co_i32 s5, s5, s8
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_lt_i32 s3, 31
+; GFX1250-SDAG-TRUE16-NEXT: s_movk_i32 s8, 0x7e00
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s5, s5, 0x7c00
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_lg_u32 s4, 0
+; GFX1250-SDAG-TRUE16-NEXT: v_readfirstlane_b32 s4, v1
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s9, s8, 0x7c00
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_eq_u32 s3, 0x40f
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s3, s9, s5
+; GFX1250-SDAG-TRUE16-NEXT: s_and_b32 s5, s4, 0x1ff
+; GFX1250-SDAG-TRUE16-NEXT: s_lshr_b32 s10, s4, 8
+; GFX1250-SDAG-TRUE16-NEXT: v_or_b32_e32 v0, s5, v0
+; GFX1250-SDAG-TRUE16-NEXT: s_bfe_u32 s5, s4, 0xb0014
+; GFX1250-SDAG-TRUE16-NEXT: s_and_b32 s10, s10, 0xffe
+; GFX1250-SDAG-TRUE16-NEXT: s_sub_co_i32 s9, 0x3f1, s5
+; GFX1250-SDAG-TRUE16-NEXT: s_lshr_b32 s2, s2, 16
+; GFX1250-SDAG-TRUE16-NEXT: v_cmp_ne_u32_e32 vcc_lo, 0, v0
+; GFX1250-SDAG-TRUE16-NEXT: v_med3_i32 v1, s9, 0, 13
+; GFX1250-SDAG-TRUE16-NEXT: s_and_b32 s2, s2, 0x8000
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
+; GFX1250-SDAG-TRUE16-NEXT: s_or_b32 s2, s2, s3
+; GFX1250-SDAG-TRUE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
+; GFX1250-SDAG-TRUE16-NEXT: v_readfirstlane_b32 s11, v1
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT: v_readfirstlane_b32 s9, v0
+; GFX1250-SDAG-TRUE16-NEXT: s_or_b32 s9, s10, s9
+; GFX1250-SDAG-TRUE16-NEXT: s_or_b32 s10, s9, 0x1000
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT: s_lshr_b32 s12, s10, s11
+; GFX1250-SDAG-TRUE16-NEXT: s_lshl_b32 s11, s12, s11
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_lg_u32 s11, s10
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s3, 1, 0
+; GFX1250-SDAG-TRUE16-NEXT: s_addk_co_i32 s5, 0xfc10
+; GFX1250-SDAG-TRUE16-NEXT: s_or_b32 s3, s12, s3
+; GFX1250-SDAG-TRUE16-NEXT: s_lshl_b32 s10, s5, 12
+; GFX1250-SDAG-TRUE16-NEXT: s_or_b32 s10, s9, s10
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_lt_i32 s5, 1
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s3, s3, s10
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT: s_and_b32 s10, s3, 7
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_gt_i32 s10, 5
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s11, 1, 0
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_eq_u32 s10, 3
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s10, 1, 0
+; GFX1250-SDAG-TRUE16-NEXT: s_lshr_b32 s3, s3, 2
+; GFX1250-SDAG-TRUE16-NEXT: s_or_b32 s10, s10, s11
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT: s_add_co_i32 s3, s3, s10
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_lt_i32 s5, 31
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s3, s3, 0x7c00
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_lg_u32 s9, 0
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s8, s8, 0x7c00
+; GFX1250-SDAG-TRUE16-NEXT: s_cmp_eq_u32 s5, 0x40f
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s5, s1
+; GFX1250-SDAG-TRUE16-NEXT: s_cselect_b32 s3, s8, s3
+; GFX1250-SDAG-TRUE16-NEXT: s_lshr_b32 s4, s4, 16
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT: s_and_b32 s4, s4, 0x8000
+; GFX1250-SDAG-TRUE16-NEXT: s_or_b32 s3, s4, s3
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s4, s0
+; GFX1250-SDAG-TRUE16-NEXT: s_pack_ll_b32_b16 s2, s3, s2
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-SDAG-TRUE16-NEXT: v_mov_b32_e32 v0, s2
+; GFX1250-SDAG-TRUE16-NEXT: buffer_store_b32 v0, off, s[4:7], null
+; GFX1250-SDAG-TRUE16-NEXT: s_endpgm
+;
; GFX1250-SDAG-FAKE16-LABEL: fptrunc_v2f64_to_v2f16:
; GFX1250-SDAG-FAKE16: ; %bb.0: ; %entry
; GFX1250-SDAG-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -3133,6 +3505,109 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16(
; GFX1250-SDAG-FAKE16-NEXT: buffer_store_b32 v0, off, s[4:7], null
; GFX1250-SDAG-FAKE16-NEXT: s_endpgm
;
+; GFX1250-GISEL-TRUE16-LABEL: fptrunc_v2f64_to_v2f16:
+; GFX1250-GISEL-TRUE16: ; %bb.0: ; %entry
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b128 s[4:7], s[2:3], 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_and_b32 s8, s5, 0x1ff
+; GFX1250-GISEL-TRUE16-NEXT: s_bfe_u32 s2, s5, 0xb0014
+; GFX1250-GISEL-TRUE16-NEXT: s_lshr_b32 s3, s5, 8
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s4, s8, s4
+; GFX1250-GISEL-TRUE16-NEXT: s_addk_co_i32 s2, 0xfc10
+; GFX1250-GISEL-TRUE16-NEXT: s_and_b32 s3, s3, 0xffe
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_lg_u32 s4, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s4, 1, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s3, s3, s4
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_lg_u32 s3, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s4, 1, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_sub_co_i32 s8, 1, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s10, s3, 0x1000
+; GFX1250-GISEL-TRUE16-NEXT: s_max_i32 s8, s8, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_lshl_b32 s9, s2, 12
+; GFX1250-GISEL-TRUE16-NEXT: s_min_i32 s8, s8, 13
+; GFX1250-GISEL-TRUE16-NEXT: s_lshl_b32 s4, s4, 9
+; GFX1250-GISEL-TRUE16-NEXT: s_lshr_b32 s11, s10, s8
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s3, s3, s9
+; GFX1250-GISEL-TRUE16-NEXT: s_lshl_b32 s8, s11, s8
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s4, s4, 0x7c00
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_lg_u32 s8, s10
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s8, 1, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s8, s11, s8
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_lt_i32 s2, 1
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s3, s8, s3
+; GFX1250-GISEL-TRUE16-NEXT: s_and_b32 s8, s3, 7
+; GFX1250-GISEL-TRUE16-NEXT: s_lshr_b32 s3, s3, 2
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_eq_u32 s8, 3
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s9, 1, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_gt_i32 s8, 5
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s8, 1, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s8, s9, s8
+; GFX1250-GISEL-TRUE16-NEXT: s_add_co_i32 s3, s3, s8
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_gt_i32 s2, 30
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s3, 0x7c00, s3
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_eq_u32 s2, 0x40f
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s2, s4, s3
+; GFX1250-GISEL-TRUE16-NEXT: s_lshr_b32 s3, s5, 16
+; GFX1250-GISEL-TRUE16-NEXT: s_and_b32 s8, s7, 0x1ff
+; GFX1250-GISEL-TRUE16-NEXT: s_bfe_u32 s4, s7, 0xb0014
+; GFX1250-GISEL-TRUE16-NEXT: s_lshr_b32 s5, s7, 8
+; GFX1250-GISEL-TRUE16-NEXT: s_and_b32 s3, s3, 0x8000
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s6, s8, s6
+; GFX1250-GISEL-TRUE16-NEXT: s_addk_co_i32 s4, 0xfc10
+; GFX1250-GISEL-TRUE16-NEXT: s_and_b32 s5, s5, 0xffe
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s2, s3, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_lg_u32 s6, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s3, 1, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s3, s5, s3
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_lg_u32 s3, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s5, 1, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_sub_co_i32 s6, 1, s4
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s9, s3, 0x1000
+; GFX1250-GISEL-TRUE16-NEXT: s_max_i32 s6, s6, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_lshl_b32 s8, s4, 12
+; GFX1250-GISEL-TRUE16-NEXT: s_min_i32 s6, s6, 13
+; GFX1250-GISEL-TRUE16-NEXT: s_lshl_b32 s5, s5, 9
+; GFX1250-GISEL-TRUE16-NEXT: s_lshr_b32 s10, s9, s6
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s3, s3, s8
+; GFX1250-GISEL-TRUE16-NEXT: s_lshl_b32 s6, s10, s6
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s5, s5, 0x7c00
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_lg_u32 s6, s9
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s6, 1, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s6, s10, s6
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_lt_i32 s4, 1
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s3, s6, s3
+; GFX1250-GISEL-TRUE16-NEXT: s_and_b32 s6, s3, 7
+; GFX1250-GISEL-TRUE16-NEXT: s_lshr_b32 s3, s3, 2
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_eq_u32 s6, 3
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s8, 1, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_gt_i32 s6, 5
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s6, 1, 0
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s6, s8, s6
+; GFX1250-GISEL-TRUE16-NEXT: s_add_co_i32 s3, s3, s6
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_gt_i32 s4, 30
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s3, 0x7c00, s3
+; GFX1250-GISEL-TRUE16-NEXT: s_cmp_eq_u32 s4, 0x40f
+; GFX1250-GISEL-TRUE16-NEXT: s_cselect_b32 s3, s5, s3
+; GFX1250-GISEL-TRUE16-NEXT: s_lshr_b32 s4, s7, 16
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-GISEL-TRUE16-NEXT: s_and_b32 s4, s4, 0x8000
+; GFX1250-GISEL-TRUE16-NEXT: s_or_b32 s3, s4, s3
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-GISEL-TRUE16-NEXT: s_pack_ll_b32_b16 s2, s2, s3
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s3, 0x31016000
+; GFX1250-GISEL-TRUE16-NEXT: v_mov_b32_e32 v0, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s2, -1
+; GFX1250-GISEL-TRUE16-NEXT: buffer_store_b32 v0, off, s[0:3], null
+; GFX1250-GISEL-TRUE16-NEXT: s_endpgm
+;
; GFX1250-GISEL-FAKE16-LABEL: fptrunc_v2f64_to_v2f16:
; GFX1250-GISEL-FAKE16: ; %bb.0: ; %entry
; GFX1250-GISEL-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -3481,6 +3956,27 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16_afn(
; GFX11-GISEL-FAKE16-NEXT: buffer_store_b32 v0, off, s[0:3], 0
; GFX11-GISEL-FAKE16-NEXT: s_endpgm
;
+; GFX1250-SDAG-TRUE16-LABEL: fptrunc_v2f64_to_v2f16_afn:
+; GFX1250-SDAG-TRUE16: ; %bb.0: ; %entry
+; GFX1250-SDAG-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s6, -1
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s7, 0x31016000
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s10, s6
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s11, s7
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s8, s2
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s9, s3
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s4, s0
+; GFX1250-SDAG-TRUE16-NEXT: buffer_load_b128 v[0:3], off, s[8:11], null
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s5, s1
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: v_cvt_f32_f64_e32 v2, v[2:3]
+; GFX1250-SDAG-TRUE16-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-TRUE16-NEXT: v_cvt_pk_f16_f32 v0, v0, v2
+; GFX1250-SDAG-TRUE16-NEXT: buffer_store_b32 v0, off, s[4:7], null
+; GFX1250-SDAG-TRUE16-NEXT: s_endpgm
+;
; GFX1250-SDAG-FAKE16-LABEL: fptrunc_v2f64_to_v2f16_afn:
; GFX1250-SDAG-FAKE16: ; %bb.0: ; %entry
; GFX1250-SDAG-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -3502,6 +3998,25 @@ define amdgpu_kernel void @fptrunc_v2f64_to_v2f16_afn(
; GFX1250-SDAG-FAKE16-NEXT: buffer_store_b32 v0, off, s[4:7], null
; GFX1250-SDAG-FAKE16-NEXT: s_endpgm
;
+; GFX1250-GISEL-TRUE16-LABEL: fptrunc_v2f64_to_v2f16_afn:
+; GFX1250-GISEL-TRUE16: ; %bb.0: ; %entry
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b128 s[4:7], s[2:3], 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_xcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s2, -1
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s3, 0x31016000
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: v_cvt_f32_f64_e32 v0, s[4:5]
+; GFX1250-GISEL-TRUE16-NEXT: v_cvt_f32_f64_e32 v1, s[6:7]
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX1250-GISEL-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.l, v0
+; GFX1250-GISEL-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.h, v1
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-GISEL-TRUE16-NEXT: v_pack_b32_f16 v0, v0.l, v0.h
+; GFX1250-GISEL-TRUE16-NEXT: buffer_store_b32 v0, off, s[0:3], null
+; GFX1250-GISEL-TRUE16-NEXT: s_endpgm
+;
; GFX1250-GISEL-FAKE16-LABEL: fptrunc_v2f64_to_v2f16_afn:
; GFX1250-GISEL-FAKE16: ; %bb.0: ; %entry
; GFX1250-GISEL-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -3710,6 +4225,26 @@ define amdgpu_kernel void @fneg_fptrunc_f32_to_f16(
; GFX11-GISEL-FAKE16-NEXT: buffer_store_b16 v0, off, s[0:3], 0
; GFX11-GISEL-FAKE16-NEXT: s_endpgm
;
+; GFX1250-SDAG-TRUE16-LABEL: fneg_fptrunc_f32_to_f16:
+; GFX1250-SDAG-TRUE16: ; %bb.0: ; %entry
+; GFX1250-SDAG-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s6, -1
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s7, 0x31016000
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s10, s6
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s11, s7
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s8, s2
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s9, s3
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s4, s0
+; GFX1250-SDAG-TRUE16-NEXT: buffer_load_b32 v0, off, s[8:11], null
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s5, s1
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: v_xor_b32_e32 v0, 0x80000000, v0
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.l, v0
+; GFX1250-SDAG-TRUE16-NEXT: buffer_store_b16 v0, off, s[4:7], null
+; GFX1250-SDAG-TRUE16-NEXT: s_endpgm
+;
; GFX1250-SDAG-FAKE16-LABEL: fneg_fptrunc_f32_to_f16:
; GFX1250-SDAG-FAKE16: ; %bb.0: ; %entry
; GFX1250-SDAG-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -3730,6 +4265,22 @@ define amdgpu_kernel void @fneg_fptrunc_f32_to_f16(
; GFX1250-SDAG-FAKE16-NEXT: buffer_store_b16 v0, off, s[4:7], null
; GFX1250-SDAG-FAKE16-NEXT: s_endpgm
;
+; GFX1250-GISEL-TRUE16-LABEL: fneg_fptrunc_f32_to_f16:
+; GFX1250-GISEL-TRUE16: ; %bb.0: ; %entry
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b32 s2, s[2:3], 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_xcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s3, 0x31016000
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_xor_b32 s2, s2, 0x80000000
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_3)
+; GFX1250-GISEL-TRUE16-NEXT: s_cvt_f16_f32 s2, s2
+; GFX1250-GISEL-TRUE16-NEXT: v_mov_b32_e32 v0, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s2, -1
+; GFX1250-GISEL-TRUE16-NEXT: buffer_store_b16 v0, off, s[0:3], null
+; GFX1250-GISEL-TRUE16-NEXT: s_endpgm
+;
; GFX1250-GISEL-FAKE16-LABEL: fneg_fptrunc_f32_to_f16:
; GFX1250-GISEL-FAKE16: ; %bb.0: ; %entry
; GFX1250-GISEL-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -3936,6 +4487,26 @@ define amdgpu_kernel void @fabs_fptrunc_f32_to_f16(
; GFX11-GISEL-FAKE16-NEXT: buffer_store_b16 v0, off, s[0:3], 0
; GFX11-GISEL-FAKE16-NEXT: s_endpgm
;
+; GFX1250-SDAG-TRUE16-LABEL: fabs_fptrunc_f32_to_f16:
+; GFX1250-SDAG-TRUE16: ; %bb.0: ; %entry
+; GFX1250-SDAG-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s6, -1
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s7, 0x31016000
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s10, s6
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s11, s7
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s8, s2
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s9, s3
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s4, s0
+; GFX1250-SDAG-TRUE16-NEXT: buffer_load_b32 v0, off, s[8:11], null
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s5, s1
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: v_and_b32_e32 v0, 0x7fffffff, v0
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.l, v0
+; GFX1250-SDAG-TRUE16-NEXT: buffer_store_b16 v0, off, s[4:7], null
+; GFX1250-SDAG-TRUE16-NEXT: s_endpgm
+;
; GFX1250-SDAG-FAKE16-LABEL: fabs_fptrunc_f32_to_f16:
; GFX1250-SDAG-FAKE16: ; %bb.0: ; %entry
; GFX1250-SDAG-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -3956,6 +4527,22 @@ define amdgpu_kernel void @fabs_fptrunc_f32_to_f16(
; GFX1250-SDAG-FAKE16-NEXT: buffer_store_b16 v0, off, s[4:7], null
; GFX1250-SDAG-FAKE16-NEXT: s_endpgm
;
+; GFX1250-GISEL-TRUE16-LABEL: fabs_fptrunc_f32_to_f16:
+; GFX1250-GISEL-TRUE16: ; %bb.0: ; %entry
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b32 s2, s[2:3], 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_xcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s3, 0x31016000
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_bitset0_b32 s2, 31
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_3)
+; GFX1250-GISEL-TRUE16-NEXT: s_cvt_f16_f32 s2, s2
+; GFX1250-GISEL-TRUE16-NEXT: v_mov_b32_e32 v0, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s2, -1
+; GFX1250-GISEL-TRUE16-NEXT: buffer_store_b16 v0, off, s[0:3], null
+; GFX1250-GISEL-TRUE16-NEXT: s_endpgm
+;
; GFX1250-GISEL-FAKE16-LABEL: fabs_fptrunc_f32_to_f16:
; GFX1250-GISEL-FAKE16: ; %bb.0: ; %entry
; GFX1250-GISEL-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -4162,6 +4749,26 @@ define amdgpu_kernel void @fneg_fabs_fptrunc_f32_to_f16(
; GFX11-GISEL-FAKE16-NEXT: buffer_store_b16 v0, off, s[0:3], 0
; GFX11-GISEL-FAKE16-NEXT: s_endpgm
;
+; GFX1250-SDAG-TRUE16-LABEL: fneg_fabs_fptrunc_f32_to_f16:
+; GFX1250-SDAG-TRUE16: ; %bb.0: ; %entry
+; GFX1250-SDAG-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s6, -1
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s7, 0x31016000
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s10, s6
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s11, s7
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s8, s2
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s9, s3
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s4, s0
+; GFX1250-SDAG-TRUE16-NEXT: buffer_load_b32 v0, off, s[8:11], null
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s5, s1
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: v_or_b32_e32 v0, 0x80000000, v0
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.l, v0
+; GFX1250-SDAG-TRUE16-NEXT: buffer_store_b16 v0, off, s[4:7], null
+; GFX1250-SDAG-TRUE16-NEXT: s_endpgm
+;
; GFX1250-SDAG-FAKE16-LABEL: fneg_fabs_fptrunc_f32_to_f16:
; GFX1250-SDAG-FAKE16: ; %bb.0: ; %entry
; GFX1250-SDAG-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -4182,6 +4789,22 @@ define amdgpu_kernel void @fneg_fabs_fptrunc_f32_to_f16(
; GFX1250-SDAG-FAKE16-NEXT: buffer_store_b16 v0, off, s[4:7], null
; GFX1250-SDAG-FAKE16-NEXT: s_endpgm
;
+; GFX1250-GISEL-TRUE16-LABEL: fneg_fabs_fptrunc_f32_to_f16:
+; GFX1250-GISEL-TRUE16: ; %bb.0: ; %entry
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b32 s2, s[2:3], 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_xcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s3, 0x31016000
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_bitset1_b32 s2, 31
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_3)
+; GFX1250-GISEL-TRUE16-NEXT: s_cvt_f16_f32 s2, s2
+; GFX1250-GISEL-TRUE16-NEXT: v_mov_b32_e32 v0, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s2, -1
+; GFX1250-GISEL-TRUE16-NEXT: buffer_store_b16 v0, off, s[0:3], null
+; GFX1250-GISEL-TRUE16-NEXT: s_endpgm
+;
; GFX1250-GISEL-FAKE16-LABEL: fneg_fabs_fptrunc_f32_to_f16:
; GFX1250-GISEL-FAKE16: ; %bb.0: ; %entry
; GFX1250-GISEL-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -4396,6 +5019,26 @@ define amdgpu_kernel void @fptrunc_f32_to_f16_zext_i32(
; GFX11-GISEL-FAKE16-NEXT: buffer_store_b32 v0, off, s[0:3], 0
; GFX11-GISEL-FAKE16-NEXT: s_endpgm
;
+; GFX1250-SDAG-TRUE16-LABEL: fptrunc_f32_to_f16_zext_i32:
+; GFX1250-SDAG-TRUE16: ; %bb.0: ; %entry
+; GFX1250-SDAG-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s6, -1
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s7, 0x31016000
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s10, s6
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s11, s7
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s8, s2
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s9, s3
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s4, s0
+; GFX1250-SDAG-TRUE16-NEXT: buffer_load_b32 v0, off, s[8:11], null
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s5, s1
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.l, v0
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-TRUE16-NEXT: v_and_b32_e32 v0, 0xffff, v0
+; GFX1250-SDAG-TRUE16-NEXT: buffer_store_b32 v0, off, s[4:7], null
+; GFX1250-SDAG-TRUE16-NEXT: s_endpgm
+;
; GFX1250-SDAG-FAKE16-LABEL: fptrunc_f32_to_f16_zext_i32:
; GFX1250-SDAG-FAKE16: ; %bb.0: ; %entry
; GFX1250-SDAG-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -4416,6 +5059,22 @@ define amdgpu_kernel void @fptrunc_f32_to_f16_zext_i32(
; GFX1250-SDAG-FAKE16-NEXT: buffer_store_b32 v0, off, s[4:7], null
; GFX1250-SDAG-FAKE16-NEXT: s_endpgm
;
+; GFX1250-GISEL-TRUE16-LABEL: fptrunc_f32_to_f16_zext_i32:
+; GFX1250-GISEL-TRUE16: ; %bb.0: ; %entry
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b32 s2, s[2:3], 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_xcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s3, 0x31016000
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_cvt_f16_f32 s2, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_3) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-GISEL-TRUE16-NEXT: s_and_b32 s2, 0xffff, s2
+; GFX1250-GISEL-TRUE16-NEXT: v_mov_b32_e32 v0, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s2, -1
+; GFX1250-GISEL-TRUE16-NEXT: buffer_store_b32 v0, off, s[0:3], null
+; GFX1250-GISEL-TRUE16-NEXT: s_endpgm
+;
; GFX1250-GISEL-FAKE16-LABEL: fptrunc_f32_to_f16_zext_i32:
; GFX1250-GISEL-FAKE16: ; %bb.0: ; %entry
; GFX1250-GISEL-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -4630,6 +5289,27 @@ define amdgpu_kernel void @fptrunc_fabs_f32_to_f16_zext_i32(
; GFX11-GISEL-FAKE16-NEXT: buffer_store_b32 v0, off, s[0:3], 0
; GFX11-GISEL-FAKE16-NEXT: s_endpgm
;
+; GFX1250-SDAG-TRUE16-LABEL: fptrunc_fabs_f32_to_f16_zext_i32:
+; GFX1250-SDAG-TRUE16: ; %bb.0: ; %entry
+; GFX1250-SDAG-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s6, -1
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s7, 0x31016000
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s10, s6
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s11, s7
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s8, s2
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s9, s3
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s4, s0
+; GFX1250-SDAG-TRUE16-NEXT: buffer_load_b32 v0, off, s[8:11], null
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s5, s1
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: v_and_b32_e32 v0, 0x7fffffff, v0
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250-SDAG-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.l, v0
+; GFX1250-SDAG-TRUE16-NEXT: v_and_b32_e32 v0, 0xffff, v0
+; GFX1250-SDAG-TRUE16-NEXT: buffer_store_b32 v0, off, s[4:7], null
+; GFX1250-SDAG-TRUE16-NEXT: s_endpgm
+;
; GFX1250-SDAG-FAKE16-LABEL: fptrunc_fabs_f32_to_f16_zext_i32:
; GFX1250-SDAG-FAKE16: ; %bb.0: ; %entry
; GFX1250-SDAG-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -4651,6 +5331,24 @@ define amdgpu_kernel void @fptrunc_fabs_f32_to_f16_zext_i32(
; GFX1250-SDAG-FAKE16-NEXT: buffer_store_b32 v0, off, s[4:7], null
; GFX1250-SDAG-FAKE16-NEXT: s_endpgm
;
+; GFX1250-GISEL-TRUE16-LABEL: fptrunc_fabs_f32_to_f16_zext_i32:
+; GFX1250-GISEL-TRUE16: ; %bb.0: ; %entry
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b32 s2, s[2:3], 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_xcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s3, 0x31016000
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_bitset0_b32 s2, 31
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_3)
+; GFX1250-GISEL-TRUE16-NEXT: s_cvt_f16_f32 s2, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_and_b32 s2, 0xffff, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-GISEL-TRUE16-NEXT: v_mov_b32_e32 v0, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s2, -1
+; GFX1250-GISEL-TRUE16-NEXT: buffer_store_b32 v0, off, s[0:3], null
+; GFX1250-GISEL-TRUE16-NEXT: s_endpgm
+;
; GFX1250-GISEL-FAKE16-LABEL: fptrunc_fabs_f32_to_f16_zext_i32:
; GFX1250-GISEL-FAKE16: ; %bb.0: ; %entry
; GFX1250-GISEL-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -4877,6 +5575,26 @@ define amdgpu_kernel void @fptrunc_f32_to_f16_sext_i32(
; GFX11-GISEL-FAKE16-NEXT: buffer_store_b32 v0, off, s[0:3], 0
; GFX11-GISEL-FAKE16-NEXT: s_endpgm
;
+; GFX1250-SDAG-TRUE16-LABEL: fptrunc_f32_to_f16_sext_i32:
+; GFX1250-SDAG-TRUE16: ; %bb.0: ; %entry
+; GFX1250-SDAG-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s6, -1
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s7, 0x31016000
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s10, s6
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s11, s7
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s8, s2
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s9, s3
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s4, s0
+; GFX1250-SDAG-TRUE16-NEXT: buffer_load_b32 v0, off, s[8:11], null
+; GFX1250-SDAG-TRUE16-NEXT: s_mov_b32 s5, s1
+; GFX1250-SDAG-TRUE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250-SDAG-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.l, v0
+; GFX1250-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-TRUE16-NEXT: v_bfe_i32 v0, v0, 0, 16
+; GFX1250-SDAG-TRUE16-NEXT: buffer_store_b32 v0, off, s[4:7], null
+; GFX1250-SDAG-TRUE16-NEXT: s_endpgm
+;
; GFX1250-SDAG-FAKE16-LABEL: fptrunc_f32_to_f16_sext_i32:
; GFX1250-SDAG-FAKE16: ; %bb.0: ; %entry
; GFX1250-SDAG-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
@@ -4897,6 +5615,22 @@ define amdgpu_kernel void @fptrunc_f32_to_f16_sext_i32(
; GFX1250-SDAG-FAKE16-NEXT: buffer_store_b32 v0, off, s[4:7], null
; GFX1250-SDAG-FAKE16-NEXT: s_endpgm
;
+; GFX1250-GISEL-TRUE16-LABEL: fptrunc_f32_to_f16_sext_i32:
+; GFX1250-GISEL-TRUE16: ; %bb.0: ; %entry
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_load_b32 s2, s[2:3], 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_xcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s3, 0x31016000
+; GFX1250-GISEL-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-GISEL-TRUE16-NEXT: s_cvt_f16_f32 s2, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_delay_alu instid0(SALU_CYCLE_3) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-GISEL-TRUE16-NEXT: s_sext_i32_i16 s2, s2
+; GFX1250-GISEL-TRUE16-NEXT: v_mov_b32_e32 v0, s2
+; GFX1250-GISEL-TRUE16-NEXT: s_mov_b32 s2, -1
+; GFX1250-GISEL-TRUE16-NEXT: buffer_store_b32 v0, off, s[0:3], null
+; GFX1250-GISEL-TRUE16-NEXT: s_endpgm
+;
; GFX1250-GISEL-FAKE16-LABEL: fptrunc_f32_to_f16_sext_i32:
; GFX1250-GISEL-FAKE16: ; %bb.0: ; %entry
; GFX1250-GISEL-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
diff --git a/llvm/test/CodeGen/AMDGPU/implicitarg-offset-attributes.ll b/llvm/test/CodeGen/AMDGPU/implicitarg-offset-attributes.ll
index 3089054..32f7d6b 100644
--- a/llvm/test/CodeGen/AMDGPU/implicitarg-offset-attributes.ll
+++ b/llvm/test/CodeGen/AMDGPU/implicitarg-offset-attributes.ll
@@ -276,23 +276,23 @@ attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memo
;.
; V4: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
-; V4: attributes #[[ATTR1]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
-; V4: attributes #[[ATTR2]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
-; V4: attributes #[[ATTR3]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
-; V4: attributes #[[ATTR4]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-default-queue" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
-; V4: attributes #[[ATTR5]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
+; V4: attributes #[[ATTR1]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
+; V4: attributes #[[ATTR2]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
+; V4: attributes #[[ATTR3]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
+; V4: attributes #[[ATTR4]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-default-queue" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
+; V4: attributes #[[ATTR5]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
;.
; V5: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
-; V5: attributes #[[ATTR1]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
-; V5: attributes #[[ATTR2]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
-; V5: attributes #[[ATTR3]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-default-queue" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
-; V5: attributes #[[ATTR4]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
+; V5: attributes #[[ATTR1]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
+; V5: attributes #[[ATTR2]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
+; V5: attributes #[[ATTR3]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-default-queue" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
+; V5: attributes #[[ATTR4]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
;.
; V6: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
-; V6: attributes #[[ATTR1]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
-; V6: attributes #[[ATTR2]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
-; V6: attributes #[[ATTR3]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-default-queue" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
-; V6: attributes #[[ATTR4]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
+; V6: attributes #[[ATTR1]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
+; V6: attributes #[[ATTR2]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
+; V6: attributes #[[ATTR3]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-default-queue" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
+; V6: attributes #[[ATTR4]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-multigrid-sync-arg" "uniform-work-group-size"="false" }
;.
; V4: [[META0:![0-9]+]] = !{i32 1, !"amdhsa_code_object_version", i32 400}
;.
diff --git a/llvm/test/CodeGen/AMDGPU/indirect-call-set-from-other-function.ll b/llvm/test/CodeGen/AMDGPU/indirect-call-set-from-other-function.ll
index d3ef1b7..a0f5d2f 100644
--- a/llvm/test/CodeGen/AMDGPU/indirect-call-set-from-other-function.ll
+++ b/llvm/test/CodeGen/AMDGPU/indirect-call-set-from-other-function.ll
@@ -68,6 +68,6 @@ if.end:
ret void
}
;.
-; CHECK: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR0]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
; CHECK: attributes #[[ATTR1]] = { "uniform-work-group-size"="false" }
;.
diff --git a/llvm/test/CodeGen/AMDGPU/issue120256-annotate-constexpr-addrspacecast.ll b/llvm/test/CodeGen/AMDGPU/issue120256-annotate-constexpr-addrspacecast.ll
index 71a330e..4e952b6 100644
--- a/llvm/test/CodeGen/AMDGPU/issue120256-annotate-constexpr-addrspacecast.ll
+++ b/llvm/test/CodeGen/AMDGPU/issue120256-annotate-constexpr-addrspacecast.ll
@@ -55,8 +55,8 @@ define amdgpu_kernel void @issue120256_private(ptr addrspace(1) %out) {
; FIXME: Inference of amdgpu-no-queue-ptr should not depend on code object version.
!0 = !{i32 1, !"amdhsa_code_object_version", i32 400}
;.
-; CHECK: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx803" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR1]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx803" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR0]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx803" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR1]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx803" "uniform-work-group-size"="false" }
;.
; CHECK: [[META0:![0-9]+]] = !{i32 1, !"amdhsa_code_object_version", i32 400}
;.
diff --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.fp8.f16.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.fp8.f16.ll
index 6ccfad7..ff47563 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.fp8.f16.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.fp8.f16.ll
@@ -14,7 +14,7 @@ define amdgpu_ps void @test_cvt_pk_bf8_f16_v(<2 x half> %a, ptr addrspace(1) %ou
; GFX1250-SDAG-REAL16: ; %bb.0:
; GFX1250-SDAG-REAL16-NEXT: v_dual_mov_b32 v3, v2 :: v_dual_mov_b32 v2, v1
; GFX1250-SDAG-REAL16-NEXT: v_cvt_pk_bf8_f16 v0.l, v0
-; GFX1250-SDAG-REAL16-NEXT: flat_store_b16 v[2:3], v0
+; GFX1250-SDAG-REAL16-NEXT: global_store_b16 v[2:3], v0, off
; GFX1250-SDAG-REAL16-NEXT: s_endpgm
;
; GFX1250-SDAG-FAKE16-LABEL: test_cvt_pk_bf8_f16_v:
@@ -28,7 +28,7 @@ define amdgpu_ps void @test_cvt_pk_bf8_f16_v(<2 x half> %a, ptr addrspace(1) %ou
; GFX1250-GISEL-REAL16: ; %bb.0:
; GFX1250-GISEL-REAL16-NEXT: v_dual_mov_b32 v4, v1 :: v_dual_mov_b32 v5, v2
; GFX1250-GISEL-REAL16-NEXT: v_cvt_pk_bf8_f16 v0.l, v0
-; GFX1250-GISEL-REAL16-NEXT: flat_store_b16 v[4:5], v0
+; GFX1250-GISEL-REAL16-NEXT: global_store_b16 v[4:5], v0, off
; GFX1250-GISEL-REAL16-NEXT: s_endpgm
;
; GFX1250-GISEL-FAKE16-LABEL: test_cvt_pk_bf8_f16_v:
@@ -46,7 +46,7 @@ define amdgpu_ps void @test_cvt_pk_bf8_f16_s(<2 x half> inreg %a, ptr addrspace(
; GFX1250-SDAG-REAL16-LABEL: test_cvt_pk_bf8_f16_s:
; GFX1250-SDAG-REAL16: ; %bb.0:
; GFX1250-SDAG-REAL16-NEXT: v_cvt_pk_bf8_f16 v2.l, s0
-; GFX1250-SDAG-REAL16-NEXT: flat_store_b16 v[0:1], v2
+; GFX1250-SDAG-REAL16-NEXT: global_store_b16 v[0:1], v2, off
; GFX1250-SDAG-REAL16-NEXT: s_endpgm
;
; GFX1250-SDAG-FAKE16-LABEL: test_cvt_pk_bf8_f16_s:
@@ -58,7 +58,7 @@ define amdgpu_ps void @test_cvt_pk_bf8_f16_s(<2 x half> inreg %a, ptr addrspace(
; GFX1250-GISEL-REAL16-LABEL: test_cvt_pk_bf8_f16_s:
; GFX1250-GISEL-REAL16: ; %bb.0:
; GFX1250-GISEL-REAL16-NEXT: v_cvt_pk_bf8_f16 v2.l, s0
-; GFX1250-GISEL-REAL16-NEXT: flat_store_b16 v[0:1], v2
+; GFX1250-GISEL-REAL16-NEXT: global_store_b16 v[0:1], v2, off
; GFX1250-GISEL-REAL16-NEXT: s_endpgm
;
; GFX1250-GISEL-FAKE16-LABEL: test_cvt_pk_bf8_f16_s:
@@ -75,7 +75,7 @@ define amdgpu_ps void @test_cvt_pk_bf8_f16_l(ptr addrspace(1) %out) {
; GFX1250-SDAG-REAL16-LABEL: test_cvt_pk_bf8_f16_l:
; GFX1250-SDAG-REAL16: ; %bb.0:
; GFX1250-SDAG-REAL16-NEXT: v_cvt_pk_bf8_f16 v2.l, 0x56400000
-; GFX1250-SDAG-REAL16-NEXT: flat_store_b16 v[0:1], v2
+; GFX1250-SDAG-REAL16-NEXT: global_store_b16 v[0:1], v2, off
; GFX1250-SDAG-REAL16-NEXT: s_endpgm
;
; GFX1250-SDAG-FAKE16-LABEL: test_cvt_pk_bf8_f16_l:
@@ -87,7 +87,7 @@ define amdgpu_ps void @test_cvt_pk_bf8_f16_l(ptr addrspace(1) %out) {
; GFX1250-GISEL-REAL16-LABEL: test_cvt_pk_bf8_f16_l:
; GFX1250-GISEL-REAL16: ; %bb.0:
; GFX1250-GISEL-REAL16-NEXT: v_cvt_pk_bf8_f16 v2.l, 0x56400000
-; GFX1250-GISEL-REAL16-NEXT: flat_store_b16 v[0:1], v2
+; GFX1250-GISEL-REAL16-NEXT: global_store_b16 v[0:1], v2, off
; GFX1250-GISEL-REAL16-NEXT: s_endpgm
;
; GFX1250-GISEL-FAKE16-LABEL: test_cvt_pk_bf8_f16_l:
@@ -105,7 +105,7 @@ define amdgpu_ps void @test_cvt_pk_fp8_f16_v(<2 x half> %a, ptr addrspace(1) %ou
; GFX1250-SDAG-REAL16: ; %bb.0:
; GFX1250-SDAG-REAL16-NEXT: v_dual_mov_b32 v3, v2 :: v_dual_mov_b32 v2, v1
; GFX1250-SDAG-REAL16-NEXT: v_cvt_pk_fp8_f16 v0.l, v0
-; GFX1250-SDAG-REAL16-NEXT: flat_store_b16 v[2:3], v0
+; GFX1250-SDAG-REAL16-NEXT: global_store_b16 v[2:3], v0, off
; GFX1250-SDAG-REAL16-NEXT: s_endpgm
;
; GFX1250-SDAG-FAKE16-LABEL: test_cvt_pk_fp8_f16_v:
@@ -119,7 +119,7 @@ define amdgpu_ps void @test_cvt_pk_fp8_f16_v(<2 x half> %a, ptr addrspace(1) %ou
; GFX1250-GISEL-REAL16: ; %bb.0:
; GFX1250-GISEL-REAL16-NEXT: v_dual_mov_b32 v4, v1 :: v_dual_mov_b32 v5, v2
; GFX1250-GISEL-REAL16-NEXT: v_cvt_pk_fp8_f16 v0.l, v0
-; GFX1250-GISEL-REAL16-NEXT: flat_store_b16 v[4:5], v0
+; GFX1250-GISEL-REAL16-NEXT: global_store_b16 v[4:5], v0, off
; GFX1250-GISEL-REAL16-NEXT: s_endpgm
;
; GFX1250-GISEL-FAKE16-LABEL: test_cvt_pk_fp8_f16_v:
@@ -137,7 +137,7 @@ define amdgpu_ps void @test_cvt_pk_fp8_f16_s(<2 x half> inreg %a, ptr addrspace(
; GFX1250-SDAG-REAL16-LABEL: test_cvt_pk_fp8_f16_s:
; GFX1250-SDAG-REAL16: ; %bb.0:
; GFX1250-SDAG-REAL16-NEXT: v_cvt_pk_fp8_f16 v2.l, s0
-; GFX1250-SDAG-REAL16-NEXT: flat_store_b16 v[0:1], v2
+; GFX1250-SDAG-REAL16-NEXT: global_store_b16 v[0:1], v2, off
; GFX1250-SDAG-REAL16-NEXT: s_endpgm
;
; GFX1250-SDAG-FAKE16-LABEL: test_cvt_pk_fp8_f16_s:
@@ -149,7 +149,7 @@ define amdgpu_ps void @test_cvt_pk_fp8_f16_s(<2 x half> inreg %a, ptr addrspace(
; GFX1250-GISEL-REAL16-LABEL: test_cvt_pk_fp8_f16_s:
; GFX1250-GISEL-REAL16: ; %bb.0:
; GFX1250-GISEL-REAL16-NEXT: v_cvt_pk_fp8_f16 v2.l, s0
-; GFX1250-GISEL-REAL16-NEXT: flat_store_b16 v[0:1], v2
+; GFX1250-GISEL-REAL16-NEXT: global_store_b16 v[0:1], v2, off
; GFX1250-GISEL-REAL16-NEXT: s_endpgm
;
; GFX1250-GISEL-FAKE16-LABEL: test_cvt_pk_fp8_f16_s:
@@ -166,7 +166,7 @@ define amdgpu_ps void @test_cvt_pk_fp8_f16_l(ptr addrspace(1) %out) {
; GFX1250-SDAG-REAL16-LABEL: test_cvt_pk_fp8_f16_l:
; GFX1250-SDAG-REAL16: ; %bb.0:
; GFX1250-SDAG-REAL16-NEXT: v_cvt_pk_fp8_f16 v2.l, 0x56400000
-; GFX1250-SDAG-REAL16-NEXT: flat_store_b16 v[0:1], v2
+; GFX1250-SDAG-REAL16-NEXT: global_store_b16 v[0:1], v2, off
; GFX1250-SDAG-REAL16-NEXT: s_endpgm
;
; GFX1250-SDAG-FAKE16-LABEL: test_cvt_pk_fp8_f16_l:
@@ -178,7 +178,7 @@ define amdgpu_ps void @test_cvt_pk_fp8_f16_l(ptr addrspace(1) %out) {
; GFX1250-GISEL-REAL16-LABEL: test_cvt_pk_fp8_f16_l:
; GFX1250-GISEL-REAL16: ; %bb.0:
; GFX1250-GISEL-REAL16-NEXT: v_cvt_pk_fp8_f16 v2.l, 0x56400000
-; GFX1250-GISEL-REAL16-NEXT: flat_store_b16 v[0:1], v2
+; GFX1250-GISEL-REAL16-NEXT: global_store_b16 v[0:1], v2, off
; GFX1250-GISEL-REAL16-NEXT: s_endpgm
;
; GFX1250-GISEL-FAKE16-LABEL: test_cvt_pk_fp8_f16_l:
diff --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.rcp.bf16.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.rcp.bf16.ll
index 1e44a09..dbea832 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.rcp.bf16.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.rcp.bf16.ll
@@ -15,7 +15,7 @@ define amdgpu_kernel void @rcp_bf16(ptr addrspace(1) %out, bfloat %src) #1 {
; SDAG-TRUE16-NEXT: v_mov_b32_e32 v1, 0
; SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0
; SDAG-TRUE16-NEXT: v_rcp_bf16_e32 v0.l, s2
-; SDAG-TRUE16-NEXT: flat_store_b16 v1, v0, s[0:1]
+; SDAG-TRUE16-NEXT: global_store_b16 v1, v0, s[0:1]
; SDAG-TRUE16-NEXT: s_endpgm
;
; SDAG-FAKE16-LABEL: rcp_bf16:
@@ -35,10 +35,10 @@ define amdgpu_kernel void @rcp_bf16_constant_4(ptr addrspace(1) %out) #1 {
; SDAG-TRUE16-LABEL: rcp_bf16_constant_4:
; SDAG-TRUE16: ; %bb.0:
; SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x0
-; SDAG-TRUE16-NEXT: v_mov_b16_e32 v0.l, 0x3e80
; SDAG-TRUE16-NEXT: v_mov_b32_e32 v1, 0
+; SDAG-TRUE16-NEXT: v_mov_b16_e32 v0.l, 0x3e80
; SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0
-; SDAG-TRUE16-NEXT: flat_store_b16 v1, v0, s[0:1]
+; SDAG-TRUE16-NEXT: global_store_b16 v1, v0, s[0:1]
; SDAG-TRUE16-NEXT: s_endpgm
;
; SDAG-FAKE16-LABEL: rcp_bf16_constant_4:
@@ -57,10 +57,10 @@ define amdgpu_kernel void @rcp_bf16_constant_100(ptr addrspace(1) %out) #1 {
; SDAG-TRUE16-LABEL: rcp_bf16_constant_100:
; SDAG-TRUE16: ; %bb.0:
; SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x0
-; SDAG-TRUE16-NEXT: v_mov_b16_e32 v0.l, 0x3c24
; SDAG-TRUE16-NEXT: v_mov_b32_e32 v1, 0
+; SDAG-TRUE16-NEXT: v_mov_b16_e32 v0.l, 0x3c24
; SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0
-; SDAG-TRUE16-NEXT: flat_store_b16 v1, v0, s[0:1]
+; SDAG-TRUE16-NEXT: global_store_b16 v1, v0, s[0:1]
; SDAG-TRUE16-NEXT: s_endpgm
;
; SDAG-FAKE16-LABEL: rcp_bf16_constant_100:
@@ -79,10 +79,10 @@ define amdgpu_kernel void @rcp_undef_bf16(ptr addrspace(1) %out) #1 {
; SDAG-TRUE16-LABEL: rcp_undef_bf16:
; SDAG-TRUE16: ; %bb.0:
; SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x0
-; SDAG-TRUE16-NEXT: v_mov_b16_e32 v0.l, 0x7fc0
; SDAG-TRUE16-NEXT: v_mov_b32_e32 v1, 0
+; SDAG-TRUE16-NEXT: v_mov_b16_e32 v0.l, 0x7fc0
; SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0
-; SDAG-TRUE16-NEXT: flat_store_b16 v1, v0, s[0:1]
+; SDAG-TRUE16-NEXT: global_store_b16 v1, v0, s[0:1]
; SDAG-TRUE16-NEXT: s_endpgm
;
; SDAG-FAKE16-LABEL: rcp_undef_bf16:
diff --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.rsq.bf16.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.rsq.bf16.ll
index 42d12fd..662dc613 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.rsq.bf16.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.rsq.bf16.ll
@@ -15,7 +15,7 @@ define amdgpu_kernel void @rsq_bf16(ptr addrspace(1) %out, bfloat %src) #1 {
; SDAG-REAL16-NEXT: v_mov_b32_e32 v1, 0
; SDAG-REAL16-NEXT: s_wait_kmcnt 0x0
; SDAG-REAL16-NEXT: v_rsq_bf16_e32 v0.l, s2
-; SDAG-REAL16-NEXT: flat_store_b16 v1, v0, s[0:1]
+; SDAG-REAL16-NEXT: global_store_b16 v1, v0, s[0:1]
; SDAG-REAL16-NEXT: s_endpgm
;
; SDAG-FAKE16-LABEL: rsq_bf16:
@@ -38,7 +38,7 @@ define amdgpu_kernel void @rsq_bf16_constant_4(ptr addrspace(1) %out) #1 {
; SDAG-REAL16-NEXT: v_rsq_bf16_e32 v0.l, 4.0
; SDAG-REAL16-NEXT: v_mov_b32_e32 v1, 0
; SDAG-REAL16-NEXT: s_wait_kmcnt 0x0
-; SDAG-REAL16-NEXT: flat_store_b16 v1, v0, s[0:1]
+; SDAG-REAL16-NEXT: global_store_b16 v1, v0, s[0:1]
; SDAG-REAL16-NEXT: s_endpgm
;
; SDAG-FAKE16-LABEL: rsq_bf16_constant_4:
@@ -61,7 +61,7 @@ define amdgpu_kernel void @rsq_bf16_constant_100(ptr addrspace(1) %out) #1 {
; SDAG-REAL16-NEXT: v_rsq_bf16_e32 v0.l, 0x42c8
; SDAG-REAL16-NEXT: v_mov_b32_e32 v1, 0
; SDAG-REAL16-NEXT: s_wait_kmcnt 0x0
-; SDAG-REAL16-NEXT: flat_store_b16 v1, v0, s[0:1]
+; SDAG-REAL16-NEXT: global_store_b16 v1, v0, s[0:1]
; SDAG-REAL16-NEXT: s_endpgm
;
; SDAG-FAKE16-LABEL: rsq_bf16_constant_100:
diff --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.tanh.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.tanh.ll
index dd89f80..ba769ef 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.tanh.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.tanh.ll
@@ -100,7 +100,7 @@ define amdgpu_kernel void @tanh_f16(ptr addrspace(1) %out, half %src) #1 {
; SDAG-REAL16-NEXT: v_mov_b32_e32 v1, 0
; SDAG-REAL16-NEXT: s_wait_kmcnt 0x0
; SDAG-REAL16-NEXT: v_tanh_f16_e32 v0.l, s2
-; SDAG-REAL16-NEXT: flat_store_b16 v1, v0, s[0:1]
+; SDAG-REAL16-NEXT: global_store_b16 v1, v0, s[0:1]
; SDAG-REAL16-NEXT: s_endpgm
;
; SDAG-FAKE16-LABEL: tanh_f16:
@@ -123,7 +123,7 @@ define amdgpu_kernel void @tanh_f16_constant_4.0(ptr addrspace(1) %out) #1 {
; SDAG-REAL16-NEXT: v_tanh_f16_e32 v0.l, 4.0
; SDAG-REAL16-NEXT: v_mov_b32_e32 v1, 0
; SDAG-REAL16-NEXT: s_wait_kmcnt 0x0
-; SDAG-REAL16-NEXT: flat_store_b16 v1, v0, s[0:1]
+; SDAG-REAL16-NEXT: global_store_b16 v1, v0, s[0:1]
; SDAG-REAL16-NEXT: s_endpgm
;
; SDAG-FAKE16-LABEL: tanh_f16_constant_4.0:
@@ -146,7 +146,7 @@ define amdgpu_kernel void @tanh_f16_constant_100.0(ptr addrspace(1) %out) #1 {
; SDAG-REAL16-NEXT: v_tanh_f16_e32 v0.l, 0x5640
; SDAG-REAL16-NEXT: v_mov_b32_e32 v1, 0
; SDAG-REAL16-NEXT: s_wait_kmcnt 0x0
-; SDAG-REAL16-NEXT: flat_store_b16 v1, v0, s[0:1]
+; SDAG-REAL16-NEXT: global_store_b16 v1, v0, s[0:1]
; SDAG-REAL16-NEXT: s_endpgm
;
; SDAG-FAKE16-LABEL: tanh_f16_constant_100.0:
@@ -182,7 +182,7 @@ define amdgpu_kernel void @tanh_bf16(ptr addrspace(1) %out, bfloat %src) #1 {
; SDAG-REAL16-NEXT: v_mov_b32_e32 v1, 0
; SDAG-REAL16-NEXT: s_wait_kmcnt 0x0
; SDAG-REAL16-NEXT: v_tanh_bf16_e32 v0.l, s2
-; SDAG-REAL16-NEXT: flat_store_b16 v1, v0, s[0:1]
+; SDAG-REAL16-NEXT: global_store_b16 v1, v0, s[0:1]
; SDAG-REAL16-NEXT: s_endpgm
;
; SDAG-FAKE16-LABEL: tanh_bf16:
@@ -205,7 +205,7 @@ define amdgpu_kernel void @tanh_bf16_constant_4(ptr addrspace(1) %out) #1 {
; SDAG-REAL16-NEXT: v_tanh_bf16_e32 v0.l, 4.0
; SDAG-REAL16-NEXT: v_mov_b32_e32 v1, 0
; SDAG-REAL16-NEXT: s_wait_kmcnt 0x0
-; SDAG-REAL16-NEXT: flat_store_b16 v1, v0, s[0:1]
+; SDAG-REAL16-NEXT: global_store_b16 v1, v0, s[0:1]
; SDAG-REAL16-NEXT: s_endpgm
;
; SDAG-FAKE16-LABEL: tanh_bf16_constant_4:
@@ -228,7 +228,7 @@ define amdgpu_kernel void @tanh_bf16_constant_100(ptr addrspace(1) %out) #1 {
; SDAG-REAL16-NEXT: v_tanh_bf16_e32 v0.l, 0x42c8
; SDAG-REAL16-NEXT: v_mov_b32_e32 v1, 0
; SDAG-REAL16-NEXT: s_wait_kmcnt 0x0
-; SDAG-REAL16-NEXT: flat_store_b16 v1, v0, s[0:1]
+; SDAG-REAL16-NEXT: global_store_b16 v1, v0, s[0:1]
; SDAG-REAL16-NEXT: s_endpgm
;
; SDAG-FAKE16-LABEL: tanh_bf16_constant_100:
diff --git a/llvm/test/CodeGen/AMDGPU/min.ll b/llvm/test/CodeGen/AMDGPU/min.ll
index 6a3d31f..0458a64 100644
--- a/llvm/test/CodeGen/AMDGPU/min.ll
+++ b/llvm/test/CodeGen/AMDGPU/min.ll
@@ -6,9 +6,7 @@
; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 < %s | FileCheck --check-prefix=GFX10 %s
; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+real-true16 -amdgpu-enable-vopd=0 < %s | FileCheck --check-prefixes=GFX11,GFX11-TRUE16 %s
; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=-real-true16 -amdgpu-enable-vopd=0 < %s | FileCheck --check-prefixes=GFX11,GFX11-FAKE16 %s
-; TODO: FIXME-TRUE16 - Enable this llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1250 -mattr=+real-true16 -amdgpu-enable-vopd=0 < %s | FileCheck --check-prefixes=GFX1250,GFX1250-TRUE16 %s
-; Crashing on v_test_imin_slt_i16
-; LLVM ERROR: Cannot select: 0x5f895f65b050: i16,ch = load<(load (s16) from %ir.b.gep, addrspace 1)>
+; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1250 -mattr=+real-true16 -amdgpu-enable-vopd=0 < %s | FileCheck --check-prefixes=GFX1250,GFX1250-TRUE16 %s
; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1250 -mattr=-real-true16 -amdgpu-enable-vopd=0 < %s | FileCheck --check-prefixes=GFX1250,GFX1250-FAKE16 %s
define amdgpu_kernel void @v_test_imin_sle_i32(ptr addrspace(1) %out, ptr addrspace(1) %a.ptr, ptr addrspace(1) %b.ptr) #0 {
@@ -1482,20 +1480,35 @@ define amdgpu_kernel void @v_test_imin_slt_i16(ptr addrspace(1) %out, ptr addrsp
; GFX11-FAKE16-NEXT: global_store_b16 v0, v1, s[0:1]
; GFX11-FAKE16-NEXT: s_endpgm
;
-; GFX1250-LABEL: v_test_imin_slt_i16:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_clause 0x1
-; GFX1250-NEXT: s_load_b128 s[0:3], s[4:5], 0x0
-; GFX1250-NEXT: s_load_b64 s[6:7], s[4:5], 0x10
-; GFX1250-NEXT: v_and_b32_e32 v0, 0x3ff, v0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: s_clause 0x1
-; GFX1250-NEXT: global_load_u16 v1, v0, s[2:3] scale_offset
-; GFX1250-NEXT: global_load_u16 v2, v0, s[6:7] scale_offset
-; GFX1250-NEXT: s_wait_loadcnt 0x0
-; GFX1250-NEXT: v_min_i16 v1, v1, v2
-; GFX1250-NEXT: global_store_b16 v0, v1, s[0:1] scale_offset
-; GFX1250-NEXT: s_endpgm
+; GFX1250-TRUE16-LABEL: v_test_imin_slt_i16:
+; GFX1250-TRUE16: ; %bb.0:
+; GFX1250-TRUE16-NEXT: s_clause 0x1
+; GFX1250-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x0
+; GFX1250-TRUE16-NEXT: s_load_b64 s[6:7], s[4:5], 0x10
+; GFX1250-TRUE16-NEXT: v_and_b32_e32 v1, 0x3ff, v0
+; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-TRUE16-NEXT: s_clause 0x1
+; GFX1250-TRUE16-NEXT: global_load_u16 v0, v1, s[2:3] scale_offset
+; GFX1250-TRUE16-NEXT: global_load_u16 v2, v1, s[6:7] scale_offset
+; GFX1250-TRUE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250-TRUE16-NEXT: v_min_i16 v0.l, v0.l, v2.l
+; GFX1250-TRUE16-NEXT: global_store_b16 v1, v0, s[0:1] scale_offset
+; GFX1250-TRUE16-NEXT: s_endpgm
+;
+; GFX1250-FAKE16-LABEL: v_test_imin_slt_i16:
+; GFX1250-FAKE16: ; %bb.0:
+; GFX1250-FAKE16-NEXT: s_clause 0x1
+; GFX1250-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x0
+; GFX1250-FAKE16-NEXT: s_load_b64 s[6:7], s[4:5], 0x10
+; GFX1250-FAKE16-NEXT: v_and_b32_e32 v0, 0x3ff, v0
+; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-FAKE16-NEXT: s_clause 0x1
+; GFX1250-FAKE16-NEXT: global_load_u16 v1, v0, s[2:3] scale_offset
+; GFX1250-FAKE16-NEXT: global_load_u16 v2, v0, s[6:7] scale_offset
+; GFX1250-FAKE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250-FAKE16-NEXT: v_min_i16 v1, v1, v2
+; GFX1250-FAKE16-NEXT: global_store_b16 v0, v1, s[0:1] scale_offset
+; GFX1250-FAKE16-NEXT: s_endpgm
%tid = call i32 @llvm.amdgcn.workitem.id.x()
%a.gep = getelementptr inbounds i16, ptr addrspace(1) %aptr, i32 %tid
%b.gep = getelementptr inbounds i16, ptr addrspace(1) %bptr, i32 %tid
@@ -2769,20 +2782,35 @@ define amdgpu_kernel void @v_test_umin_ult_i8(ptr addrspace(1) %out, ptr addrspa
; GFX11-FAKE16-NEXT: global_store_b8 v0, v1, s[0:1]
; GFX11-FAKE16-NEXT: s_endpgm
;
-; GFX1250-LABEL: v_test_umin_ult_i8:
-; GFX1250: ; %bb.0:
-; GFX1250-NEXT: s_clause 0x1
-; GFX1250-NEXT: s_load_b128 s[0:3], s[4:5], 0x0
-; GFX1250-NEXT: s_load_b64 s[6:7], s[4:5], 0x10
-; GFX1250-NEXT: v_and_b32_e32 v0, 0x3ff, v0
-; GFX1250-NEXT: s_wait_kmcnt 0x0
-; GFX1250-NEXT: s_clause 0x1
-; GFX1250-NEXT: global_load_u8 v1, v0, s[2:3]
-; GFX1250-NEXT: global_load_u8 v2, v0, s[6:7]
-; GFX1250-NEXT: s_wait_loadcnt 0x0
-; GFX1250-NEXT: v_min_u16 v1, v1, v2
-; GFX1250-NEXT: global_store_b8 v0, v1, s[0:1]
-; GFX1250-NEXT: s_endpgm
+; GFX1250-TRUE16-LABEL: v_test_umin_ult_i8:
+; GFX1250-TRUE16: ; %bb.0:
+; GFX1250-TRUE16-NEXT: s_clause 0x1
+; GFX1250-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x0
+; GFX1250-TRUE16-NEXT: s_load_b64 s[6:7], s[4:5], 0x10
+; GFX1250-TRUE16-NEXT: v_and_b32_e32 v1, 0x3ff, v0
+; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-TRUE16-NEXT: s_clause 0x1
+; GFX1250-TRUE16-NEXT: global_load_u8 v0, v1, s[2:3]
+; GFX1250-TRUE16-NEXT: global_load_u8 v2, v1, s[6:7]
+; GFX1250-TRUE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250-TRUE16-NEXT: v_min_u16 v0.l, v0.l, v2.l
+; GFX1250-TRUE16-NEXT: global_store_b8 v1, v0, s[0:1]
+; GFX1250-TRUE16-NEXT: s_endpgm
+;
+; GFX1250-FAKE16-LABEL: v_test_umin_ult_i8:
+; GFX1250-FAKE16: ; %bb.0:
+; GFX1250-FAKE16-NEXT: s_clause 0x1
+; GFX1250-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x0
+; GFX1250-FAKE16-NEXT: s_load_b64 s[6:7], s[4:5], 0x10
+; GFX1250-FAKE16-NEXT: v_and_b32_e32 v0, 0x3ff, v0
+; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x0
+; GFX1250-FAKE16-NEXT: s_clause 0x1
+; GFX1250-FAKE16-NEXT: global_load_u8 v1, v0, s[2:3]
+; GFX1250-FAKE16-NEXT: global_load_u8 v2, v0, s[6:7]
+; GFX1250-FAKE16-NEXT: s_wait_loadcnt 0x0
+; GFX1250-FAKE16-NEXT: v_min_u16 v1, v1, v2
+; GFX1250-FAKE16-NEXT: global_store_b8 v0, v1, s[0:1]
+; GFX1250-FAKE16-NEXT: s_endpgm
%tid = call i32 @llvm.amdgcn.workitem.id.x()
%a.gep = getelementptr inbounds i8, ptr addrspace(1) %a.ptr, i32 %tid
%b.gep = getelementptr inbounds i8, ptr addrspace(1) %b.ptr, i32 %tid
@@ -5069,5 +5097,3 @@ declare i32 @llvm.amdgcn.workitem.id.x() #1
attributes #0 = { nounwind }
attributes #1 = { nounwind readnone }
-;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
-; GFX1250-FAKE16: {{.*}}
diff --git a/llvm/test/CodeGen/AMDGPU/minmax.ll b/llvm/test/CodeGen/AMDGPU/minmax.ll
index 57e6943..56f9c5d 100644
--- a/llvm/test/CodeGen/AMDGPU/minmax.ll
+++ b/llvm/test/CodeGen/AMDGPU/minmax.ll
@@ -638,6 +638,14 @@ define void @test_med3_minimumnum_maximumnum_f32(ptr addrspace(1) %arg, float %x
; GFX12-NEXT: v_med3_num_f32 v2, v2, v3, v4
; GFX12-NEXT: global_store_b32 v[0:1], v2, off
; GFX12-NEXT: s_setpc_b64 s[30:31]
+;
+; GFX1250-LABEL: test_med3_minimumnum_maximumnum_f32:
+; GFX1250: ; %bb.0:
+; GFX1250-NEXT: s_wait_loadcnt_dscnt 0x0
+; GFX1250-NEXT: s_wait_kmcnt 0x0
+; GFX1250-NEXT: v_med3_num_f32 v2, v2, v3, v4
+; GFX1250-NEXT: global_store_b32 v[0:1], v2, off
+; GFX1250-NEXT: s_set_pc_i64 s[30:31]
%tmp0 = call float @llvm.minimumnum.f32(float %x, float %y)
%tmp1 = call float @llvm.maximumnum.f32(float %x, float %y)
%tmp2 = call float @llvm.minimumnum.f32(float %tmp1, float %z)
@@ -798,7 +806,7 @@ define amdgpu_ps void @s_test_minmax_f16_ieee_false(half inreg %a, half inreg %b
; SDAG-GFX1250-TRUE16-NEXT: s_mov_b32 s5, s4
; SDAG-GFX1250-TRUE16-NEXT: s_mov_b32 s4, s3
; SDAG-GFX1250-TRUE16-NEXT: v_maxmin_num_f16 v0.l, s0, s1, v0.l
-; SDAG-GFX1250-TRUE16-NEXT: flat_store_b16 v1, v0, s[4:5]
+; SDAG-GFX1250-TRUE16-NEXT: global_store_b16 v1, v0, s[4:5]
; SDAG-GFX1250-TRUE16-NEXT: s_endpgm
;
; SDAG-GFX1250-FAKE16-LABEL: s_test_minmax_f16_ieee_false:
@@ -813,12 +821,12 @@ define amdgpu_ps void @s_test_minmax_f16_ieee_false(half inreg %a, half inreg %b
; GISEL-GFX1250-TRUE16-LABEL: s_test_minmax_f16_ieee_false:
; GISEL-GFX1250-TRUE16: ; %bb.0:
; GISEL-GFX1250-TRUE16-NEXT: s_max_num_f16 s0, s0, s1
+; GISEL-GFX1250-TRUE16-NEXT: v_mov_b32_e32 v1, 0
; GISEL-GFX1250-TRUE16-NEXT: s_mov_b32 s6, s3
; GISEL-GFX1250-TRUE16-NEXT: s_mov_b32 s7, s4
-; GISEL-GFX1250-TRUE16-NEXT: v_mov_b32_e32 v1, 0
; GISEL-GFX1250-TRUE16-NEXT: s_min_num_f16 s0, s0, s2
-; GISEL-GFX1250-TRUE16-NEXT: v_mov_b32_e32 v0, s0
-; GISEL-GFX1250-TRUE16-NEXT: flat_store_b16 v1, v0, s[6:7]
+; GISEL-GFX1250-TRUE16-NEXT: v_mov_b16_e32 v0.l, s0
+; GISEL-GFX1250-TRUE16-NEXT: global_store_b16 v1, v0, s[6:7]
; GISEL-GFX1250-TRUE16-NEXT: s_endpgm
;
; GISEL-GFX1250-FAKE16-LABEL: s_test_minmax_f16_ieee_false:
@@ -1246,7 +1254,7 @@ define void @test_med3_f16(ptr addrspace(1) %arg, half %x, half %y, half %z) #0
; SDAG-GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
; SDAG-GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0
; SDAG-GFX1250-TRUE16-NEXT: v_med3_num_f16 v2.l, v2.l, v3.l, v4.l
-; SDAG-GFX1250-TRUE16-NEXT: flat_store_b16 v[0:1], v2
+; SDAG-GFX1250-TRUE16-NEXT: global_store_b16 v[0:1], v2, off
; SDAG-GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]
;
; SDAG-GFX1250-FAKE16-LABEL: test_med3_f16:
@@ -1262,7 +1270,7 @@ define void @test_med3_f16(ptr addrspace(1) %arg, half %x, half %y, half %z) #0
; GISEL-GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0
; GISEL-GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0
; GISEL-GFX1250-TRUE16-NEXT: v_med3_num_f16 v2.l, v2.l, v3.l, v4.l
-; GISEL-GFX1250-TRUE16-NEXT: flat_store_b16 v[0:1], v2
+; GISEL-GFX1250-TRUE16-NEXT: global_store_b16 v[0:1], v2, off
; GISEL-GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]
;
; GISEL-GFX1250-FAKE16-LABEL: test_med3_f16:
diff --git a/llvm/test/CodeGen/AMDGPU/propagate-flat-work-group-size.ll b/llvm/test/CodeGen/AMDGPU/propagate-flat-work-group-size.ll
index 42469c8..23e90b3 100644
--- a/llvm/test/CodeGen/AMDGPU/propagate-flat-work-group-size.ll
+++ b/llvm/test/CodeGen/AMDGPU/propagate-flat-work-group-size.ll
@@ -202,13 +202,13 @@ attributes #5 = { "amdgpu-flat-work-group-size"="128,512" }
attributes #6 = { "amdgpu-flat-work-group-size"="512,512" }
attributes #7 = { "amdgpu-flat-work-group-size"="64,256" }
;.
-; CHECK: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="1,256" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR1]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="64,128" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR2]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="128,512" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR3]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="64,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR4]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="128,256" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR5]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="512,1024" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR6]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="512,512" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR7]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="64,256" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR8]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR0]] = { "amdgpu-flat-work-group-size"="1,256" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR1]] = { "amdgpu-flat-work-group-size"="64,128" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR2]] = { "amdgpu-flat-work-group-size"="128,512" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR3]] = { "amdgpu-flat-work-group-size"="64,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR4]] = { "amdgpu-flat-work-group-size"="128,256" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR5]] = { "amdgpu-flat-work-group-size"="512,1024" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR6]] = { "amdgpu-flat-work-group-size"="512,512" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR7]] = { "amdgpu-flat-work-group-size"="64,256" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR8]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
;.
diff --git a/llvm/test/CodeGen/AMDGPU/propagate-waves-per-eu.ll b/llvm/test/CodeGen/AMDGPU/propagate-waves-per-eu.ll
index 06533b4..0be3147 100644
--- a/llvm/test/CodeGen/AMDGPU/propagate-waves-per-eu.ll
+++ b/llvm/test/CodeGen/AMDGPU/propagate-waves-per-eu.ll
@@ -399,25 +399,25 @@ attributes #17 = { "amdgpu-waves-per-eu"="5,8" }
attributes #18 = { "amdgpu-waves-per-eu"="9,10" }
attributes #19 = { "amdgpu-waves-per-eu"="8,9" }
;.
-; CHECK: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="2,8" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR1]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="1,8" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR2]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="1,2" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR3]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="1,4" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR4]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="9,9" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR5]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="1,1" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR6]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="9,10" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR7]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="2,9" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR8]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="3,8" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR9]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR10]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR11]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="1,123" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR12]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="1,512" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR13]] = { "amdgpu-agpr-alloc"="0" "amdgpu-flat-work-group-size"="1,512" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="3,6" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR14]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="3,6" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR15]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="4,8" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR16]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="6,8" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR17]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="5,5" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR18]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="5,8" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR19]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="9,10" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR20]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="8,9" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR0]] = { "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="2,8" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR1]] = { "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="1,8" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR2]] = { "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="1,2" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR3]] = { "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="1,4" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR4]] = { "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="9,9" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR5]] = { "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="1,1" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR6]] = { "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="9,10" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR7]] = { "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="2,9" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR8]] = { "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="3,8" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR9]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR10]] = { "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR11]] = { "amdgpu-flat-work-group-size"="1,64" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="1,123" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR12]] = { "amdgpu-flat-work-group-size"="1,512" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR13]] = { "amdgpu-flat-work-group-size"="1,512" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="3,6" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR14]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="3,6" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR15]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="4,8" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR16]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="6,8" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR17]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="5,5" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR18]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="5,8" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR19]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="9,10" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR20]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "amdgpu-waves-per-eu"="8,9" "uniform-work-group-size"="false" }
;.
diff --git a/llvm/test/CodeGen/AMDGPU/recursive_global_initializer.ll b/llvm/test/CodeGen/AMDGPU/recursive_global_initializer.ll
index 8930626..33da671 100644
--- a/llvm/test/CodeGen/AMDGPU/recursive_global_initializer.ll
+++ b/llvm/test/CodeGen/AMDGPU/recursive_global_initializer.ll
@@ -19,5 +19,5 @@ define void @hoge() {
ret void
}
;.
-; CHECK: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR0]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
;.
diff --git a/llvm/test/CodeGen/AMDGPU/remove-no-kernel-id-attribute.ll b/llvm/test/CodeGen/AMDGPU/remove-no-kernel-id-attribute.ll
index 3dfb0e1..f847d66 100644
--- a/llvm/test/CodeGen/AMDGPU/remove-no-kernel-id-attribute.ll
+++ b/llvm/test/CodeGen/AMDGPU/remove-no-kernel-id-attribute.ll
@@ -191,12 +191,12 @@ define amdgpu_kernel void @kernel_lds_recursion() {
!1 = !{i32 1, !"amdhsa_code_object_version", i32 400}
;.
-; CHECK: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR1]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR2]] = { "amdgpu-agpr-alloc"="0" "amdgpu-lds-size"="2" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR0]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR1]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR2]] = { "amdgpu-lds-size"="2" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
; CHECK: attributes #[[ATTR3]] = { "amdgpu-lds-size"="4" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR4]] = { "amdgpu-agpr-alloc"="0" "amdgpu-lds-size"="2" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR5]] = { "amdgpu-agpr-alloc"="0" "amdgpu-lds-size"="4" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR4]] = { "amdgpu-lds-size"="2" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR5]] = { "amdgpu-lds-size"="4" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
; CHECK: attributes #[[ATTR6:[0-9]+]] = { nocallback nofree nosync nounwind willreturn memory(none) }
; CHECK: attributes #[[ATTR7:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
;.
diff --git a/llvm/test/CodeGen/AMDGPU/simple-indirect-call-2.ll b/llvm/test/CodeGen/AMDGPU/simple-indirect-call-2.ll
index f1cadea..0868148 100644
--- a/llvm/test/CodeGen/AMDGPU/simple-indirect-call-2.ll
+++ b/llvm/test/CodeGen/AMDGPU/simple-indirect-call-2.ll
@@ -63,7 +63,7 @@ define amdgpu_kernel void @foo(ptr noundef %fp) {
; OW-NEXT: ret void
;
; CW-LABEL: define {{[^@]+}}@foo
-; CW-SAME: (ptr noundef [[FP:%.*]]) #[[ATTR1:[0-9]+]] {
+; CW-SAME: (ptr noundef [[FP:%.*]]) #[[ATTR0]] {
; CW-NEXT: entry:
; CW-NEXT: [[FP_ADDR:%.*]] = alloca ptr, align 8, addrspace(5)
; CW-NEXT: store ptr [[FP]], ptr addrspace(5) [[FP_ADDR]], align 8
@@ -84,7 +84,7 @@ define amdgpu_kernel void @foo(ptr noundef %fp) {
; CW-NEXT: ret void
;
; NO-LABEL: define {{[^@]+}}@foo
-; NO-SAME: (ptr noundef [[FP:%.*]]) #[[ATTR1:[0-9]+]] {
+; NO-SAME: (ptr noundef [[FP:%.*]]) #[[ATTR0]] {
; NO-NEXT: entry:
; NO-NEXT: [[FP_ADDR:%.*]] = alloca ptr, align 8, addrspace(5)
; NO-NEXT: store ptr [[FP]], ptr addrspace(5) [[FP_ADDR]], align 8
@@ -101,14 +101,12 @@ entry:
}
;.
-; NO: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; NO: attributes #[[ATTR1]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; NO: attributes #[[ATTR0]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
;.
-; OW: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; OW: attributes #[[ATTR0]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
; OW: attributes #[[ATTR1]] = { "uniform-work-group-size"="false" }
;.
-; CW: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CW: attributes #[[ATTR1]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CW: attributes #[[ATTR0]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
;.
; NO: [[META0]] = !{ptr @bar1, ptr @bar2}
;.
diff --git a/llvm/test/CodeGen/AMDGPU/simple-indirect-call.ll b/llvm/test/CodeGen/AMDGPU/simple-indirect-call.ll
index 775d2f9..8fcaf5e 100644
--- a/llvm/test/CodeGen/AMDGPU/simple-indirect-call.ll
+++ b/llvm/test/CodeGen/AMDGPU/simple-indirect-call.ll
@@ -58,7 +58,7 @@ define amdgpu_kernel void @test_simple_indirect_call() {
;.
-; ATTRIBUTOR_GCN: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; ATTRIBUTOR_GCN: attributes #[[ATTR0]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
; ATTRIBUTOR_GCN: attributes #[[ATTR1]] = { "uniform-work-group-size"="false" }
;.
; ATTRIBUTOR_GCN: [[META0]] = !{i32 1, i32 5, i32 6, i32 10}
diff --git a/llvm/test/CodeGen/AMDGPU/uniform-work-group-attribute-missing.ll b/llvm/test/CodeGen/AMDGPU/uniform-work-group-attribute-missing.ll
index a1557418..8dfd3b7 100644
--- a/llvm/test/CodeGen/AMDGPU/uniform-work-group-attribute-missing.ll
+++ b/llvm/test/CodeGen/AMDGPU/uniform-work-group-attribute-missing.ll
@@ -31,5 +31,5 @@ define amdgpu_kernel void @kernel1() #1 {
attributes #0 = { "uniform-work-group-size"="true" }
;.
-; CHECK: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR0]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
;.
diff --git a/llvm/test/CodeGen/AMDGPU/uniform-work-group-multistep.ll b/llvm/test/CodeGen/AMDGPU/uniform-work-group-multistep.ll
index fb225a9..fa01ee9 100644
--- a/llvm/test/CodeGen/AMDGPU/uniform-work-group-multistep.ll
+++ b/llvm/test/CodeGen/AMDGPU/uniform-work-group-multistep.ll
@@ -98,7 +98,7 @@ define amdgpu_kernel void @kernel2() #0 {
attributes #0 = { "uniform-work-group-size"="true" }
;.
; CHECK: attributes #[[ATTR0]] = { "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR1]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR1]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
; CHECK: attributes #[[ATTR2]] = { "uniform-work-group-size"="true" }
-; CHECK: attributes #[[ATTR3]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="true" }
+; CHECK: attributes #[[ATTR3]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="true" }
;.
diff --git a/llvm/test/CodeGen/AMDGPU/uniform-work-group-nested-function-calls.ll b/llvm/test/CodeGen/AMDGPU/uniform-work-group-nested-function-calls.ll
index cfede0c..09001ca 100644
--- a/llvm/test/CodeGen/AMDGPU/uniform-work-group-nested-function-calls.ll
+++ b/llvm/test/CodeGen/AMDGPU/uniform-work-group-nested-function-calls.ll
@@ -41,6 +41,6 @@ define amdgpu_kernel void @kernel3() #2 {
attributes #2 = { "uniform-work-group-size"="true" }
;.
-; CHECK: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR1]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="true" }
+; CHECK: attributes #[[ATTR0]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR1]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="true" }
;.
diff --git a/llvm/test/CodeGen/AMDGPU/uniform-work-group-prevent-attribute-propagation.ll b/llvm/test/CodeGen/AMDGPU/uniform-work-group-prevent-attribute-propagation.ll
index 854b724..4dede21 100644
--- a/llvm/test/CodeGen/AMDGPU/uniform-work-group-prevent-attribute-propagation.ll
+++ b/llvm/test/CodeGen/AMDGPU/uniform-work-group-prevent-attribute-propagation.ll
@@ -41,6 +41,6 @@ define amdgpu_kernel void @kernel2() #2 {
attributes #1 = { "uniform-work-group-size"="true" }
;.
-; CHECK: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR1]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="true" }
+; CHECK: attributes #[[ATTR0]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR1]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="true" }
;.
diff --git a/llvm/test/CodeGen/AMDGPU/uniform-work-group-propagate-attribute.ll b/llvm/test/CodeGen/AMDGPU/uniform-work-group-propagate-attribute.ll
index c4e0a60..08e1556 100644
--- a/llvm/test/CodeGen/AMDGPU/uniform-work-group-propagate-attribute.ll
+++ b/llvm/test/CodeGen/AMDGPU/uniform-work-group-propagate-attribute.ll
@@ -52,8 +52,8 @@ attributes #0 = { nounwind }
attributes #1 = { "uniform-work-group-size"="false" }
attributes #2 = { "uniform-work-group-size"="true" }
;.
-; CHECK: attributes #[[ATTR0]] = { nounwind "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR1]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR0]] = { nounwind "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR1]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
; CHECK: attributes #[[ATTR2]] = { nounwind "uniform-work-group-size"="false" }
; CHECK: attributes #[[ATTR3]] = { "uniform-work-group-size"="true" }
;.
diff --git a/llvm/test/CodeGen/AMDGPU/uniform-work-group-recursion-test.ll b/llvm/test/CodeGen/AMDGPU/uniform-work-group-recursion-test.ll
index 05af74d..9090d605 100644
--- a/llvm/test/CodeGen/AMDGPU/uniform-work-group-recursion-test.ll
+++ b/llvm/test/CodeGen/AMDGPU/uniform-work-group-recursion-test.ll
@@ -101,7 +101,7 @@ define amdgpu_kernel void @kernel(ptr addrspace(1) %m) #1 {
attributes #0 = { nounwind readnone }
attributes #1 = { "uniform-work-group-size"="true" }
;.
-; CHECK: attributes #[[ATTR0]] = { nounwind memory(none) "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
-; CHECK: attributes #[[ATTR1]] = { nounwind memory(none) "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="true" }
-; CHECK: attributes #[[ATTR2]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="true" }
+; CHECK: attributes #[[ATTR0]] = { nounwind memory(none) "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR1]] = { nounwind memory(none) "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="true" }
+; CHECK: attributes #[[ATTR2]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="true" }
;.
diff --git a/llvm/test/CodeGen/AMDGPU/uniform-work-group-test.ll b/llvm/test/CodeGen/AMDGPU/uniform-work-group-test.ll
index cdbca7f..5e109f4 100644
--- a/llvm/test/CodeGen/AMDGPU/uniform-work-group-test.ll
+++ b/llvm/test/CodeGen/AMDGPU/uniform-work-group-test.ll
@@ -61,5 +61,5 @@ define amdgpu_kernel void @kernel3() #0 {
attributes #0 = { "uniform-work-group-size"="false" }
;.
-; CHECK: attributes #[[ATTR0]] = { "amdgpu-agpr-alloc"="0" "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
+; CHECK: attributes #[[ATTR0]] = { "amdgpu-no-cluster-id-x" "amdgpu-no-cluster-id-y" "amdgpu-no-cluster-id-z" "amdgpu-no-completion-action" "amdgpu-no-default-queue" "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-flat-scratch-init" "amdgpu-no-heap-ptr" "amdgpu-no-hostcall-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-lds-kernel-id" "amdgpu-no-multigrid-sync-arg" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
;.
diff --git a/llvm/test/CodeGen/ARM/GlobalISel/arm-instruction-select-combos.mir b/llvm/test/CodeGen/ARM/GlobalISel/arm-instruction-select-combos.mir
index 77eeb34..4dd8af0 100644
--- a/llvm/test/CodeGen/ARM/GlobalISel/arm-instruction-select-combos.mir
+++ b/llvm/test/CodeGen/ARM/GlobalISel/arm-instruction-select-combos.mir
@@ -447,7 +447,7 @@ body: |
; CHECK-LABEL: name: test_vnmuls
; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0
; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1
- ; CHECK: [[VNMULS:%[0-9]+]]:spr = VNMULS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg
+ ; CHECK: [[VNMULS:%[0-9]+]]:spr = nofpexcept VNMULS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK: $s0 = COPY [[VNMULS]]
; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $s0
%0(s32) = COPY $s0
@@ -477,7 +477,7 @@ body: |
; CHECK-LABEL: name: test_vnmuls_reassociate
; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0
; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1
- ; CHECK: [[VNMULS:%[0-9]+]]:spr = VNMULS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg
+ ; CHECK: [[VNMULS:%[0-9]+]]:spr = nofpexcept VNMULS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK: $s0 = COPY [[VNMULS]]
; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $s0
%0(s32) = COPY $s0
@@ -507,7 +507,7 @@ body: |
; CHECK-LABEL: name: test_vnmuld
; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1
- ; CHECK: [[VNMULD:%[0-9]+]]:dpr = VNMULD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg
+ ; CHECK: [[VNMULD:%[0-9]+]]:dpr = nofpexcept VNMULD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK: $d0 = COPY [[VNMULD]]
; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $d0
%0(s64) = COPY $d0
@@ -539,7 +539,7 @@ body: |
; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0
; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1
; CHECK: [[COPY2:%[0-9]+]]:spr = COPY $s2
- ; CHECK: [[VFNMAS:%[0-9]+]]:spr = VFNMAS [[COPY2]], [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg
+ ; CHECK: [[VFNMAS:%[0-9]+]]:spr = nofpexcept VFNMAS [[COPY2]], [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK: $s0 = COPY [[VFNMAS]]
; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $s0
%0(s32) = COPY $s0
@@ -573,7 +573,7 @@ body: |
; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1
; CHECK: [[COPY2:%[0-9]+]]:dpr = COPY $d2
- ; CHECK: [[VFNMAD:%[0-9]+]]:dpr = VFNMAD [[COPY2]], [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg
+ ; CHECK: [[VFNMAD:%[0-9]+]]:dpr = nofpexcept VFNMAD [[COPY2]], [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK: $d0 = COPY [[VFNMAD]]
; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $d0
%0(s64) = COPY $d0
@@ -607,7 +607,7 @@ body: |
; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0
; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1
; CHECK: [[COPY2:%[0-9]+]]:spr = COPY $s2
- ; CHECK: [[VFMSS:%[0-9]+]]:spr = VFMSS [[COPY2]], [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg
+ ; CHECK: [[VFMSS:%[0-9]+]]:spr = nofpexcept VFMSS [[COPY2]], [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK: $s0 = COPY [[VFMSS]]
; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $s0
%0(s32) = COPY $s0
@@ -640,7 +640,7 @@ body: |
; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1
; CHECK: [[COPY2:%[0-9]+]]:dpr = COPY $d2
- ; CHECK: [[VFMSD:%[0-9]+]]:dpr = VFMSD [[COPY2]], [[COPY1]], [[COPY]], 14 /* CC::al */, $noreg
+ ; CHECK: [[VFMSD:%[0-9]+]]:dpr = nofpexcept VFMSD [[COPY2]], [[COPY1]], [[COPY]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK: $d0 = COPY [[VFMSD]]
; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $d0
%0(s64) = COPY $d0
@@ -673,7 +673,7 @@ body: |
; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0
; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1
; CHECK: [[COPY2:%[0-9]+]]:spr = COPY $s2
- ; CHECK: [[VFNMSS:%[0-9]+]]:spr = VFNMSS [[COPY2]], [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg
+ ; CHECK: [[VFNMSS:%[0-9]+]]:spr = nofpexcept VFNMSS [[COPY2]], [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK: $s0 = COPY [[VFNMSS]]
; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $s0
%0(s32) = COPY $s0
diff --git a/llvm/test/CodeGen/ARM/GlobalISel/arm-select-copy_to_regclass-of-fptosi.mir b/llvm/test/CodeGen/ARM/GlobalISel/arm-select-copy_to_regclass-of-fptosi.mir
index 45a846b..4cded13 100644
--- a/llvm/test/CodeGen/ARM/GlobalISel/arm-select-copy_to_regclass-of-fptosi.mir
+++ b/llvm/test/CodeGen/ARM/GlobalISel/arm-select-copy_to_regclass-of-fptosi.mir
@@ -19,7 +19,7 @@ body: |
bb.1:
; CHECK-LABEL: name: test_fptosi
; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0
- ; CHECK: [[VTOSIZS:%[0-9]+]]:spr = VTOSIZS [[COPY]], 14 /* CC::al */, $noreg
+ ; CHECK: [[VTOSIZS:%[0-9]+]]:spr = nofpexcept VTOSIZS [[COPY]], 14 /* CC::al */, $noreg
; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY [[VTOSIZS]]
; CHECK: $r0 = COPY [[COPY1]]
; CHECK: MOVPCLR 14 /* CC::al */, $noreg, implicit $r0
diff --git a/llvm/test/CodeGen/ARM/GlobalISel/select-fp.mir b/llvm/test/CodeGen/ARM/GlobalISel/select-fp.mir
index ec834f1..4517fe6 100644
--- a/llvm/test/CodeGen/ARM/GlobalISel/select-fp.mir
+++ b/llvm/test/CodeGen/ARM/GlobalISel/select-fp.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
# RUN: llc -O0 -mtriple arm-- -mattr=+vfp4,-neonfp -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
# RUN: llc -O0 -mtriple thumb-- -mattr=+v6t2,+vfp4,-neonfp -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
--- |
@@ -76,11 +77,9 @@ body: |
...
---
name: test_fadd_s32
-# CHECK-LABEL: name: test_fadd_s32
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: fprb }
- { id: 1, class: fprb }
@@ -89,28 +88,29 @@ body: |
bb.0:
liveins: $s0, $s1
+ ; CHECK-LABEL: name: test_fadd_s32
+ ; CHECK: liveins: $s0, $s1
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:spr = COPY $s0
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:spr = COPY $s1
+ ; CHECK-NEXT: [[VADDS:%[0-9]+]]:spr = nofpexcept VADDS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ ; CHECK-NEXT: $s0 = COPY [[VADDS]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $s0
%0(s32) = COPY $s0
- ; CHECK: [[VREGX:%[0-9]+]]:spr = COPY $s0
%1(s32) = COPY $s1
- ; CHECK: [[VREGY:%[0-9]+]]:spr = COPY $s1
%2(s32) = G_FADD %0, %1
- ; CHECK: [[VREGSUM:%[0-9]+]]:spr = VADDS [[VREGX]], [[VREGY]], 14 /* CC::al */, $noreg
$s0 = COPY %2(s32)
- ; CHECK: $s0 = COPY [[VREGSUM]]
BX_RET 14, $noreg, implicit $s0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $s0
...
---
name: test_fadd_s64
-# CHECK-LABEL: name: test_fadd_s64
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: fprb }
- { id: 1, class: fprb }
@@ -119,28 +119,29 @@ body: |
bb.0:
liveins: $d0, $d1
+ ; CHECK-LABEL: name: test_fadd_s64
+ ; CHECK: liveins: $d0, $d1
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:dpr = COPY $d0
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:dpr = COPY $d1
+ ; CHECK-NEXT: [[VADDD:%[0-9]+]]:dpr = nofpexcept VADDD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ ; CHECK-NEXT: $d0 = COPY [[VADDD]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $d0
%0(s64) = COPY $d0
- ; CHECK: [[VREGX:%[0-9]+]]:dpr = COPY $d0
%1(s64) = COPY $d1
- ; CHECK: [[VREGY:%[0-9]+]]:dpr = COPY $d1
%2(s64) = G_FADD %0, %1
- ; CHECK: [[VREGSUM:%[0-9]+]]:dpr = VADDD [[VREGX]], [[VREGY]], 14 /* CC::al */, $noreg
$d0 = COPY %2(s64)
- ; CHECK: $d0 = COPY [[VREGSUM]]
BX_RET 14, $noreg, implicit $d0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $d0
...
---
name: test_fsub_s32
-# CHECK-LABEL: name: test_fsub_s32
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: fprb }
- { id: 1, class: fprb }
@@ -149,28 +150,29 @@ body: |
bb.0:
liveins: $s0, $s1
+ ; CHECK-LABEL: name: test_fsub_s32
+ ; CHECK: liveins: $s0, $s1
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:spr = COPY $s0
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:spr = COPY $s1
+ ; CHECK-NEXT: [[VSUBS:%[0-9]+]]:spr = nofpexcept VSUBS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ ; CHECK-NEXT: $s0 = COPY [[VSUBS]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $s0
%0(s32) = COPY $s0
- ; CHECK: [[VREGX:%[0-9]+]]:spr = COPY $s0
%1(s32) = COPY $s1
- ; CHECK: [[VREGY:%[0-9]+]]:spr = COPY $s1
%2(s32) = G_FSUB %0, %1
- ; CHECK: [[VREGSUM:%[0-9]+]]:spr = VSUBS [[VREGX]], [[VREGY]], 14 /* CC::al */, $noreg
$s0 = COPY %2(s32)
- ; CHECK: $s0 = COPY [[VREGSUM]]
BX_RET 14, $noreg, implicit $s0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $s0
...
---
name: test_fsub_s64
-# CHECK-LABEL: name: test_fsub_s64
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: fprb }
- { id: 1, class: fprb }
@@ -179,28 +181,29 @@ body: |
bb.0:
liveins: $d0, $d1
+ ; CHECK-LABEL: name: test_fsub_s64
+ ; CHECK: liveins: $d0, $d1
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:dpr = COPY $d0
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:dpr = COPY $d1
+ ; CHECK-NEXT: [[VSUBD:%[0-9]+]]:dpr = nofpexcept VSUBD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ ; CHECK-NEXT: $d0 = COPY [[VSUBD]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $d0
%0(s64) = COPY $d0
- ; CHECK: [[VREGX:%[0-9]+]]:dpr = COPY $d0
%1(s64) = COPY $d1
- ; CHECK: [[VREGY:%[0-9]+]]:dpr = COPY $d1
%2(s64) = G_FSUB %0, %1
- ; CHECK: [[VREGSUM:%[0-9]+]]:dpr = VSUBD [[VREGX]], [[VREGY]], 14 /* CC::al */, $noreg
$d0 = COPY %2(s64)
- ; CHECK: $d0 = COPY [[VREGSUM]]
BX_RET 14, $noreg, implicit $d0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $d0
...
---
name: test_fmul_s32
-# CHECK-LABEL: name: test_fmul_s32
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: fprb }
- { id: 1, class: fprb }
@@ -209,28 +212,29 @@ body: |
bb.0:
liveins: $s0, $s1
+ ; CHECK-LABEL: name: test_fmul_s32
+ ; CHECK: liveins: $s0, $s1
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:spr = COPY $s0
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:spr = COPY $s1
+ ; CHECK-NEXT: [[VMULS:%[0-9]+]]:spr = nofpexcept VMULS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ ; CHECK-NEXT: $s0 = COPY [[VMULS]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $s0
%0(s32) = COPY $s0
- ; CHECK: [[VREGX:%[0-9]+]]:spr = COPY $s0
%1(s32) = COPY $s1
- ; CHECK: [[VREGY:%[0-9]+]]:spr = COPY $s1
%2(s32) = G_FMUL %0, %1
- ; CHECK: [[VREGSUM:%[0-9]+]]:spr = VMULS [[VREGX]], [[VREGY]], 14 /* CC::al */, $noreg
$s0 = COPY %2(s32)
- ; CHECK: $s0 = COPY [[VREGSUM]]
BX_RET 14, $noreg, implicit $s0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $s0
...
---
name: test_fmul_s64
-# CHECK-LABEL: name: test_fmul_s64
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: fprb }
- { id: 1, class: fprb }
@@ -239,28 +243,29 @@ body: |
bb.0:
liveins: $d0, $d1
+ ; CHECK-LABEL: name: test_fmul_s64
+ ; CHECK: liveins: $d0, $d1
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:dpr = COPY $d0
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:dpr = COPY $d1
+ ; CHECK-NEXT: [[VMULD:%[0-9]+]]:dpr = nofpexcept VMULD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ ; CHECK-NEXT: $d0 = COPY [[VMULD]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $d0
%0(s64) = COPY $d0
- ; CHECK: [[VREGX:%[0-9]+]]:dpr = COPY $d0
%1(s64) = COPY $d1
- ; CHECK: [[VREGY:%[0-9]+]]:dpr = COPY $d1
%2(s64) = G_FMUL %0, %1
- ; CHECK: [[VREGSUM:%[0-9]+]]:dpr = VMULD [[VREGX]], [[VREGY]], 14 /* CC::al */, $noreg
$d0 = COPY %2(s64)
- ; CHECK: $d0 = COPY [[VREGSUM]]
BX_RET 14, $noreg, implicit $d0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $d0
...
---
name: test_fdiv_s32
-# CHECK-LABEL: name: test_fdiv_s32
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: fprb }
- { id: 1, class: fprb }
@@ -269,28 +274,29 @@ body: |
bb.0:
liveins: $s0, $s1
+ ; CHECK-LABEL: name: test_fdiv_s32
+ ; CHECK: liveins: $s0, $s1
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:spr = COPY $s0
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:spr = COPY $s1
+ ; CHECK-NEXT: [[VDIVS:%[0-9]+]]:spr = nofpexcept VDIVS [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ ; CHECK-NEXT: $s0 = COPY [[VDIVS]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $s0
%0(s32) = COPY $s0
- ; CHECK: [[VREGX:%[0-9]+]]:spr = COPY $s0
%1(s32) = COPY $s1
- ; CHECK: [[VREGY:%[0-9]+]]:spr = COPY $s1
%2(s32) = G_FDIV %0, %1
- ; CHECK: [[VREGSUM:%[0-9]+]]:spr = VDIVS [[VREGX]], [[VREGY]], 14 /* CC::al */, $noreg
$s0 = COPY %2(s32)
- ; CHECK: $s0 = COPY [[VREGSUM]]
BX_RET 14, $noreg, implicit $s0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $s0
...
---
name: test_fdiv_s64
-# CHECK-LABEL: name: test_fdiv_s64
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: fprb }
- { id: 1, class: fprb }
@@ -299,28 +305,29 @@ body: |
bb.0:
liveins: $d0, $d1
+ ; CHECK-LABEL: name: test_fdiv_s64
+ ; CHECK: liveins: $d0, $d1
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:dpr = COPY $d0
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:dpr = COPY $d1
+ ; CHECK-NEXT: [[VDIVD:%[0-9]+]]:dpr = nofpexcept VDIVD [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ ; CHECK-NEXT: $d0 = COPY [[VDIVD]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $d0
%0(s64) = COPY $d0
- ; CHECK: [[VREGX:%[0-9]+]]:dpr = COPY $d0
%1(s64) = COPY $d1
- ; CHECK: [[VREGY:%[0-9]+]]:dpr = COPY $d1
%2(s64) = G_FDIV %0, %1
- ; CHECK: [[VREGSUM:%[0-9]+]]:dpr = VDIVD [[VREGX]], [[VREGY]], 14 /* CC::al */, $noreg
$d0 = COPY %2(s64)
- ; CHECK: $d0 = COPY [[VREGSUM]]
BX_RET 14, $noreg, implicit $d0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $d0
...
---
name: test_fneg_s32
-# CHECK-LABEL: name: test_fneg_s32
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: fprb }
- { id: 1, class: fprb }
@@ -328,25 +335,26 @@ body: |
bb.0:
liveins: $s0
+ ; CHECK-LABEL: name: test_fneg_s32
+ ; CHECK: liveins: $s0
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:spr = COPY $s0
+ ; CHECK-NEXT: [[VNEGS:%[0-9]+]]:spr = VNEGS [[COPY]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: $s0 = COPY [[VNEGS]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $s0
%0(s32) = COPY $s0
- ; CHECK: [[VREGX:%[0-9]+]]:spr = COPY $s0
%1(s32) = G_FNEG %0
- ; CHECK: [[VREGSUM:%[0-9]+]]:spr = VNEGS [[VREGX]], 14 /* CC::al */, $noreg
$s0 = COPY %1(s32)
- ; CHECK: $s0 = COPY [[VREGSUM]]
BX_RET 14, $noreg, implicit $s0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $s0
...
---
name: test_fneg_s64
-# CHECK-LABEL: name: test_fneg_s64
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: fprb }
- { id: 1, class: fprb }
@@ -355,25 +363,26 @@ body: |
bb.0:
liveins: $d0
+ ; CHECK-LABEL: name: test_fneg_s64
+ ; CHECK: liveins: $d0
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:dpr = COPY $d0
+ ; CHECK-NEXT: [[VNEGD:%[0-9]+]]:dpr = VNEGD [[COPY]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: $d0 = COPY [[VNEGD]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $d0
%0(s64) = COPY $d0
- ; CHECK: [[VREGX:%[0-9]+]]:dpr = COPY $d0
%1(s64) = G_FNEG %0
- ; CHECK: [[VREGSUM:%[0-9]+]]:dpr = VNEGD [[VREGX]], 14 /* CC::al */, $noreg
$d0 = COPY %1(s64)
- ; CHECK: $d0 = COPY [[VREGSUM]]
BX_RET 14, $noreg, implicit $d0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $d0
...
---
name: test_fma_s32
-# CHECK-LABEL: name: test_fma_s32
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: fprb }
- { id: 1, class: fprb }
@@ -383,31 +392,32 @@ body: |
bb.0:
liveins: $s0, $s1, $s2
+ ; CHECK-LABEL: name: test_fma_s32
+ ; CHECK: liveins: $s0, $s1, $s2
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:spr = COPY $s0
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:spr = COPY $s1
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:spr = COPY $s2
+ ; CHECK-NEXT: [[VFMAS:%[0-9]+]]:spr = nofpexcept VFMAS [[COPY2]], [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ ; CHECK-NEXT: $s0 = COPY [[VFMAS]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $s0
%0(s32) = COPY $s0
- ; CHECK: [[VREGX:%[0-9]+]]:spr = COPY $s0
%1(s32) = COPY $s1
- ; CHECK: [[VREGY:%[0-9]+]]:spr = COPY $s1
%2(s32) = COPY $s2
- ; CHECK: [[VREGZ:%[0-9]+]]:spr = COPY $s2
%3(s32) = G_FMA %0, %1, %2
- ; CHECK: [[VREGR:%[0-9]+]]:spr = VFMAS [[VREGZ]], [[VREGX]], [[VREGY]], 14 /* CC::al */, $noreg
$s0 = COPY %3(s32)
- ; CHECK: $s0 = COPY [[VREGR]]
BX_RET 14, $noreg, implicit $s0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $s0
...
---
name: test_fma_s64
-# CHECK-LABEL: name: test_fma_s64
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: fprb }
- { id: 1, class: fprb }
@@ -417,31 +427,32 @@ body: |
bb.0:
liveins: $d0, $d1, $d2
+ ; CHECK-LABEL: name: test_fma_s64
+ ; CHECK: liveins: $d0, $d1, $d2
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:dpr = COPY $d0
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:dpr = COPY $d1
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:dpr = COPY $d2
+ ; CHECK-NEXT: [[VFMAD:%[0-9]+]]:dpr = nofpexcept VFMAD [[COPY2]], [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ ; CHECK-NEXT: $d0 = COPY [[VFMAD]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $d0
%0(s64) = COPY $d0
- ; CHECK: [[VREGX:%[0-9]+]]:dpr = COPY $d0
%1(s64) = COPY $d1
- ; CHECK: [[VREGY:%[0-9]+]]:dpr = COPY $d1
%2(s64) = COPY $d2
- ; CHECK: [[VREGZ:%[0-9]+]]:dpr = COPY $d2
%3(s64) = G_FMA %0, %1, %2
- ; CHECK: [[VREGR:%[0-9]+]]:dpr = VFMAD [[VREGZ]], [[VREGX]], [[VREGY]], 14 /* CC::al */, $noreg
$d0 = COPY %3(s64)
- ; CHECK: $d0 = COPY [[VREGR]]
BX_RET 14, $noreg, implicit $d0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $d0
...
---
name: test_fpext_s32_to_s64
-# CHECK-LABEL: name: test_fpext_s32_to_s64
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: fprb }
- { id: 1, class: fprb }
@@ -449,25 +460,26 @@ body: |
bb.0:
liveins: $s0
+ ; CHECK-LABEL: name: test_fpext_s32_to_s64
+ ; CHECK: liveins: $s0
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:spr = COPY $s0
+ ; CHECK-NEXT: [[VCVTDS:%[0-9]+]]:dpr = nofpexcept VCVTDS [[COPY]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ ; CHECK-NEXT: $d0 = COPY [[VCVTDS]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $d0
%0(s32) = COPY $s0
- ; CHECK: [[VREGX:%[0-9]+]]:spr = COPY $s0
%1(s64) = G_FPEXT %0(s32)
- ; CHECK: [[VREGR:%[0-9]+]]:dpr = VCVTDS [[VREGX]], 14 /* CC::al */, $noreg
$d0 = COPY %1(s64)
- ; CHECK: $d0 = COPY [[VREGR]]
BX_RET 14, $noreg, implicit $d0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $d0
...
---
name: test_fptrunc_s64_to_s32
-# CHECK-LABEL: name: test_fptrunc_s64_to_s32
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: fprb }
- { id: 1, class: fprb }
@@ -475,25 +487,26 @@ body: |
bb.0:
liveins: $d0
+ ; CHECK-LABEL: name: test_fptrunc_s64_to_s32
+ ; CHECK: liveins: $d0
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:dpr = COPY $d0
+ ; CHECK-NEXT: [[VCVTSD:%[0-9]+]]:spr = nofpexcept VCVTSD [[COPY]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ ; CHECK-NEXT: $s0 = COPY [[VCVTSD]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $s0
%0(s64) = COPY $d0
- ; CHECK: [[VREGX:%[0-9]+]]:dpr = COPY $d0
%1(s32) = G_FPTRUNC %0(s64)
- ; CHECK: [[VREGR:%[0-9]+]]:spr = VCVTSD [[VREGX]], 14 /* CC::al */, $noreg
$s0 = COPY %1(s32)
- ; CHECK: $s0 = COPY [[VREGR]]
BX_RET 14, $noreg, implicit $s0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $s0
...
---
name: test_fptosi_s32
-# CHECK-LABEL: name: test_fptosi_s32
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: fprb }
- { id: 1, class: gprb }
@@ -501,26 +514,27 @@ body: |
bb.0:
liveins: $s0
+ ; CHECK-LABEL: name: test_fptosi_s32
+ ; CHECK: liveins: $s0
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:spr = COPY $s0
+ ; CHECK-NEXT: [[VTOSIZS:%[0-9]+]]:spr = nofpexcept VTOSIZS [[COPY]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY [[VTOSIZS]]
+ ; CHECK-NEXT: $r0 = COPY [[COPY1]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $r0
%0(s32) = COPY $s0
- ; CHECK: [[VREGX:%[0-9]+]]:spr = COPY $s0
%1(s32) = G_FPTOSI %0(s32)
- ; CHECK: [[VREGI:%[0-9]+]]:spr = VTOSIZS [[VREGX]], 14 /* CC::al */, $noreg
- ; CHECK: [[VREGR:%[0-9]+]]:gpr = COPY [[VREGI]]
$r0 = COPY %1(s32)
- ; CHECK: $r0 = COPY [[VREGR]]
BX_RET 14, $noreg, implicit $r0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
...
---
name: test_fptosi_s64
-# CHECK-LABEL: name: test_fptosi_s64
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: fprb }
- { id: 1, class: gprb }
@@ -528,26 +542,27 @@ body: |
bb.0:
liveins: $d0
+ ; CHECK-LABEL: name: test_fptosi_s64
+ ; CHECK: liveins: $d0
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:dpr = COPY $d0
+ ; CHECK-NEXT: [[VTOSIZD:%[0-9]+]]:spr = nofpexcept VTOSIZD [[COPY]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY [[VTOSIZD]]
+ ; CHECK-NEXT: $r0 = COPY [[COPY1]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $r0
%0(s64) = COPY $d0
- ; CHECK: [[VREGX:%[0-9]+]]:dpr = COPY $d0
%1(s32) = G_FPTOSI %0(s64)
- ; CHECK: [[VREGI:%[0-9]+]]:spr = VTOSIZD [[VREGX]], 14 /* CC::al */, $noreg
- ; CHECK: [[VREGR:%[0-9]+]]:gpr = COPY [[VREGI]]
$r0 = COPY %1(s32)
- ; CHECK: $r0 = COPY [[VREGR]]
BX_RET 14, $noreg, implicit $r0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
...
---
name: test_fptoui_s32
-# CHECK-LABEL: name: test_fptoui_s32
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: fprb }
- { id: 1, class: gprb }
@@ -555,26 +570,27 @@ body: |
bb.0:
liveins: $s0
+ ; CHECK-LABEL: name: test_fptoui_s32
+ ; CHECK: liveins: $s0
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:spr = COPY $s0
+ ; CHECK-NEXT: [[VTOUIZS:%[0-9]+]]:spr = nofpexcept VTOUIZS [[COPY]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY [[VTOUIZS]]
+ ; CHECK-NEXT: $r0 = COPY [[COPY1]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $r0
%0(s32) = COPY $s0
- ; CHECK: [[VREGX:%[0-9]+]]:spr = COPY $s0
%1(s32) = G_FPTOUI %0(s32)
- ; CHECK: [[VREGI:%[0-9]+]]:spr = VTOUIZS [[VREGX]], 14 /* CC::al */, $noreg
- ; CHECK: [[VREGR:%[0-9]+]]:gpr = COPY [[VREGI]]
$r0 = COPY %1(s32)
- ; CHECK: $r0 = COPY [[VREGR]]
BX_RET 14, $noreg, implicit $r0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
...
---
name: test_fptoui_s64
-# CHECK-LABEL: name: test_fptoui_s64
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: fprb }
- { id: 1, class: gprb }
@@ -582,26 +598,27 @@ body: |
bb.0:
liveins: $d0
+ ; CHECK-LABEL: name: test_fptoui_s64
+ ; CHECK: liveins: $d0
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:dpr = COPY $d0
+ ; CHECK-NEXT: [[VTOUIZD:%[0-9]+]]:spr = nofpexcept VTOUIZD [[COPY]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY [[VTOUIZD]]
+ ; CHECK-NEXT: $r0 = COPY [[COPY1]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $r0
%0(s64) = COPY $d0
- ; CHECK: [[VREGX:%[0-9]+]]:dpr = COPY $d0
%1(s32) = G_FPTOUI %0(s64)
- ; CHECK: [[VREGI:%[0-9]+]]:spr = VTOUIZD [[VREGX]], 14 /* CC::al */, $noreg
- ; CHECK: [[VREGR:%[0-9]+]]:gpr = COPY [[VREGI]]
$r0 = COPY %1(s32)
- ; CHECK: $r0 = COPY [[VREGR]]
BX_RET 14, $noreg, implicit $r0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0
...
---
name: test_sitofp_s32
-# CHECK-LABEL: name: test_sitofp_s32
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: gprb }
- { id: 1, class: fprb }
@@ -609,26 +626,27 @@ body: |
bb.0:
liveins: $r0
+ ; CHECK-LABEL: name: test_sitofp_s32
+ ; CHECK: liveins: $r0
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $r0
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:spr = COPY [[COPY]]
+ ; CHECK-NEXT: [[VSITOS:%[0-9]+]]:spr = nofpexcept VSITOS [[COPY1]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: $s0 = COPY [[VSITOS]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $s0
%0(s32) = COPY $r0
- ; CHECK: [[VREGX:%[0-9]+]]:gpr = COPY $r0
%1(s32) = G_SITOFP %0(s32)
- ; CHECK: [[VREGF:%[0-9]+]]:spr = COPY [[VREGX]]
- ; CHECK: [[VREGR:%[0-9]+]]:spr = VSITOS [[VREGF]], 14 /* CC::al */, $noreg
$s0 = COPY %1(s32)
- ; CHECK: $s0 = COPY [[VREGR]]
BX_RET 14, $noreg, implicit $s0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $s0
...
---
name: test_sitofp_s64
-# CHECK-LABEL: name: test_sitofp_s64
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: gprb }
- { id: 1, class: fprb }
@@ -636,26 +654,27 @@ body: |
bb.0:
liveins: $r0
+ ; CHECK-LABEL: name: test_sitofp_s64
+ ; CHECK: liveins: $r0
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $r0
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:spr = COPY [[COPY]]
+ ; CHECK-NEXT: [[VSITOD:%[0-9]+]]:dpr = nofpexcept VSITOD [[COPY1]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: $d0 = COPY [[VSITOD]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $d0
%0(s32) = COPY $r0
- ; CHECK: [[VREGX:%[0-9]+]]:gpr = COPY $r0
%1(s64) = G_SITOFP %0(s32)
- ; CHECK: [[VREGF:%[0-9]+]]:spr = COPY [[VREGX]]
- ; CHECK: [[VREGR:%[0-9]+]]:dpr = VSITOD [[VREGF]], 14 /* CC::al */, $noreg
$d0 = COPY %1(s64)
- ; CHECK: $d0 = COPY [[VREGR]]
BX_RET 14, $noreg, implicit $d0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $d0
...
---
name: test_uitofp_s32
-# CHECK-LABEL: name: test_uitofp_s32
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: gprb }
- { id: 1, class: fprb }
@@ -663,26 +682,27 @@ body: |
bb.0:
liveins: $r0
+ ; CHECK-LABEL: name: test_uitofp_s32
+ ; CHECK: liveins: $r0
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $r0
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:spr = COPY [[COPY]]
+ ; CHECK-NEXT: [[VUITOS:%[0-9]+]]:spr = nofpexcept VUITOS [[COPY1]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: $s0 = COPY [[VUITOS]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $s0
%0(s32) = COPY $r0
- ; CHECK: [[VREGX:%[0-9]+]]:gpr = COPY $r0
%1(s32) = G_UITOFP %0(s32)
- ; CHECK: [[VREGF:%[0-9]+]]:spr = COPY [[VREGX]]
- ; CHECK: [[VREGR:%[0-9]+]]:spr = VUITOS [[VREGF]], 14 /* CC::al */, $noreg
$s0 = COPY %1(s32)
- ; CHECK: $s0 = COPY [[VREGR]]
BX_RET 14, $noreg, implicit $s0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $s0
...
---
name: test_uitofp_s64
-# CHECK-LABEL: name: test_uitofp_s64
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: gprb }
- { id: 1, class: fprb }
@@ -690,26 +710,27 @@ body: |
bb.0:
liveins: $r0
+ ; CHECK-LABEL: name: test_uitofp_s64
+ ; CHECK: liveins: $r0
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $r0
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:spr = COPY [[COPY]]
+ ; CHECK-NEXT: [[VUITOD:%[0-9]+]]:dpr = nofpexcept VUITOD [[COPY1]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: $d0 = COPY [[VUITOD]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $d0
%0(s32) = COPY $r0
- ; CHECK: [[VREGX:%[0-9]+]]:gpr = COPY $r0
%1(s64) = G_UITOFP %0(s32)
- ; CHECK: [[VREGF:%[0-9]+]]:spr = COPY [[VREGX]]
- ; CHECK: [[VREGR:%[0-9]+]]:dpr = VUITOD [[VREGF]], 14 /* CC::al */, $noreg
$d0 = COPY %1(s64)
- ; CHECK: $d0 = COPY [[VREGR]]
BX_RET 14, $noreg, implicit $d0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $d0
...
---
name: test_load_f32
-# CHECK-LABEL: name: test_load_f32
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: gprb }
- { id: 1, class: fprb }
@@ -717,25 +738,26 @@ body: |
bb.0:
liveins: $r0
+ ; CHECK-LABEL: name: test_load_f32
+ ; CHECK: liveins: $r0
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $r0
+ ; CHECK-NEXT: [[VLDRS:%[0-9]+]]:spr = VLDRS [[COPY]], 0, 14 /* CC::al */, $noreg :: (load (s32))
+ ; CHECK-NEXT: $s0 = COPY [[VLDRS]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $s0
%0(p0) = COPY $r0
- ; CHECK: %[[P:[0-9]+]]:gpr = COPY $r0
%1(s32) = G_LOAD %0(p0) :: (load (s32))
- ; CHECK: %[[V:[0-9]+]]:spr = VLDRS %[[P]], 0, 14 /* CC::al */, $noreg
$s0 = COPY %1
- ; CHECK: $s0 = COPY %[[V]]
BX_RET 14, $noreg, implicit $s0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $s0
...
---
name: test_load_f64
-# CHECK-LABEL: name: test_load_f64
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: gprb }
- { id: 1, class: fprb }
@@ -743,45 +765,50 @@ body: |
bb.0:
liveins: $r0
+ ; CHECK-LABEL: name: test_load_f64
+ ; CHECK: liveins: $r0
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $r0
+ ; CHECK-NEXT: [[VLDRD:%[0-9]+]]:dpr = VLDRD [[COPY]], 0, 14 /* CC::al */, $noreg :: (load (s64))
+ ; CHECK-NEXT: $d0 = COPY [[VLDRD]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $d0
%0(p0) = COPY $r0
- ; CHECK: %[[P:[0-9]+]]:gpr = COPY $r0
%1(s64) = G_LOAD %0(p0) :: (load (s64))
- ; CHECK: %[[V:[0-9]+]]:dpr = VLDRD %[[P]], 0, 14 /* CC::al */, $noreg
$d0 = COPY %1
- ; CHECK: $d0 = COPY %[[V]]
BX_RET 14, $noreg, implicit $d0
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $d0
...
---
name: test_stores
-# CHECK-LABEL: name: test_stores
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: gprb }
- { id: 1, class: fprb }
- { id: 2, class: fprb }
-# CHECK: id: [[P:[0-9]+]], class: gpr
-# CHECK: id: [[F32:[0-9]+]], class: spr
-# CHECK: id: [[F64:[0-9]+]], class: dpr
body: |
bb.0:
liveins: $r0, $s0, $d0
+ ; CHECK-LABEL: name: test_stores
+ ; CHECK: liveins: $r0, $s0, $d0
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $r0
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:spr = COPY $s0
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:dpr = COPY $d2
+ ; CHECK-NEXT: VSTRS [[COPY1]], [[COPY]], 0, 14 /* CC::al */, $noreg :: (store (s32))
+ ; CHECK-NEXT: VSTRD [[COPY2]], [[COPY]], 0, 14 /* CC::al */, $noreg :: (store (s64))
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg
%0(p0) = COPY $r0
%1(s32) = COPY $s0
%2(s64) = COPY $d2
G_STORE %1(s32), %0(p0) :: (store (s32))
- ; CHECK: VSTRS %[[F32]], %[[P]], 0, 14 /* CC::al */, $noreg
G_STORE %2(s64), %0(p0) :: (store (s64))
- ; CHECK: VSTRD %[[F64]], %[[P]], 0, 14 /* CC::al */, $noreg
BX_RET 14, $noreg
...
@@ -833,11 +860,9 @@ body: |
...
---
name: test_soft_fp_double
-# CHECK-LABEL: name: test_soft_fp_double
legalized: true
regBankSelected: true
selected: false
-# CHECK: selected: true
registers:
- { id: 0, class: gprb }
- { id: 1, class: gprb }
@@ -848,24 +873,27 @@ body: |
bb.0:
liveins: $r0, $r1, $r2, $r3
+ ; CHECK-LABEL: name: test_soft_fp_double
+ ; CHECK: liveins: $r0, $r1, $r2, $r3
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $r2
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $r3
+ ; CHECK-NEXT: [[VMOVDRR:%[0-9]+]]:dpr = VMOVDRR [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VMOVRRD:%[0-9]+]]:gpr, [[VMOVRRD1:%[0-9]+]]:gpr = VMOVRRD [[VMOVDRR]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: $r0 = COPY [[VMOVRRD]]
+ ; CHECK-NEXT: $r1 = COPY [[VMOVRRD1]]
+ ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $r0, implicit $r1
%0(s32) = COPY $r2
- ; CHECK: [[IN1:%[0-9]+]]:gpr = COPY $r2
%1(s32) = COPY $r3
- ; CHECK: [[IN2:%[0-9]+]]:gpr = COPY $r3
%2(s64) = G_MERGE_VALUES %0(s32), %1(s32)
- ; CHECK: %[[DREG:[0-9]+]]:dpr = VMOVDRR [[IN1]], [[IN2]]
%3(s32), %4(s32) = G_UNMERGE_VALUES %2(s64)
- ; CHECK: [[OUT1:%[0-9]+]]:gpr, [[OUT2:%[0-9]+]]:gpr = VMOVRRD %[[DREG]]
$r0 = COPY %3
- ; CHECK: $r0 = COPY [[OUT1]]
$r1 = COPY %4
- ; CHECK: $r1 = COPY [[OUT2]]
BX_RET 14, $noreg, implicit $r0, implicit $r1
- ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0, implicit $r1
...
diff --git a/llvm/test/CodeGen/ARM/GlobalISel/select-pr35926.mir b/llvm/test/CodeGen/ARM/GlobalISel/select-pr35926.mir
index a6fc4da..fa982d8 100644
--- a/llvm/test/CodeGen/ARM/GlobalISel/select-pr35926.mir
+++ b/llvm/test/CodeGen/ARM/GlobalISel/select-pr35926.mir
@@ -31,7 +31,7 @@ body: |
; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0
; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1
; CHECK: [[COPY2:%[0-9]+]]:dpr = COPY $d2
- ; CHECK: [[VFNMSD:%[0-9]+]]:dpr = VFNMSD [[COPY2]], [[COPY1]], [[COPY]], 14 /* CC::al */, $noreg
+ ; CHECK: [[VFNMSD:%[0-9]+]]:dpr = nofpexcept VFNMSD [[COPY2]], [[COPY1]], [[COPY]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK: $d0 = COPY [[VFNMSD]]
; CHECK: MOVPCLR 14 /* CC::al */, $noreg, implicit $d0
%0:fprb(s64) = COPY $d0
diff --git a/llvm/test/CodeGen/ARM/bf16_fast_math.ll b/llvm/test/CodeGen/ARM/bf16_fast_math.ll
index 1b18ea6..5f7e1e6 100644
--- a/llvm/test/CodeGen/ARM/bf16_fast_math.ll
+++ b/llvm/test/CodeGen/ARM/bf16_fast_math.ll
@@ -17,7 +17,7 @@ define bfloat @normal_fadd(bfloat %x, bfloat %y) {
; CHECK-NOBF16-NEXT: [[VMOVSR:%[0-9]+]]:spr = VMOVSR killed [[MOVsi]], 14 /* CC::al */, $noreg
; CHECK-NOBF16-NEXT: [[MOVsi1:%[0-9]+]]:gpr = MOVsi [[COPY1]], 130, 14 /* CC::al */, $noreg, $noreg
; CHECK-NOBF16-NEXT: [[VMOVSR1:%[0-9]+]]:spr = VMOVSR killed [[MOVsi1]], 14 /* CC::al */, $noreg
- ; CHECK-NOBF16-NEXT: [[VADDS:%[0-9]+]]:spr = VADDS killed [[VMOVSR1]], killed [[VMOVSR]], 14 /* CC::al */, $noreg
+ ; CHECK-NOBF16-NEXT: [[VADDS:%[0-9]+]]:spr = nofpexcept VADDS killed [[VMOVSR1]], killed [[VMOVSR]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-NOBF16-NEXT: [[VMOVRS:%[0-9]+]]:gpr = VMOVRS killed [[VADDS]], 14 /* CC::al */, $noreg
; CHECK-NOBF16-NEXT: ADJCALLSTACKDOWN 0, 0, 14 /* CC::al */, $noreg, implicit-def dead $sp, implicit $sp
; CHECK-NOBF16-NEXT: $r0 = COPY [[VMOVRS]]
@@ -44,7 +44,7 @@ define bfloat @fast_fadd(bfloat %x, bfloat %y) {
; CHECK-NOBF16-NEXT: [[VMOVSR:%[0-9]+]]:spr = VMOVSR killed [[MOVsi]], 14 /* CC::al */, $noreg
; CHECK-NOBF16-NEXT: [[MOVsi1:%[0-9]+]]:gpr = MOVsi [[COPY1]], 130, 14 /* CC::al */, $noreg, $noreg
; CHECK-NOBF16-NEXT: [[VMOVSR1:%[0-9]+]]:spr = VMOVSR killed [[MOVsi1]], 14 /* CC::al */, $noreg
- ; CHECK-NOBF16-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS killed [[VMOVSR1]], killed [[VMOVSR]], 14 /* CC::al */, $noreg
+ ; CHECK-NOBF16-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc nofpexcept VADDS killed [[VMOVSR1]], killed [[VMOVSR]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-NOBF16-NEXT: [[VMOVRS:%[0-9]+]]:gpr = VMOVRS killed [[VADDS]], 14 /* CC::al */, $noreg
; CHECK-NOBF16-NEXT: ADJCALLSTACKDOWN 0, 0, 14 /* CC::al */, $noreg, implicit-def dead $sp, implicit $sp
; CHECK-NOBF16-NEXT: $r0 = COPY [[VMOVRS]]
@@ -71,7 +71,7 @@ define bfloat @ninf_fadd(bfloat %x, bfloat %y) {
; CHECK-NOBF16-NEXT: [[VMOVSR:%[0-9]+]]:spr = VMOVSR killed [[MOVsi]], 14 /* CC::al */, $noreg
; CHECK-NOBF16-NEXT: [[MOVsi1:%[0-9]+]]:gpr = MOVsi [[COPY1]], 130, 14 /* CC::al */, $noreg, $noreg
; CHECK-NOBF16-NEXT: [[VMOVSR1:%[0-9]+]]:spr = VMOVSR killed [[MOVsi1]], 14 /* CC::al */, $noreg
- ; CHECK-NOBF16-NEXT: [[VADDS:%[0-9]+]]:spr = ninf VADDS killed [[VMOVSR1]], killed [[VMOVSR]], 14 /* CC::al */, $noreg
+ ; CHECK-NOBF16-NEXT: [[VADDS:%[0-9]+]]:spr = ninf nofpexcept VADDS killed [[VMOVSR1]], killed [[VMOVSR]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-NOBF16-NEXT: [[VMOVRS:%[0-9]+]]:gpr = VMOVRS killed [[VADDS]], 14 /* CC::al */, $noreg
; CHECK-NOBF16-NEXT: ADJCALLSTACKDOWN 0, 0, 14 /* CC::al */, $noreg, implicit-def dead $sp, implicit $sp
; CHECK-NOBF16-NEXT: $r0 = COPY [[VMOVRS]]
@@ -102,7 +102,7 @@ define bfloat @normal_fadd_sequence(bfloat %x, bfloat %y, bfloat %z) {
; CHECK-NOBF16-NEXT: [[VMOVSR:%[0-9]+]]:spr = VMOVSR killed [[MOVsi]], 14 /* CC::al */, $noreg
; CHECK-NOBF16-NEXT: [[MOVsi1:%[0-9]+]]:gpr = MOVsi [[COPY2]], 130, 14 /* CC::al */, $noreg, $noreg
; CHECK-NOBF16-NEXT: [[VMOVSR1:%[0-9]+]]:spr = VMOVSR killed [[MOVsi1]], 14 /* CC::al */, $noreg
- ; CHECK-NOBF16-NEXT: [[VADDS:%[0-9]+]]:spr = VADDS killed [[VMOVSR1]], killed [[VMOVSR]], 14 /* CC::al */, $noreg
+ ; CHECK-NOBF16-NEXT: [[VADDS:%[0-9]+]]:spr = nofpexcept VADDS killed [[VMOVSR1]], killed [[VMOVSR]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-NOBF16-NEXT: [[VMOVRS:%[0-9]+]]:gpr = VMOVRS killed [[VADDS]], 14 /* CC::al */, $noreg
; CHECK-NOBF16-NEXT: ADJCALLSTACKDOWN 0, 0, 14 /* CC::al */, $noreg, implicit-def dead $sp, implicit $sp
; CHECK-NOBF16-NEXT: $r0 = COPY [[VMOVRS]]
@@ -113,7 +113,7 @@ define bfloat @normal_fadd_sequence(bfloat %x, bfloat %y, bfloat %z) {
; CHECK-NOBF16-NEXT: [[VMOVSR2:%[0-9]+]]:spr = VMOVSR killed [[MOVsi2]], 14 /* CC::al */, $noreg
; CHECK-NOBF16-NEXT: [[MOVsi3:%[0-9]+]]:gpr = MOVsi [[COPY3]], 130, 14 /* CC::al */, $noreg, $noreg
; CHECK-NOBF16-NEXT: [[VMOVSR3:%[0-9]+]]:spr = VMOVSR killed [[MOVsi3]], 14 /* CC::al */, $noreg
- ; CHECK-NOBF16-NEXT: [[VADDS1:%[0-9]+]]:spr = VADDS killed [[VMOVSR3]], killed [[VMOVSR2]], 14 /* CC::al */, $noreg
+ ; CHECK-NOBF16-NEXT: [[VADDS1:%[0-9]+]]:spr = nofpexcept VADDS killed [[VMOVSR3]], killed [[VMOVSR2]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-NOBF16-NEXT: [[VMOVRS1:%[0-9]+]]:gpr = VMOVRS killed [[VADDS1]], 14 /* CC::al */, $noreg
; CHECK-NOBF16-NEXT: ADJCALLSTACKDOWN 0, 0, 14 /* CC::al */, $noreg, implicit-def dead $sp, implicit $sp
; CHECK-NOBF16-NEXT: $r0 = COPY [[VMOVRS1]]
@@ -142,10 +142,10 @@ define bfloat @nnan_ninf_contract_fadd_sequence(bfloat %x, bfloat %y, bfloat %z)
; CHECK-NOBF16-NEXT: [[VMOVSR:%[0-9]+]]:spr = VMOVSR killed [[MOVsi]], 14 /* CC::al */, $noreg
; CHECK-NOBF16-NEXT: [[MOVsi1:%[0-9]+]]:gpr = MOVsi [[COPY2]], 130, 14 /* CC::al */, $noreg, $noreg
; CHECK-NOBF16-NEXT: [[VMOVSR1:%[0-9]+]]:spr = VMOVSR killed [[MOVsi1]], 14 /* CC::al */, $noreg
- ; CHECK-NOBF16-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf contract VADDS killed [[VMOVSR1]], killed [[VMOVSR]], 14 /* CC::al */, $noreg
+ ; CHECK-NOBF16-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf contract nofpexcept VADDS killed [[VMOVSR1]], killed [[VMOVSR]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-NOBF16-NEXT: [[MOVsi2:%[0-9]+]]:gpr = MOVsi [[COPY]], 130, 14 /* CC::al */, $noreg, $noreg
; CHECK-NOBF16-NEXT: [[VMOVSR2:%[0-9]+]]:spr = VMOVSR killed [[MOVsi2]], 14 /* CC::al */, $noreg
- ; CHECK-NOBF16-NEXT: [[VADDS1:%[0-9]+]]:spr = nnan ninf contract VADDS killed [[VADDS]], killed [[VMOVSR2]], 14 /* CC::al */, $noreg
+ ; CHECK-NOBF16-NEXT: [[VADDS1:%[0-9]+]]:spr = nnan ninf contract nofpexcept VADDS killed [[VADDS]], killed [[VMOVSR2]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-NOBF16-NEXT: [[VMOVRS:%[0-9]+]]:gpr = VMOVRS killed [[VADDS1]], 14 /* CC::al */, $noreg
; CHECK-NOBF16-NEXT: ADJCALLSTACKDOWN 0, 0, 14 /* CC::al */, $noreg, implicit-def dead $sp, implicit $sp
; CHECK-NOBF16-NEXT: $r0 = COPY [[VMOVRS]]
@@ -174,7 +174,7 @@ define bfloat @ninf_fadd_sequence(bfloat %x, bfloat %y, bfloat %z) {
; CHECK-NOBF16-NEXT: [[VMOVSR:%[0-9]+]]:spr = VMOVSR killed [[MOVsi]], 14 /* CC::al */, $noreg
; CHECK-NOBF16-NEXT: [[MOVsi1:%[0-9]+]]:gpr = MOVsi [[COPY2]], 130, 14 /* CC::al */, $noreg, $noreg
; CHECK-NOBF16-NEXT: [[VMOVSR1:%[0-9]+]]:spr = VMOVSR killed [[MOVsi1]], 14 /* CC::al */, $noreg
- ; CHECK-NOBF16-NEXT: [[VADDS:%[0-9]+]]:spr = ninf VADDS killed [[VMOVSR1]], killed [[VMOVSR]], 14 /* CC::al */, $noreg
+ ; CHECK-NOBF16-NEXT: [[VADDS:%[0-9]+]]:spr = ninf nofpexcept VADDS killed [[VMOVSR1]], killed [[VMOVSR]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-NOBF16-NEXT: [[VMOVRS:%[0-9]+]]:gpr = VMOVRS killed [[VADDS]], 14 /* CC::al */, $noreg
; CHECK-NOBF16-NEXT: ADJCALLSTACKDOWN 0, 0, 14 /* CC::al */, $noreg, implicit-def dead $sp, implicit $sp
; CHECK-NOBF16-NEXT: $r0 = COPY [[VMOVRS]]
@@ -185,7 +185,7 @@ define bfloat @ninf_fadd_sequence(bfloat %x, bfloat %y, bfloat %z) {
; CHECK-NOBF16-NEXT: [[VMOVSR2:%[0-9]+]]:spr = VMOVSR killed [[MOVsi2]], 14 /* CC::al */, $noreg
; CHECK-NOBF16-NEXT: [[MOVsi3:%[0-9]+]]:gpr = MOVsi [[COPY3]], 130, 14 /* CC::al */, $noreg, $noreg
; CHECK-NOBF16-NEXT: [[VMOVSR3:%[0-9]+]]:spr = VMOVSR killed [[MOVsi3]], 14 /* CC::al */, $noreg
- ; CHECK-NOBF16-NEXT: [[VADDS1:%[0-9]+]]:spr = ninf VADDS killed [[VMOVSR3]], killed [[VMOVSR2]], 14 /* CC::al */, $noreg
+ ; CHECK-NOBF16-NEXT: [[VADDS1:%[0-9]+]]:spr = ninf nofpexcept VADDS killed [[VMOVSR3]], killed [[VMOVSR2]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-NOBF16-NEXT: [[VMOVRS1:%[0-9]+]]:gpr = VMOVRS killed [[VADDS1]], 14 /* CC::al */, $noreg
; CHECK-NOBF16-NEXT: ADJCALLSTACKDOWN 0, 0, 14 /* CC::al */, $noreg, implicit-def dead $sp, implicit $sp
; CHECK-NOBF16-NEXT: $r0 = COPY [[VMOVRS1]]
diff --git a/llvm/test/CodeGen/ARM/cortex-m7-wideops.mir b/llvm/test/CodeGen/ARM/cortex-m7-wideops.mir
index 1bee32f..fe23e85 100644
--- a/llvm/test/CodeGen/ARM/cortex-m7-wideops.mir
+++ b/llvm/test/CodeGen/ARM/cortex-m7-wideops.mir
@@ -22,15 +22,16 @@ body: |
; CHECK-LABEL: name: test_groups
; CHECK: liveins: $d0, $r0, $r1, $r2, $r3, $r4
- ; CHECK: renamable $d0 = VADDD killed renamable $d0, renamable $d0, 14 /* CC::al */, $noreg
- ; CHECK: renamable $r3 = t2ADDrr killed renamable $r3, renamable $r3, 14 /* CC::al */, $noreg, $noreg
- ; CHECK: renamable $s2 = VLDRS killed renamable $r0, 0, 14 /* CC::al */, $noreg
- ; CHECK: VSTRS killed renamable $s2, killed renamable $r1, 0, 14 /* CC::al */, $noreg
- ; CHECK: t2STRi12 killed renamable $r3, killed renamable $r2, 0, 14 /* CC::al */, $noreg
- ; CHECK: renamable $r4 = t2ADDrr killed renamable $r4, renamable $r4, 14 /* CC::al */, $noreg, $noreg
- ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit killed $d0
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: renamable $s2 = VLDRS killed renamable $r0, 0, 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: renamable $r3 = t2ADDrr killed renamable $r3, renamable $r3, 14 /* CC::al */, $noreg, $noreg
+ ; CHECK-NEXT: renamable $d0 = VADDD killed renamable $d0, renamable $d0, 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ ; CHECK-NEXT: renamable $r4 = t2ADDrr killed renamable $r4, renamable $r4, 14 /* CC::al */, $noreg, $noreg
+ ; CHECK-NEXT: VSTRS killed renamable $s2, killed renamable $r1, 0, 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: t2STRi12 killed renamable $r3, killed renamable $r2, 0, 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit killed $d0
renamable $s2 = VLDRS killed renamable $r0, 0, 14 /* CC::al */, $noreg
- renamable $d0 = VADDD killed renamable $d0, renamable $d0, 14 /* CC::al */, $noreg
+ renamable $d0 = VADDD killed renamable $d0, renamable $d0, 14 /* CC::al */, $noreg, implicit $fpscr_rm
VSTRS killed renamable $s2, killed renamable $r1, 0, 14 /* CC::al */, $noreg
renamable $r3 = t2ADDrr killed renamable $r3, renamable $r3, 14 /* CC::al */, $noreg, $noreg
t2STRi12 killed renamable $r3, killed renamable $r2, 0, 14 /* CC::al */, $noreg
diff --git a/llvm/test/CodeGen/ARM/fp16-litpool-arm.mir b/llvm/test/CodeGen/ARM/fp16-litpool-arm.mir
index 8e671c9..f5b2e98 100644
--- a/llvm/test/CodeGen/ARM/fp16-litpool-arm.mir
+++ b/llvm/test/CodeGen/ARM/fp16-litpool-arm.mir
@@ -81,7 +81,7 @@ body: |
STRi12 killed renamable $r1, killed renamable $r0, 0, 14, $noreg :: (volatile store (s32) into %ir.LL, align 8)
dead renamable $r0 = SPACE 8920, undef renamable $r0
renamable $s2 = VLDRH $sp, 1, 14, $noreg :: (volatile dereferenceable load (s16) from %ir.S)
- renamable $s0 = VADDH killed renamable $s2, killed renamable $s0, 14, $noreg
+ renamable $s0 = VADDH killed renamable $s2, killed renamable $s0, 14, $noreg, implicit $fpscr_rm
VSTRH renamable $s0, $sp, 1, 14, $noreg :: (volatile store (s16) into %ir.S)
renamable $r0 = VMOVRH killed renamable $s0, 14, $noreg
dead renamable $r1 = SPACE 1350, undef renamable $r0
diff --git a/llvm/test/CodeGen/ARM/fp16-litpool-thumb.mir b/llvm/test/CodeGen/ARM/fp16-litpool-thumb.mir
index 03ddd80..4b66476 100644
--- a/llvm/test/CodeGen/ARM/fp16-litpool-thumb.mir
+++ b/llvm/test/CodeGen/ARM/fp16-litpool-thumb.mir
@@ -72,7 +72,7 @@ body: |
renamable $s2 = VLDRH $sp, 1, 14, $noreg :: (volatile dereferenceable load (s16) from %ir.S)
renamable $s0 = VLDRH %const.1, 0, 14, $noreg :: (load (s16) from constant-pool)
dead renamable $r0 = SPACE 1230, undef renamable $r0
- renamable $s0 = VADDH killed renamable $s2, killed renamable $s0, 14, $noreg
+ renamable $s0 = VADDH killed renamable $s2, killed renamable $s0, 14, $noreg, implicit $fpscr_rm
VSTRH renamable $s0, $sp, 1, 14, $noreg :: (volatile store (s16) into %ir.S)
renamable $r0 = VMOVRH killed renamable $s0, 14, $noreg
dead renamable $r1 = SPACE 1330, undef renamable $r0
diff --git a/llvm/test/CodeGen/ARM/fp16-litpool2-arm.mir b/llvm/test/CodeGen/ARM/fp16-litpool2-arm.mir
index 46f028b..c16a62a 100644
--- a/llvm/test/CodeGen/ARM/fp16-litpool2-arm.mir
+++ b/llvm/test/CodeGen/ARM/fp16-litpool2-arm.mir
@@ -89,7 +89,7 @@ body: |
$sp = frame-setup SUBri $sp, 4, 14, $noreg, $noreg
frame-setup CFI_INSTRUCTION def_cfa_offset 4
renamable $s0 = VLDRH %const.0, 0, 14, $noreg :: (load (s16) from constant-pool)
- VCMPZH renamable $s0, 14, $noreg, implicit-def $fpscr_nzcv
+ VCMPZH renamable $s0, 14, $noreg, implicit-def $fpscr_nzcv, implicit $fpscr_rm
VSTRH killed renamable $s0, $sp, 1, 14, $noreg :: (store (s16) into %ir.res)
FMSTAT 14, $noreg, implicit-def $cpsr, implicit killed $fpscr_nzcv
Bcc %bb.2, 0, killed $cpsr
diff --git a/llvm/test/CodeGen/ARM/fp16-litpool3-arm.mir b/llvm/test/CodeGen/ARM/fp16-litpool3-arm.mir
index 5a03fcd..049b7d9 100644
--- a/llvm/test/CodeGen/ARM/fp16-litpool3-arm.mir
+++ b/llvm/test/CodeGen/ARM/fp16-litpool3-arm.mir
@@ -95,7 +95,7 @@ body: |
$sp = frame-setup SUBri $sp, 4, 14, $noreg, $noreg
frame-setup CFI_INSTRUCTION def_cfa_offset 4
renamable $s0 = VLDRH %const.0, 0, 14, $noreg :: (load (s16) from constant-pool)
- VCMPZH renamable $s0, 14, $noreg, implicit-def $fpscr_nzcv
+ VCMPZH renamable $s0, 14, $noreg, implicit-def $fpscr_nzcv, implicit $fpscr_rm
VSTRH killed renamable $s0, $sp, 1, 14, $noreg :: (store (s16) into %ir.res)
FMSTAT 14, $noreg, implicit-def $cpsr, implicit killed $fpscr_nzcv
Bcc %bb.2, 0, killed $cpsr
diff --git a/llvm/test/CodeGen/ARM/fp16_fast_math.ll b/llvm/test/CodeGen/ARM/fp16_fast_math.ll
index 165eb4b..47e1f84f 100644
--- a/llvm/test/CodeGen/ARM/fp16_fast_math.ll
+++ b/llvm/test/CodeGen/ARM/fp16_fast_math.ll
@@ -16,11 +16,11 @@ define half @normal_fadd(half %x, half %y) {
; CHECK-CVT-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $r0
; CHECK-CVT-NEXT: [[COPY2:%[0-9]+]]:spr = COPY [[COPY1]]
; CHECK-CVT-NEXT: [[COPY3:%[0-9]+]]:spr = COPY [[COPY]]
- ; CHECK-CVT-NEXT: [[VCVTBHS:%[0-9]+]]:spr = VCVTBHS killed [[COPY3]], 14 /* CC::al */, $noreg
- ; CHECK-CVT-NEXT: [[VCVTBHS1:%[0-9]+]]:spr = VCVTBHS killed [[COPY2]], 14 /* CC::al */, $noreg
- ; CHECK-CVT-NEXT: [[VADDS:%[0-9]+]]:spr = VADDS killed [[VCVTBHS1]], killed [[VCVTBHS]], 14 /* CC::al */, $noreg
+ ; CHECK-CVT-NEXT: [[VCVTBHS:%[0-9]+]]:spr = nofpexcept VCVTBHS killed [[COPY3]], 14 /* CC::al */, $noreg, implicit $fpscr
+ ; CHECK-CVT-NEXT: [[VCVTBHS1:%[0-9]+]]:spr = nofpexcept VCVTBHS killed [[COPY2]], 14 /* CC::al */, $noreg, implicit $fpscr
+ ; CHECK-CVT-NEXT: [[VADDS:%[0-9]+]]:spr = nofpexcept VADDS killed [[VCVTBHS1]], killed [[VCVTBHS]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-CVT-NEXT: [[DEF:%[0-9]+]]:spr = IMPLICIT_DEF
- ; CHECK-CVT-NEXT: [[VCVTBSH:%[0-9]+]]:spr = VCVTBSH [[DEF]], killed [[VADDS]], 14 /* CC::al */, $noreg
+ ; CHECK-CVT-NEXT: [[VCVTBSH:%[0-9]+]]:spr = nofpexcept VCVTBSH [[DEF]], killed [[VADDS]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-CVT-NEXT: [[COPY4:%[0-9]+]]:gpr = COPY killed [[VCVTBSH]]
; CHECK-CVT-NEXT: $r0 = COPY [[COPY4]]
; CHECK-CVT-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r0
@@ -33,7 +33,7 @@ define half @normal_fadd(half %x, half %y) {
; CHECK-FP16-NEXT: [[COPY1:%[0-9]+]]:rgpr = COPY $r0
; CHECK-FP16-NEXT: [[VMOVHR:%[0-9]+]]:hpr = VMOVHR [[COPY]], 14, $noreg
; CHECK-FP16-NEXT: [[VMOVHR1:%[0-9]+]]:hpr = VMOVHR [[COPY1]], 14, $noreg
- ; CHECK-FP16-NEXT: [[VADDH:%[0-9]+]]:hpr = VADDH killed [[VMOVHR1]], killed [[VMOVHR]], 14, $noreg
+ ; CHECK-FP16-NEXT: [[VADDH:%[0-9]+]]:hpr = nofpexcept VADDH killed [[VMOVHR1]], killed [[VMOVHR]], 14, $noreg, implicit $fpscr
; CHECK-FP16-NEXT: $r0 = COPY [[VADDH]]
; CHECK-FP16-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r0
entry:
@@ -50,11 +50,11 @@ define half @fast_fadd(half %x, half %y) {
; CHECK-CVT-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $r0
; CHECK-CVT-NEXT: [[COPY2:%[0-9]+]]:spr = COPY [[COPY1]]
; CHECK-CVT-NEXT: [[COPY3:%[0-9]+]]:spr = COPY [[COPY]]
- ; CHECK-CVT-NEXT: [[VCVTBHS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VCVTBHS killed [[COPY3]], 14 /* CC::al */, $noreg
- ; CHECK-CVT-NEXT: [[VCVTBHS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VCVTBHS killed [[COPY2]], 14 /* CC::al */, $noreg
- ; CHECK-CVT-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS killed [[VCVTBHS1]], killed [[VCVTBHS]], 14 /* CC::al */, $noreg
+ ; CHECK-CVT-NEXT: [[VCVTBHS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc nofpexcept VCVTBHS killed [[COPY3]], 14 /* CC::al */, $noreg, implicit $fpscr
+ ; CHECK-CVT-NEXT: [[VCVTBHS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc nofpexcept VCVTBHS killed [[COPY2]], 14 /* CC::al */, $noreg, implicit $fpscr
+ ; CHECK-CVT-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc nofpexcept VADDS killed [[VCVTBHS1]], killed [[VCVTBHS]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-CVT-NEXT: [[DEF:%[0-9]+]]:spr = IMPLICIT_DEF
- ; CHECK-CVT-NEXT: [[VCVTBSH:%[0-9]+]]:spr = VCVTBSH [[DEF]], killed [[VADDS]], 14 /* CC::al */, $noreg
+ ; CHECK-CVT-NEXT: [[VCVTBSH:%[0-9]+]]:spr = nofpexcept VCVTBSH [[DEF]], killed [[VADDS]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-CVT-NEXT: [[COPY4:%[0-9]+]]:gpr = COPY killed [[VCVTBSH]]
; CHECK-CVT-NEXT: $r0 = COPY [[COPY4]]
; CHECK-CVT-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r0
@@ -67,7 +67,7 @@ define half @fast_fadd(half %x, half %y) {
; CHECK-FP16-NEXT: [[COPY1:%[0-9]+]]:rgpr = COPY $r0
; CHECK-FP16-NEXT: [[VMOVHR:%[0-9]+]]:hpr = VMOVHR [[COPY]], 14, $noreg
; CHECK-FP16-NEXT: [[VMOVHR1:%[0-9]+]]:hpr = VMOVHR [[COPY1]], 14, $noreg
- ; CHECK-FP16-NEXT: [[VADDH:%[0-9]+]]:hpr = nnan ninf nsz arcp contract afn reassoc VADDH killed [[VMOVHR1]], killed [[VMOVHR]], 14, $noreg
+ ; CHECK-FP16-NEXT: [[VADDH:%[0-9]+]]:hpr = nnan ninf nsz arcp contract afn reassoc nofpexcept VADDH killed [[VMOVHR1]], killed [[VMOVHR]], 14, $noreg, implicit $fpscr
; CHECK-FP16-NEXT: $r0 = COPY [[VADDH]]
; CHECK-FP16-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r0
entry:
@@ -84,11 +84,11 @@ define half @ninf_fadd(half %x, half %y) {
; CHECK-CVT-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $r0
; CHECK-CVT-NEXT: [[COPY2:%[0-9]+]]:spr = COPY [[COPY1]]
; CHECK-CVT-NEXT: [[COPY3:%[0-9]+]]:spr = COPY [[COPY]]
- ; CHECK-CVT-NEXT: [[VCVTBHS:%[0-9]+]]:spr = ninf VCVTBHS killed [[COPY3]], 14 /* CC::al */, $noreg
- ; CHECK-CVT-NEXT: [[VCVTBHS1:%[0-9]+]]:spr = ninf VCVTBHS killed [[COPY2]], 14 /* CC::al */, $noreg
- ; CHECK-CVT-NEXT: [[VADDS:%[0-9]+]]:spr = ninf VADDS killed [[VCVTBHS1]], killed [[VCVTBHS]], 14 /* CC::al */, $noreg
+ ; CHECK-CVT-NEXT: [[VCVTBHS:%[0-9]+]]:spr = ninf nofpexcept VCVTBHS killed [[COPY3]], 14 /* CC::al */, $noreg, implicit $fpscr
+ ; CHECK-CVT-NEXT: [[VCVTBHS1:%[0-9]+]]:spr = ninf nofpexcept VCVTBHS killed [[COPY2]], 14 /* CC::al */, $noreg, implicit $fpscr
+ ; CHECK-CVT-NEXT: [[VADDS:%[0-9]+]]:spr = ninf nofpexcept VADDS killed [[VCVTBHS1]], killed [[VCVTBHS]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-CVT-NEXT: [[DEF:%[0-9]+]]:spr = IMPLICIT_DEF
- ; CHECK-CVT-NEXT: [[VCVTBSH:%[0-9]+]]:spr = VCVTBSH [[DEF]], killed [[VADDS]], 14 /* CC::al */, $noreg
+ ; CHECK-CVT-NEXT: [[VCVTBSH:%[0-9]+]]:spr = nofpexcept VCVTBSH [[DEF]], killed [[VADDS]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-CVT-NEXT: [[COPY4:%[0-9]+]]:gpr = COPY killed [[VCVTBSH]]
; CHECK-CVT-NEXT: $r0 = COPY [[COPY4]]
; CHECK-CVT-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r0
@@ -101,7 +101,7 @@ define half @ninf_fadd(half %x, half %y) {
; CHECK-FP16-NEXT: [[COPY1:%[0-9]+]]:rgpr = COPY $r0
; CHECK-FP16-NEXT: [[VMOVHR:%[0-9]+]]:hpr = VMOVHR [[COPY]], 14, $noreg
; CHECK-FP16-NEXT: [[VMOVHR1:%[0-9]+]]:hpr = VMOVHR [[COPY1]], 14, $noreg
- ; CHECK-FP16-NEXT: [[VADDH:%[0-9]+]]:hpr = ninf VADDH killed [[VMOVHR1]], killed [[VMOVHR]], 14, $noreg
+ ; CHECK-FP16-NEXT: [[VADDH:%[0-9]+]]:hpr = ninf nofpexcept VADDH killed [[VMOVHR1]], killed [[VMOVHR]], 14, $noreg, implicit $fpscr
; CHECK-FP16-NEXT: $r0 = COPY [[VADDH]]
; CHECK-FP16-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r0
entry:
@@ -122,19 +122,19 @@ define half @normal_fadd_sequence(half %x, half %y, half %z) {
; CHECK-CVT-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $r0
; CHECK-CVT-NEXT: [[COPY3:%[0-9]+]]:spr = COPY [[COPY2]]
; CHECK-CVT-NEXT: [[COPY4:%[0-9]+]]:spr = COPY [[COPY1]]
- ; CHECK-CVT-NEXT: [[VCVTBHS:%[0-9]+]]:spr = VCVTBHS killed [[COPY4]], 14 /* CC::al */, $noreg
- ; CHECK-CVT-NEXT: [[VCVTBHS1:%[0-9]+]]:spr = VCVTBHS killed [[COPY3]], 14 /* CC::al */, $noreg
- ; CHECK-CVT-NEXT: [[VADDS:%[0-9]+]]:spr = VADDS killed [[VCVTBHS1]], killed [[VCVTBHS]], 14 /* CC::al */, $noreg
+ ; CHECK-CVT-NEXT: [[VCVTBHS:%[0-9]+]]:spr = nofpexcept VCVTBHS killed [[COPY4]], 14 /* CC::al */, $noreg, implicit $fpscr
+ ; CHECK-CVT-NEXT: [[VCVTBHS1:%[0-9]+]]:spr = nofpexcept VCVTBHS killed [[COPY3]], 14 /* CC::al */, $noreg, implicit $fpscr
+ ; CHECK-CVT-NEXT: [[VADDS:%[0-9]+]]:spr = nofpexcept VADDS killed [[VCVTBHS1]], killed [[VCVTBHS]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-CVT-NEXT: [[COPY5:%[0-9]+]]:spr = COPY [[COPY]]
- ; CHECK-CVT-NEXT: [[VCVTBHS2:%[0-9]+]]:spr = VCVTBHS killed [[COPY5]], 14 /* CC::al */, $noreg
+ ; CHECK-CVT-NEXT: [[VCVTBHS2:%[0-9]+]]:spr = nofpexcept VCVTBHS killed [[COPY5]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-CVT-NEXT: [[DEF:%[0-9]+]]:spr = IMPLICIT_DEF
- ; CHECK-CVT-NEXT: [[VCVTBSH:%[0-9]+]]:spr = VCVTBSH [[DEF]], killed [[VADDS]], 14 /* CC::al */, $noreg
+ ; CHECK-CVT-NEXT: [[VCVTBSH:%[0-9]+]]:spr = nofpexcept VCVTBSH [[DEF]], killed [[VADDS]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-CVT-NEXT: [[COPY6:%[0-9]+]]:gpr = COPY killed [[VCVTBSH]]
; CHECK-CVT-NEXT: [[COPY7:%[0-9]+]]:spr = COPY killed [[COPY6]]
- ; CHECK-CVT-NEXT: [[VCVTBHS3:%[0-9]+]]:spr = VCVTBHS killed [[COPY7]], 14 /* CC::al */, $noreg
- ; CHECK-CVT-NEXT: [[VADDS1:%[0-9]+]]:spr = VADDS killed [[VCVTBHS3]], killed [[VCVTBHS2]], 14 /* CC::al */, $noreg
+ ; CHECK-CVT-NEXT: [[VCVTBHS3:%[0-9]+]]:spr = nofpexcept VCVTBHS killed [[COPY7]], 14 /* CC::al */, $noreg, implicit $fpscr
+ ; CHECK-CVT-NEXT: [[VADDS1:%[0-9]+]]:spr = nofpexcept VADDS killed [[VCVTBHS3]], killed [[VCVTBHS2]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-CVT-NEXT: [[DEF1:%[0-9]+]]:spr = IMPLICIT_DEF
- ; CHECK-CVT-NEXT: [[VCVTBSH1:%[0-9]+]]:spr = VCVTBSH [[DEF1]], killed [[VADDS1]], 14 /* CC::al */, $noreg
+ ; CHECK-CVT-NEXT: [[VCVTBSH1:%[0-9]+]]:spr = nofpexcept VCVTBSH [[DEF1]], killed [[VADDS1]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-CVT-NEXT: [[COPY8:%[0-9]+]]:gpr = COPY killed [[VCVTBSH1]]
; CHECK-CVT-NEXT: $r0 = COPY [[COPY8]]
; CHECK-CVT-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r0
@@ -148,9 +148,9 @@ define half @normal_fadd_sequence(half %x, half %y, half %z) {
; CHECK-FP16-NEXT: [[COPY2:%[0-9]+]]:rgpr = COPY $r0
; CHECK-FP16-NEXT: [[VMOVHR:%[0-9]+]]:hpr = VMOVHR [[COPY1]], 14, $noreg
; CHECK-FP16-NEXT: [[VMOVHR1:%[0-9]+]]:hpr = VMOVHR [[COPY2]], 14, $noreg
- ; CHECK-FP16-NEXT: [[VADDH:%[0-9]+]]:hpr = VADDH killed [[VMOVHR1]], killed [[VMOVHR]], 14, $noreg
+ ; CHECK-FP16-NEXT: [[VADDH:%[0-9]+]]:hpr = nofpexcept VADDH killed [[VMOVHR1]], killed [[VMOVHR]], 14, $noreg, implicit $fpscr
; CHECK-FP16-NEXT: [[VMOVHR2:%[0-9]+]]:hpr = VMOVHR [[COPY]], 14, $noreg
- ; CHECK-FP16-NEXT: [[VADDH1:%[0-9]+]]:hpr = VADDH killed [[VADDH]], killed [[VMOVHR2]], 14, $noreg
+ ; CHECK-FP16-NEXT: [[VADDH1:%[0-9]+]]:hpr = nofpexcept VADDH killed [[VADDH]], killed [[VMOVHR2]], 14, $noreg, implicit $fpscr
; CHECK-FP16-NEXT: $r0 = COPY [[VADDH1]]
; CHECK-FP16-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r0
entry:
@@ -169,14 +169,14 @@ define half @nnan_ninf_contract_fadd_sequence(half %x, half %y, half %z) {
; CHECK-CVT-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $r0
; CHECK-CVT-NEXT: [[COPY3:%[0-9]+]]:spr = COPY [[COPY2]]
; CHECK-CVT-NEXT: [[COPY4:%[0-9]+]]:spr = COPY [[COPY1]]
- ; CHECK-CVT-NEXT: [[VCVTBHS:%[0-9]+]]:spr = nnan ninf contract VCVTBHS killed [[COPY4]], 14 /* CC::al */, $noreg
- ; CHECK-CVT-NEXT: [[VCVTBHS1:%[0-9]+]]:spr = nnan ninf contract VCVTBHS killed [[COPY3]], 14 /* CC::al */, $noreg
- ; CHECK-CVT-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf contract VADDS killed [[VCVTBHS1]], killed [[VCVTBHS]], 14 /* CC::al */, $noreg
+ ; CHECK-CVT-NEXT: [[VCVTBHS:%[0-9]+]]:spr = nnan ninf contract nofpexcept VCVTBHS killed [[COPY4]], 14 /* CC::al */, $noreg, implicit $fpscr
+ ; CHECK-CVT-NEXT: [[VCVTBHS1:%[0-9]+]]:spr = nnan ninf contract nofpexcept VCVTBHS killed [[COPY3]], 14 /* CC::al */, $noreg, implicit $fpscr
+ ; CHECK-CVT-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf contract nofpexcept VADDS killed [[VCVTBHS1]], killed [[VCVTBHS]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-CVT-NEXT: [[COPY5:%[0-9]+]]:spr = COPY [[COPY]]
- ; CHECK-CVT-NEXT: [[VCVTBHS2:%[0-9]+]]:spr = nnan ninf contract VCVTBHS killed [[COPY5]], 14 /* CC::al */, $noreg
- ; CHECK-CVT-NEXT: [[VADDS1:%[0-9]+]]:spr = nnan ninf contract VADDS killed [[VADDS]], killed [[VCVTBHS2]], 14 /* CC::al */, $noreg
+ ; CHECK-CVT-NEXT: [[VCVTBHS2:%[0-9]+]]:spr = nnan ninf contract nofpexcept VCVTBHS killed [[COPY5]], 14 /* CC::al */, $noreg, implicit $fpscr
+ ; CHECK-CVT-NEXT: [[VADDS1:%[0-9]+]]:spr = nnan ninf contract nofpexcept VADDS killed [[VADDS]], killed [[VCVTBHS2]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-CVT-NEXT: [[DEF:%[0-9]+]]:spr = IMPLICIT_DEF
- ; CHECK-CVT-NEXT: [[VCVTBSH:%[0-9]+]]:spr = VCVTBSH [[DEF]], killed [[VADDS1]], 14 /* CC::al */, $noreg
+ ; CHECK-CVT-NEXT: [[VCVTBSH:%[0-9]+]]:spr = nofpexcept VCVTBSH [[DEF]], killed [[VADDS1]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-CVT-NEXT: [[COPY6:%[0-9]+]]:gpr = COPY killed [[VCVTBSH]]
; CHECK-CVT-NEXT: $r0 = COPY [[COPY6]]
; CHECK-CVT-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r0
@@ -190,9 +190,9 @@ define half @nnan_ninf_contract_fadd_sequence(half %x, half %y, half %z) {
; CHECK-FP16-NEXT: [[COPY2:%[0-9]+]]:rgpr = COPY $r0
; CHECK-FP16-NEXT: [[VMOVHR:%[0-9]+]]:hpr = VMOVHR [[COPY1]], 14, $noreg
; CHECK-FP16-NEXT: [[VMOVHR1:%[0-9]+]]:hpr = VMOVHR [[COPY2]], 14, $noreg
- ; CHECK-FP16-NEXT: [[VADDH:%[0-9]+]]:hpr = nnan ninf contract VADDH killed [[VMOVHR1]], killed [[VMOVHR]], 14, $noreg
+ ; CHECK-FP16-NEXT: [[VADDH:%[0-9]+]]:hpr = nnan ninf contract nofpexcept VADDH killed [[VMOVHR1]], killed [[VMOVHR]], 14, $noreg, implicit $fpscr
; CHECK-FP16-NEXT: [[VMOVHR2:%[0-9]+]]:hpr = VMOVHR [[COPY]], 14, $noreg
- ; CHECK-FP16-NEXT: [[VADDH1:%[0-9]+]]:hpr = nnan ninf contract VADDH killed [[VADDH]], killed [[VMOVHR2]], 14, $noreg
+ ; CHECK-FP16-NEXT: [[VADDH1:%[0-9]+]]:hpr = nnan ninf contract nofpexcept VADDH killed [[VADDH]], killed [[VMOVHR2]], 14, $noreg, implicit $fpscr
; CHECK-FP16-NEXT: $r0 = COPY [[VADDH1]]
; CHECK-FP16-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r0
entry:
@@ -211,19 +211,19 @@ define half @ninf_fadd_sequence(half %x, half %y, half %z) {
; CHECK-CVT-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $r0
; CHECK-CVT-NEXT: [[COPY3:%[0-9]+]]:spr = COPY [[COPY2]]
; CHECK-CVT-NEXT: [[COPY4:%[0-9]+]]:spr = COPY [[COPY1]]
- ; CHECK-CVT-NEXT: [[VCVTBHS:%[0-9]+]]:spr = ninf VCVTBHS killed [[COPY4]], 14 /* CC::al */, $noreg
- ; CHECK-CVT-NEXT: [[VCVTBHS1:%[0-9]+]]:spr = ninf VCVTBHS killed [[COPY3]], 14 /* CC::al */, $noreg
- ; CHECK-CVT-NEXT: [[VADDS:%[0-9]+]]:spr = ninf VADDS killed [[VCVTBHS1]], killed [[VCVTBHS]], 14 /* CC::al */, $noreg
+ ; CHECK-CVT-NEXT: [[VCVTBHS:%[0-9]+]]:spr = ninf nofpexcept VCVTBHS killed [[COPY4]], 14 /* CC::al */, $noreg, implicit $fpscr
+ ; CHECK-CVT-NEXT: [[VCVTBHS1:%[0-9]+]]:spr = ninf nofpexcept VCVTBHS killed [[COPY3]], 14 /* CC::al */, $noreg, implicit $fpscr
+ ; CHECK-CVT-NEXT: [[VADDS:%[0-9]+]]:spr = ninf nofpexcept VADDS killed [[VCVTBHS1]], killed [[VCVTBHS]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-CVT-NEXT: [[COPY5:%[0-9]+]]:spr = COPY [[COPY]]
- ; CHECK-CVT-NEXT: [[VCVTBHS2:%[0-9]+]]:spr = ninf VCVTBHS killed [[COPY5]], 14 /* CC::al */, $noreg
+ ; CHECK-CVT-NEXT: [[VCVTBHS2:%[0-9]+]]:spr = ninf nofpexcept VCVTBHS killed [[COPY5]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-CVT-NEXT: [[DEF:%[0-9]+]]:spr = IMPLICIT_DEF
- ; CHECK-CVT-NEXT: [[VCVTBSH:%[0-9]+]]:spr = VCVTBSH [[DEF]], killed [[VADDS]], 14 /* CC::al */, $noreg
+ ; CHECK-CVT-NEXT: [[VCVTBSH:%[0-9]+]]:spr = nofpexcept VCVTBSH [[DEF]], killed [[VADDS]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-CVT-NEXT: [[COPY6:%[0-9]+]]:gpr = COPY killed [[VCVTBSH]]
; CHECK-CVT-NEXT: [[COPY7:%[0-9]+]]:spr = COPY killed [[COPY6]]
- ; CHECK-CVT-NEXT: [[VCVTBHS3:%[0-9]+]]:spr = ninf VCVTBHS killed [[COPY7]], 14 /* CC::al */, $noreg
- ; CHECK-CVT-NEXT: [[VADDS1:%[0-9]+]]:spr = ninf VADDS killed [[VCVTBHS3]], killed [[VCVTBHS2]], 14 /* CC::al */, $noreg
+ ; CHECK-CVT-NEXT: [[VCVTBHS3:%[0-9]+]]:spr = ninf nofpexcept VCVTBHS killed [[COPY7]], 14 /* CC::al */, $noreg, implicit $fpscr
+ ; CHECK-CVT-NEXT: [[VADDS1:%[0-9]+]]:spr = ninf nofpexcept VADDS killed [[VCVTBHS3]], killed [[VCVTBHS2]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-CVT-NEXT: [[DEF1:%[0-9]+]]:spr = IMPLICIT_DEF
- ; CHECK-CVT-NEXT: [[VCVTBSH1:%[0-9]+]]:spr = VCVTBSH [[DEF1]], killed [[VADDS1]], 14 /* CC::al */, $noreg
+ ; CHECK-CVT-NEXT: [[VCVTBSH1:%[0-9]+]]:spr = nofpexcept VCVTBSH [[DEF1]], killed [[VADDS1]], 14 /* CC::al */, $noreg, implicit $fpscr
; CHECK-CVT-NEXT: [[COPY8:%[0-9]+]]:gpr = COPY killed [[VCVTBSH1]]
; CHECK-CVT-NEXT: $r0 = COPY [[COPY8]]
; CHECK-CVT-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r0
@@ -237,9 +237,9 @@ define half @ninf_fadd_sequence(half %x, half %y, half %z) {
; CHECK-FP16-NEXT: [[COPY2:%[0-9]+]]:rgpr = COPY $r0
; CHECK-FP16-NEXT: [[VMOVHR:%[0-9]+]]:hpr = VMOVHR [[COPY1]], 14, $noreg
; CHECK-FP16-NEXT: [[VMOVHR1:%[0-9]+]]:hpr = VMOVHR [[COPY2]], 14, $noreg
- ; CHECK-FP16-NEXT: [[VADDH:%[0-9]+]]:hpr = ninf VADDH killed [[VMOVHR1]], killed [[VMOVHR]], 14, $noreg
+ ; CHECK-FP16-NEXT: [[VADDH:%[0-9]+]]:hpr = ninf nofpexcept VADDH killed [[VMOVHR1]], killed [[VMOVHR]], 14, $noreg, implicit $fpscr
; CHECK-FP16-NEXT: [[VMOVHR2:%[0-9]+]]:hpr = VMOVHR [[COPY]], 14, $noreg
- ; CHECK-FP16-NEXT: [[VADDH1:%[0-9]+]]:hpr = ninf VADDH killed [[VADDH]], killed [[VMOVHR2]], 14, $noreg
+ ; CHECK-FP16-NEXT: [[VADDH1:%[0-9]+]]:hpr = ninf nofpexcept VADDH killed [[VADDH]], killed [[VMOVHR2]], 14, $noreg, implicit $fpscr
; CHECK-FP16-NEXT: $r0 = COPY [[VADDH1]]
; CHECK-FP16-NEXT: MOVPCLR 14 /* CC::al */, $noreg, implicit $r0
entry:
diff --git a/llvm/test/CodeGen/ARM/ipra-reg-usage.ll b/llvm/test/CodeGen/ARM/ipra-reg-usage.ll
index c928390..90142cb 100644
--- a/llvm/test/CodeGen/ARM/ipra-reg-usage.ll
+++ b/llvm/test/CodeGen/ARM/ipra-reg-usage.ll
@@ -6,7 +6,7 @@ target triple = "armv7-eabi"
declare void @bar1()
define void @foo()#0 {
-; CHECK: foo Clobbered Registers: $apsr $apsr_nzcv $cpsr $fpcxtns $fpcxts $fpexc $fpinst $fpscr $fpscr_nzcv $fpscr_nzcvqc $fpsid $itstate $pc $ra_auth_code $sp $spsr $vpr $zr $d0 $d1 $d2 $d3 $d4 $d5 $d6 $d7 $d16 $d17 $d18 $d19 $d20 $d21 $d22 $d23 $d24 $d25 $d26 $d27 $d28 $d29 $d30 $d31 $fpinst2 $mvfr0 $mvfr1 $mvfr2 $p0 $q0 $q1 $q2 $q3 $q8 $q9 $q10 $q11 $q12 $q13 $q14 $q15 $r0 $r1 $r2 $r3 $r12 $s0 $s1 $s2 $s3 $s4 $s5 $s6 $s7 $s8 $s9 $s10 $s11 $s12 $s13 $s14 $s15 $d0_d2 $d1_d3 $d2_d4 $d3_d5 $d4_d6 $d5_d7 $d6_d8 $d7_d9 $d14_d16 $d15_d17 $d16_d18 $d17_d19 $d18_d20 $d19_d21 $d20_d22 $d21_d23 $d22_d24 $d23_d25 $d24_d26 $d25_d27 $d26_d28 $d27_d29 $d28_d30 $d29_d31 $q0_q1 $q1_q2 $q2_q3 $q3_q4 $q7_q8 $q8_q9 $q9_q10 $q10_q11 $q11_q12 $q12_q13 $q13_q14 $q14_q15 $q0_q1_q2_q3 $q1_q2_q3_q4 $q2_q3_q4_q5 $q3_q4_q5_q6 $q5_q6_q7_q8 $q6_q7_q8_q9 $q7_q8_q9_q10 $q8_q9_q10_q11 $q9_q10_q11_q12 $q10_q11_q12_q13 $q11_q12_q13_q14 $q12_q13_q14_q15 $r0_r1 $r2_r3 $r12_sp $d0_d1_d2 $d1_d2_d3 $d2_d3_d4 $d3_d4_d5 $d4_d5_d6 $d5_d6_d7 $d6_d7_d8 $d7_d8_d9 $d14_d15_d16 $d15_d16_d17 $d16_d17_d18 $d17_d18_d19 $d18_d19_d20 $d19_d20_d21 $d20_d21_d22 $d21_d22_d23 $d22_d23_d24 $d23_d24_d25 $d24_d25_d26 $d25_d26_d27 $d26_d27_d28 $d27_d28_d29 $d28_d29_d30 $d29_d30_d31 $d0_d2_d4 $d1_d3_d5 $d2_d4_d6 $d3_d5_d7 $d4_d6_d8 $d5_d7_d9 $d6_d8_d10 $d7_d9_d11 $d12_d14_d16 $d13_d15_d17 $d14_d16_d18 $d15_d17_d19 $d16_d18_d20 $d17_d19_d21 $d18_d20_d22 $d19_d21_d23 $d20_d22_d24 $d21_d23_d25 $d22_d24_d26 $d23_d25_d27 $d24_d26_d28 $d25_d27_d29 $d26_d28_d30 $d27_d29_d31 $d0_d2_d4_d6 $d1_d3_d5_d7 $d2_d4_d6_d8 $d3_d5_d7_d9 $d4_d6_d8_d10 $d5_d7_d9_d11 $d6_d8_d10_d12 $d7_d9_d11_d13 $d10_d12_d14_d16 $d11_d13_d15_d17 $d12_d14_d16_d18 $d13_d15_d17_d19 $d14_d16_d18_d20 $d15_d17_d19_d21 $d16_d18_d20_d22 $d17_d19_d21_d23 $d18_d20_d22_d24 $d19_d21_d23_d25 $d20_d22_d24_d26 $d21_d23_d25_d27 $d22_d24_d26_d28 $d23_d25_d27_d29 $d24_d26_d28_d30 $d25_d27_d29_d31 $d1_d2 $d3_d4 $d5_d6 $d7_d8 $d15_d16 $d17_d18 $d19_d20 $d21_d22 $d23_d24 $d25_d26 $d27_d28 $d29_d30 $d1_d2_d3_d4 $d3_d4_d5_d6 $d5_d6_d7_d8 $d7_d8_d9_d10 $d13_d14_d15_d16 $d15_d16_d17_d18 $d17_d18_d19_d20 $d19_d20_d21_d22 $d21_d22_d23_d24 $d23_d24_d25_d26 $d25_d26_d27_d28 $d27_d28_d29_d30
+; CHECK: foo Clobbered Registers: $apsr $apsr_nzcv $cpsr $fpcxtns $fpcxts $fpexc $fpinst $fpscr $fpscr_nzcv $fpscr_nzcvqc $fpscr_rm $fpsid $itstate $pc $ra_auth_code $sp $spsr $vpr $zr $d0 $d1 $d2 $d3 $d4 $d5 $d6 $d7 $d16 $d17 $d18 $d19 $d20 $d21 $d22 $d23 $d24 $d25 $d26 $d27 $d28 $d29 $d30 $d31 $fpinst2 $mvfr0 $mvfr1 $mvfr2 $p0 $q0 $q1 $q2 $q3 $q8 $q9 $q10 $q11 $q12 $q13 $q14 $q15 $r0 $r1 $r2 $r3 $r12 $s0 $s1 $s2 $s3 $s4 $s5 $s6 $s7 $s8 $s9 $s10 $s11 $s12 $s13 $s14 $s15 $d0_d2 $d1_d3 $d2_d4 $d3_d5 $d4_d6 $d5_d7 $d6_d8 $d7_d9 $d14_d16 $d15_d17 $d16_d18 $d17_d19 $d18_d20 $d19_d21 $d20_d22 $d21_d23 $d22_d24 $d23_d25 $d24_d26 $d25_d27 $d26_d28 $d27_d29 $d28_d30 $d29_d31 $q0_q1 $q1_q2 $q2_q3 $q3_q4 $q7_q8 $q8_q9 $q9_q10 $q10_q11 $q11_q12 $q12_q13 $q13_q14 $q14_q15 $q0_q1_q2_q3 $q1_q2_q3_q4 $q2_q3_q4_q5 $q3_q4_q5_q6 $q5_q6_q7_q8 $q6_q7_q8_q9 $q7_q8_q9_q10 $q8_q9_q10_q11 $q9_q10_q11_q12 $q10_q11_q12_q13 $q11_q12_q13_q14 $q12_q13_q14_q15 $r0_r1 $r2_r3 $r12_sp $d0_d1_d2 $d1_d2_d3 $d2_d3_d4 $d3_d4_d5 $d4_d5_d6 $d5_d6_d7 $d6_d7_d8 $d7_d8_d9 $d14_d15_d16 $d15_d16_d17 $d16_d17_d18 $d17_d18_d19 $d18_d19_d20 $d19_d20_d21 $d20_d21_d22 $d21_d22_d23 $d22_d23_d24 $d23_d24_d25 $d24_d25_d26 $d25_d26_d27 $d26_d27_d28 $d27_d28_d29 $d28_d29_d30 $d29_d30_d31 $d0_d2_d4 $d1_d3_d5 $d2_d4_d6 $d3_d5_d7 $d4_d6_d8 $d5_d7_d9 $d6_d8_d10 $d7_d9_d11 $d12_d14_d16 $d13_d15_d17 $d14_d16_d18 $d15_d17_d19 $d16_d18_d20 $d17_d19_d21 $d18_d20_d22 $d19_d21_d23 $d20_d22_d24 $d21_d23_d25 $d22_d24_d26 $d23_d25_d27 $d24_d26_d28 $d25_d27_d29 $d26_d28_d30 $d27_d29_d31 $d0_d2_d4_d6 $d1_d3_d5_d7 $d2_d4_d6_d8 $d3_d5_d7_d9 $d4_d6_d8_d10 $d5_d7_d9_d11 $d6_d8_d10_d12 $d7_d9_d11_d13 $d10_d12_d14_d16 $d11_d13_d15_d17 $d12_d14_d16_d18 $d13_d15_d17_d19 $d14_d16_d18_d20 $d15_d17_d19_d21 $d16_d18_d20_d22 $d17_d19_d21_d23 $d18_d20_d22_d24 $d19_d21_d23_d25 $d20_d22_d24_d26 $d21_d23_d25_d27 $d22_d24_d26_d28 $d23_d25_d27_d29 $d24_d26_d28_d30 $d25_d27_d29_d31 $d1_d2 $d3_d4 $d5_d6 $d7_d8 $d15_d16 $d17_d18 $d19_d20 $d21_d22 $d23_d24 $d25_d26 $d27_d28 $d29_d30 $d1_d2_d3_d4 $d3_d4_d5_d6 $d5_d6_d7_d8 $d7_d8_d9_d10 $d13_d14_d15_d16 $d15_d16_d17_d18 $d17_d18_d19_d20 $d19_d20_d21_d22 $d21_d22_d23_d24 $d23_d24_d25_d26 $d25_d26_d27_d28 $d27_d28_d29_d30
call void @bar1()
call void @bar2()
ret void
diff --git a/llvm/test/CodeGen/ARM/llrint-conv.ll b/llvm/test/CodeGen/ARM/llrint-conv.ll
index a1a04db..7274a8b 100644
--- a/llvm/test/CodeGen/ARM/llrint-conv.ll
+++ b/llvm/test/CodeGen/ARM/llrint-conv.ll
@@ -1,7 +1,8 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
; RUN: llc < %s -mtriple=armv7-none-eabi -float-abi=soft | FileCheck %s --check-prefixes=CHECK,CHECK-SOFT
; RUN: llc < %s -mtriple=armv7-none-eabihf -mattr=+vfp2 -float-abi=hard | FileCheck %s --check-prefixes=CHECK,CHECK-NOFP16
-; RUN: llc < %s -mtriple=armv7-none-eabihf -mattr=+vfp2,+fullfp16 -float-abi=hard | FileCheck %s --check-prefixes=CHECK,CHECK-FP16
+; RUN: llc < %s -mtriple=armv8-none-eabihf -mattr=+fp-armv8 -float-abi=hard | FileCheck %s --check-prefixes=CHECK,CHECK-FPv8
+; RUN: llc < %s -mtriple=armv8-none-eabihf -mattr=+fp-armv8,+fullfp16 -float-abi=hard | FileCheck %s --check-prefixes=CHECK,CHECK-FP16
define i64 @testmsxh_builtin(half %x) {
; CHECK-SOFT-LABEL: testmsxh_builtin:
@@ -22,6 +23,14 @@ define i64 @testmsxh_builtin(half %x) {
; CHECK-NOFP16-NEXT: bl llrintf
; CHECK-NOFP16-NEXT: pop {r11, pc}
;
+; CHECK-FPv8-LABEL: testmsxh_builtin:
+; CHECK-FPv8: @ %bb.0: @ %entry
+; CHECK-FPv8-NEXT: .save {r11, lr}
+; CHECK-FPv8-NEXT: push {r11, lr}
+; CHECK-FPv8-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-FPv8-NEXT: bl llrintf
+; CHECK-FPv8-NEXT: pop {r11, pc}
+;
; CHECK-FP16-LABEL: testmsxh_builtin:
; CHECK-FP16: @ %bb.0: @ %entry
; CHECK-FP16-NEXT: .save {r11, lr}
diff --git a/llvm/test/CodeGen/ARM/lrint-conv.ll b/llvm/test/CodeGen/ARM/lrint-conv.ll
index 23a2685..2de2349 100644
--- a/llvm/test/CodeGen/ARM/lrint-conv.ll
+++ b/llvm/test/CodeGen/ARM/lrint-conv.ll
@@ -1,14 +1,43 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
; RUN: llc < %s -mtriple=armv7-none-eabi -float-abi=soft | FileCheck %s --check-prefixes=CHECK,CHECK-SOFT
; RUN: llc < %s -mtriple=armv7-none-eabihf -mattr=+vfp2 -float-abi=hard | FileCheck %s --check-prefixes=CHECK,CHECK-NOFP16
-; RUN: llc < %s -mtriple=armv7-none-eabihf -mattr=+vfp2,+fullfp16 -float-abi=hard | FileCheck %s --check-prefixes=CHECK,CHECK-FP16
+; RUN: llc < %s -mtriple=armv8-none-eabihf -mattr=+fp-armv8 -float-abi=hard | FileCheck %s --check-prefixes=CHECK,CHECK-FPv8
+; RUN: llc < %s -mtriple=armv8-none-eabihf -mattr=+fp-armv8,+fullfp16 -float-abi=hard | FileCheck %s --check-prefixes=CHECK,CHECK-FP16
-; FIXME: crash
-; define i32 @testmswh_builtin(half %x) {
-; entry:
-; %0 = tail call i32 @llvm.lrint.i32.f16(half %x)
-; ret i32 %0
-; }
+define i32 @testmswh_builtin(half %x) {
+; CHECK-SOFT-LABEL: testmswh_builtin:
+; CHECK-SOFT: @ %bb.0: @ %entry
+; CHECK-SOFT-NEXT: .save {r11, lr}
+; CHECK-SOFT-NEXT: push {r11, lr}
+; CHECK-SOFT-NEXT: bl __aeabi_h2f
+; CHECK-SOFT-NEXT: pop {r11, lr}
+; CHECK-SOFT-NEXT: b lrintf
+;
+; CHECK-NOFP16-LABEL: testmswh_builtin:
+; CHECK-NOFP16: @ %bb.0: @ %entry
+; CHECK-NOFP16-NEXT: .save {r11, lr}
+; CHECK-NOFP16-NEXT: push {r11, lr}
+; CHECK-NOFP16-NEXT: vmov r0, s0
+; CHECK-NOFP16-NEXT: bl __aeabi_h2f
+; CHECK-NOFP16-NEXT: vmov s0, r0
+; CHECK-NOFP16-NEXT: pop {r11, lr}
+; CHECK-NOFP16-NEXT: b lrintf
+;
+; CHECK-FPv8-LABEL: testmswh_builtin:
+; CHECK-FPv8: @ %bb.0: @ %entry
+; CHECK-FPv8-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-FPv8-NEXT: b lrintf
+;
+; CHECK-FP16-LABEL: testmswh_builtin:
+; CHECK-FP16: @ %bb.0: @ %entry
+; CHECK-FP16-NEXT: vrintx.f16 s0, s0
+; CHECK-FP16-NEXT: vcvt.s32.f16 s0, s0
+; CHECK-FP16-NEXT: vmov r0, s0
+; CHECK-FP16-NEXT: bx lr
+entry:
+ %0 = tail call i32 @llvm.lrint.i32.f16(half %x)
+ ret i32 %0
+}
define i32 @testmsws_builtin(float %x) {
; CHECK-LABEL: testmsws_builtin:
@@ -39,8 +68,3 @@ entry:
%0 = tail call i32 @llvm.lrint.i32.f128(fp128 %x)
ret i32 %0
}
-
-;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
-; CHECK-FP16: {{.*}}
-; CHECK-NOFP16: {{.*}}
-; CHECK-SOFT: {{.*}}
diff --git a/llvm/test/CodeGen/ARM/misched-prevent-erase-history-of-subunits.mir b/llvm/test/CodeGen/ARM/misched-prevent-erase-history-of-subunits.mir
index 46f3e4b..17d6619 100644
--- a/llvm/test/CodeGen/ARM/misched-prevent-erase-history-of-subunits.mir
+++ b/llvm/test/CodeGen/ARM/misched-prevent-erase-history-of-subunits.mir
@@ -14,7 +14,7 @@
# CHECK: SU(1): %1:dpr = VABSD %0:dpr, 14, $noreg
# CHECK: SU(2): %2:dpr = VLDRD %const.0, 0, 14, $noreg :: (load (s64) from constant-pool)
# CHECK: SU(4): %3:rgpr = t2MOVi 0, 14, $noreg, $noreg
-# CHECK: SU(3): VCMPD %1:dpr, %2:dpr, 14, $noreg, implicit-def $fpscr_nzcv
+# CHECK: SU(3): VCMPD %1:dpr, %2:dpr, 14, $noreg, implicit-def $fpscr_nzcv, implicit $fpscr_rm
# CHECK: SU(5): $r0 = COPY %3:rgpr
---
name: test
@@ -29,7 +29,7 @@ body: |
%0:dpr = COPY $d0
%1:dpr = VABSD %0, 14 /* CC::al */, $noreg
%2:dpr = VLDRD %const.0, 0, 14 /* CC::al */, $noreg :: (load (s64) from constant-pool)
- VCMPD %1, %2, 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv
+ VCMPD %1, %2, 14 /* CC::al */, $noreg, implicit-def $fpscr_nzcv, implicit $fpscr_rm
%4:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
$r0 = COPY %4
tBX_RET 14 /* CC::al */, $noreg, implicit killed $r0
diff --git a/llvm/test/CodeGen/ARM/vector-lrint.ll b/llvm/test/CodeGen/ARM/vector-lrint.ll
index c1159da..c3c8884 100644
--- a/llvm/test/CodeGen/ARM/vector-lrint.ll
+++ b/llvm/test/CodeGen/ARM/vector-lrint.ll
@@ -9,31 +9,1290 @@
; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=armebv7-unknown-none-eabihf -mattr=+neon | FileCheck %s --check-prefixes=BE-I32
; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=armebv7-unknown-none-eabihf -mattr=+neon | FileCheck %s --check-prefixes=BE-I64
-; FIXME: crash "Do not know how to soft promote this operator's operand!"
-; define <1 x iXLen> @lrint_v1f16(<1 x half> %x) {
-; %a = call <1 x iXLen> @llvm.lrint.v1iXLen.v1f16(<1 x half> %x)
-; ret <1 x iXLen> %a
-; }
+define <1 x iXLen> @lrint_v1f16(<1 x half> %x) {
+; LE-I32-LABEL: lrint_v1f16:
+; LE-I32: @ %bb.0:
+; LE-I32-NEXT: .save {r11, lr}
+; LE-I32-NEXT: push {r11, lr}
+; LE-I32-NEXT: vmov r0, s0
+; LE-I32-NEXT: bl __aeabi_f2h
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: vmov s0, r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: pop {r11, pc}
+;
+; LE-I64-LABEL: lrint_v1f16:
+; LE-I64: @ %bb.0:
+; LE-I64-NEXT: .save {r11, lr}
+; LE-I64-NEXT: push {r11, lr}
+; LE-I64-NEXT: vmov r0, s0
+; LE-I64-NEXT: bl __aeabi_f2h
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov s0, r0
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov.32 d0[0], r0
+; LE-I64-NEXT: vmov.32 d0[1], r1
+; LE-I64-NEXT: pop {r11, pc}
+;
+; BE-I32-LABEL: lrint_v1f16:
+; BE-I32: @ %bb.0:
+; BE-I32-NEXT: .save {r11, lr}
+; BE-I32-NEXT: push {r11, lr}
+; BE-I32-NEXT: vmov r0, s0
+; BE-I32-NEXT: bl __aeabi_f2h
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: vmov s0, r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: pop {r11, pc}
+;
+; BE-I64-LABEL: lrint_v1f16:
+; BE-I64: @ %bb.0:
+; BE-I64-NEXT: .save {r11, lr}
+; BE-I64-NEXT: push {r11, lr}
+; BE-I64-NEXT: vmov r0, s0
+; BE-I64-NEXT: bl __aeabi_f2h
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: vmov s0, r0
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov.32 d16[0], r0
+; BE-I64-NEXT: vmov.32 d16[1], r1
+; BE-I64-NEXT: vrev64.32 d0, d16
+; BE-I64-NEXT: pop {r11, pc}
+ %a = call <1 x iXLen> @llvm.lrint.v1iXLen.v1f16(<1 x half> %x)
+ ret <1 x iXLen> %a
+}
-; define <2 x iXLen> @lrint_v2f16(<2 x half> %x) {
-; %a = call <2 x iXLen> @llvm.lrint.v2iXLen.v2f16(<2 x half> %x)
-; ret <2 x iXLen> %a
-; }
+define <2 x iXLen> @lrint_v2f16(<2 x half> %x) {
+; LE-I32-LABEL: lrint_v2f16:
+; LE-I32: @ %bb.0:
+; LE-I32-NEXT: .save {r11, lr}
+; LE-I32-NEXT: push {r11, lr}
+; LE-I32-NEXT: .vsave {d8}
+; LE-I32-NEXT: vpush {d8}
+; LE-I32-NEXT: vmov r0, s0
+; LE-I32-NEXT: vmov.f32 s16, s1
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: vmov s0, r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov r1, s16
+; LE-I32-NEXT: vmov.32 d8[0], r0
+; LE-I32-NEXT: mov r0, r1
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: vmov s0, r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov.32 d8[1], r0
+; LE-I32-NEXT: vorr d0, d8, d8
+; LE-I32-NEXT: vpop {d8}
+; LE-I32-NEXT: pop {r11, pc}
+;
+; LE-I64-LABEL: lrint_v2f16:
+; LE-I64: @ %bb.0:
+; LE-I64-NEXT: .save {r4, r5, r11, lr}
+; LE-I64-NEXT: push {r4, r5, r11, lr}
+; LE-I64-NEXT: .vsave {d8, d9}
+; LE-I64-NEXT: vpush {d8, d9}
+; LE-I64-NEXT: vmov r0, s1
+; LE-I64-NEXT: vmov.f32 s16, s0
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov s0, r0
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: mov r4, r0
+; LE-I64-NEXT: vmov r0, s16
+; LE-I64-NEXT: mov r5, r1
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov s0, r0
+; LE-I64-NEXT: vmov.32 d9[0], r4
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov.32 d8[0], r0
+; LE-I64-NEXT: vmov.32 d9[1], r5
+; LE-I64-NEXT: vmov.32 d8[1], r1
+; LE-I64-NEXT: vorr q0, q4, q4
+; LE-I64-NEXT: vpop {d8, d9}
+; LE-I64-NEXT: pop {r4, r5, r11, pc}
+;
+; BE-I32-LABEL: lrint_v2f16:
+; BE-I32: @ %bb.0:
+; BE-I32-NEXT: .save {r11, lr}
+; BE-I32-NEXT: push {r11, lr}
+; BE-I32-NEXT: .vsave {d8}
+; BE-I32-NEXT: vpush {d8}
+; BE-I32-NEXT: vmov r0, s0
+; BE-I32-NEXT: vmov.f32 s16, s1
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: vmov s0, r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov r1, s16
+; BE-I32-NEXT: vmov.32 d8[0], r0
+; BE-I32-NEXT: mov r0, r1
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: vmov s0, r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov.32 d8[1], r0
+; BE-I32-NEXT: vrev64.32 d0, d8
+; BE-I32-NEXT: vpop {d8}
+; BE-I32-NEXT: pop {r11, pc}
+;
+; BE-I64-LABEL: lrint_v2f16:
+; BE-I64: @ %bb.0:
+; BE-I64-NEXT: .save {r4, r5, r11, lr}
+; BE-I64-NEXT: push {r4, r5, r11, lr}
+; BE-I64-NEXT: .vsave {d8}
+; BE-I64-NEXT: vpush {d8}
+; BE-I64-NEXT: vmov r0, s1
+; BE-I64-NEXT: vmov.f32 s16, s0
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: vmov s0, r0
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: mov r4, r0
+; BE-I64-NEXT: vmov r0, s16
+; BE-I64-NEXT: mov r5, r1
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: vmov s0, r0
+; BE-I64-NEXT: vmov.32 d8[0], r4
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov.32 d16[0], r0
+; BE-I64-NEXT: vmov.32 d8[1], r5
+; BE-I64-NEXT: vmov.32 d16[1], r1
+; BE-I64-NEXT: vrev64.32 d1, d8
+; BE-I64-NEXT: vrev64.32 d0, d16
+; BE-I64-NEXT: vpop {d8}
+; BE-I64-NEXT: pop {r4, r5, r11, pc}
+ %a = call <2 x iXLen> @llvm.lrint.v2iXLen.v2f16(<2 x half> %x)
+ ret <2 x iXLen> %a
+}
-; define <4 x iXLen> @lrint_v4f16(<4 x half> %x) {
-; %a = call <4 x iXLen> @llvm.lrint.v4iXLen.v4f16(<4 x half> %x)
-; ret <4 x iXLen> %a
-; }
+define <4 x iXLen> @lrint_v4f16(<4 x half> %x) {
+; LE-I32-LABEL: lrint_v4f16:
+; LE-I32: @ %bb.0:
+; LE-I32-NEXT: .save {r4, r5, r11, lr}
+; LE-I32-NEXT: push {r4, r5, r11, lr}
+; LE-I32-NEXT: .vsave {d8, d9, d10, d11}
+; LE-I32-NEXT: vpush {d8, d9, d10, d11}
+; LE-I32-NEXT: vmov r0, s3
+; LE-I32-NEXT: vmov.f32 s16, s2
+; LE-I32-NEXT: vmov.f32 s18, s1
+; LE-I32-NEXT: vmov.f32 s20, s0
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: vmov s0, r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: mov r4, r0
+; LE-I32-NEXT: vmov r0, s16
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: mov r5, r0
+; LE-I32-NEXT: vmov r0, s20
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: vmov s0, r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov s0, r5
+; LE-I32-NEXT: vmov.32 d10[0], r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov.32 d11[0], r0
+; LE-I32-NEXT: vmov r0, s18
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: vmov s0, r0
+; LE-I32-NEXT: vmov.32 d11[1], r4
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov.32 d10[1], r0
+; LE-I32-NEXT: vorr q0, q5, q5
+; LE-I32-NEXT: vpop {d8, d9, d10, d11}
+; LE-I32-NEXT: pop {r4, r5, r11, pc}
+;
+; LE-I64-LABEL: lrint_v4f16:
+; LE-I64: @ %bb.0:
+; LE-I64-NEXT: .save {r4, r5, r6, r7, r11, lr}
+; LE-I64-NEXT: push {r4, r5, r6, r7, r11, lr}
+; LE-I64-NEXT: .vsave {d12, d13}
+; LE-I64-NEXT: vpush {d12, d13}
+; LE-I64-NEXT: .vsave {d8, d9, d10}
+; LE-I64-NEXT: vpush {d8, d9, d10}
+; LE-I64-NEXT: vmov r0, s1
+; LE-I64-NEXT: vmov.f32 s16, s3
+; LE-I64-NEXT: vmov.f32 s20, s2
+; LE-I64-NEXT: vmov.f32 s18, s0
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov s0, r0
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: mov r5, r0
+; LE-I64-NEXT: vmov r0, s18
+; LE-I64-NEXT: mov r4, r1
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: mov r7, r0
+; LE-I64-NEXT: vmov r0, s16
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov s0, r0
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov s0, r7
+; LE-I64-NEXT: mov r6, r1
+; LE-I64-NEXT: vmov.32 d9[0], r0
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov.32 d12[0], r0
+; LE-I64-NEXT: vmov r0, s20
+; LE-I64-NEXT: mov r7, r1
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov s0, r0
+; LE-I64-NEXT: vmov.32 d13[0], r5
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov.32 d8[0], r0
+; LE-I64-NEXT: vmov.32 d13[1], r4
+; LE-I64-NEXT: vmov.32 d9[1], r6
+; LE-I64-NEXT: vmov.32 d12[1], r7
+; LE-I64-NEXT: vmov.32 d8[1], r1
+; LE-I64-NEXT: vorr q0, q6, q6
+; LE-I64-NEXT: vorr q1, q4, q4
+; LE-I64-NEXT: vpop {d8, d9, d10}
+; LE-I64-NEXT: vpop {d12, d13}
+; LE-I64-NEXT: pop {r4, r5, r6, r7, r11, pc}
+;
+; BE-I32-LABEL: lrint_v4f16:
+; BE-I32: @ %bb.0:
+; BE-I32-NEXT: .save {r4, r5, r11, lr}
+; BE-I32-NEXT: push {r4, r5, r11, lr}
+; BE-I32-NEXT: .vsave {d8, d9, d10, d11}
+; BE-I32-NEXT: vpush {d8, d9, d10, d11}
+; BE-I32-NEXT: vmov r0, s3
+; BE-I32-NEXT: vmov.f32 s16, s2
+; BE-I32-NEXT: vmov.f32 s18, s1
+; BE-I32-NEXT: vmov.f32 s20, s0
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: vmov s0, r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: mov r4, r0
+; BE-I32-NEXT: vmov r0, s16
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: mov r5, r0
+; BE-I32-NEXT: vmov r0, s20
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: vmov s0, r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov s0, r5
+; BE-I32-NEXT: vmov.32 d10[0], r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov.32 d11[0], r0
+; BE-I32-NEXT: vmov r0, s18
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: vmov s0, r0
+; BE-I32-NEXT: vmov.32 d11[1], r4
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov.32 d10[1], r0
+; BE-I32-NEXT: vrev64.32 q0, q5
+; BE-I32-NEXT: vpop {d8, d9, d10, d11}
+; BE-I32-NEXT: pop {r4, r5, r11, pc}
+;
+; BE-I64-LABEL: lrint_v4f16:
+; BE-I64: @ %bb.0:
+; BE-I64-NEXT: .save {r4, r5, r6, r7, r11, lr}
+; BE-I64-NEXT: push {r4, r5, r6, r7, r11, lr}
+; BE-I64-NEXT: .vsave {d8, d9, d10}
+; BE-I64-NEXT: vpush {d8, d9, d10}
+; BE-I64-NEXT: vmov r0, s1
+; BE-I64-NEXT: vmov.f32 s16, s3
+; BE-I64-NEXT: vmov.f32 s18, s2
+; BE-I64-NEXT: vmov.f32 s20, s0
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: vmov s0, r0
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: mov r5, r0
+; BE-I64-NEXT: vmov r0, s20
+; BE-I64-NEXT: mov r4, r1
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: mov r7, r0
+; BE-I64-NEXT: vmov r0, s16
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: vmov s0, r0
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov s0, r7
+; BE-I64-NEXT: mov r6, r1
+; BE-I64-NEXT: vmov.32 d8[0], r0
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov.32 d10[0], r0
+; BE-I64-NEXT: vmov r0, s18
+; BE-I64-NEXT: mov r7, r1
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: vmov s0, r0
+; BE-I64-NEXT: vmov.32 d9[0], r5
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov.32 d16[0], r0
+; BE-I64-NEXT: vmov.32 d9[1], r4
+; BE-I64-NEXT: vmov.32 d8[1], r6
+; BE-I64-NEXT: vmov.32 d10[1], r7
+; BE-I64-NEXT: vmov.32 d16[1], r1
+; BE-I64-NEXT: vrev64.32 d1, d9
+; BE-I64-NEXT: vrev64.32 d3, d8
+; BE-I64-NEXT: vrev64.32 d0, d10
+; BE-I64-NEXT: vrev64.32 d2, d16
+; BE-I64-NEXT: vpop {d8, d9, d10}
+; BE-I64-NEXT: pop {r4, r5, r6, r7, r11, pc}
+ %a = call <4 x iXLen> @llvm.lrint.v4iXLen.v4f16(<4 x half> %x)
+ ret <4 x iXLen> %a
+}
-; define <8 x iXLen> @lrint_v8f16(<8 x half> %x) {
-; %a = call <8 x iXLen> @llvm.lrint.v8iXLen.v8f16(<8 x half> %x)
-; ret <8 x iXLen> %a
-; }
+define <8 x iXLen> @lrint_v8f16(<8 x half> %x) {
+; LE-I32-LABEL: lrint_v8f16:
+; LE-I32: @ %bb.0:
+; LE-I32-NEXT: .save {r4, r5, r6, r7, r8, r9, r11, lr}
+; LE-I32-NEXT: push {r4, r5, r6, r7, r8, r9, r11, lr}
+; LE-I32-NEXT: .vsave {d8, d9, d10, d11, d12, d13, d14}
+; LE-I32-NEXT: vpush {d8, d9, d10, d11, d12, d13, d14}
+; LE-I32-NEXT: vmov r0, s7
+; LE-I32-NEXT: vmov.f32 s18, s6
+; LE-I32-NEXT: vmov.f32 s16, s5
+; LE-I32-NEXT: vmov.f32 s20, s4
+; LE-I32-NEXT: vmov.f32 s22, s3
+; LE-I32-NEXT: vmov.f32 s24, s2
+; LE-I32-NEXT: vmov.f32 s26, s1
+; LE-I32-NEXT: vmov.f32 s28, s0
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: vmov s0, r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: mov r8, r0
+; LE-I32-NEXT: vmov r0, s26
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: mov r9, r0
+; LE-I32-NEXT: vmov r0, s22
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: mov r6, r0
+; LE-I32-NEXT: vmov r0, s28
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: mov r7, r0
+; LE-I32-NEXT: vmov r0, s24
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: mov r4, r0
+; LE-I32-NEXT: vmov r0, s18
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: mov r5, r0
+; LE-I32-NEXT: vmov r0, s20
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: vmov s0, r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov s0, r5
+; LE-I32-NEXT: vmov.32 d10[0], r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov s0, r4
+; LE-I32-NEXT: vmov.32 d11[0], r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov s0, r7
+; LE-I32-NEXT: vmov.32 d13[0], r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov s0, r6
+; LE-I32-NEXT: vmov.32 d12[0], r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov s0, r9
+; LE-I32-NEXT: vmov.32 d13[1], r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov.32 d12[1], r0
+; LE-I32-NEXT: vmov r0, s16
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: vmov s0, r0
+; LE-I32-NEXT: vmov.32 d11[1], r8
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov.32 d10[1], r0
+; LE-I32-NEXT: vorr q0, q6, q6
+; LE-I32-NEXT: vorr q1, q5, q5
+; LE-I32-NEXT: vpop {d8, d9, d10, d11, d12, d13, d14}
+; LE-I32-NEXT: pop {r4, r5, r6, r7, r8, r9, r11, pc}
+;
+; LE-I64-LABEL: lrint_v8f16:
+; LE-I64: @ %bb.0:
+; LE-I64-NEXT: .save {r4, r5, r6, r7, r8, r9, r10, r11, lr}
+; LE-I64-NEXT: push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
+; LE-I64-NEXT: .pad #4
+; LE-I64-NEXT: sub sp, sp, #4
+; LE-I64-NEXT: .vsave {d8, d9, d10, d11, d12, d13, d14, d15}
+; LE-I64-NEXT: vpush {d8, d9, d10, d11, d12, d13, d14, d15}
+; LE-I64-NEXT: .pad #8
+; LE-I64-NEXT: sub sp, sp, #8
+; LE-I64-NEXT: vmov r0, s1
+; LE-I64-NEXT: vstr s6, [sp, #4] @ 4-byte Spill
+; LE-I64-NEXT: vmov.f32 s16, s7
+; LE-I64-NEXT: vmov.f32 s18, s5
+; LE-I64-NEXT: vmov.f32 s20, s4
+; LE-I64-NEXT: vmov.f32 s22, s3
+; LE-I64-NEXT: vmov.f32 s24, s2
+; LE-I64-NEXT: vmov.f32 s26, s0
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov s0, r0
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: mov r9, r0
+; LE-I64-NEXT: vmov r0, s26
+; LE-I64-NEXT: str r1, [sp] @ 4-byte Spill
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: mov r10, r0
+; LE-I64-NEXT: vmov r0, s22
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: mov r5, r0
+; LE-I64-NEXT: vmov r0, s24
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: mov r7, r0
+; LE-I64-NEXT: vmov r0, s18
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: mov r6, r0
+; LE-I64-NEXT: vmov r0, s20
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: mov r4, r0
+; LE-I64-NEXT: vmov r0, s16
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov s0, r0
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov s0, r4
+; LE-I64-NEXT: mov r11, r1
+; LE-I64-NEXT: vmov.32 d11[0], r0
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov s0, r6
+; LE-I64-NEXT: mov r8, r1
+; LE-I64-NEXT: vmov.32 d12[0], r0
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov s0, r7
+; LE-I64-NEXT: mov r6, r1
+; LE-I64-NEXT: vmov.32 d13[0], r0
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov s0, r5
+; LE-I64-NEXT: mov r7, r1
+; LE-I64-NEXT: vmov.32 d14[0], r0
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov s0, r10
+; LE-I64-NEXT: mov r5, r1
+; LE-I64-NEXT: vmov.32 d15[0], r0
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vldr s0, [sp, #4] @ 4-byte Reload
+; LE-I64-NEXT: mov r4, r1
+; LE-I64-NEXT: vmov.32 d8[0], r0
+; LE-I64-NEXT: vmov r0, s0
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov s0, r0
+; LE-I64-NEXT: vmov.32 d9[0], r9
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov.32 d10[0], r0
+; LE-I64-NEXT: ldr r0, [sp] @ 4-byte Reload
+; LE-I64-NEXT: vmov.32 d15[1], r5
+; LE-I64-NEXT: vmov.32 d9[1], r0
+; LE-I64-NEXT: vmov.32 d13[1], r6
+; LE-I64-NEXT: vmov.32 d11[1], r11
+; LE-I64-NEXT: vmov.32 d8[1], r4
+; LE-I64-NEXT: vmov.32 d14[1], r7
+; LE-I64-NEXT: vorr q0, q4, q4
+; LE-I64-NEXT: vmov.32 d12[1], r8
+; LE-I64-NEXT: vorr q1, q7, q7
+; LE-I64-NEXT: vmov.32 d10[1], r1
+; LE-I64-NEXT: vorr q2, q6, q6
+; LE-I64-NEXT: vorr q3, q5, q5
+; LE-I64-NEXT: add sp, sp, #8
+; LE-I64-NEXT: vpop {d8, d9, d10, d11, d12, d13, d14, d15}
+; LE-I64-NEXT: add sp, sp, #4
+; LE-I64-NEXT: pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}
+;
+; BE-I32-LABEL: lrint_v8f16:
+; BE-I32: @ %bb.0:
+; BE-I32-NEXT: .save {r4, r5, r6, r7, r8, r9, r11, lr}
+; BE-I32-NEXT: push {r4, r5, r6, r7, r8, r9, r11, lr}
+; BE-I32-NEXT: .vsave {d8, d9, d10, d11, d12, d13, d14}
+; BE-I32-NEXT: vpush {d8, d9, d10, d11, d12, d13, d14}
+; BE-I32-NEXT: vmov r0, s1
+; BE-I32-NEXT: vmov.f32 s18, s7
+; BE-I32-NEXT: vmov.f32 s20, s6
+; BE-I32-NEXT: vmov.f32 s16, s5
+; BE-I32-NEXT: vmov.f32 s22, s4
+; BE-I32-NEXT: vmov.f32 s24, s3
+; BE-I32-NEXT: vmov.f32 s26, s2
+; BE-I32-NEXT: vmov.f32 s28, s0
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: vmov s0, r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: mov r8, r0
+; BE-I32-NEXT: vmov r0, s24
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: mov r9, r0
+; BE-I32-NEXT: vmov r0, s18
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: mov r6, r0
+; BE-I32-NEXT: vmov r0, s26
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: mov r7, r0
+; BE-I32-NEXT: vmov r0, s20
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: mov r4, r0
+; BE-I32-NEXT: vmov r0, s28
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: mov r5, r0
+; BE-I32-NEXT: vmov r0, s22
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: vmov s0, r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov s0, r5
+; BE-I32-NEXT: vmov.32 d10[0], r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov s0, r4
+; BE-I32-NEXT: vmov.32 d12[0], r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov s0, r7
+; BE-I32-NEXT: vmov.32 d11[0], r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov s0, r6
+; BE-I32-NEXT: vmov.32 d13[0], r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov s0, r9
+; BE-I32-NEXT: vmov.32 d11[1], r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov.32 d13[1], r0
+; BE-I32-NEXT: vmov r0, s16
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: vmov s0, r0
+; BE-I32-NEXT: vmov.32 d12[1], r8
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov.32 d10[1], r0
+; BE-I32-NEXT: vrev64.32 q0, q6
+; BE-I32-NEXT: vrev64.32 q1, q5
+; BE-I32-NEXT: vpop {d8, d9, d10, d11, d12, d13, d14}
+; BE-I32-NEXT: pop {r4, r5, r6, r7, r8, r9, r11, pc}
+;
+; BE-I64-LABEL: lrint_v8f16:
+; BE-I64: @ %bb.0:
+; BE-I64-NEXT: .save {r4, r5, r6, r7, r8, r9, r10, r11, lr}
+; BE-I64-NEXT: push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
+; BE-I64-NEXT: .pad #4
+; BE-I64-NEXT: sub sp, sp, #4
+; BE-I64-NEXT: .vsave {d8, d9, d10, d11, d12, d13, d14}
+; BE-I64-NEXT: vpush {d8, d9, d10, d11, d12, d13, d14}
+; BE-I64-NEXT: .pad #8
+; BE-I64-NEXT: sub sp, sp, #8
+; BE-I64-NEXT: vmov r0, s1
+; BE-I64-NEXT: vmov.f32 s18, s7
+; BE-I64-NEXT: vmov.f32 s16, s6
+; BE-I64-NEXT: vmov.f32 s20, s5
+; BE-I64-NEXT: vmov.f32 s22, s4
+; BE-I64-NEXT: vmov.f32 s24, s3
+; BE-I64-NEXT: vmov.f32 s26, s2
+; BE-I64-NEXT: vmov.f32 s28, s0
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: vmov s0, r0
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: mov r9, r0
+; BE-I64-NEXT: vmov r0, s28
+; BE-I64-NEXT: str r1, [sp, #4] @ 4-byte Spill
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: mov r10, r0
+; BE-I64-NEXT: vmov r0, s24
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: mov r5, r0
+; BE-I64-NEXT: vmov r0, s26
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: mov r7, r0
+; BE-I64-NEXT: vmov r0, s20
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: mov r6, r0
+; BE-I64-NEXT: vmov r0, s22
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: mov r4, r0
+; BE-I64-NEXT: vmov r0, s18
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: vmov s0, r0
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov s0, r4
+; BE-I64-NEXT: mov r11, r1
+; BE-I64-NEXT: vmov.32 d9[0], r0
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov s0, r6
+; BE-I64-NEXT: mov r8, r1
+; BE-I64-NEXT: vmov.32 d10[0], r0
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov s0, r7
+; BE-I64-NEXT: mov r6, r1
+; BE-I64-NEXT: vmov.32 d11[0], r0
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov s0, r5
+; BE-I64-NEXT: mov r7, r1
+; BE-I64-NEXT: vmov.32 d12[0], r0
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov s0, r10
+; BE-I64-NEXT: mov r5, r1
+; BE-I64-NEXT: vmov.32 d13[0], r0
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov.32 d14[0], r0
+; BE-I64-NEXT: vmov r0, s16
+; BE-I64-NEXT: mov r4, r1
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: vmov s0, r0
+; BE-I64-NEXT: vmov.32 d8[0], r9
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov.32 d16[0], r0
+; BE-I64-NEXT: ldr r0, [sp, #4] @ 4-byte Reload
+; BE-I64-NEXT: vmov.32 d13[1], r5
+; BE-I64-NEXT: vmov.32 d8[1], r0
+; BE-I64-NEXT: vmov.32 d11[1], r6
+; BE-I64-NEXT: vmov.32 d9[1], r11
+; BE-I64-NEXT: vmov.32 d14[1], r4
+; BE-I64-NEXT: vmov.32 d12[1], r7
+; BE-I64-NEXT: vmov.32 d10[1], r8
+; BE-I64-NEXT: vmov.32 d16[1], r1
+; BE-I64-NEXT: vrev64.32 d1, d8
+; BE-I64-NEXT: vrev64.32 d3, d13
+; BE-I64-NEXT: vrev64.32 d5, d11
+; BE-I64-NEXT: vrev64.32 d7, d9
+; BE-I64-NEXT: vrev64.32 d0, d14
+; BE-I64-NEXT: vrev64.32 d2, d12
+; BE-I64-NEXT: vrev64.32 d4, d10
+; BE-I64-NEXT: vrev64.32 d6, d16
+; BE-I64-NEXT: add sp, sp, #8
+; BE-I64-NEXT: vpop {d8, d9, d10, d11, d12, d13, d14}
+; BE-I64-NEXT: add sp, sp, #4
+; BE-I64-NEXT: pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}
+ %a = call <8 x iXLen> @llvm.lrint.v8iXLen.v8f16(<8 x half> %x)
+ ret <8 x iXLen> %a
+}
-; define <16 x iXLen> @lrint_v16f16(<16 x half> %x) {
-; %a = call <16 x iXLen> @llvm.lrint.v16iXLen.v16f16(<16 x half> %x)
-; ret <16 x iXLen> %a
-; }
+define <16 x iXLen> @lrint_v16f16(<16 x half> %x) {
+; LE-I32-LABEL: lrint_v16f16:
+; LE-I32: @ %bb.0:
+; LE-I32-NEXT: .save {r4, r5, r6, r7, r8, r9, r10, lr}
+; LE-I32-NEXT: push {r4, r5, r6, r7, r8, r9, r10, lr}
+; LE-I32-NEXT: .vsave {d8, d9, d10, d11, d12, d13, d14, d15}
+; LE-I32-NEXT: vpush {d8, d9, d10, d11, d12, d13, d14, d15}
+; LE-I32-NEXT: .pad #8
+; LE-I32-NEXT: sub sp, sp, #8
+; LE-I32-NEXT: vmov r0, s15
+; LE-I32-NEXT: vstr s13, [sp, #4] @ 4-byte Spill
+; LE-I32-NEXT: vmov.f32 s26, s14
+; LE-I32-NEXT: vstr s0, [sp] @ 4-byte Spill
+; LE-I32-NEXT: vmov.f32 s20, s12
+; LE-I32-NEXT: vmov.f32 s22, s11
+; LE-I32-NEXT: vmov.f32 s18, s10
+; LE-I32-NEXT: vmov.f32 s17, s9
+; LE-I32-NEXT: vmov.f32 s24, s8
+; LE-I32-NEXT: vmov.f32 s19, s7
+; LE-I32-NEXT: vmov.f32 s30, s6
+; LE-I32-NEXT: vmov.f32 s21, s5
+; LE-I32-NEXT: vmov.f32 s16, s4
+; LE-I32-NEXT: vmov.f32 s23, s3
+; LE-I32-NEXT: vmov.f32 s28, s2
+; LE-I32-NEXT: vmov.f32 s25, s1
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: vmov s0, r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: mov r8, r0
+; LE-I32-NEXT: vmov r0, s17
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: mov r9, r0
+; LE-I32-NEXT: vmov r0, s22
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: mov r10, r0
+; LE-I32-NEXT: vmov r0, s21
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: mov r7, r0
+; LE-I32-NEXT: vmov r0, s19
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: mov r4, r0
+; LE-I32-NEXT: vmov r0, s25
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: mov r5, r0
+; LE-I32-NEXT: vmov r0, s23
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: mov r6, r0
+; LE-I32-NEXT: vmov r0, s20
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: vmov s0, r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov.32 d10[0], r0
+; LE-I32-NEXT: vmov r0, s26
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: vmov s0, r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov.32 d11[0], r0
+; LE-I32-NEXT: vmov r0, s24
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: vmov s0, r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov.32 d12[0], r0
+; LE-I32-NEXT: vmov r0, s18
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: vmov s0, r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov.32 d13[0], r0
+; LE-I32-NEXT: vmov r0, s16
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: vmov s0, r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov.32 d8[0], r0
+; LE-I32-NEXT: vmov r0, s30
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: vmov s0, r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov.32 d9[0], r0
+; LE-I32-NEXT: vmov r0, s28
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: vmov s0, r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vldr s0, [sp] @ 4-byte Reload
+; LE-I32-NEXT: vmov.32 d15[0], r0
+; LE-I32-NEXT: vmov r0, s0
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: vmov s0, r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov s0, r6
+; LE-I32-NEXT: vmov.32 d14[0], r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov s0, r5
+; LE-I32-NEXT: vmov.32 d15[1], r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov s0, r4
+; LE-I32-NEXT: vmov.32 d14[1], r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov s0, r7
+; LE-I32-NEXT: vmov.32 d9[1], r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov s0, r10
+; LE-I32-NEXT: vmov.32 d8[1], r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov s0, r9
+; LE-I32-NEXT: vmov.32 d13[1], r0
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vldr s0, [sp, #4] @ 4-byte Reload
+; LE-I32-NEXT: vmov.32 d12[1], r0
+; LE-I32-NEXT: vmov r0, s0
+; LE-I32-NEXT: bl __aeabi_h2f
+; LE-I32-NEXT: vmov s0, r0
+; LE-I32-NEXT: vmov.32 d11[1], r8
+; LE-I32-NEXT: bl lrintf
+; LE-I32-NEXT: vmov.32 d10[1], r0
+; LE-I32-NEXT: vorr q0, q7, q7
+; LE-I32-NEXT: vorr q1, q4, q4
+; LE-I32-NEXT: vorr q2, q6, q6
+; LE-I32-NEXT: vorr q3, q5, q5
+; LE-I32-NEXT: add sp, sp, #8
+; LE-I32-NEXT: vpop {d8, d9, d10, d11, d12, d13, d14, d15}
+; LE-I32-NEXT: pop {r4, r5, r6, r7, r8, r9, r10, pc}
+;
+; LE-I64-LABEL: lrint_v16f16:
+; LE-I64: @ %bb.0:
+; LE-I64-NEXT: .save {r4, r5, r6, r7, r8, r9, r10, r11, lr}
+; LE-I64-NEXT: push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
+; LE-I64-NEXT: .pad #4
+; LE-I64-NEXT: sub sp, sp, #4
+; LE-I64-NEXT: .vsave {d8, d9, d10, d11, d12, d13, d14, d15}
+; LE-I64-NEXT: vpush {d8, d9, d10, d11, d12, d13, d14, d15}
+; LE-I64-NEXT: .pad #120
+; LE-I64-NEXT: sub sp, sp, #120
+; LE-I64-NEXT: mov r11, r0
+; LE-I64-NEXT: vmov r0, s7
+; LE-I64-NEXT: vstr s15, [sp, #24] @ 4-byte Spill
+; LE-I64-NEXT: vmov.f32 s23, s13
+; LE-I64-NEXT: vstr s14, [sp, #100] @ 4-byte Spill
+; LE-I64-NEXT: vmov.f32 s25, s12
+; LE-I64-NEXT: vmov.f32 s27, s11
+; LE-I64-NEXT: vstr s10, [sp, #104] @ 4-byte Spill
+; LE-I64-NEXT: vstr s9, [sp, #108] @ 4-byte Spill
+; LE-I64-NEXT: vmov.f32 s24, s8
+; LE-I64-NEXT: vmov.f32 s19, s6
+; LE-I64-NEXT: vmov.f32 s29, s5
+; LE-I64-NEXT: vmov.f32 s17, s4
+; LE-I64-NEXT: vmov.f32 s16, s3
+; LE-I64-NEXT: vmov.f32 s21, s2
+; LE-I64-NEXT: vmov.f32 s26, s1
+; LE-I64-NEXT: vmov.f32 s18, s0
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov s0, r0
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: mov r7, r0
+; LE-I64-NEXT: vmov r0, s25
+; LE-I64-NEXT: str r1, [sp, #56] @ 4-byte Spill
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov s0, r0
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: mov r5, r0
+; LE-I64-NEXT: vmov r0, s27
+; LE-I64-NEXT: str r1, [sp, #116] @ 4-byte Spill
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov s0, r0
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: mov r6, r0
+; LE-I64-NEXT: vmov r0, s29
+; LE-I64-NEXT: str r1, [sp, #112] @ 4-byte Spill
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov s0, r0
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov.32 d15[0], r0
+; LE-I64-NEXT: vmov r0, s23
+; LE-I64-NEXT: mov r4, r1
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov s0, r0
+; LE-I64-NEXT: add lr, sp, #80
+; LE-I64-NEXT: vmov.32 d17[0], r6
+; LE-I64-NEXT: vstmia lr, {d16, d17} @ 16-byte Spill
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: mov r6, r0
+; LE-I64-NEXT: vmov r0, s17
+; LE-I64-NEXT: vmov r8, s21
+; LE-I64-NEXT: str r1, [sp, #76] @ 4-byte Spill
+; LE-I64-NEXT: vmov r10, s19
+; LE-I64-NEXT: vmov.32 d10[0], r5
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov s0, r0
+; LE-I64-NEXT: add lr, sp, #40
+; LE-I64-NEXT: vmov.32 d11[0], r6
+; LE-I64-NEXT: vstmia lr, {d10, d11} @ 16-byte Spill
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov.32 d14[0], r0
+; LE-I64-NEXT: mov r0, r10
+; LE-I64-NEXT: mov r9, r1
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov s0, r0
+; LE-I64-NEXT: vmov.32 d11[0], r7
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov.32 d10[0], r0
+; LE-I64-NEXT: mov r0, r8
+; LE-I64-NEXT: mov r7, r1
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: mov r6, r0
+; LE-I64-NEXT: ldr r0, [sp, #56] @ 4-byte Reload
+; LE-I64-NEXT: vmov.32 d11[1], r0
+; LE-I64-NEXT: vmov r0, s18
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: mov r5, r0
+; LE-I64-NEXT: vmov r0, s16
+; LE-I64-NEXT: vmov.32 d10[1], r7
+; LE-I64-NEXT: add lr, sp, #56
+; LE-I64-NEXT: vstmia lr, {d10, d11} @ 16-byte Spill
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov s0, r0
+; LE-I64-NEXT: vmov.32 d15[1], r4
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov.32 d9[0], r0
+; LE-I64-NEXT: vmov r0, s26
+; LE-I64-NEXT: add lr, sp, #24
+; LE-I64-NEXT: vmov r8, s24
+; LE-I64-NEXT: vmov.32 d14[1], r9
+; LE-I64-NEXT: mov r10, r1
+; LE-I64-NEXT: vmov s24, r5
+; LE-I64-NEXT: vldr s0, [sp, #24] @ 4-byte Reload
+; LE-I64-NEXT: vstmia lr, {d14, d15} @ 16-byte Spill
+; LE-I64-NEXT: vmov r7, s0
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov.f32 s0, s24
+; LE-I64-NEXT: vmov s22, r0
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov.f32 s0, s22
+; LE-I64-NEXT: mov r5, r1
+; LE-I64-NEXT: vmov.32 d14[0], r0
+; LE-I64-NEXT: vmov s24, r6
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov.32 d15[0], r0
+; LE-I64-NEXT: mov r0, r7
+; LE-I64-NEXT: mov r6, r1
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov.f32 s0, s24
+; LE-I64-NEXT: vmov s22, r0
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov.f32 s0, s22
+; LE-I64-NEXT: vmov.32 d8[0], r0
+; LE-I64-NEXT: add lr, sp, #8
+; LE-I64-NEXT: mov r9, r1
+; LE-I64-NEXT: vmov.32 d15[1], r6
+; LE-I64-NEXT: vstmia lr, {d8, d9} @ 16-byte Spill
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov.32 d13[0], r0
+; LE-I64-NEXT: mov r0, r8
+; LE-I64-NEXT: mov r6, r1
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vldr s0, [sp, #100] @ 4-byte Reload
+; LE-I64-NEXT: mov r7, r0
+; LE-I64-NEXT: vmov.32 d14[1], r5
+; LE-I64-NEXT: vmov r0, s0
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vldr s0, [sp, #104] @ 4-byte Reload
+; LE-I64-NEXT: vmov s20, r0
+; LE-I64-NEXT: vmov.32 d13[1], r6
+; LE-I64-NEXT: vmov r4, s0
+; LE-I64-NEXT: vldr s0, [sp, #108] @ 4-byte Reload
+; LE-I64-NEXT: vmov r0, s0
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov.f32 s0, s20
+; LE-I64-NEXT: vmov s16, r0
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov.f32 s0, s16
+; LE-I64-NEXT: mov r5, r1
+; LE-I64-NEXT: vmov.32 d12[0], r0
+; LE-I64-NEXT: vmov s18, r7
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov.32 d11[0], r0
+; LE-I64-NEXT: mov r0, r4
+; LE-I64-NEXT: mov r6, r1
+; LE-I64-NEXT: bl __aeabi_h2f
+; LE-I64-NEXT: vmov.f32 s0, s18
+; LE-I64-NEXT: vmov s16, r0
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: vmov.f32 s0, s16
+; LE-I64-NEXT: vmov.32 d10[0], r0
+; LE-I64-NEXT: mov r4, r1
+; LE-I64-NEXT: vmov.32 d11[1], r6
+; LE-I64-NEXT: bl lrintf
+; LE-I64-NEXT: add lr, sp, #80
+; LE-I64-NEXT: vmov.32 d10[1], r4
+; LE-I64-NEXT: vldmia lr, {d16, d17} @ 16-byte Reload
+; LE-I64-NEXT: add lr, sp, #40
+; LE-I64-NEXT: vldmia lr, {d18, d19} @ 16-byte Reload
+; LE-I64-NEXT: add lr, sp, #8
+; LE-I64-NEXT: vmov.32 d16[0], r0
+; LE-I64-NEXT: ldr r0, [sp, #76] @ 4-byte Reload
+; LE-I64-NEXT: vldmia lr, {d20, d21} @ 16-byte Reload
+; LE-I64-NEXT: add lr, sp, #24
+; LE-I64-NEXT: vmov.32 d19[1], r0
+; LE-I64-NEXT: ldr r0, [sp, #116] @ 4-byte Reload
+; LE-I64-NEXT: vmov.32 d21[1], r10
+; LE-I64-NEXT: vmov.32 d18[1], r0
+; LE-I64-NEXT: ldr r0, [sp, #112] @ 4-byte Reload
+; LE-I64-NEXT: vmov.32 d12[1], r5
+; LE-I64-NEXT: vmov.32 d17[1], r0
+; LE-I64-NEXT: add r0, r11, #64
+; LE-I64-NEXT: vmov.32 d16[1], r1
+; LE-I64-NEXT: vst1.64 {d10, d11}, [r0:128]!
+; LE-I64-NEXT: vst1.64 {d16, d17}, [r0:128]!
+; LE-I64-NEXT: vst1.64 {d18, d19}, [r0:128]!
+; LE-I64-NEXT: vmov.32 d20[1], r9
+; LE-I64-NEXT: vst1.64 {d12, d13}, [r0:128]
+; LE-I64-NEXT: vst1.64 {d14, d15}, [r11:128]!
+; LE-I64-NEXT: vst1.64 {d20, d21}, [r11:128]!
+; LE-I64-NEXT: vldmia lr, {d16, d17} @ 16-byte Reload
+; LE-I64-NEXT: add lr, sp, #56
+; LE-I64-NEXT: vst1.64 {d16, d17}, [r11:128]!
+; LE-I64-NEXT: vldmia lr, {d16, d17} @ 16-byte Reload
+; LE-I64-NEXT: vst1.64 {d16, d17}, [r11:128]
+; LE-I64-NEXT: add sp, sp, #120
+; LE-I64-NEXT: vpop {d8, d9, d10, d11, d12, d13, d14, d15}
+; LE-I64-NEXT: add sp, sp, #4
+; LE-I64-NEXT: pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}
+;
+; BE-I32-LABEL: lrint_v16f16:
+; BE-I32: @ %bb.0:
+; BE-I32-NEXT: .save {r4, r5, r6, r7, r8, r9, r10, lr}
+; BE-I32-NEXT: push {r4, r5, r6, r7, r8, r9, r10, lr}
+; BE-I32-NEXT: .vsave {d8, d9, d10, d11, d12, d13, d14, d15}
+; BE-I32-NEXT: vpush {d8, d9, d10, d11, d12, d13, d14, d15}
+; BE-I32-NEXT: .pad #16
+; BE-I32-NEXT: sub sp, sp, #16
+; BE-I32-NEXT: vmov r0, s1
+; BE-I32-NEXT: vstr s14, [sp, #4] @ 4-byte Spill
+; BE-I32-NEXT: vmov.f32 s30, s15
+; BE-I32-NEXT: vstr s13, [sp, #12] @ 4-byte Spill
+; BE-I32-NEXT: vmov.f32 s17, s12
+; BE-I32-NEXT: vstr s10, [sp, #8] @ 4-byte Spill
+; BE-I32-NEXT: vmov.f32 s19, s11
+; BE-I32-NEXT: vstr s8, [sp] @ 4-byte Spill
+; BE-I32-NEXT: vmov.f32 s21, s9
+; BE-I32-NEXT: vmov.f32 s23, s7
+; BE-I32-NEXT: vmov.f32 s24, s6
+; BE-I32-NEXT: vmov.f32 s25, s5
+; BE-I32-NEXT: vmov.f32 s26, s4
+; BE-I32-NEXT: vmov.f32 s27, s3
+; BE-I32-NEXT: vmov.f32 s28, s2
+; BE-I32-NEXT: vmov.f32 s29, s0
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: vmov s0, r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: mov r8, r0
+; BE-I32-NEXT: vmov r0, s27
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: mov r9, r0
+; BE-I32-NEXT: vmov r0, s25
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: mov r10, r0
+; BE-I32-NEXT: vmov r0, s23
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: mov r7, r0
+; BE-I32-NEXT: vmov r0, s21
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: mov r4, r0
+; BE-I32-NEXT: vmov r0, s19
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: mov r5, r0
+; BE-I32-NEXT: vmov r0, s30
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: mov r6, r0
+; BE-I32-NEXT: vmov r0, s17
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: vmov s0, r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov.32 d8[0], r0
+; BE-I32-NEXT: vmov r0, s29
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: vmov s0, r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov.32 d10[0], r0
+; BE-I32-NEXT: vmov r0, s28
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: vmov s0, r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov.32 d11[0], r0
+; BE-I32-NEXT: vmov r0, s26
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: vmov s0, r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov.32 d14[0], r0
+; BE-I32-NEXT: vmov r0, s24
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: vmov s0, r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vldr s0, [sp] @ 4-byte Reload
+; BE-I32-NEXT: vmov.32 d15[0], r0
+; BE-I32-NEXT: vmov r0, s0
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: vmov s0, r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vldr s0, [sp, #4] @ 4-byte Reload
+; BE-I32-NEXT: vmov.32 d12[0], r0
+; BE-I32-NEXT: vmov r0, s0
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: vmov s0, r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vldr s0, [sp, #8] @ 4-byte Reload
+; BE-I32-NEXT: vmov.32 d9[0], r0
+; BE-I32-NEXT: vmov r0, s0
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: vmov s0, r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov s0, r6
+; BE-I32-NEXT: vmov.32 d13[0], r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov s0, r5
+; BE-I32-NEXT: vmov.32 d9[1], r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov s0, r4
+; BE-I32-NEXT: vmov.32 d13[1], r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov s0, r7
+; BE-I32-NEXT: vmov.32 d12[1], r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov s0, r10
+; BE-I32-NEXT: vmov.32 d15[1], r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov s0, r9
+; BE-I32-NEXT: vmov.32 d14[1], r0
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vldr s0, [sp, #12] @ 4-byte Reload
+; BE-I32-NEXT: vmov.32 d11[1], r0
+; BE-I32-NEXT: vmov r0, s0
+; BE-I32-NEXT: bl __aeabi_h2f
+; BE-I32-NEXT: vmov s0, r0
+; BE-I32-NEXT: vmov.32 d10[1], r8
+; BE-I32-NEXT: bl lrintf
+; BE-I32-NEXT: vmov.32 d8[1], r0
+; BE-I32-NEXT: vrev64.32 q0, q5
+; BE-I32-NEXT: vrev64.32 q1, q7
+; BE-I32-NEXT: vrev64.32 q2, q6
+; BE-I32-NEXT: vrev64.32 q3, q4
+; BE-I32-NEXT: add sp, sp, #16
+; BE-I32-NEXT: vpop {d8, d9, d10, d11, d12, d13, d14, d15}
+; BE-I32-NEXT: pop {r4, r5, r6, r7, r8, r9, r10, pc}
+;
+; BE-I64-LABEL: lrint_v16f16:
+; BE-I64: @ %bb.0:
+; BE-I64-NEXT: .save {r4, r5, r6, r7, r8, r9, r10, r11, lr}
+; BE-I64-NEXT: push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
+; BE-I64-NEXT: .pad #4
+; BE-I64-NEXT: sub sp, sp, #4
+; BE-I64-NEXT: .vsave {d8, d9, d10, d11, d12, d13, d14, d15}
+; BE-I64-NEXT: vpush {d8, d9, d10, d11, d12, d13, d14, d15}
+; BE-I64-NEXT: .pad #112
+; BE-I64-NEXT: sub sp, sp, #112
+; BE-I64-NEXT: mov r11, r0
+; BE-I64-NEXT: vmov r0, s14
+; BE-I64-NEXT: vmov.f32 s17, s15
+; BE-I64-NEXT: vstr s13, [sp, #52] @ 4-byte Spill
+; BE-I64-NEXT: vmov.f32 s21, s12
+; BE-I64-NEXT: vstr s10, [sp, #68] @ 4-byte Spill
+; BE-I64-NEXT: vmov.f32 s23, s11
+; BE-I64-NEXT: vstr s7, [sp, #72] @ 4-byte Spill
+; BE-I64-NEXT: vmov.f32 s19, s9
+; BE-I64-NEXT: vstr s4, [sp, #28] @ 4-byte Spill
+; BE-I64-NEXT: vmov.f32 s26, s8
+; BE-I64-NEXT: vmov.f32 s24, s6
+; BE-I64-NEXT: vmov.f32 s18, s5
+; BE-I64-NEXT: vmov.f32 s25, s3
+; BE-I64-NEXT: vmov.f32 s16, s2
+; BE-I64-NEXT: vmov.f32 s27, s1
+; BE-I64-NEXT: vmov.f32 s29, s0
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: vmov s0, r0
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: mov r8, r0
+; BE-I64-NEXT: vmov r0, s29
+; BE-I64-NEXT: mov r4, r1
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: mov r9, r0
+; BE-I64-NEXT: vmov r0, s27
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: mov r7, r0
+; BE-I64-NEXT: vmov r0, s21
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: mov r6, r0
+; BE-I64-NEXT: vmov r0, s25
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: mov r5, r0
+; BE-I64-NEXT: vmov r0, s23
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: vmov s0, r0
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov.32 d16[0], r0
+; BE-I64-NEXT: vmov s0, r5
+; BE-I64-NEXT: str r1, [sp, #108] @ 4-byte Spill
+; BE-I64-NEXT: vstr d16, [sp, #96] @ 8-byte Spill
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov.32 d16[0], r0
+; BE-I64-NEXT: vmov s0, r6
+; BE-I64-NEXT: str r1, [sp, #92] @ 4-byte Spill
+; BE-I64-NEXT: vstr d16, [sp, #80] @ 8-byte Spill
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov.32 d16[0], r0
+; BE-I64-NEXT: vmov s0, r7
+; BE-I64-NEXT: str r1, [sp, #76] @ 4-byte Spill
+; BE-I64-NEXT: vstr d16, [sp, #56] @ 8-byte Spill
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov s0, r9
+; BE-I64-NEXT: mov r10, r1
+; BE-I64-NEXT: vmov.32 d14[0], r0
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov.32 d15[0], r0
+; BE-I64-NEXT: vmov r0, s17
+; BE-I64-NEXT: mov r5, r1
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: vmov s0, r0
+; BE-I64-NEXT: vmov.32 d10[0], r8
+; BE-I64-NEXT: vmov r6, s19
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov.32 d11[0], r0
+; BE-I64-NEXT: mov r0, r6
+; BE-I64-NEXT: mov r7, r1
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: mov r6, r0
+; BE-I64-NEXT: vmov r0, s18
+; BE-I64-NEXT: vmov.32 d10[1], r4
+; BE-I64-NEXT: vstr d10, [sp, #40] @ 8-byte Spill
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: mov r4, r0
+; BE-I64-NEXT: vmov r0, s16
+; BE-I64-NEXT: vmov.32 d11[1], r7
+; BE-I64-NEXT: vstr d11, [sp, #32] @ 8-byte Spill
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: vmov.32 d15[1], r5
+; BE-I64-NEXT: vmov s0, r0
+; BE-I64-NEXT: vstr d15, [sp, #16] @ 8-byte Spill
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vldr s0, [sp, #28] @ 4-byte Reload
+; BE-I64-NEXT: vmov r5, s26
+; BE-I64-NEXT: vmov.32 d16[0], r0
+; BE-I64-NEXT: vmov s26, r4
+; BE-I64-NEXT: vmov r0, s0
+; BE-I64-NEXT: mov r8, r1
+; BE-I64-NEXT: vmov.32 d14[1], r10
+; BE-I64-NEXT: vmov r4, s24
+; BE-I64-NEXT: vstr d16, [sp] @ 8-byte Spill
+; BE-I64-NEXT: vstr d14, [sp, #8] @ 8-byte Spill
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: vmov.f32 s0, s26
+; BE-I64-NEXT: vmov s22, r0
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov.f32 s0, s22
+; BE-I64-NEXT: mov r7, r1
+; BE-I64-NEXT: vmov.32 d13[0], r0
+; BE-I64-NEXT: vmov s24, r6
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov.32 d14[0], r0
+; BE-I64-NEXT: mov r0, r4
+; BE-I64-NEXT: mov r6, r1
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: vmov.f32 s0, s24
+; BE-I64-NEXT: vmov s22, r0
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov.f32 s0, s22
+; BE-I64-NEXT: mov r9, r1
+; BE-I64-NEXT: vmov.32 d12[0], r0
+; BE-I64-NEXT: vmov.32 d14[1], r6
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov.32 d11[0], r0
+; BE-I64-NEXT: mov r0, r5
+; BE-I64-NEXT: mov r6, r1
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: vldr s0, [sp, #52] @ 4-byte Reload
+; BE-I64-NEXT: mov r4, r0
+; BE-I64-NEXT: vmov.32 d13[1], r7
+; BE-I64-NEXT: vmov r0, s0
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: vldr s0, [sp, #68] @ 4-byte Reload
+; BE-I64-NEXT: vmov s20, r0
+; BE-I64-NEXT: vmov.32 d11[1], r6
+; BE-I64-NEXT: vmov r7, s0
+; BE-I64-NEXT: vldr s0, [sp, #72] @ 4-byte Reload
+; BE-I64-NEXT: vmov r0, s0
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: vmov.f32 s0, s20
+; BE-I64-NEXT: vmov s16, r0
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov.f32 s0, s16
+; BE-I64-NEXT: mov r5, r1
+; BE-I64-NEXT: vmov.32 d10[0], r0
+; BE-I64-NEXT: vmov s18, r4
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov.32 d15[0], r0
+; BE-I64-NEXT: mov r0, r7
+; BE-I64-NEXT: mov r4, r1
+; BE-I64-NEXT: bl __aeabi_h2f
+; BE-I64-NEXT: vmov.f32 s0, s18
+; BE-I64-NEXT: vmov s16, r0
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov.f32 s0, s16
+; BE-I64-NEXT: mov r6, r1
+; BE-I64-NEXT: vmov.32 d9[0], r0
+; BE-I64-NEXT: vmov.32 d15[1], r4
+; BE-I64-NEXT: bl lrintf
+; BE-I64-NEXT: vmov.32 d24[0], r0
+; BE-I64-NEXT: ldr r0, [sp, #76] @ 4-byte Reload
+; BE-I64-NEXT: vldr d23, [sp, #56] @ 8-byte Reload
+; BE-I64-NEXT: vldr d20, [sp, #8] @ 8-byte Reload
+; BE-I64-NEXT: vmov.32 d23[1], r0
+; BE-I64-NEXT: ldr r0, [sp, #92] @ 4-byte Reload
+; BE-I64-NEXT: vldr d22, [sp, #80] @ 8-byte Reload
+; BE-I64-NEXT: vldr d26, [sp, #16] @ 8-byte Reload
+; BE-I64-NEXT: vrev64.32 d21, d20
+; BE-I64-NEXT: vmov.32 d22[1], r0
+; BE-I64-NEXT: ldr r0, [sp, #108] @ 4-byte Reload
+; BE-I64-NEXT: vldr d30, [sp] @ 8-byte Reload
+; BE-I64-NEXT: vldr d25, [sp, #96] @ 8-byte Reload
+; BE-I64-NEXT: vrev64.32 d20, d26
+; BE-I64-NEXT: vldr d26, [sp, #32] @ 8-byte Reload
+; BE-I64-NEXT: vmov.32 d10[1], r5
+; BE-I64-NEXT: vmov.32 d12[1], r9
+; BE-I64-NEXT: vldr d28, [sp, #40] @ 8-byte Reload
+; BE-I64-NEXT: vrev64.32 d27, d26
+; BE-I64-NEXT: vmov.32 d25[1], r0
+; BE-I64-NEXT: add r0, r11, #64
+; BE-I64-NEXT: vmov.32 d30[1], r8
+; BE-I64-NEXT: vmov.32 d9[1], r6
+; BE-I64-NEXT: vrev64.32 d26, d28
+; BE-I64-NEXT: vrev64.32 d29, d10
+; BE-I64-NEXT: vmov.32 d24[1], r1
+; BE-I64-NEXT: vrev64.32 d1, d12
+; BE-I64-NEXT: vrev64.32 d28, d23
+; BE-I64-NEXT: vrev64.32 d23, d22
+; BE-I64-NEXT: vrev64.32 d22, d30
+; BE-I64-NEXT: vrev64.32 d31, d25
+; BE-I64-NEXT: vrev64.32 d0, d9
+; BE-I64-NEXT: vrev64.32 d30, d24
+; BE-I64-NEXT: vst1.64 {d0, d1}, [r0:128]!
+; BE-I64-NEXT: vst1.64 {d30, d31}, [r0:128]!
+; BE-I64-NEXT: vst1.64 {d28, d29}, [r0:128]!
+; BE-I64-NEXT: vrev64.32 d19, d13
+; BE-I64-NEXT: vst1.64 {d26, d27}, [r0:128]
+; BE-I64-NEXT: vst1.64 {d20, d21}, [r11:128]!
+; BE-I64-NEXT: vrev64.32 d18, d14
+; BE-I64-NEXT: vst1.64 {d22, d23}, [r11:128]!
+; BE-I64-NEXT: vrev64.32 d17, d15
+; BE-I64-NEXT: vrev64.32 d16, d11
+; BE-I64-NEXT: vst1.64 {d18, d19}, [r11:128]!
+; BE-I64-NEXT: vst1.64 {d16, d17}, [r11:128]
+; BE-I64-NEXT: add sp, sp, #112
+; BE-I64-NEXT: vpop {d8, d9, d10, d11, d12, d13, d14, d15}
+; BE-I64-NEXT: add sp, sp, #4
+; BE-I64-NEXT: pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}
+ %a = call <16 x iXLen> @llvm.lrint.v16iXLen.v16f16(<16 x half> %x)
+ ret <16 x iXLen> %a
+}
define <1 x iXLen> @lrint_v1f32(<1 x float> %x) {
; LE-I32-LABEL: lrint_v1f32:
diff --git a/llvm/test/CodeGen/ARM/vlldm-vlstm-uops.mir b/llvm/test/CodeGen/ARM/vlldm-vlstm-uops.mir
index 8fa9337..03cb8e3 100644
--- a/llvm/test/CodeGen/ARM/vlldm-vlstm-uops.mir
+++ b/llvm/test/CodeGen/ARM/vlldm-vlstm-uops.mir
@@ -60,9 +60,9 @@ body: |
$sp = t2STMDB_UPD $sp, 14, $noreg, $r4, killed $r5, killed $r6, killed $r7, killed $r8, killed $r9, killed $r10, killed $r11
$r4 = t2BICri $r4, 1, 14, $noreg, $noreg
$sp = tSUBspi $sp, 34, 14, $noreg
- VLSTM $sp, 14 /* CC::al */, $noreg, 0, implicit-def $vpr, implicit-def $fpscr, implicit-def $fpscr_nzcv, implicit undef $vpr, implicit undef $fpscr, implicit undef $fpscr_nzcv, implicit undef $d0, implicit undef $d1, implicit undef $d2, implicit undef $d3, implicit undef $d4, implicit undef $d5, implicit undef $d6, implicit undef $d7, implicit $d8, implicit $d9, implicit $d10, implicit $d11, implicit $d12, implicit $d13, implicit $d14, implicit $d15
+ VLSTM $sp, 14 /* CC::al */, $noreg, 0, implicit-def $vpr, implicit-def $fpscr, implicit-def $fpscr_nzcv, implicit-def $fpscr_rm, implicit undef $vpr, implicit undef $fpscr, implicit undef $fpscr_nzcv, implicit undef $fpscr_rm, implicit undef $d0, implicit undef $d1, implicit undef $d2, implicit undef $d3, implicit undef $d4, implicit undef $d5, implicit undef $d6, implicit undef $d7, implicit $d8, implicit $d9, implicit $d10, implicit $d11, implicit $d12, implicit $d13, implicit $d14, implicit $d15
tBLXNSr 14, $noreg, killed $r4, csr_aapcs, implicit-def $lr, implicit $sp, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $q0, implicit-def $q1, implicit-def $q2, implicit-def $q3, implicit-def $q4, implicit-def $q5, implicit-def $q6, implicit-def $q7
- VLLDM $sp, 14 /* CC::al */, $noreg, 0, implicit-def $vpr, implicit-def $fpscr, implicit-def $fpscr_nzcv, implicit-def $d0, implicit-def $d1, implicit-def $d2, implicit-def $d3, implicit-def $d4, implicit-def $d5, implicit-def $d6, implicit-def $d7, implicit-def $d8, implicit-def $d9, implicit-def $d10, implicit-def $d11, implicit-def $d12, implicit-def $d13, implicit-def $d14, implicit-def $d15
+ VLLDM $sp, 14 /* CC::al */, $noreg, 0, implicit-def $vpr, implicit-def $fpscr, implicit-def $fpscr_nzcv, implicit-def $fpscr_rm, implicit-def $d0, implicit-def $d1, implicit-def $d2, implicit-def $d3, implicit-def $d4, implicit-def $d5, implicit-def $d6, implicit-def $d7, implicit-def $d8, implicit-def $d9, implicit-def $d10, implicit-def $d11, implicit-def $d12, implicit-def $d13, implicit-def $d14, implicit-def $d15
$sp = tADDspi $sp, 34, 14, $noreg
$sp = t2LDMIA_UPD $sp, 14, $noreg, def $r4, def $r5, def $r6, def $r7, def $r8, def $r9, def $r10, def $r11
$sp = t2LDMIA_RET $sp, 14, $noreg, def $r4, def $pc
diff --git a/llvm/test/CodeGen/BPF/addr-space-memintrinsic-gep.ll b/llvm/test/CodeGen/BPF/addr-space-memintrinsic-gep.ll
new file mode 100644
index 0000000..1db8391
--- /dev/null
+++ b/llvm/test/CodeGen/BPF/addr-space-memintrinsic-gep.ll
@@ -0,0 +1,60 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt --bpf-check-and-opt-ir -S -mtriple=bpf-pc-linux < %s | FileCheck %s
+
+@page1 = dso_local local_unnamed_addr addrspace(1) global [10 x ptr] zeroinitializer, align 8
+@page2 = dso_local local_unnamed_addr addrspace(1) global [10 x ptr] zeroinitializer, align 8
+
+define dso_local void @test_memset() local_unnamed_addr {
+; CHECK-LABEL: define dso_local void @test_memset() local_unnamed_addr {
+; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 8 addrspacecast (ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @page1, i64 16) to ptr), i8 0, i64 16, i1 false)
+; CHECK-NEXT: ret void
+;
+ tail call void @llvm.memset.p1.i64(ptr addrspace(1) noundef nonnull align 8 dereferenceable(16) getelementptr inbounds nuw (i8, ptr addrspace(1) @page1, i64 16), i8 0, i64 16, i1 false)
+ ret void
+}
+
+declare void @llvm.memset.p1.i64(ptr addrspace(1) writeonly captures(none), i8, i64, i1 immarg)
+
+define dso_local void @test_memcpy() local_unnamed_addr {
+; CHECK-LABEL: define dso_local void @test_memcpy() local_unnamed_addr {
+; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 addrspacecast (ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @page2, i64 8) to ptr), ptr align 8 addrspacecast (ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @page1, i64 8) to ptr), i64 16, i1 false)
+; CHECK-NEXT: ret void
+;
+ tail call void @llvm.memcpy.p1.p1.i64(ptr addrspace(1) noundef nonnull align 8 dereferenceable(16) getelementptr inbounds nuw (i8, ptr addrspace(1) @page2, i64 8), ptr addrspace(1) noundef nonnull align 8 dereferenceable(16) getelementptr inbounds nuw (i8, ptr addrspace(1) @page1, i64 8), i64 16, i1 false)
+ ret void
+}
+
+declare void @llvm.memcpy.p1.p1.i64(ptr addrspace(1) noalias writeonly captures(none), ptr addrspace(1) noalias readonly captures(none), i64, i1 immarg)
+
+define dso_local void @test_memmove() local_unnamed_addr {
+; CHECK-LABEL: define dso_local void @test_memmove() local_unnamed_addr {
+; CHECK-NEXT: call void @llvm.memmove.p0.p0.i64(ptr align 8 addrspacecast (ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @page2, i64 16) to ptr), ptr align 8 addrspacecast (ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @page2, i64 8) to ptr), i64 16, i1 false)
+; CHECK-NEXT: ret void
+;
+ tail call void @llvm.memmove.p1.p1.i64(ptr addrspace(1) noundef nonnull align 8 dereferenceable(16) getelementptr inbounds nuw (i8, ptr addrspace(1) @page2, i64 16), ptr addrspace(1) noundef nonnull align 8 dereferenceable(16) getelementptr inbounds nuw (i8, ptr addrspace(1) @page2, i64 8), i64 16, i1 false)
+ ret void
+}
+
+declare void @llvm.memmove.p1.p1.i64(ptr addrspace(1) writeonly captures(none), ptr addrspace(1) readonly captures(none), i64, i1 immarg)
+
+define dso_local void @test_memset_inline() local_unnamed_addr {
+; CHECK-LABEL: define dso_local void @test_memset_inline() local_unnamed_addr {
+; CHECK-NEXT: call void @llvm.memset.inline.p0.i64(ptr align 8 addrspacecast (ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @page1, i64 16) to ptr), i8 0, i64 16, i1 false)
+; CHECK-NEXT: ret void
+;
+ tail call void @llvm.memset.inline.p1.i64(ptr addrspace(1) nonnull align 8 getelementptr inbounds nuw (i8, ptr addrspace(1) @page1, i64 16), i8 0, i64 16, i1 false)
+ ret void
+}
+
+declare void @llvm.memset.inline.p1.i64(ptr addrspace(1) writeonly captures(none), i8, i64, i1 immarg)
+
+define dso_local void @test_memcpy_inline() local_unnamed_addr {
+; CHECK-LABEL: define dso_local void @test_memcpy_inline() local_unnamed_addr {
+; CHECK-NEXT: call void @llvm.memcpy.inline.p0.p0.i64(ptr align 8 addrspacecast (ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @page2, i64 8) to ptr), ptr align 8 addrspacecast (ptr addrspace(1) getelementptr inbounds nuw (i8, ptr addrspace(1) @page1, i64 8) to ptr), i64 16, i1 false)
+; CHECK-NEXT: ret void
+;
+ tail call void @llvm.memcpy.inline.p1.p1.i64(ptr addrspace(1) nonnull align 8 getelementptr inbounds nuw (i8, ptr addrspace(1) @page2, i64 8), ptr addrspace(1) nonnull align 8 getelementptr inbounds nuw (i8, ptr addrspace(1) @page1, i64 8), i64 16, i1 false)
+ ret void
+}
+
+declare void @llvm.memcpy.inline.p1.p1.i64(ptr addrspace(1) noalias writeonly captures(none), ptr addrspace(1) noalias readonly captures(none), i64, i1 immarg)
diff --git a/llvm/test/CodeGen/BPF/addr-space-memintrinsic-no-gep.ll b/llvm/test/CodeGen/BPF/addr-space-memintrinsic-no-gep.ll
new file mode 100644
index 0000000..62fa2e4
--- /dev/null
+++ b/llvm/test/CodeGen/BPF/addr-space-memintrinsic-no-gep.ll
@@ -0,0 +1,49 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt --bpf-check-and-opt-ir -S -mtriple=bpf-pc-linux < %s | FileCheck %s
+
+@page1 = dso_local local_unnamed_addr addrspace(1) global [10 x ptr] zeroinitializer, align 8
+@page2 = dso_local local_unnamed_addr addrspace(1) global [10 x ptr] zeroinitializer, align 8
+
+define dso_local void @test_memset() local_unnamed_addr {
+; CHECK-LABEL: define dso_local void @test_memset() local_unnamed_addr {
+; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 8 addrspacecast (ptr addrspace(1) @page1 to ptr), i8 0, i64 16, i1 false)
+; CHECK-NEXT: ret void
+;
+ tail call void @llvm.memset.p1.i64(ptr addrspace(1) noundef align 8 dereferenceable(16) @page1, i8 0, i64 16, i1 false)
+ ret void
+}
+
+declare void @llvm.memset.p1.i64(ptr addrspace(1) writeonly captures(none), i8, i64, i1 immarg)
+
+define dso_local void @test_memcpy() local_unnamed_addr {
+; CHECK-LABEL: define dso_local void @test_memcpy() local_unnamed_addr {
+; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 addrspacecast (ptr addrspace(1) @page2 to ptr), ptr align 8 addrspacecast (ptr addrspace(1) @page1 to ptr), i64 16, i1 false)
+; CHECK-NEXT: ret void
+;
+ tail call void @llvm.memcpy.p1.p1.i64(ptr addrspace(1) noundef align 8 dereferenceable(16) @page2, ptr addrspace(1) noundef align 8 dereferenceable(16) @page1, i64 16, i1 false)
+ ret void
+}
+
+declare void @llvm.memcpy.p1.p1.i64(ptr addrspace(1) noalias writeonly captures(none), ptr addrspace(1) noalias readonly captures(none), i64, i1 immarg)
+
+define dso_local void @test_memset_inline() local_unnamed_addr {
+; CHECK-LABEL: define dso_local void @test_memset_inline() local_unnamed_addr {
+; CHECK-NEXT: call void @llvm.memset.inline.p0.i64(ptr align 8 addrspacecast (ptr addrspace(1) @page1 to ptr), i8 0, i64 16, i1 false)
+; CHECK-NEXT: ret void
+;
+ tail call void @llvm.memset.inline.p1.i64(ptr addrspace(1) align 8 @page1, i8 0, i64 16, i1 false)
+ ret void
+}
+
+declare void @llvm.memset.inline.p1.i64(ptr addrspace(1) writeonly captures(none), i8, i64, i1 immarg)
+
+define dso_local void @test_memcpy_inline() local_unnamed_addr {
+; CHECK-LABEL: define dso_local void @test_memcpy_inline() local_unnamed_addr {
+; CHECK-NEXT: call void @llvm.memcpy.inline.p0.p0.i64(ptr align 8 addrspacecast (ptr addrspace(1) @page2 to ptr), ptr align 8 addrspacecast (ptr addrspace(1) @page1 to ptr), i64 16, i1 false)
+; CHECK-NEXT: ret void
+;
+ tail call void @llvm.memcpy.inline.p1.p1.i64(ptr addrspace(1) align 8 @page2, ptr addrspace(1) align 8 @page1, i64 16, i1 false)
+ ret void
+}
+
+declare void @llvm.memcpy.inline.p1.p1.i64(ptr addrspace(1) noalias writeonly captures(none), ptr addrspace(1) noalias readonly captures(none), i64, i1 immarg)
diff --git a/llvm/test/CodeGen/MIR2Vec/Inputs/mir2vec_dummy_2D_vocab.json b/llvm/test/CodeGen/MIR2Vec/Inputs/mir2vec_dummy_2D_vocab.json
new file mode 100644
index 0000000..2894fff
--- /dev/null
+++ b/llvm/test/CodeGen/MIR2Vec/Inputs/mir2vec_dummy_2D_vocab.json
@@ -0,0 +1,11 @@
+{
+ "entities" : {
+ "ABS_Fp":[1, 2],
+ "ADC":[3, 4],
+ "ADD":[5, 6],
+ "ADDPDrm":[7, 8],
+ "ADDPDrr":[9, 10],
+ "ADDPSrr":[11, 12],
+ "ADDSDrm":[13, 14]
+ }
+} \ No newline at end of file
diff --git a/llvm/test/CodeGen/MIR2Vec/Inputs/mir2vec_inconsistent_dims.json b/llvm/test/CodeGen/MIR2Vec/Inputs/mir2vec_inconsistent_dims.json
new file mode 100644
index 0000000..bf04163
--- /dev/null
+++ b/llvm/test/CodeGen/MIR2Vec/Inputs/mir2vec_inconsistent_dims.json
@@ -0,0 +1,7 @@
+{
+ "entities": {
+ "ADD": [1.0, 2.0, 3.0],
+ "SUB": [1.5],
+ "MUL": [2.0, 3.0]
+ }
+}
diff --git a/llvm/test/CodeGen/MIR2Vec/Inputs/mir2vec_invalid_vocab.json b/llvm/test/CodeGen/MIR2Vec/Inputs/mir2vec_invalid_vocab.json
new file mode 100644
index 0000000..585a85e
--- /dev/null
+++ b/llvm/test/CodeGen/MIR2Vec/Inputs/mir2vec_invalid_vocab.json
@@ -0,0 +1,5 @@
+{
+ "invalid_structure": {
+ "ADD": [ 1, 2, 3]
+ }
+} \ No newline at end of file
diff --git a/llvm/test/CodeGen/MIR2Vec/Inputs/mir2vec_zero_vocab.json b/llvm/test/CodeGen/MIR2Vec/Inputs/mir2vec_zero_vocab.json
new file mode 100644
index 0000000..63e8ccbd
--- /dev/null
+++ b/llvm/test/CodeGen/MIR2Vec/Inputs/mir2vec_zero_vocab.json
@@ -0,0 +1,12 @@
+{
+ "entities": {
+ "ADD": [],
+ "SUB": [],
+ "MUL": [],
+ "MOV": [],
+ "CMP": [],
+ "JMP": [],
+ "CALL": [],
+ "RET": []
+ }
+} \ No newline at end of file
diff --git a/llvm/test/CodeGen/MIR2Vec/Inputs/reference_x86_vocab_print.txt b/llvm/test/CodeGen/MIR2Vec/Inputs/reference_x86_vocab_print.txt
new file mode 100644
index 0000000..6327cff
--- /dev/null
+++ b/llvm/test/CodeGen/MIR2Vec/Inputs/reference_x86_vocab_print.txt
@@ -0,0 +1,6882 @@
+Key: AAA: [ 0.00 0.00 ]
+Key: AAD: [ 0.00 0.00 ]
+Key: AADD: [ 0.00 0.00 ]
+Key: AAM: [ 0.00 0.00 ]
+Key: AAND: [ 0.00 0.00 ]
+Key: AAS: [ 0.00 0.00 ]
+Key: ABS_F: [ 0.00 0.00 ]
+Key: ABS_Fp: [ 1.00 2.00 ]
+Key: ADC: [ 3.00 4.00 ]
+Key: ADCX: [ 0.00 0.00 ]
+Key: ADD: [ 5.00 6.00 ]
+Key: ADDPDrm: [ 7.00 8.00 ]
+Key: ADDPDrr: [ 9.00 10.00 ]
+Key: ADDPSrm: [ 0.00 0.00 ]
+Key: ADDPSrr: [ 11.00 12.00 ]
+Key: ADDR: [ 0.00 0.00 ]
+Key: ADDSDrm: [ 13.00 14.00 ]
+Key: ADDSDrm_Int: [ 0.00 0.00 ]
+Key: ADDSDrr: [ 0.00 0.00 ]
+Key: ADDSDrr_Int: [ 0.00 0.00 ]
+Key: ADDSSrm: [ 0.00 0.00 ]
+Key: ADDSSrm_Int: [ 0.00 0.00 ]
+Key: ADDSSrr: [ 0.00 0.00 ]
+Key: ADDSSrr_Int: [ 0.00 0.00 ]
+Key: ADDSUBPDrm: [ 0.00 0.00 ]
+Key: ADDSUBPDrr: [ 0.00 0.00 ]
+Key: ADDSUBPSrm: [ 0.00 0.00 ]
+Key: ADDSUBPSrr: [ 0.00 0.00 ]
+Key: ADD_F: [ 0.00 0.00 ]
+Key: ADD_FI: [ 0.00 0.00 ]
+Key: ADD_FPrST: [ 0.00 0.00 ]
+Key: ADD_FST: [ 0.00 0.00 ]
+Key: ADD_Fp: [ 0.00 0.00 ]
+Key: ADD_FpI: [ 0.00 0.00 ]
+Key: ADD_FrST: [ 0.00 0.00 ]
+Key: ADJCALLSTACKDOWN: [ 0.00 0.00 ]
+Key: ADJCALLSTACKUP: [ 0.00 0.00 ]
+Key: ADOX: [ 0.00 0.00 ]
+Key: AESDEC: [ 0.00 0.00 ]
+Key: AESDECLASTrm: [ 0.00 0.00 ]
+Key: AESDECLASTrr: [ 0.00 0.00 ]
+Key: AESDECWIDE: [ 0.00 0.00 ]
+Key: AESDECrm: [ 0.00 0.00 ]
+Key: AESDECrr: [ 0.00 0.00 ]
+Key: AESENC: [ 0.00 0.00 ]
+Key: AESENCLASTrm: [ 0.00 0.00 ]
+Key: AESENCLASTrr: [ 0.00 0.00 ]
+Key: AESENCWIDE: [ 0.00 0.00 ]
+Key: AESENCrm: [ 0.00 0.00 ]
+Key: AESENCrr: [ 0.00 0.00 ]
+Key: AESIMCrm: [ 0.00 0.00 ]
+Key: AESIMCrr: [ 0.00 0.00 ]
+Key: AESKEYGENASSISTrmi: [ 0.00 0.00 ]
+Key: AESKEYGENASSISTrri: [ 0.00 0.00 ]
+Key: AND: [ 0.00 0.00 ]
+Key: ANDN: [ 0.00 0.00 ]
+Key: ANDNPDrm: [ 0.00 0.00 ]
+Key: ANDNPDrr: [ 0.00 0.00 ]
+Key: ANDNPSrm: [ 0.00 0.00 ]
+Key: ANDNPSrr: [ 0.00 0.00 ]
+Key: ANDPDrm: [ 0.00 0.00 ]
+Key: ANDPDrr: [ 0.00 0.00 ]
+Key: ANDPSrm: [ 0.00 0.00 ]
+Key: ANDPSrr: [ 0.00 0.00 ]
+Key: ANNOTATION_LABEL: [ 0.00 0.00 ]
+Key: AOR: [ 0.00 0.00 ]
+Key: ARITH_FENCE: [ 0.00 0.00 ]
+Key: ARPL: [ 0.00 0.00 ]
+Key: ASAN_CHECK_MEMACCESS: [ 0.00 0.00 ]
+Key: AVX: [ 0.00 0.00 ]
+Key: AVX_SET: [ 0.00 0.00 ]
+Key: AXOR: [ 0.00 0.00 ]
+Key: BEXTR: [ 0.00 0.00 ]
+Key: BEXTRI: [ 0.00 0.00 ]
+Key: BLCFILL: [ 0.00 0.00 ]
+Key: BLCI: [ 0.00 0.00 ]
+Key: BLCIC: [ 0.00 0.00 ]
+Key: BLCMSK: [ 0.00 0.00 ]
+Key: BLCS: [ 0.00 0.00 ]
+Key: BLENDPDrmi: [ 0.00 0.00 ]
+Key: BLENDPDrri: [ 0.00 0.00 ]
+Key: BLENDPSrmi: [ 0.00 0.00 ]
+Key: BLENDPSrri: [ 0.00 0.00 ]
+Key: BLENDVPDrm: [ 0.00 0.00 ]
+Key: BLENDVPDrr: [ 0.00 0.00 ]
+Key: BLENDVPSrm: [ 0.00 0.00 ]
+Key: BLENDVPSrr: [ 0.00 0.00 ]
+Key: BLSFILL: [ 0.00 0.00 ]
+Key: BLSI: [ 0.00 0.00 ]
+Key: BLSIC: [ 0.00 0.00 ]
+Key: BLSMSK: [ 0.00 0.00 ]
+Key: BLSR: [ 0.00 0.00 ]
+Key: BOUNDS: [ 0.00 0.00 ]
+Key: BSF: [ 0.00 0.00 ]
+Key: BSR: [ 0.00 0.00 ]
+Key: BSWAP: [ 0.00 0.00 ]
+Key: BT: [ 0.00 0.00 ]
+Key: BTC: [ 0.00 0.00 ]
+Key: BTR: [ 0.00 0.00 ]
+Key: BTS: [ 0.00 0.00 ]
+Key: BUNDLE: [ 0.00 0.00 ]
+Key: BZHI: [ 0.00 0.00 ]
+Key: CALL: [ 0.00 0.00 ]
+Key: CALLpcrel: [ 0.00 0.00 ]
+Key: CATCHRET: [ 0.00 0.00 ]
+Key: CBW: [ 0.00 0.00 ]
+Key: CCMP: [ 0.00 0.00 ]
+Key: CDQ: [ 0.00 0.00 ]
+Key: CDQE: [ 0.00 0.00 ]
+Key: CFCMOV: [ 0.00 0.00 ]
+Key: CFI_INSTRUCTION: [ 0.00 0.00 ]
+Key: CHS_F: [ 0.00 0.00 ]
+Key: CHS_Fp: [ 0.00 0.00 ]
+Key: CLAC: [ 0.00 0.00 ]
+Key: CLC: [ 0.00 0.00 ]
+Key: CLD: [ 0.00 0.00 ]
+Key: CLDEMOTE: [ 0.00 0.00 ]
+Key: CLEANUPRET: [ 0.00 0.00 ]
+Key: CLFLUSH: [ 0.00 0.00 ]
+Key: CLFLUSHOPT: [ 0.00 0.00 ]
+Key: CLGI: [ 0.00 0.00 ]
+Key: CLI: [ 0.00 0.00 ]
+Key: CLRSSBSY: [ 0.00 0.00 ]
+Key: CLTS: [ 0.00 0.00 ]
+Key: CLUI: [ 0.00 0.00 ]
+Key: CLWB: [ 0.00 0.00 ]
+Key: CLZERO: [ 0.00 0.00 ]
+Key: CMC: [ 0.00 0.00 ]
+Key: CMOV: [ 0.00 0.00 ]
+Key: CMOVBE_F: [ 0.00 0.00 ]
+Key: CMOVBE_Fp: [ 0.00 0.00 ]
+Key: CMOVB_F: [ 0.00 0.00 ]
+Key: CMOVB_Fp: [ 0.00 0.00 ]
+Key: CMOVE_F: [ 0.00 0.00 ]
+Key: CMOVE_Fp: [ 0.00 0.00 ]
+Key: CMOVNBE_F: [ 0.00 0.00 ]
+Key: CMOVNBE_Fp: [ 0.00 0.00 ]
+Key: CMOVNB_F: [ 0.00 0.00 ]
+Key: CMOVNB_Fp: [ 0.00 0.00 ]
+Key: CMOVNE_F: [ 0.00 0.00 ]
+Key: CMOVNE_Fp: [ 0.00 0.00 ]
+Key: CMOVNP_F: [ 0.00 0.00 ]
+Key: CMOVNP_Fp: [ 0.00 0.00 ]
+Key: CMOVP_F: [ 0.00 0.00 ]
+Key: CMOVP_Fp: [ 0.00 0.00 ]
+Key: CMOV_FR: [ 0.00 0.00 ]
+Key: CMOV_GR: [ 0.00 0.00 ]
+Key: CMOV_RFP: [ 0.00 0.00 ]
+Key: CMOV_VK: [ 0.00 0.00 ]
+Key: CMOV_VR: [ 0.00 0.00 ]
+Key: CMP: [ 0.00 0.00 ]
+Key: CMPCCXADDmr: [ 0.00 0.00 ]
+Key: CMPPDrmi: [ 0.00 0.00 ]
+Key: CMPPDrri: [ 0.00 0.00 ]
+Key: CMPPSrmi: [ 0.00 0.00 ]
+Key: CMPPSrri: [ 0.00 0.00 ]
+Key: CMPSB: [ 0.00 0.00 ]
+Key: CMPSDrmi: [ 0.00 0.00 ]
+Key: CMPSDrmi_Int: [ 0.00 0.00 ]
+Key: CMPSDrri: [ 0.00 0.00 ]
+Key: CMPSDrri_Int: [ 0.00 0.00 ]
+Key: CMPSL: [ 0.00 0.00 ]
+Key: CMPSQ: [ 0.00 0.00 ]
+Key: CMPSSrmi: [ 0.00 0.00 ]
+Key: CMPSSrmi_Int: [ 0.00 0.00 ]
+Key: CMPSSrri: [ 0.00 0.00 ]
+Key: CMPSSrri_Int: [ 0.00 0.00 ]
+Key: CMPSW: [ 0.00 0.00 ]
+Key: CMPXCHG: [ 0.00 0.00 ]
+Key: COMISDrm: [ 0.00 0.00 ]
+Key: COMISDrm_Int: [ 0.00 0.00 ]
+Key: COMISDrr: [ 0.00 0.00 ]
+Key: COMISDrr_Int: [ 0.00 0.00 ]
+Key: COMISSrm: [ 0.00 0.00 ]
+Key: COMISSrm_Int: [ 0.00 0.00 ]
+Key: COMISSrr: [ 0.00 0.00 ]
+Key: COMISSrr_Int: [ 0.00 0.00 ]
+Key: COMP_FST: [ 0.00 0.00 ]
+Key: COM_FIPr: [ 0.00 0.00 ]
+Key: COM_FIr: [ 0.00 0.00 ]
+Key: COM_FST: [ 0.00 0.00 ]
+Key: COM_FpIr: [ 0.00 0.00 ]
+Key: COM_Fpr: [ 0.00 0.00 ]
+Key: CONVERGENCECTRL_ANCHOR: [ 0.00 0.00 ]
+Key: CONVERGENCECTRL_ENTRY: [ 0.00 0.00 ]
+Key: CONVERGENCECTRL_GLUE: [ 0.00 0.00 ]
+Key: CONVERGENCECTRL_LOOP: [ 0.00 0.00 ]
+Key: COPY: [ 0.00 0.00 ]
+Key: COPY_TO_REGCLASS: [ 0.00 0.00 ]
+Key: CPUID: [ 0.00 0.00 ]
+Key: CQO: [ 0.00 0.00 ]
+Key: CRC: [ 0.00 0.00 ]
+Key: CS_PREFIX: [ 0.00 0.00 ]
+Key: CTEST: [ 0.00 0.00 ]
+Key: CVTDQ: [ 0.00 0.00 ]
+Key: CVTPD: [ 0.00 0.00 ]
+Key: CVTPS: [ 0.00 0.00 ]
+Key: CVTSD: [ 0.00 0.00 ]
+Key: CVTSI: [ 0.00 0.00 ]
+Key: CVTSS: [ 0.00 0.00 ]
+Key: CVTTPD: [ 0.00 0.00 ]
+Key: CVTTPS: [ 0.00 0.00 ]
+Key: CVTTSD: [ 0.00 0.00 ]
+Key: CVTTSS: [ 0.00 0.00 ]
+Key: CWD: [ 0.00 0.00 ]
+Key: CWDE: [ 0.00 0.00 ]
+Key: DAA: [ 0.00 0.00 ]
+Key: DAS: [ 0.00 0.00 ]
+Key: DATA: [ 0.00 0.00 ]
+Key: DBG_INSTR_REF: [ 0.00 0.00 ]
+Key: DBG_LABEL: [ 0.00 0.00 ]
+Key: DBG_PHI: [ 0.00 0.00 ]
+Key: DBG_VALUE: [ 0.00 0.00 ]
+Key: DBG_VALUE_LIST: [ 0.00 0.00 ]
+Key: DEC: [ 0.00 0.00 ]
+Key: DIV: [ 0.00 0.00 ]
+Key: DIVPDrm: [ 0.00 0.00 ]
+Key: DIVPDrr: [ 0.00 0.00 ]
+Key: DIVPSrm: [ 0.00 0.00 ]
+Key: DIVPSrr: [ 0.00 0.00 ]
+Key: DIVR_F: [ 0.00 0.00 ]
+Key: DIVR_FI: [ 0.00 0.00 ]
+Key: DIVR_FPrST: [ 0.00 0.00 ]
+Key: DIVR_FST: [ 0.00 0.00 ]
+Key: DIVR_Fp: [ 0.00 0.00 ]
+Key: DIVR_FpI: [ 0.00 0.00 ]
+Key: DIVR_FrST: [ 0.00 0.00 ]
+Key: DIVSDrm: [ 0.00 0.00 ]
+Key: DIVSDrm_Int: [ 0.00 0.00 ]
+Key: DIVSDrr: [ 0.00 0.00 ]
+Key: DIVSDrr_Int: [ 0.00 0.00 ]
+Key: DIVSSrm: [ 0.00 0.00 ]
+Key: DIVSSrm_Int: [ 0.00 0.00 ]
+Key: DIVSSrr: [ 0.00 0.00 ]
+Key: DIVSSrr_Int: [ 0.00 0.00 ]
+Key: DIV_F: [ 0.00 0.00 ]
+Key: DIV_FI: [ 0.00 0.00 ]
+Key: DIV_FPrST: [ 0.00 0.00 ]
+Key: DIV_FST: [ 0.00 0.00 ]
+Key: DIV_Fp: [ 0.00 0.00 ]
+Key: DIV_FpI: [ 0.00 0.00 ]
+Key: DIV_FrST: [ 0.00 0.00 ]
+Key: DPPDrmi: [ 0.00 0.00 ]
+Key: DPPDrri: [ 0.00 0.00 ]
+Key: DPPSrmi: [ 0.00 0.00 ]
+Key: DPPSrri: [ 0.00 0.00 ]
+Key: DS_PREFIX: [ 0.00 0.00 ]
+Key: DYN_ALLOCA: [ 0.00 0.00 ]
+Key: EH_LABEL: [ 0.00 0.00 ]
+Key: EH_RETURN: [ 0.00 0.00 ]
+Key: EH_SjLj_LongJmp: [ 0.00 0.00 ]
+Key: EH_SjLj_SetJmp: [ 0.00 0.00 ]
+Key: EH_SjLj_Setup: [ 0.00 0.00 ]
+Key: ENCLS: [ 0.00 0.00 ]
+Key: ENCLU: [ 0.00 0.00 ]
+Key: ENCLV: [ 0.00 0.00 ]
+Key: ENCODEKEY: [ 0.00 0.00 ]
+Key: ENDBR: [ 0.00 0.00 ]
+Key: ENQCMD: [ 0.00 0.00 ]
+Key: ENQCMDS: [ 0.00 0.00 ]
+Key: ENTER: [ 0.00 0.00 ]
+Key: ERETS: [ 0.00 0.00 ]
+Key: ERETU: [ 0.00 0.00 ]
+Key: ES_PREFIX: [ 0.00 0.00 ]
+Key: EXTRACTPSmri: [ 0.00 0.00 ]
+Key: EXTRACTPSrri: [ 0.00 0.00 ]
+Key: EXTRACT_SUBREG: [ 0.00 0.00 ]
+Key: EXTRQ: [ 0.00 0.00 ]
+Key: EXTRQI: [ 0.00 0.00 ]
+Key: F: [ 0.00 0.00 ]
+Key: FAKE_USE: [ 0.00 0.00 ]
+Key: FARCALL: [ 0.00 0.00 ]
+Key: FARJMP: [ 0.00 0.00 ]
+Key: FAULTING_OP: [ 0.00 0.00 ]
+Key: FBLDm: [ 0.00 0.00 ]
+Key: FBSTPm: [ 0.00 0.00 ]
+Key: FCOM: [ 0.00 0.00 ]
+Key: FCOMP: [ 0.00 0.00 ]
+Key: FCOMPP: [ 0.00 0.00 ]
+Key: FCOS: [ 0.00 0.00 ]
+Key: FDECSTP: [ 0.00 0.00 ]
+Key: FEMMS: [ 0.00 0.00 ]
+Key: FENTRY_CALL: [ 0.00 0.00 ]
+Key: FFREE: [ 0.00 0.00 ]
+Key: FFREEP: [ 0.00 0.00 ]
+Key: FICOM: [ 0.00 0.00 ]
+Key: FICOMP: [ 0.00 0.00 ]
+Key: FINCSTP: [ 0.00 0.00 ]
+Key: FLDCW: [ 0.00 0.00 ]
+Key: FLDENVm: [ 0.00 0.00 ]
+Key: FLDL: [ 0.00 0.00 ]
+Key: FLDLG: [ 0.00 0.00 ]
+Key: FLDLN: [ 0.00 0.00 ]
+Key: FLDPI: [ 0.00 0.00 ]
+Key: FNCLEX: [ 0.00 0.00 ]
+Key: FNINIT: [ 0.00 0.00 ]
+Key: FNOP: [ 0.00 0.00 ]
+Key: FNSTCW: [ 0.00 0.00 ]
+Key: FNSTSW: [ 0.00 0.00 ]
+Key: FNSTSWm: [ 0.00 0.00 ]
+Key: FP: [ 0.00 0.00 ]
+Key: FPATAN: [ 0.00 0.00 ]
+Key: FPREM: [ 0.00 0.00 ]
+Key: FPTAN: [ 0.00 0.00 ]
+Key: FRNDINT: [ 0.00 0.00 ]
+Key: FRSTORm: [ 0.00 0.00 ]
+Key: FSAVEm: [ 0.00 0.00 ]
+Key: FSCALE: [ 0.00 0.00 ]
+Key: FSIN: [ 0.00 0.00 ]
+Key: FSINCOS: [ 0.00 0.00 ]
+Key: FSTENVm: [ 0.00 0.00 ]
+Key: FS_PREFIX: [ 0.00 0.00 ]
+Key: FXRSTOR: [ 0.00 0.00 ]
+Key: FXSAVE: [ 0.00 0.00 ]
+Key: FXTRACT: [ 0.00 0.00 ]
+Key: FYL: [ 0.00 0.00 ]
+Key: FsFLD: [ 0.00 0.00 ]
+Key: GC_LABEL: [ 0.00 0.00 ]
+Key: GETSEC: [ 0.00 0.00 ]
+Key: GF: [ 0.00 0.00 ]
+Key: GS_PREFIX: [ 0.00 0.00 ]
+Key: G_ABDS: [ 0.00 0.00 ]
+Key: G_ABDU: [ 0.00 0.00 ]
+Key: G_ABS: [ 0.00 0.00 ]
+Key: G_ADD: [ 0.00 0.00 ]
+Key: G_ADDRSPACE_CAST: [ 0.00 0.00 ]
+Key: G_AND: [ 0.00 0.00 ]
+Key: G_ANYEXT: [ 0.00 0.00 ]
+Key: G_ASHR: [ 0.00 0.00 ]
+Key: G_ASSERT_ALIGN: [ 0.00 0.00 ]
+Key: G_ASSERT_SEXT: [ 0.00 0.00 ]
+Key: G_ASSERT_ZEXT: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_ADD: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_AND: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_FADD: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_FMAX: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_FMAXIMUM: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_FMIN: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_FMINIMUM: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_FSUB: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_MAX: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_MIN: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_NAND: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_OR: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_SUB: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_UDEC_WRAP: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_UINC_WRAP: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_UMAX: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_UMIN: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_USUB_COND: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_USUB_SAT: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_XCHG: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_XOR: [ 0.00 0.00 ]
+Key: G_ATOMIC_CMPXCHG: [ 0.00 0.00 ]
+Key: G_ATOMIC_CMPXCHG_WITH_SUCCESS: [ 0.00 0.00 ]
+Key: G_BITCAST: [ 0.00 0.00 ]
+Key: G_BITREVERSE: [ 0.00 0.00 ]
+Key: G_BLOCK_ADDR: [ 0.00 0.00 ]
+Key: G_BR: [ 0.00 0.00 ]
+Key: G_BRCOND: [ 0.00 0.00 ]
+Key: G_BRINDIRECT: [ 0.00 0.00 ]
+Key: G_BRJT: [ 0.00 0.00 ]
+Key: G_BSWAP: [ 0.00 0.00 ]
+Key: G_BUILD_VECTOR: [ 0.00 0.00 ]
+Key: G_BUILD_VECTOR_TRUNC: [ 0.00 0.00 ]
+Key: G_BZERO: [ 0.00 0.00 ]
+Key: G_CONCAT_VECTORS: [ 0.00 0.00 ]
+Key: G_CONSTANT: [ 0.00 0.00 ]
+Key: G_CONSTANT_FOLD_BARRIER: [ 0.00 0.00 ]
+Key: G_CONSTANT_POOL: [ 0.00 0.00 ]
+Key: G_CTLZ: [ 0.00 0.00 ]
+Key: G_CTLZ_ZERO_UNDEF: [ 0.00 0.00 ]
+Key: G_CTPOP: [ 0.00 0.00 ]
+Key: G_CTTZ: [ 0.00 0.00 ]
+Key: G_CTTZ_ZERO_UNDEF: [ 0.00 0.00 ]
+Key: G_DEBUGTRAP: [ 0.00 0.00 ]
+Key: G_DYN_STACKALLOC: [ 0.00 0.00 ]
+Key: G_EXTRACT: [ 0.00 0.00 ]
+Key: G_EXTRACT_SUBVECTOR: [ 0.00 0.00 ]
+Key: G_EXTRACT_VECTOR_ELT: [ 0.00 0.00 ]
+Key: G_FABS: [ 0.00 0.00 ]
+Key: G_FACOS: [ 0.00 0.00 ]
+Key: G_FADD: [ 0.00 0.00 ]
+Key: G_FASIN: [ 0.00 0.00 ]
+Key: G_FATAN: [ 0.00 0.00 ]
+Key: G_FCANONICALIZE: [ 0.00 0.00 ]
+Key: G_FCEIL: [ 0.00 0.00 ]
+Key: G_FCMP: [ 0.00 0.00 ]
+Key: G_FCONSTANT: [ 0.00 0.00 ]
+Key: G_FCOPYSIGN: [ 0.00 0.00 ]
+Key: G_FCOS: [ 0.00 0.00 ]
+Key: G_FCOSH: [ 0.00 0.00 ]
+Key: G_FDIV: [ 0.00 0.00 ]
+Key: G_FENCE: [ 0.00 0.00 ]
+Key: G_FEXP: [ 0.00 0.00 ]
+Key: G_FFLOOR: [ 0.00 0.00 ]
+Key: G_FFREXP: [ 0.00 0.00 ]
+Key: G_FILD: [ 0.00 0.00 ]
+Key: G_FIST: [ 0.00 0.00 ]
+Key: G_FLDCW: [ 0.00 0.00 ]
+Key: G_FLDEXP: [ 0.00 0.00 ]
+Key: G_FLOG: [ 0.00 0.00 ]
+Key: G_FMA: [ 0.00 0.00 ]
+Key: G_FMAD: [ 0.00 0.00 ]
+Key: G_FMAXIMUM: [ 0.00 0.00 ]
+Key: G_FMAXIMUMNUM: [ 0.00 0.00 ]
+Key: G_FMAXNUM: [ 0.00 0.00 ]
+Key: G_FMAXNUM_IEEE: [ 0.00 0.00 ]
+Key: G_FMINIMUM: [ 0.00 0.00 ]
+Key: G_FMINIMUMNUM: [ 0.00 0.00 ]
+Key: G_FMINNUM: [ 0.00 0.00 ]
+Key: G_FMINNUM_IEEE: [ 0.00 0.00 ]
+Key: G_FMODF: [ 0.00 0.00 ]
+Key: G_FMUL: [ 0.00 0.00 ]
+Key: G_FNEARBYINT: [ 0.00 0.00 ]
+Key: G_FNEG: [ 0.00 0.00 ]
+Key: G_FNSTCW: [ 0.00 0.00 ]
+Key: G_FPEXT: [ 0.00 0.00 ]
+Key: G_FPOW: [ 0.00 0.00 ]
+Key: G_FPOWI: [ 0.00 0.00 ]
+Key: G_FPTOSI: [ 0.00 0.00 ]
+Key: G_FPTOSI_SAT: [ 0.00 0.00 ]
+Key: G_FPTOUI: [ 0.00 0.00 ]
+Key: G_FPTOUI_SAT: [ 0.00 0.00 ]
+Key: G_FPTRUNC: [ 0.00 0.00 ]
+Key: G_FRAME_INDEX: [ 0.00 0.00 ]
+Key: G_FREEZE: [ 0.00 0.00 ]
+Key: G_FREM: [ 0.00 0.00 ]
+Key: G_FRINT: [ 0.00 0.00 ]
+Key: G_FSHL: [ 0.00 0.00 ]
+Key: G_FSHR: [ 0.00 0.00 ]
+Key: G_FSIN: [ 0.00 0.00 ]
+Key: G_FSINCOS: [ 0.00 0.00 ]
+Key: G_FSINH: [ 0.00 0.00 ]
+Key: G_FSQRT: [ 0.00 0.00 ]
+Key: G_FSUB: [ 0.00 0.00 ]
+Key: G_FTAN: [ 0.00 0.00 ]
+Key: G_FTANH: [ 0.00 0.00 ]
+Key: G_GET_FPENV: [ 0.00 0.00 ]
+Key: G_GET_FPMODE: [ 0.00 0.00 ]
+Key: G_GET_ROUNDING: [ 0.00 0.00 ]
+Key: G_GLOBAL_VALUE: [ 0.00 0.00 ]
+Key: G_ICMP: [ 0.00 0.00 ]
+Key: G_IMPLICIT_DEF: [ 0.00 0.00 ]
+Key: G_INDEXED_LOAD: [ 0.00 0.00 ]
+Key: G_INDEXED_SEXTLOAD: [ 0.00 0.00 ]
+Key: G_INDEXED_STORE: [ 0.00 0.00 ]
+Key: G_INDEXED_ZEXTLOAD: [ 0.00 0.00 ]
+Key: G_INSERT: [ 0.00 0.00 ]
+Key: G_INSERT_SUBVECTOR: [ 0.00 0.00 ]
+Key: G_INSERT_VECTOR_ELT: [ 0.00 0.00 ]
+Key: G_INTRINSIC: [ 0.00 0.00 ]
+Key: G_INTRINSIC_CONVERGENT: [ 0.00 0.00 ]
+Key: G_INTRINSIC_CONVERGENT_W_SIDE_EFFECTS: [ 0.00 0.00 ]
+Key: G_INTRINSIC_FPTRUNC_ROUND: [ 0.00 0.00 ]
+Key: G_INTRINSIC_LLRINT: [ 0.00 0.00 ]
+Key: G_INTRINSIC_LRINT: [ 0.00 0.00 ]
+Key: G_INTRINSIC_ROUND: [ 0.00 0.00 ]
+Key: G_INTRINSIC_ROUNDEVEN: [ 0.00 0.00 ]
+Key: G_INTRINSIC_TRUNC: [ 0.00 0.00 ]
+Key: G_INTRINSIC_W_SIDE_EFFECTS: [ 0.00 0.00 ]
+Key: G_INTTOPTR: [ 0.00 0.00 ]
+Key: G_INVOKE_REGION_START: [ 0.00 0.00 ]
+Key: G_IS_FPCLASS: [ 0.00 0.00 ]
+Key: G_JUMP_TABLE: [ 0.00 0.00 ]
+Key: G_LLROUND: [ 0.00 0.00 ]
+Key: G_LOAD: [ 0.00 0.00 ]
+Key: G_LROUND: [ 0.00 0.00 ]
+Key: G_LSHR: [ 0.00 0.00 ]
+Key: G_MEMCPY: [ 0.00 0.00 ]
+Key: G_MEMCPY_INLINE: [ 0.00 0.00 ]
+Key: G_MEMMOVE: [ 0.00 0.00 ]
+Key: G_MEMSET: [ 0.00 0.00 ]
+Key: G_MERGE_VALUES: [ 0.00 0.00 ]
+Key: G_MUL: [ 0.00 0.00 ]
+Key: G_OR: [ 0.00 0.00 ]
+Key: G_PHI: [ 0.00 0.00 ]
+Key: G_PREFETCH: [ 0.00 0.00 ]
+Key: G_PTRAUTH_GLOBAL_VALUE: [ 0.00 0.00 ]
+Key: G_PTRMASK: [ 0.00 0.00 ]
+Key: G_PTRTOINT: [ 0.00 0.00 ]
+Key: G_PTR_ADD: [ 0.00 0.00 ]
+Key: G_READCYCLECOUNTER: [ 0.00 0.00 ]
+Key: G_READSTEADYCOUNTER: [ 0.00 0.00 ]
+Key: G_READ_REGISTER: [ 0.00 0.00 ]
+Key: G_RESET_FPENV: [ 0.00 0.00 ]
+Key: G_RESET_FPMODE: [ 0.00 0.00 ]
+Key: G_ROTL: [ 0.00 0.00 ]
+Key: G_ROTR: [ 0.00 0.00 ]
+Key: G_SADDE: [ 0.00 0.00 ]
+Key: G_SADDO: [ 0.00 0.00 ]
+Key: G_SADDSAT: [ 0.00 0.00 ]
+Key: G_SBFX: [ 0.00 0.00 ]
+Key: G_SCMP: [ 0.00 0.00 ]
+Key: G_SDIV: [ 0.00 0.00 ]
+Key: G_SDIVFIX: [ 0.00 0.00 ]
+Key: G_SDIVFIXSAT: [ 0.00 0.00 ]
+Key: G_SDIVREM: [ 0.00 0.00 ]
+Key: G_SELECT: [ 0.00 0.00 ]
+Key: G_SET_FPENV: [ 0.00 0.00 ]
+Key: G_SET_FPMODE: [ 0.00 0.00 ]
+Key: G_SET_ROUNDING: [ 0.00 0.00 ]
+Key: G_SEXT: [ 0.00 0.00 ]
+Key: G_SEXTLOAD: [ 0.00 0.00 ]
+Key: G_SEXT_INREG: [ 0.00 0.00 ]
+Key: G_SHL: [ 0.00 0.00 ]
+Key: G_SHUFFLE_VECTOR: [ 0.00 0.00 ]
+Key: G_SITOFP: [ 0.00 0.00 ]
+Key: G_SMAX: [ 0.00 0.00 ]
+Key: G_SMIN: [ 0.00 0.00 ]
+Key: G_SMULFIX: [ 0.00 0.00 ]
+Key: G_SMULFIXSAT: [ 0.00 0.00 ]
+Key: G_SMULH: [ 0.00 0.00 ]
+Key: G_SMULO: [ 0.00 0.00 ]
+Key: G_SPLAT_VECTOR: [ 0.00 0.00 ]
+Key: G_SREM: [ 0.00 0.00 ]
+Key: G_SSHLSAT: [ 0.00 0.00 ]
+Key: G_SSUBE: [ 0.00 0.00 ]
+Key: G_SSUBO: [ 0.00 0.00 ]
+Key: G_SSUBSAT: [ 0.00 0.00 ]
+Key: G_STACKRESTORE: [ 0.00 0.00 ]
+Key: G_STACKSAVE: [ 0.00 0.00 ]
+Key: G_STEP_VECTOR: [ 0.00 0.00 ]
+Key: G_STORE: [ 0.00 0.00 ]
+Key: G_STRICT_FADD: [ 0.00 0.00 ]
+Key: G_STRICT_FDIV: [ 0.00 0.00 ]
+Key: G_STRICT_FLDEXP: [ 0.00 0.00 ]
+Key: G_STRICT_FMA: [ 0.00 0.00 ]
+Key: G_STRICT_FMUL: [ 0.00 0.00 ]
+Key: G_STRICT_FREM: [ 0.00 0.00 ]
+Key: G_STRICT_FSQRT: [ 0.00 0.00 ]
+Key: G_STRICT_FSUB: [ 0.00 0.00 ]
+Key: G_SUB: [ 0.00 0.00 ]
+Key: G_TRAP: [ 0.00 0.00 ]
+Key: G_TRUNC: [ 0.00 0.00 ]
+Key: G_TRUNC_SSAT_S: [ 0.00 0.00 ]
+Key: G_TRUNC_SSAT_U: [ 0.00 0.00 ]
+Key: G_TRUNC_USAT_U: [ 0.00 0.00 ]
+Key: G_UADDE: [ 0.00 0.00 ]
+Key: G_UADDO: [ 0.00 0.00 ]
+Key: G_UADDSAT: [ 0.00 0.00 ]
+Key: G_UBFX: [ 0.00 0.00 ]
+Key: G_UBSANTRAP: [ 0.00 0.00 ]
+Key: G_UCMP: [ 0.00 0.00 ]
+Key: G_UDIV: [ 0.00 0.00 ]
+Key: G_UDIVFIX: [ 0.00 0.00 ]
+Key: G_UDIVFIXSAT: [ 0.00 0.00 ]
+Key: G_UDIVREM: [ 0.00 0.00 ]
+Key: G_UITOFP: [ 0.00 0.00 ]
+Key: G_UMAX: [ 0.00 0.00 ]
+Key: G_UMIN: [ 0.00 0.00 ]
+Key: G_UMULFIX: [ 0.00 0.00 ]
+Key: G_UMULFIXSAT: [ 0.00 0.00 ]
+Key: G_UMULH: [ 0.00 0.00 ]
+Key: G_UMULO: [ 0.00 0.00 ]
+Key: G_UNMERGE_VALUES: [ 0.00 0.00 ]
+Key: G_UREM: [ 0.00 0.00 ]
+Key: G_USHLSAT: [ 0.00 0.00 ]
+Key: G_USUBE: [ 0.00 0.00 ]
+Key: G_USUBO: [ 0.00 0.00 ]
+Key: G_USUBSAT: [ 0.00 0.00 ]
+Key: G_VAARG: [ 0.00 0.00 ]
+Key: G_VASTART: [ 0.00 0.00 ]
+Key: G_VECREDUCE_ADD: [ 0.00 0.00 ]
+Key: G_VECREDUCE_AND: [ 0.00 0.00 ]
+Key: G_VECREDUCE_FADD: [ 0.00 0.00 ]
+Key: G_VECREDUCE_FMAX: [ 0.00 0.00 ]
+Key: G_VECREDUCE_FMAXIMUM: [ 0.00 0.00 ]
+Key: G_VECREDUCE_FMIN: [ 0.00 0.00 ]
+Key: G_VECREDUCE_FMINIMUM: [ 0.00 0.00 ]
+Key: G_VECREDUCE_FMUL: [ 0.00 0.00 ]
+Key: G_VECREDUCE_MUL: [ 0.00 0.00 ]
+Key: G_VECREDUCE_OR: [ 0.00 0.00 ]
+Key: G_VECREDUCE_SEQ_FADD: [ 0.00 0.00 ]
+Key: G_VECREDUCE_SEQ_FMUL: [ 0.00 0.00 ]
+Key: G_VECREDUCE_SMAX: [ 0.00 0.00 ]
+Key: G_VECREDUCE_SMIN: [ 0.00 0.00 ]
+Key: G_VECREDUCE_UMAX: [ 0.00 0.00 ]
+Key: G_VECREDUCE_UMIN: [ 0.00 0.00 ]
+Key: G_VECREDUCE_XOR: [ 0.00 0.00 ]
+Key: G_VECTOR_COMPRESS: [ 0.00 0.00 ]
+Key: G_VSCALE: [ 0.00 0.00 ]
+Key: G_WRITE_REGISTER: [ 0.00 0.00 ]
+Key: G_XOR: [ 0.00 0.00 ]
+Key: G_ZEXT: [ 0.00 0.00 ]
+Key: G_ZEXTLOAD: [ 0.00 0.00 ]
+Key: HADDPDrm: [ 0.00 0.00 ]
+Key: HADDPDrr: [ 0.00 0.00 ]
+Key: HADDPSrm: [ 0.00 0.00 ]
+Key: HADDPSrr: [ 0.00 0.00 ]
+Key: HLT: [ 0.00 0.00 ]
+Key: HRESET: [ 0.00 0.00 ]
+Key: HSUBPDrm: [ 0.00 0.00 ]
+Key: HSUBPDrr: [ 0.00 0.00 ]
+Key: HSUBPSrm: [ 0.00 0.00 ]
+Key: HSUBPSrr: [ 0.00 0.00 ]
+Key: ICALL_BRANCH_FUNNEL: [ 0.00 0.00 ]
+Key: IDIV: [ 0.00 0.00 ]
+Key: ILD_F: [ 0.00 0.00 ]
+Key: ILD_Fp: [ 0.00 0.00 ]
+Key: IMPLICIT_DEF: [ 0.00 0.00 ]
+Key: IMUL: [ 0.00 0.00 ]
+Key: IMULZU: [ 0.00 0.00 ]
+Key: IN: [ 0.00 0.00 ]
+Key: INC: [ 0.00 0.00 ]
+Key: INCSSPD: [ 0.00 0.00 ]
+Key: INCSSPQ: [ 0.00 0.00 ]
+Key: INDIRECT_THUNK_CALL: [ 0.00 0.00 ]
+Key: INDIRECT_THUNK_TCRETURN: [ 0.00 0.00 ]
+Key: INIT_UNDEF: [ 0.00 0.00 ]
+Key: INLINEASM: [ 0.00 0.00 ]
+Key: INLINEASM_BR: [ 0.00 0.00 ]
+Key: INSB: [ 0.00 0.00 ]
+Key: INSERTPSrmi: [ 0.00 0.00 ]
+Key: INSERTPSrri: [ 0.00 0.00 ]
+Key: INSERTQ: [ 0.00 0.00 ]
+Key: INSERTQI: [ 0.00 0.00 ]
+Key: INSERT_SUBREG: [ 0.00 0.00 ]
+Key: INSL: [ 0.00 0.00 ]
+Key: INSW: [ 0.00 0.00 ]
+Key: INT: [ 0.00 0.00 ]
+Key: INTO: [ 0.00 0.00 ]
+Key: INVD: [ 0.00 0.00 ]
+Key: INVEPT: [ 0.00 0.00 ]
+Key: INVLPG: [ 0.00 0.00 ]
+Key: INVLPGA: [ 0.00 0.00 ]
+Key: INVLPGB: [ 0.00 0.00 ]
+Key: INVPCID: [ 0.00 0.00 ]
+Key: INVVPID: [ 0.00 0.00 ]
+Key: IRET: [ 0.00 0.00 ]
+Key: ISTT_FP: [ 0.00 0.00 ]
+Key: ISTT_Fp: [ 0.00 0.00 ]
+Key: IST_F: [ 0.00 0.00 ]
+Key: IST_FP: [ 0.00 0.00 ]
+Key: IST_Fp: [ 0.00 0.00 ]
+Key: Int_eh_sjlj_setup_dispatch: [ 0.00 0.00 ]
+Key: JCC: [ 0.00 0.00 ]
+Key: JCXZ: [ 0.00 0.00 ]
+Key: JECXZ: [ 0.00 0.00 ]
+Key: JMP: [ 0.00 0.00 ]
+Key: JMPABS: [ 0.00 0.00 ]
+Key: JRCXZ: [ 0.00 0.00 ]
+Key: JUMP_TABLE_DEBUG_INFO: [ 0.00 0.00 ]
+Key: KADDBkk: [ 0.00 0.00 ]
+Key: KADDDkk: [ 0.00 0.00 ]
+Key: KADDQkk: [ 0.00 0.00 ]
+Key: KADDWkk: [ 0.00 0.00 ]
+Key: KANDBkk: [ 0.00 0.00 ]
+Key: KANDDkk: [ 0.00 0.00 ]
+Key: KANDNBkk: [ 0.00 0.00 ]
+Key: KANDNDkk: [ 0.00 0.00 ]
+Key: KANDNQkk: [ 0.00 0.00 ]
+Key: KANDNWkk: [ 0.00 0.00 ]
+Key: KANDQkk: [ 0.00 0.00 ]
+Key: KANDWkk: [ 0.00 0.00 ]
+Key: KCFI_CHECK: [ 0.00 0.00 ]
+Key: KILL: [ 0.00 0.00 ]
+Key: KMOVBkk: [ 0.00 0.00 ]
+Key: KMOVBkk_EVEX: [ 0.00 0.00 ]
+Key: KMOVBkm: [ 0.00 0.00 ]
+Key: KMOVBkm_EVEX: [ 0.00 0.00 ]
+Key: KMOVBkr: [ 0.00 0.00 ]
+Key: KMOVBkr_EVEX: [ 0.00 0.00 ]
+Key: KMOVBmk: [ 0.00 0.00 ]
+Key: KMOVBmk_EVEX: [ 0.00 0.00 ]
+Key: KMOVBrk: [ 0.00 0.00 ]
+Key: KMOVBrk_EVEX: [ 0.00 0.00 ]
+Key: KMOVDkk: [ 0.00 0.00 ]
+Key: KMOVDkk_EVEX: [ 0.00 0.00 ]
+Key: KMOVDkm: [ 0.00 0.00 ]
+Key: KMOVDkm_EVEX: [ 0.00 0.00 ]
+Key: KMOVDkr: [ 0.00 0.00 ]
+Key: KMOVDkr_EVEX: [ 0.00 0.00 ]
+Key: KMOVDmk: [ 0.00 0.00 ]
+Key: KMOVDmk_EVEX: [ 0.00 0.00 ]
+Key: KMOVDrk: [ 0.00 0.00 ]
+Key: KMOVDrk_EVEX: [ 0.00 0.00 ]
+Key: KMOVQkk: [ 0.00 0.00 ]
+Key: KMOVQkk_EVEX: [ 0.00 0.00 ]
+Key: KMOVQkm: [ 0.00 0.00 ]
+Key: KMOVQkm_EVEX: [ 0.00 0.00 ]
+Key: KMOVQkr: [ 0.00 0.00 ]
+Key: KMOVQkr_EVEX: [ 0.00 0.00 ]
+Key: KMOVQmk: [ 0.00 0.00 ]
+Key: KMOVQmk_EVEX: [ 0.00 0.00 ]
+Key: KMOVQrk: [ 0.00 0.00 ]
+Key: KMOVQrk_EVEX: [ 0.00 0.00 ]
+Key: KMOVWkk: [ 0.00 0.00 ]
+Key: KMOVWkk_EVEX: [ 0.00 0.00 ]
+Key: KMOVWkm: [ 0.00 0.00 ]
+Key: KMOVWkm_EVEX: [ 0.00 0.00 ]
+Key: KMOVWkr: [ 0.00 0.00 ]
+Key: KMOVWkr_EVEX: [ 0.00 0.00 ]
+Key: KMOVWmk: [ 0.00 0.00 ]
+Key: KMOVWmk_EVEX: [ 0.00 0.00 ]
+Key: KMOVWrk: [ 0.00 0.00 ]
+Key: KMOVWrk_EVEX: [ 0.00 0.00 ]
+Key: KNOTBkk: [ 0.00 0.00 ]
+Key: KNOTDkk: [ 0.00 0.00 ]
+Key: KNOTQkk: [ 0.00 0.00 ]
+Key: KNOTWkk: [ 0.00 0.00 ]
+Key: KORBkk: [ 0.00 0.00 ]
+Key: KORDkk: [ 0.00 0.00 ]
+Key: KORQkk: [ 0.00 0.00 ]
+Key: KORTESTBkk: [ 0.00 0.00 ]
+Key: KORTESTDkk: [ 0.00 0.00 ]
+Key: KORTESTQkk: [ 0.00 0.00 ]
+Key: KORTESTWkk: [ 0.00 0.00 ]
+Key: KORWkk: [ 0.00 0.00 ]
+Key: KSET: [ 0.00 0.00 ]
+Key: KSHIFTLBki: [ 0.00 0.00 ]
+Key: KSHIFTLDki: [ 0.00 0.00 ]
+Key: KSHIFTLQki: [ 0.00 0.00 ]
+Key: KSHIFTLWki: [ 0.00 0.00 ]
+Key: KSHIFTRBki: [ 0.00 0.00 ]
+Key: KSHIFTRDki: [ 0.00 0.00 ]
+Key: KSHIFTRQki: [ 0.00 0.00 ]
+Key: KSHIFTRWki: [ 0.00 0.00 ]
+Key: KTESTBkk: [ 0.00 0.00 ]
+Key: KTESTDkk: [ 0.00 0.00 ]
+Key: KTESTQkk: [ 0.00 0.00 ]
+Key: KTESTWkk: [ 0.00 0.00 ]
+Key: KUNPCKBWkk: [ 0.00 0.00 ]
+Key: KUNPCKDQkk: [ 0.00 0.00 ]
+Key: KUNPCKWDkk: [ 0.00 0.00 ]
+Key: KXNORBkk: [ 0.00 0.00 ]
+Key: KXNORDkk: [ 0.00 0.00 ]
+Key: KXNORQkk: [ 0.00 0.00 ]
+Key: KXNORWkk: [ 0.00 0.00 ]
+Key: KXORBkk: [ 0.00 0.00 ]
+Key: KXORDkk: [ 0.00 0.00 ]
+Key: KXORQkk: [ 0.00 0.00 ]
+Key: KXORWkk: [ 0.00 0.00 ]
+Key: LAHF: [ 0.00 0.00 ]
+Key: LAR: [ 0.00 0.00 ]
+Key: LCMPXCHG: [ 0.00 0.00 ]
+Key: LDDQUrm: [ 0.00 0.00 ]
+Key: LDMXCSR: [ 0.00 0.00 ]
+Key: LDS: [ 0.00 0.00 ]
+Key: LDTILECFG: [ 0.00 0.00 ]
+Key: LDTILECFG_EVEX: [ 0.00 0.00 ]
+Key: LD_F: [ 0.00 0.00 ]
+Key: LD_Fp: [ 0.00 0.00 ]
+Key: LD_Frr: [ 0.00 0.00 ]
+Key: LEA: [ 0.00 0.00 ]
+Key: LEAVE: [ 0.00 0.00 ]
+Key: LES: [ 0.00 0.00 ]
+Key: LFENCE: [ 0.00 0.00 ]
+Key: LFS: [ 0.00 0.00 ]
+Key: LGDT: [ 0.00 0.00 ]
+Key: LGS: [ 0.00 0.00 ]
+Key: LIDT: [ 0.00 0.00 ]
+Key: LIFETIME_END: [ 0.00 0.00 ]
+Key: LIFETIME_START: [ 0.00 0.00 ]
+Key: LKGS: [ 0.00 0.00 ]
+Key: LLDT: [ 0.00 0.00 ]
+Key: LLWPCB: [ 0.00 0.00 ]
+Key: LMSW: [ 0.00 0.00 ]
+Key: LOADIWKEY: [ 0.00 0.00 ]
+Key: LOAD_STACK_GUARD: [ 0.00 0.00 ]
+Key: LOCAL_ESCAPE: [ 0.00 0.00 ]
+Key: LOCK_ADD: [ 0.00 0.00 ]
+Key: LOCK_AND: [ 0.00 0.00 ]
+Key: LOCK_BTC: [ 0.00 0.00 ]
+Key: LOCK_BTC_RM: [ 0.00 0.00 ]
+Key: LOCK_BTR: [ 0.00 0.00 ]
+Key: LOCK_BTR_RM: [ 0.00 0.00 ]
+Key: LOCK_BTS: [ 0.00 0.00 ]
+Key: LOCK_BTS_RM: [ 0.00 0.00 ]
+Key: LOCK_DEC: [ 0.00 0.00 ]
+Key: LOCK_INC: [ 0.00 0.00 ]
+Key: LOCK_OR: [ 0.00 0.00 ]
+Key: LOCK_PREFIX: [ 0.00 0.00 ]
+Key: LOCK_SUB: [ 0.00 0.00 ]
+Key: LOCK_XOR: [ 0.00 0.00 ]
+Key: LODSB: [ 0.00 0.00 ]
+Key: LODSL: [ 0.00 0.00 ]
+Key: LODSQ: [ 0.00 0.00 ]
+Key: LODSW: [ 0.00 0.00 ]
+Key: LOOP: [ 0.00 0.00 ]
+Key: LOOPE: [ 0.00 0.00 ]
+Key: LOOPNE: [ 0.00 0.00 ]
+Key: LRET: [ 0.00 0.00 ]
+Key: LRETI: [ 0.00 0.00 ]
+Key: LSL: [ 0.00 0.00 ]
+Key: LSS: [ 0.00 0.00 ]
+Key: LTRm: [ 0.00 0.00 ]
+Key: LTRr: [ 0.00 0.00 ]
+Key: LWPINS: [ 0.00 0.00 ]
+Key: LWPVAL: [ 0.00 0.00 ]
+Key: LXADD: [ 0.00 0.00 ]
+Key: LZCNT: [ 0.00 0.00 ]
+Key: MASKMOVDQU: [ 0.00 0.00 ]
+Key: MASKPAIR: [ 0.00 0.00 ]
+Key: MAXCPDrm: [ 0.00 0.00 ]
+Key: MAXCPDrr: [ 0.00 0.00 ]
+Key: MAXCPSrm: [ 0.00 0.00 ]
+Key: MAXCPSrr: [ 0.00 0.00 ]
+Key: MAXCSDrm: [ 0.00 0.00 ]
+Key: MAXCSDrr: [ 0.00 0.00 ]
+Key: MAXCSSrm: [ 0.00 0.00 ]
+Key: MAXCSSrr: [ 0.00 0.00 ]
+Key: MAXPDrm: [ 0.00 0.00 ]
+Key: MAXPDrr: [ 0.00 0.00 ]
+Key: MAXPSrm: [ 0.00 0.00 ]
+Key: MAXPSrr: [ 0.00 0.00 ]
+Key: MAXSDrm: [ 0.00 0.00 ]
+Key: MAXSDrm_Int: [ 0.00 0.00 ]
+Key: MAXSDrr: [ 0.00 0.00 ]
+Key: MAXSDrr_Int: [ 0.00 0.00 ]
+Key: MAXSSrm: [ 0.00 0.00 ]
+Key: MAXSSrm_Int: [ 0.00 0.00 ]
+Key: MAXSSrr: [ 0.00 0.00 ]
+Key: MAXSSrr_Int: [ 0.00 0.00 ]
+Key: MEMBARRIER: [ 0.00 0.00 ]
+Key: MFENCE: [ 0.00 0.00 ]
+Key: MINCPDrm: [ 0.00 0.00 ]
+Key: MINCPDrr: [ 0.00 0.00 ]
+Key: MINCPSrm: [ 0.00 0.00 ]
+Key: MINCPSrr: [ 0.00 0.00 ]
+Key: MINCSDrm: [ 0.00 0.00 ]
+Key: MINCSDrr: [ 0.00 0.00 ]
+Key: MINCSSrm: [ 0.00 0.00 ]
+Key: MINCSSrr: [ 0.00 0.00 ]
+Key: MINPDrm: [ 0.00 0.00 ]
+Key: MINPDrr: [ 0.00 0.00 ]
+Key: MINPSrm: [ 0.00 0.00 ]
+Key: MINPSrr: [ 0.00 0.00 ]
+Key: MINSDrm: [ 0.00 0.00 ]
+Key: MINSDrm_Int: [ 0.00 0.00 ]
+Key: MINSDrr: [ 0.00 0.00 ]
+Key: MINSDrr_Int: [ 0.00 0.00 ]
+Key: MINSSrm: [ 0.00 0.00 ]
+Key: MINSSrm_Int: [ 0.00 0.00 ]
+Key: MINSSrr: [ 0.00 0.00 ]
+Key: MINSSrr_Int: [ 0.00 0.00 ]
+Key: MMX_CVTPD: [ 0.00 0.00 ]
+Key: MMX_CVTPI: [ 0.00 0.00 ]
+Key: MMX_CVTPS: [ 0.00 0.00 ]
+Key: MMX_CVTTPD: [ 0.00 0.00 ]
+Key: MMX_CVTTPS: [ 0.00 0.00 ]
+Key: MMX_EMMS: [ 0.00 0.00 ]
+Key: MMX_MASKMOVQ: [ 0.00 0.00 ]
+Key: MMX_MOVD: [ 0.00 0.00 ]
+Key: MMX_MOVDQ: [ 0.00 0.00 ]
+Key: MMX_MOVFR: [ 0.00 0.00 ]
+Key: MMX_MOVNTQmr: [ 0.00 0.00 ]
+Key: MMX_MOVQ: [ 0.00 0.00 ]
+Key: MMX_PABSBrm: [ 0.00 0.00 ]
+Key: MMX_PABSBrr: [ 0.00 0.00 ]
+Key: MMX_PABSDrm: [ 0.00 0.00 ]
+Key: MMX_PABSDrr: [ 0.00 0.00 ]
+Key: MMX_PABSWrm: [ 0.00 0.00 ]
+Key: MMX_PABSWrr: [ 0.00 0.00 ]
+Key: MMX_PACKSSDWrm: [ 0.00 0.00 ]
+Key: MMX_PACKSSDWrr: [ 0.00 0.00 ]
+Key: MMX_PACKSSWBrm: [ 0.00 0.00 ]
+Key: MMX_PACKSSWBrr: [ 0.00 0.00 ]
+Key: MMX_PACKUSWBrm: [ 0.00 0.00 ]
+Key: MMX_PACKUSWBrr: [ 0.00 0.00 ]
+Key: MMX_PADDBrm: [ 0.00 0.00 ]
+Key: MMX_PADDBrr: [ 0.00 0.00 ]
+Key: MMX_PADDDrm: [ 0.00 0.00 ]
+Key: MMX_PADDDrr: [ 0.00 0.00 ]
+Key: MMX_PADDQrm: [ 0.00 0.00 ]
+Key: MMX_PADDQrr: [ 0.00 0.00 ]
+Key: MMX_PADDSBrm: [ 0.00 0.00 ]
+Key: MMX_PADDSBrr: [ 0.00 0.00 ]
+Key: MMX_PADDSWrm: [ 0.00 0.00 ]
+Key: MMX_PADDSWrr: [ 0.00 0.00 ]
+Key: MMX_PADDUSBrm: [ 0.00 0.00 ]
+Key: MMX_PADDUSBrr: [ 0.00 0.00 ]
+Key: MMX_PADDUSWrm: [ 0.00 0.00 ]
+Key: MMX_PADDUSWrr: [ 0.00 0.00 ]
+Key: MMX_PADDWrm: [ 0.00 0.00 ]
+Key: MMX_PADDWrr: [ 0.00 0.00 ]
+Key: MMX_PALIGNRrmi: [ 0.00 0.00 ]
+Key: MMX_PALIGNRrri: [ 0.00 0.00 ]
+Key: MMX_PANDNrm: [ 0.00 0.00 ]
+Key: MMX_PANDNrr: [ 0.00 0.00 ]
+Key: MMX_PANDrm: [ 0.00 0.00 ]
+Key: MMX_PANDrr: [ 0.00 0.00 ]
+Key: MMX_PAVGBrm: [ 0.00 0.00 ]
+Key: MMX_PAVGBrr: [ 0.00 0.00 ]
+Key: MMX_PAVGWrm: [ 0.00 0.00 ]
+Key: MMX_PAVGWrr: [ 0.00 0.00 ]
+Key: MMX_PCMPEQBrm: [ 0.00 0.00 ]
+Key: MMX_PCMPEQBrr: [ 0.00 0.00 ]
+Key: MMX_PCMPEQDrm: [ 0.00 0.00 ]
+Key: MMX_PCMPEQDrr: [ 0.00 0.00 ]
+Key: MMX_PCMPEQWrm: [ 0.00 0.00 ]
+Key: MMX_PCMPEQWrr: [ 0.00 0.00 ]
+Key: MMX_PCMPGTBrm: [ 0.00 0.00 ]
+Key: MMX_PCMPGTBrr: [ 0.00 0.00 ]
+Key: MMX_PCMPGTDrm: [ 0.00 0.00 ]
+Key: MMX_PCMPGTDrr: [ 0.00 0.00 ]
+Key: MMX_PCMPGTWrm: [ 0.00 0.00 ]
+Key: MMX_PCMPGTWrr: [ 0.00 0.00 ]
+Key: MMX_PEXTRWrri: [ 0.00 0.00 ]
+Key: MMX_PHADDDrm: [ 0.00 0.00 ]
+Key: MMX_PHADDDrr: [ 0.00 0.00 ]
+Key: MMX_PHADDSWrm: [ 0.00 0.00 ]
+Key: MMX_PHADDSWrr: [ 0.00 0.00 ]
+Key: MMX_PHADDWrm: [ 0.00 0.00 ]
+Key: MMX_PHADDWrr: [ 0.00 0.00 ]
+Key: MMX_PHSUBDrm: [ 0.00 0.00 ]
+Key: MMX_PHSUBDrr: [ 0.00 0.00 ]
+Key: MMX_PHSUBSWrm: [ 0.00 0.00 ]
+Key: MMX_PHSUBSWrr: [ 0.00 0.00 ]
+Key: MMX_PHSUBWrm: [ 0.00 0.00 ]
+Key: MMX_PHSUBWrr: [ 0.00 0.00 ]
+Key: MMX_PINSRWrmi: [ 0.00 0.00 ]
+Key: MMX_PINSRWrri: [ 0.00 0.00 ]
+Key: MMX_PMADDUBSWrm: [ 0.00 0.00 ]
+Key: MMX_PMADDUBSWrr: [ 0.00 0.00 ]
+Key: MMX_PMADDWDrm: [ 0.00 0.00 ]
+Key: MMX_PMADDWDrr: [ 0.00 0.00 ]
+Key: MMX_PMAXSWrm: [ 0.00 0.00 ]
+Key: MMX_PMAXSWrr: [ 0.00 0.00 ]
+Key: MMX_PMAXUBrm: [ 0.00 0.00 ]
+Key: MMX_PMAXUBrr: [ 0.00 0.00 ]
+Key: MMX_PMINSWrm: [ 0.00 0.00 ]
+Key: MMX_PMINSWrr: [ 0.00 0.00 ]
+Key: MMX_PMINUBrm: [ 0.00 0.00 ]
+Key: MMX_PMINUBrr: [ 0.00 0.00 ]
+Key: MMX_PMOVMSKBrr: [ 0.00 0.00 ]
+Key: MMX_PMULHRSWrm: [ 0.00 0.00 ]
+Key: MMX_PMULHRSWrr: [ 0.00 0.00 ]
+Key: MMX_PMULHUWrm: [ 0.00 0.00 ]
+Key: MMX_PMULHUWrr: [ 0.00 0.00 ]
+Key: MMX_PMULHWrm: [ 0.00 0.00 ]
+Key: MMX_PMULHWrr: [ 0.00 0.00 ]
+Key: MMX_PMULLWrm: [ 0.00 0.00 ]
+Key: MMX_PMULLWrr: [ 0.00 0.00 ]
+Key: MMX_PMULUDQrm: [ 0.00 0.00 ]
+Key: MMX_PMULUDQrr: [ 0.00 0.00 ]
+Key: MMX_PORrm: [ 0.00 0.00 ]
+Key: MMX_PORrr: [ 0.00 0.00 ]
+Key: MMX_PSADBWrm: [ 0.00 0.00 ]
+Key: MMX_PSADBWrr: [ 0.00 0.00 ]
+Key: MMX_PSHUFBrm: [ 0.00 0.00 ]
+Key: MMX_PSHUFBrr: [ 0.00 0.00 ]
+Key: MMX_PSHUFWmi: [ 0.00 0.00 ]
+Key: MMX_PSHUFWri: [ 0.00 0.00 ]
+Key: MMX_PSIGNBrm: [ 0.00 0.00 ]
+Key: MMX_PSIGNBrr: [ 0.00 0.00 ]
+Key: MMX_PSIGNDrm: [ 0.00 0.00 ]
+Key: MMX_PSIGNDrr: [ 0.00 0.00 ]
+Key: MMX_PSIGNWrm: [ 0.00 0.00 ]
+Key: MMX_PSIGNWrr: [ 0.00 0.00 ]
+Key: MMX_PSLLDri: [ 0.00 0.00 ]
+Key: MMX_PSLLDrm: [ 0.00 0.00 ]
+Key: MMX_PSLLDrr: [ 0.00 0.00 ]
+Key: MMX_PSLLQri: [ 0.00 0.00 ]
+Key: MMX_PSLLQrm: [ 0.00 0.00 ]
+Key: MMX_PSLLQrr: [ 0.00 0.00 ]
+Key: MMX_PSLLWri: [ 0.00 0.00 ]
+Key: MMX_PSLLWrm: [ 0.00 0.00 ]
+Key: MMX_PSLLWrr: [ 0.00 0.00 ]
+Key: MMX_PSRADri: [ 0.00 0.00 ]
+Key: MMX_PSRADrm: [ 0.00 0.00 ]
+Key: MMX_PSRADrr: [ 0.00 0.00 ]
+Key: MMX_PSRAWri: [ 0.00 0.00 ]
+Key: MMX_PSRAWrm: [ 0.00 0.00 ]
+Key: MMX_PSRAWrr: [ 0.00 0.00 ]
+Key: MMX_PSRLDri: [ 0.00 0.00 ]
+Key: MMX_PSRLDrm: [ 0.00 0.00 ]
+Key: MMX_PSRLDrr: [ 0.00 0.00 ]
+Key: MMX_PSRLQri: [ 0.00 0.00 ]
+Key: MMX_PSRLQrm: [ 0.00 0.00 ]
+Key: MMX_PSRLQrr: [ 0.00 0.00 ]
+Key: MMX_PSRLWri: [ 0.00 0.00 ]
+Key: MMX_PSRLWrm: [ 0.00 0.00 ]
+Key: MMX_PSRLWrr: [ 0.00 0.00 ]
+Key: MMX_PSUBBrm: [ 0.00 0.00 ]
+Key: MMX_PSUBBrr: [ 0.00 0.00 ]
+Key: MMX_PSUBDrm: [ 0.00 0.00 ]
+Key: MMX_PSUBDrr: [ 0.00 0.00 ]
+Key: MMX_PSUBQrm: [ 0.00 0.00 ]
+Key: MMX_PSUBQrr: [ 0.00 0.00 ]
+Key: MMX_PSUBSBrm: [ 0.00 0.00 ]
+Key: MMX_PSUBSBrr: [ 0.00 0.00 ]
+Key: MMX_PSUBSWrm: [ 0.00 0.00 ]
+Key: MMX_PSUBSWrr: [ 0.00 0.00 ]
+Key: MMX_PSUBUSBrm: [ 0.00 0.00 ]
+Key: MMX_PSUBUSBrr: [ 0.00 0.00 ]
+Key: MMX_PSUBUSWrm: [ 0.00 0.00 ]
+Key: MMX_PSUBUSWrr: [ 0.00 0.00 ]
+Key: MMX_PSUBWrm: [ 0.00 0.00 ]
+Key: MMX_PSUBWrr: [ 0.00 0.00 ]
+Key: MMX_PUNPCKHBWrm: [ 0.00 0.00 ]
+Key: MMX_PUNPCKHBWrr: [ 0.00 0.00 ]
+Key: MMX_PUNPCKHDQrm: [ 0.00 0.00 ]
+Key: MMX_PUNPCKHDQrr: [ 0.00 0.00 ]
+Key: MMX_PUNPCKHWDrm: [ 0.00 0.00 ]
+Key: MMX_PUNPCKHWDrr: [ 0.00 0.00 ]
+Key: MMX_PUNPCKLBWrm: [ 0.00 0.00 ]
+Key: MMX_PUNPCKLBWrr: [ 0.00 0.00 ]
+Key: MMX_PUNPCKLDQrm: [ 0.00 0.00 ]
+Key: MMX_PUNPCKLDQrr: [ 0.00 0.00 ]
+Key: MMX_PUNPCKLWDrm: [ 0.00 0.00 ]
+Key: MMX_PUNPCKLWDrr: [ 0.00 0.00 ]
+Key: MMX_PXORrm: [ 0.00 0.00 ]
+Key: MMX_PXORrr: [ 0.00 0.00 ]
+Key: MMX_SET: [ 0.00 0.00 ]
+Key: MONITOR: [ 0.00 0.00 ]
+Key: MONITORX: [ 0.00 0.00 ]
+Key: MONTMUL: [ 0.00 0.00 ]
+Key: MORESTACK_RET: [ 0.00 0.00 ]
+Key: MORESTACK_RET_RESTORE_R: [ 0.00 0.00 ]
+Key: MOV: [ 0.00 0.00 ]
+Key: MOVAPDmr: [ 0.00 0.00 ]
+Key: MOVAPDrm: [ 0.00 0.00 ]
+Key: MOVAPDrr: [ 0.00 0.00 ]
+Key: MOVAPDrr_REV: [ 0.00 0.00 ]
+Key: MOVAPSmr: [ 0.00 0.00 ]
+Key: MOVAPSrm: [ 0.00 0.00 ]
+Key: MOVAPSrr: [ 0.00 0.00 ]
+Key: MOVAPSrr_REV: [ 0.00 0.00 ]
+Key: MOVBE: [ 0.00 0.00 ]
+Key: MOVDDUPrm: [ 0.00 0.00 ]
+Key: MOVDDUPrr: [ 0.00 0.00 ]
+Key: MOVDI: [ 0.00 0.00 ]
+Key: MOVDIR: [ 0.00 0.00 ]
+Key: MOVDIRI: [ 0.00 0.00 ]
+Key: MOVDQAmr: [ 0.00 0.00 ]
+Key: MOVDQArm: [ 0.00 0.00 ]
+Key: MOVDQArr: [ 0.00 0.00 ]
+Key: MOVDQArr_REV: [ 0.00 0.00 ]
+Key: MOVDQUmr: [ 0.00 0.00 ]
+Key: MOVDQUrm: [ 0.00 0.00 ]
+Key: MOVDQUrr: [ 0.00 0.00 ]
+Key: MOVDQUrr_REV: [ 0.00 0.00 ]
+Key: MOVHLPSrr: [ 0.00 0.00 ]
+Key: MOVHPDmr: [ 0.00 0.00 ]
+Key: MOVHPDrm: [ 0.00 0.00 ]
+Key: MOVHPSmr: [ 0.00 0.00 ]
+Key: MOVHPSrm: [ 0.00 0.00 ]
+Key: MOVLHPSrr: [ 0.00 0.00 ]
+Key: MOVLPDmr: [ 0.00 0.00 ]
+Key: MOVLPDrm: [ 0.00 0.00 ]
+Key: MOVLPSmr: [ 0.00 0.00 ]
+Key: MOVLPSrm: [ 0.00 0.00 ]
+Key: MOVMSKPDrr: [ 0.00 0.00 ]
+Key: MOVMSKPSrr: [ 0.00 0.00 ]
+Key: MOVNTDQArm: [ 0.00 0.00 ]
+Key: MOVNTDQmr: [ 0.00 0.00 ]
+Key: MOVNTI: [ 0.00 0.00 ]
+Key: MOVNTImr: [ 0.00 0.00 ]
+Key: MOVNTPDmr: [ 0.00 0.00 ]
+Key: MOVNTPSmr: [ 0.00 0.00 ]
+Key: MOVNTSD: [ 0.00 0.00 ]
+Key: MOVNTSS: [ 0.00 0.00 ]
+Key: MOVPC: [ 0.00 0.00 ]
+Key: MOVPDI: [ 0.00 0.00 ]
+Key: MOVPQI: [ 0.00 0.00 ]
+Key: MOVPQIto: [ 0.00 0.00 ]
+Key: MOVQI: [ 0.00 0.00 ]
+Key: MOVRS: [ 0.00 0.00 ]
+Key: MOVSB: [ 0.00 0.00 ]
+Key: MOVSDmr: [ 0.00 0.00 ]
+Key: MOVSDrm: [ 0.00 0.00 ]
+Key: MOVSDrm_alt: [ 0.00 0.00 ]
+Key: MOVSDrr: [ 0.00 0.00 ]
+Key: MOVSDrr_REV: [ 0.00 0.00 ]
+Key: MOVSDto: [ 0.00 0.00 ]
+Key: MOVSHDUPrm: [ 0.00 0.00 ]
+Key: MOVSHDUPrr: [ 0.00 0.00 ]
+Key: MOVSHPmr: [ 0.00 0.00 ]
+Key: MOVSHPrm: [ 0.00 0.00 ]
+Key: MOVSL: [ 0.00 0.00 ]
+Key: MOVSLDUPrm: [ 0.00 0.00 ]
+Key: MOVSLDUPrr: [ 0.00 0.00 ]
+Key: MOVSQ: [ 0.00 0.00 ]
+Key: MOVSS: [ 0.00 0.00 ]
+Key: MOVSSmr: [ 0.00 0.00 ]
+Key: MOVSSrm: [ 0.00 0.00 ]
+Key: MOVSSrm_alt: [ 0.00 0.00 ]
+Key: MOVSSrr: [ 0.00 0.00 ]
+Key: MOVSSrr_REV: [ 0.00 0.00 ]
+Key: MOVSW: [ 0.00 0.00 ]
+Key: MOVSX: [ 0.00 0.00 ]
+Key: MOVUPDmr: [ 0.00 0.00 ]
+Key: MOVUPDrm: [ 0.00 0.00 ]
+Key: MOVUPDrr: [ 0.00 0.00 ]
+Key: MOVUPDrr_REV: [ 0.00 0.00 ]
+Key: MOVUPSmr: [ 0.00 0.00 ]
+Key: MOVUPSrm: [ 0.00 0.00 ]
+Key: MOVUPSrr: [ 0.00 0.00 ]
+Key: MOVUPSrr_REV: [ 0.00 0.00 ]
+Key: MOVZPQILo: [ 0.00 0.00 ]
+Key: MOVZX: [ 0.00 0.00 ]
+Key: MPSADBWrmi: [ 0.00 0.00 ]
+Key: MPSADBWrri: [ 0.00 0.00 ]
+Key: MUL: [ 0.00 0.00 ]
+Key: MULPDrm: [ 0.00 0.00 ]
+Key: MULPDrr: [ 0.00 0.00 ]
+Key: MULPSrm: [ 0.00 0.00 ]
+Key: MULPSrr: [ 0.00 0.00 ]
+Key: MULSDrm: [ 0.00 0.00 ]
+Key: MULSDrm_Int: [ 0.00 0.00 ]
+Key: MULSDrr: [ 0.00 0.00 ]
+Key: MULSDrr_Int: [ 0.00 0.00 ]
+Key: MULSSrm: [ 0.00 0.00 ]
+Key: MULSSrm_Int: [ 0.00 0.00 ]
+Key: MULSSrr: [ 0.00 0.00 ]
+Key: MULSSrr_Int: [ 0.00 0.00 ]
+Key: MULX: [ 0.00 0.00 ]
+Key: MUL_F: [ 0.00 0.00 ]
+Key: MUL_FI: [ 0.00 0.00 ]
+Key: MUL_FPrST: [ 0.00 0.00 ]
+Key: MUL_FST: [ 0.00 0.00 ]
+Key: MUL_Fp: [ 0.00 0.00 ]
+Key: MUL_FpI: [ 0.00 0.00 ]
+Key: MUL_FrST: [ 0.00 0.00 ]
+Key: MWAITX: [ 0.00 0.00 ]
+Key: MWAITX_SAVE_RBX: [ 0.00 0.00 ]
+Key: MWAITXrrr: [ 0.00 0.00 ]
+Key: MWAITrr: [ 0.00 0.00 ]
+Key: NEG: [ 0.00 0.00 ]
+Key: NOOP: [ 0.00 0.00 ]
+Key: NOOPL: [ 0.00 0.00 ]
+Key: NOOPLr: [ 0.00 0.00 ]
+Key: NOOPQ: [ 0.00 0.00 ]
+Key: NOOPQr: [ 0.00 0.00 ]
+Key: NOOPW: [ 0.00 0.00 ]
+Key: NOOPWr: [ 0.00 0.00 ]
+Key: NOT: [ 0.00 0.00 ]
+Key: OR: [ 0.00 0.00 ]
+Key: ORPDrm: [ 0.00 0.00 ]
+Key: ORPDrr: [ 0.00 0.00 ]
+Key: ORPSrm: [ 0.00 0.00 ]
+Key: ORPSrr: [ 0.00 0.00 ]
+Key: OUT: [ 0.00 0.00 ]
+Key: OUTSB: [ 0.00 0.00 ]
+Key: OUTSL: [ 0.00 0.00 ]
+Key: OUTSW: [ 0.00 0.00 ]
+Key: PABSBrm: [ 0.00 0.00 ]
+Key: PABSBrr: [ 0.00 0.00 ]
+Key: PABSDrm: [ 0.00 0.00 ]
+Key: PABSDrr: [ 0.00 0.00 ]
+Key: PABSWrm: [ 0.00 0.00 ]
+Key: PABSWrr: [ 0.00 0.00 ]
+Key: PACKSSDWrm: [ 0.00 0.00 ]
+Key: PACKSSDWrr: [ 0.00 0.00 ]
+Key: PACKSSWBrm: [ 0.00 0.00 ]
+Key: PACKSSWBrr: [ 0.00 0.00 ]
+Key: PACKUSDWrm: [ 0.00 0.00 ]
+Key: PACKUSDWrr: [ 0.00 0.00 ]
+Key: PACKUSWBrm: [ 0.00 0.00 ]
+Key: PACKUSWBrr: [ 0.00 0.00 ]
+Key: PADDBrm: [ 0.00 0.00 ]
+Key: PADDBrr: [ 0.00 0.00 ]
+Key: PADDDrm: [ 0.00 0.00 ]
+Key: PADDDrr: [ 0.00 0.00 ]
+Key: PADDQrm: [ 0.00 0.00 ]
+Key: PADDQrr: [ 0.00 0.00 ]
+Key: PADDSBrm: [ 0.00 0.00 ]
+Key: PADDSBrr: [ 0.00 0.00 ]
+Key: PADDSWrm: [ 0.00 0.00 ]
+Key: PADDSWrr: [ 0.00 0.00 ]
+Key: PADDUSBrm: [ 0.00 0.00 ]
+Key: PADDUSBrr: [ 0.00 0.00 ]
+Key: PADDUSWrm: [ 0.00 0.00 ]
+Key: PADDUSWrr: [ 0.00 0.00 ]
+Key: PADDWrm: [ 0.00 0.00 ]
+Key: PADDWrr: [ 0.00 0.00 ]
+Key: PALIGNRrmi: [ 0.00 0.00 ]
+Key: PALIGNRrri: [ 0.00 0.00 ]
+Key: PANDNrm: [ 0.00 0.00 ]
+Key: PANDNrr: [ 0.00 0.00 ]
+Key: PANDrm: [ 0.00 0.00 ]
+Key: PANDrr: [ 0.00 0.00 ]
+Key: PATCHABLE_EVENT_CALL: [ 0.00 0.00 ]
+Key: PATCHABLE_FUNCTION_ENTER: [ 0.00 0.00 ]
+Key: PATCHABLE_FUNCTION_EXIT: [ 0.00 0.00 ]
+Key: PATCHABLE_OP: [ 0.00 0.00 ]
+Key: PATCHABLE_RET: [ 0.00 0.00 ]
+Key: PATCHABLE_TAIL_CALL: [ 0.00 0.00 ]
+Key: PATCHABLE_TYPED_EVENT_CALL: [ 0.00 0.00 ]
+Key: PATCHPOINT: [ 0.00 0.00 ]
+Key: PAUSE: [ 0.00 0.00 ]
+Key: PAVGBrm: [ 0.00 0.00 ]
+Key: PAVGBrr: [ 0.00 0.00 ]
+Key: PAVGUSBrm: [ 0.00 0.00 ]
+Key: PAVGUSBrr: [ 0.00 0.00 ]
+Key: PAVGWrm: [ 0.00 0.00 ]
+Key: PAVGWrr: [ 0.00 0.00 ]
+Key: PBLENDVBrm: [ 0.00 0.00 ]
+Key: PBLENDVBrr: [ 0.00 0.00 ]
+Key: PBLENDWrmi: [ 0.00 0.00 ]
+Key: PBLENDWrri: [ 0.00 0.00 ]
+Key: PBNDKB: [ 0.00 0.00 ]
+Key: PCLMULQDQrmi: [ 0.00 0.00 ]
+Key: PCLMULQDQrri: [ 0.00 0.00 ]
+Key: PCMPEQBrm: [ 0.00 0.00 ]
+Key: PCMPEQBrr: [ 0.00 0.00 ]
+Key: PCMPEQDrm: [ 0.00 0.00 ]
+Key: PCMPEQDrr: [ 0.00 0.00 ]
+Key: PCMPEQQrm: [ 0.00 0.00 ]
+Key: PCMPEQQrr: [ 0.00 0.00 ]
+Key: PCMPEQWrm: [ 0.00 0.00 ]
+Key: PCMPEQWrr: [ 0.00 0.00 ]
+Key: PCMPESTRIrmi: [ 0.00 0.00 ]
+Key: PCMPESTRIrri: [ 0.00 0.00 ]
+Key: PCMPESTRMrmi: [ 0.00 0.00 ]
+Key: PCMPESTRMrri: [ 0.00 0.00 ]
+Key: PCMPGTBrm: [ 0.00 0.00 ]
+Key: PCMPGTBrr: [ 0.00 0.00 ]
+Key: PCMPGTDrm: [ 0.00 0.00 ]
+Key: PCMPGTDrr: [ 0.00 0.00 ]
+Key: PCMPGTQrm: [ 0.00 0.00 ]
+Key: PCMPGTQrr: [ 0.00 0.00 ]
+Key: PCMPGTWrm: [ 0.00 0.00 ]
+Key: PCMPGTWrr: [ 0.00 0.00 ]
+Key: PCMPISTRIrmi: [ 0.00 0.00 ]
+Key: PCMPISTRIrri: [ 0.00 0.00 ]
+Key: PCMPISTRMrmi: [ 0.00 0.00 ]
+Key: PCMPISTRMrri: [ 0.00 0.00 ]
+Key: PCONFIG: [ 0.00 0.00 ]
+Key: PDEP: [ 0.00 0.00 ]
+Key: PEXT: [ 0.00 0.00 ]
+Key: PEXTRBmri: [ 0.00 0.00 ]
+Key: PEXTRBrri: [ 0.00 0.00 ]
+Key: PEXTRDmri: [ 0.00 0.00 ]
+Key: PEXTRDrri: [ 0.00 0.00 ]
+Key: PEXTRQmri: [ 0.00 0.00 ]
+Key: PEXTRQrri: [ 0.00 0.00 ]
+Key: PEXTRWmri: [ 0.00 0.00 ]
+Key: PEXTRWrri: [ 0.00 0.00 ]
+Key: PEXTRWrri_REV: [ 0.00 0.00 ]
+Key: PF: [ 0.00 0.00 ]
+Key: PFACCrm: [ 0.00 0.00 ]
+Key: PFACCrr: [ 0.00 0.00 ]
+Key: PFADDrm: [ 0.00 0.00 ]
+Key: PFADDrr: [ 0.00 0.00 ]
+Key: PFCMPEQrm: [ 0.00 0.00 ]
+Key: PFCMPEQrr: [ 0.00 0.00 ]
+Key: PFCMPGErm: [ 0.00 0.00 ]
+Key: PFCMPGErr: [ 0.00 0.00 ]
+Key: PFCMPGTrm: [ 0.00 0.00 ]
+Key: PFCMPGTrr: [ 0.00 0.00 ]
+Key: PFMAXrm: [ 0.00 0.00 ]
+Key: PFMAXrr: [ 0.00 0.00 ]
+Key: PFMINrm: [ 0.00 0.00 ]
+Key: PFMINrr: [ 0.00 0.00 ]
+Key: PFMULrm: [ 0.00 0.00 ]
+Key: PFMULrr: [ 0.00 0.00 ]
+Key: PFNACCrm: [ 0.00 0.00 ]
+Key: PFNACCrr: [ 0.00 0.00 ]
+Key: PFPNACCrm: [ 0.00 0.00 ]
+Key: PFPNACCrr: [ 0.00 0.00 ]
+Key: PFRCPIT: [ 0.00 0.00 ]
+Key: PFRCPrm: [ 0.00 0.00 ]
+Key: PFRCPrr: [ 0.00 0.00 ]
+Key: PFRSQIT: [ 0.00 0.00 ]
+Key: PFRSQRTrm: [ 0.00 0.00 ]
+Key: PFRSQRTrr: [ 0.00 0.00 ]
+Key: PFSUBRrm: [ 0.00 0.00 ]
+Key: PFSUBRrr: [ 0.00 0.00 ]
+Key: PFSUBrm: [ 0.00 0.00 ]
+Key: PFSUBrr: [ 0.00 0.00 ]
+Key: PHADDDrm: [ 0.00 0.00 ]
+Key: PHADDDrr: [ 0.00 0.00 ]
+Key: PHADDSWrm: [ 0.00 0.00 ]
+Key: PHADDSWrr: [ 0.00 0.00 ]
+Key: PHADDWrm: [ 0.00 0.00 ]
+Key: PHADDWrr: [ 0.00 0.00 ]
+Key: PHI: [ 0.00 0.00 ]
+Key: PHMINPOSUWrm: [ 0.00 0.00 ]
+Key: PHMINPOSUWrr: [ 0.00 0.00 ]
+Key: PHSUBDrm: [ 0.00 0.00 ]
+Key: PHSUBDrr: [ 0.00 0.00 ]
+Key: PHSUBSWrm: [ 0.00 0.00 ]
+Key: PHSUBSWrr: [ 0.00 0.00 ]
+Key: PHSUBWrm: [ 0.00 0.00 ]
+Key: PHSUBWrr: [ 0.00 0.00 ]
+Key: PI: [ 0.00 0.00 ]
+Key: PINSRBrmi: [ 0.00 0.00 ]
+Key: PINSRBrri: [ 0.00 0.00 ]
+Key: PINSRDrmi: [ 0.00 0.00 ]
+Key: PINSRDrri: [ 0.00 0.00 ]
+Key: PINSRQrmi: [ 0.00 0.00 ]
+Key: PINSRQrri: [ 0.00 0.00 ]
+Key: PINSRWrmi: [ 0.00 0.00 ]
+Key: PINSRWrri: [ 0.00 0.00 ]
+Key: PLDTILECFGV: [ 0.00 0.00 ]
+Key: PLEA: [ 0.00 0.00 ]
+Key: PMADDUBSWrm: [ 0.00 0.00 ]
+Key: PMADDUBSWrr: [ 0.00 0.00 ]
+Key: PMADDWDrm: [ 0.00 0.00 ]
+Key: PMADDWDrr: [ 0.00 0.00 ]
+Key: PMAXSBrm: [ 0.00 0.00 ]
+Key: PMAXSBrr: [ 0.00 0.00 ]
+Key: PMAXSDrm: [ 0.00 0.00 ]
+Key: PMAXSDrr: [ 0.00 0.00 ]
+Key: PMAXSWrm: [ 0.00 0.00 ]
+Key: PMAXSWrr: [ 0.00 0.00 ]
+Key: PMAXUBrm: [ 0.00 0.00 ]
+Key: PMAXUBrr: [ 0.00 0.00 ]
+Key: PMAXUDrm: [ 0.00 0.00 ]
+Key: PMAXUDrr: [ 0.00 0.00 ]
+Key: PMAXUWrm: [ 0.00 0.00 ]
+Key: PMAXUWrr: [ 0.00 0.00 ]
+Key: PMINSBrm: [ 0.00 0.00 ]
+Key: PMINSBrr: [ 0.00 0.00 ]
+Key: PMINSDrm: [ 0.00 0.00 ]
+Key: PMINSDrr: [ 0.00 0.00 ]
+Key: PMINSWrm: [ 0.00 0.00 ]
+Key: PMINSWrr: [ 0.00 0.00 ]
+Key: PMINUBrm: [ 0.00 0.00 ]
+Key: PMINUBrr: [ 0.00 0.00 ]
+Key: PMINUDrm: [ 0.00 0.00 ]
+Key: PMINUDrr: [ 0.00 0.00 ]
+Key: PMINUWrm: [ 0.00 0.00 ]
+Key: PMINUWrr: [ 0.00 0.00 ]
+Key: PMOVMSKBrr: [ 0.00 0.00 ]
+Key: PMOVSXBDrm: [ 0.00 0.00 ]
+Key: PMOVSXBDrr: [ 0.00 0.00 ]
+Key: PMOVSXBQrm: [ 0.00 0.00 ]
+Key: PMOVSXBQrr: [ 0.00 0.00 ]
+Key: PMOVSXBWrm: [ 0.00 0.00 ]
+Key: PMOVSXBWrr: [ 0.00 0.00 ]
+Key: PMOVSXDQrm: [ 0.00 0.00 ]
+Key: PMOVSXDQrr: [ 0.00 0.00 ]
+Key: PMOVSXWDrm: [ 0.00 0.00 ]
+Key: PMOVSXWDrr: [ 0.00 0.00 ]
+Key: PMOVSXWQrm: [ 0.00 0.00 ]
+Key: PMOVSXWQrr: [ 0.00 0.00 ]
+Key: PMOVZXBDrm: [ 0.00 0.00 ]
+Key: PMOVZXBDrr: [ 0.00 0.00 ]
+Key: PMOVZXBQrm: [ 0.00 0.00 ]
+Key: PMOVZXBQrr: [ 0.00 0.00 ]
+Key: PMOVZXBWrm: [ 0.00 0.00 ]
+Key: PMOVZXBWrr: [ 0.00 0.00 ]
+Key: PMOVZXDQrm: [ 0.00 0.00 ]
+Key: PMOVZXDQrr: [ 0.00 0.00 ]
+Key: PMOVZXWDrm: [ 0.00 0.00 ]
+Key: PMOVZXWDrr: [ 0.00 0.00 ]
+Key: PMOVZXWQrm: [ 0.00 0.00 ]
+Key: PMOVZXWQrr: [ 0.00 0.00 ]
+Key: PMULDQrm: [ 0.00 0.00 ]
+Key: PMULDQrr: [ 0.00 0.00 ]
+Key: PMULHRSWrm: [ 0.00 0.00 ]
+Key: PMULHRSWrr: [ 0.00 0.00 ]
+Key: PMULHRWrm: [ 0.00 0.00 ]
+Key: PMULHRWrr: [ 0.00 0.00 ]
+Key: PMULHUWrm: [ 0.00 0.00 ]
+Key: PMULHUWrr: [ 0.00 0.00 ]
+Key: PMULHWrm: [ 0.00 0.00 ]
+Key: PMULHWrr: [ 0.00 0.00 ]
+Key: PMULLDrm: [ 0.00 0.00 ]
+Key: PMULLDrr: [ 0.00 0.00 ]
+Key: PMULLWrm: [ 0.00 0.00 ]
+Key: PMULLWrr: [ 0.00 0.00 ]
+Key: PMULUDQrm: [ 0.00 0.00 ]
+Key: PMULUDQrr: [ 0.00 0.00 ]
+Key: POP: [ 0.00 0.00 ]
+Key: POPA: [ 0.00 0.00 ]
+Key: POPCNT: [ 0.00 0.00 ]
+Key: POPDS: [ 0.00 0.00 ]
+Key: POPES: [ 0.00 0.00 ]
+Key: POPF: [ 0.00 0.00 ]
+Key: POPFS: [ 0.00 0.00 ]
+Key: POPGS: [ 0.00 0.00 ]
+Key: POPP: [ 0.00 0.00 ]
+Key: POPSS: [ 0.00 0.00 ]
+Key: PORrm: [ 0.00 0.00 ]
+Key: PORrr: [ 0.00 0.00 ]
+Key: PREALLOCATED_ARG: [ 0.00 0.00 ]
+Key: PREALLOCATED_SETUP: [ 0.00 0.00 ]
+Key: PREFETCH: [ 0.00 0.00 ]
+Key: PREFETCHIT: [ 0.00 0.00 ]
+Key: PREFETCHNTA: [ 0.00 0.00 ]
+Key: PREFETCHRST: [ 0.00 0.00 ]
+Key: PREFETCHT: [ 0.00 0.00 ]
+Key: PREFETCHW: [ 0.00 0.00 ]
+Key: PREFETCHWT: [ 0.00 0.00 ]
+Key: PROBED_ALLOCA: [ 0.00 0.00 ]
+Key: PSADBWrm: [ 0.00 0.00 ]
+Key: PSADBWrr: [ 0.00 0.00 ]
+Key: PSEUDO_PROBE: [ 0.00 0.00 ]
+Key: PSHUFBrm: [ 0.00 0.00 ]
+Key: PSHUFBrr: [ 0.00 0.00 ]
+Key: PSHUFDmi: [ 0.00 0.00 ]
+Key: PSHUFDri: [ 0.00 0.00 ]
+Key: PSHUFHWmi: [ 0.00 0.00 ]
+Key: PSHUFHWri: [ 0.00 0.00 ]
+Key: PSHUFLWmi: [ 0.00 0.00 ]
+Key: PSHUFLWri: [ 0.00 0.00 ]
+Key: PSIGNBrm: [ 0.00 0.00 ]
+Key: PSIGNBrr: [ 0.00 0.00 ]
+Key: PSIGNDrm: [ 0.00 0.00 ]
+Key: PSIGNDrr: [ 0.00 0.00 ]
+Key: PSIGNWrm: [ 0.00 0.00 ]
+Key: PSIGNWrr: [ 0.00 0.00 ]
+Key: PSLLDQri: [ 0.00 0.00 ]
+Key: PSLLDri: [ 0.00 0.00 ]
+Key: PSLLDrm: [ 0.00 0.00 ]
+Key: PSLLDrr: [ 0.00 0.00 ]
+Key: PSLLQri: [ 0.00 0.00 ]
+Key: PSLLQrm: [ 0.00 0.00 ]
+Key: PSLLQrr: [ 0.00 0.00 ]
+Key: PSLLWri: [ 0.00 0.00 ]
+Key: PSLLWrm: [ 0.00 0.00 ]
+Key: PSLLWrr: [ 0.00 0.00 ]
+Key: PSMASH: [ 0.00 0.00 ]
+Key: PSRADri: [ 0.00 0.00 ]
+Key: PSRADrm: [ 0.00 0.00 ]
+Key: PSRADrr: [ 0.00 0.00 ]
+Key: PSRAWri: [ 0.00 0.00 ]
+Key: PSRAWrm: [ 0.00 0.00 ]
+Key: PSRAWrr: [ 0.00 0.00 ]
+Key: PSRLDQri: [ 0.00 0.00 ]
+Key: PSRLDri: [ 0.00 0.00 ]
+Key: PSRLDrm: [ 0.00 0.00 ]
+Key: PSRLDrr: [ 0.00 0.00 ]
+Key: PSRLQri: [ 0.00 0.00 ]
+Key: PSRLQrm: [ 0.00 0.00 ]
+Key: PSRLQrr: [ 0.00 0.00 ]
+Key: PSRLWri: [ 0.00 0.00 ]
+Key: PSRLWrm: [ 0.00 0.00 ]
+Key: PSRLWrr: [ 0.00 0.00 ]
+Key: PSUBBrm: [ 0.00 0.00 ]
+Key: PSUBBrr: [ 0.00 0.00 ]
+Key: PSUBDrm: [ 0.00 0.00 ]
+Key: PSUBDrr: [ 0.00 0.00 ]
+Key: PSUBQrm: [ 0.00 0.00 ]
+Key: PSUBQrr: [ 0.00 0.00 ]
+Key: PSUBSBrm: [ 0.00 0.00 ]
+Key: PSUBSBrr: [ 0.00 0.00 ]
+Key: PSUBSWrm: [ 0.00 0.00 ]
+Key: PSUBSWrr: [ 0.00 0.00 ]
+Key: PSUBUSBrm: [ 0.00 0.00 ]
+Key: PSUBUSBrr: [ 0.00 0.00 ]
+Key: PSUBUSWrm: [ 0.00 0.00 ]
+Key: PSUBUSWrr: [ 0.00 0.00 ]
+Key: PSUBWrm: [ 0.00 0.00 ]
+Key: PSUBWrr: [ 0.00 0.00 ]
+Key: PSWAPDrm: [ 0.00 0.00 ]
+Key: PSWAPDrr: [ 0.00 0.00 ]
+Key: PT: [ 0.00 0.00 ]
+Key: PTCMMIMFP: [ 0.00 0.00 ]
+Key: PTCMMRLFP: [ 0.00 0.00 ]
+Key: PTCONJTCMMIMFP: [ 0.00 0.00 ]
+Key: PTCONJTFP: [ 0.00 0.00 ]
+Key: PTCVTROWD: [ 0.00 0.00 ]
+Key: PTCVTROWPS: [ 0.00 0.00 ]
+Key: PTDPBF: [ 0.00 0.00 ]
+Key: PTDPBHF: [ 0.00 0.00 ]
+Key: PTDPBSSD: [ 0.00 0.00 ]
+Key: PTDPBSSDV: [ 0.00 0.00 ]
+Key: PTDPBSUD: [ 0.00 0.00 ]
+Key: PTDPBSUDV: [ 0.00 0.00 ]
+Key: PTDPBUSD: [ 0.00 0.00 ]
+Key: PTDPBUSDV: [ 0.00 0.00 ]
+Key: PTDPBUUD: [ 0.00 0.00 ]
+Key: PTDPBUUDV: [ 0.00 0.00 ]
+Key: PTDPFP: [ 0.00 0.00 ]
+Key: PTDPHBF: [ 0.00 0.00 ]
+Key: PTDPHF: [ 0.00 0.00 ]
+Key: PTESTrm: [ 0.00 0.00 ]
+Key: PTESTrr: [ 0.00 0.00 ]
+Key: PTILELOADD: [ 0.00 0.00 ]
+Key: PTILELOADDRS: [ 0.00 0.00 ]
+Key: PTILELOADDRST: [ 0.00 0.00 ]
+Key: PTILELOADDRSV: [ 0.00 0.00 ]
+Key: PTILELOADDT: [ 0.00 0.00 ]
+Key: PTILELOADDV: [ 0.00 0.00 ]
+Key: PTILEMOVROWrre: [ 0.00 0.00 ]
+Key: PTILEMOVROWrreV: [ 0.00 0.00 ]
+Key: PTILEMOVROWrri: [ 0.00 0.00 ]
+Key: PTILEMOVROWrriV: [ 0.00 0.00 ]
+Key: PTILEPAIRLOAD: [ 0.00 0.00 ]
+Key: PTILEPAIRSTORE: [ 0.00 0.00 ]
+Key: PTILESTORED: [ 0.00 0.00 ]
+Key: PTILESTOREDV: [ 0.00 0.00 ]
+Key: PTILEZERO: [ 0.00 0.00 ]
+Key: PTILEZEROV: [ 0.00 0.00 ]
+Key: PTMMULTF: [ 0.00 0.00 ]
+Key: PTTCMMIMFP: [ 0.00 0.00 ]
+Key: PTTCMMRLFP: [ 0.00 0.00 ]
+Key: PTTDPBF: [ 0.00 0.00 ]
+Key: PTTDPFP: [ 0.00 0.00 ]
+Key: PTTMMULTF: [ 0.00 0.00 ]
+Key: PTTRANSPOSED: [ 0.00 0.00 ]
+Key: PTTRANSPOSEDV: [ 0.00 0.00 ]
+Key: PTWRITE: [ 0.00 0.00 ]
+Key: PTWRITEm: [ 0.00 0.00 ]
+Key: PTWRITEr: [ 0.00 0.00 ]
+Key: PUNPCKHBWrm: [ 0.00 0.00 ]
+Key: PUNPCKHBWrr: [ 0.00 0.00 ]
+Key: PUNPCKHDQrm: [ 0.00 0.00 ]
+Key: PUNPCKHDQrr: [ 0.00 0.00 ]
+Key: PUNPCKHQDQrm: [ 0.00 0.00 ]
+Key: PUNPCKHQDQrr: [ 0.00 0.00 ]
+Key: PUNPCKHWDrm: [ 0.00 0.00 ]
+Key: PUNPCKHWDrr: [ 0.00 0.00 ]
+Key: PUNPCKLBWrm: [ 0.00 0.00 ]
+Key: PUNPCKLBWrr: [ 0.00 0.00 ]
+Key: PUNPCKLDQrm: [ 0.00 0.00 ]
+Key: PUNPCKLDQrr: [ 0.00 0.00 ]
+Key: PUNPCKLQDQrm: [ 0.00 0.00 ]
+Key: PUNPCKLQDQrr: [ 0.00 0.00 ]
+Key: PUNPCKLWDrm: [ 0.00 0.00 ]
+Key: PUNPCKLWDrr: [ 0.00 0.00 ]
+Key: PUSH: [ 0.00 0.00 ]
+Key: PUSHA: [ 0.00 0.00 ]
+Key: PUSHCS: [ 0.00 0.00 ]
+Key: PUSHDS: [ 0.00 0.00 ]
+Key: PUSHES: [ 0.00 0.00 ]
+Key: PUSHF: [ 0.00 0.00 ]
+Key: PUSHFS: [ 0.00 0.00 ]
+Key: PUSHGS: [ 0.00 0.00 ]
+Key: PUSHP: [ 0.00 0.00 ]
+Key: PUSHSS: [ 0.00 0.00 ]
+Key: PVALIDATE: [ 0.00 0.00 ]
+Key: PXORrm: [ 0.00 0.00 ]
+Key: PXORrr: [ 0.00 0.00 ]
+Key: RCL: [ 0.00 0.00 ]
+Key: RCPPSm: [ 0.00 0.00 ]
+Key: RCPPSr: [ 0.00 0.00 ]
+Key: RCPSSm: [ 0.00 0.00 ]
+Key: RCPSSm_Int: [ 0.00 0.00 ]
+Key: RCPSSr: [ 0.00 0.00 ]
+Key: RCPSSr_Int: [ 0.00 0.00 ]
+Key: RCR: [ 0.00 0.00 ]
+Key: RDFLAGS: [ 0.00 0.00 ]
+Key: RDFSBASE: [ 0.00 0.00 ]
+Key: RDGSBASE: [ 0.00 0.00 ]
+Key: RDMSR: [ 0.00 0.00 ]
+Key: RDMSRLIST: [ 0.00 0.00 ]
+Key: RDMSRri: [ 0.00 0.00 ]
+Key: RDMSRri_EVEX: [ 0.00 0.00 ]
+Key: RDPID: [ 0.00 0.00 ]
+Key: RDPKRUr: [ 0.00 0.00 ]
+Key: RDPMC: [ 0.00 0.00 ]
+Key: RDPRU: [ 0.00 0.00 ]
+Key: RDRAND: [ 0.00 0.00 ]
+Key: RDSEED: [ 0.00 0.00 ]
+Key: RDSSPD: [ 0.00 0.00 ]
+Key: RDSSPQ: [ 0.00 0.00 ]
+Key: RDTSC: [ 0.00 0.00 ]
+Key: RDTSCP: [ 0.00 0.00 ]
+Key: REG_SEQUENCE: [ 0.00 0.00 ]
+Key: REPNE_PREFIX: [ 0.00 0.00 ]
+Key: REP_MOVSB: [ 0.00 0.00 ]
+Key: REP_MOVSD: [ 0.00 0.00 ]
+Key: REP_MOVSQ: [ 0.00 0.00 ]
+Key: REP_MOVSW: [ 0.00 0.00 ]
+Key: REP_PREFIX: [ 0.00 0.00 ]
+Key: REP_STOSB: [ 0.00 0.00 ]
+Key: REP_STOSD: [ 0.00 0.00 ]
+Key: REP_STOSQ: [ 0.00 0.00 ]
+Key: REP_STOSW: [ 0.00 0.00 ]
+Key: RET: [ 0.00 0.00 ]
+Key: RETI: [ 0.00 0.00 ]
+Key: REX: [ 0.00 0.00 ]
+Key: RMPADJUST: [ 0.00 0.00 ]
+Key: RMPQUERY: [ 0.00 0.00 ]
+Key: RMPUPDATE: [ 0.00 0.00 ]
+Key: ROL: [ 0.00 0.00 ]
+Key: ROR: [ 0.00 0.00 ]
+Key: RORX: [ 0.00 0.00 ]
+Key: ROUNDPDmi: [ 0.00 0.00 ]
+Key: ROUNDPDri: [ 0.00 0.00 ]
+Key: ROUNDPSmi: [ 0.00 0.00 ]
+Key: ROUNDPSri: [ 0.00 0.00 ]
+Key: ROUNDSDmi: [ 0.00 0.00 ]
+Key: ROUNDSDmi_Int: [ 0.00 0.00 ]
+Key: ROUNDSDri: [ 0.00 0.00 ]
+Key: ROUNDSDri_Int: [ 0.00 0.00 ]
+Key: ROUNDSSmi: [ 0.00 0.00 ]
+Key: ROUNDSSmi_Int: [ 0.00 0.00 ]
+Key: ROUNDSSri: [ 0.00 0.00 ]
+Key: ROUNDSSri_Int: [ 0.00 0.00 ]
+Key: RSM: [ 0.00 0.00 ]
+Key: RSQRTPSm: [ 0.00 0.00 ]
+Key: RSQRTPSr: [ 0.00 0.00 ]
+Key: RSQRTSSm: [ 0.00 0.00 ]
+Key: RSQRTSSm_Int: [ 0.00 0.00 ]
+Key: RSQRTSSr: [ 0.00 0.00 ]
+Key: RSQRTSSr_Int: [ 0.00 0.00 ]
+Key: RSTORSSP: [ 0.00 0.00 ]
+Key: SAHF: [ 0.00 0.00 ]
+Key: SALC: [ 0.00 0.00 ]
+Key: SAR: [ 0.00 0.00 ]
+Key: SARX: [ 0.00 0.00 ]
+Key: SAVEPREVSSP: [ 0.00 0.00 ]
+Key: SBB: [ 0.00 0.00 ]
+Key: SCASB: [ 0.00 0.00 ]
+Key: SCASL: [ 0.00 0.00 ]
+Key: SCASQ: [ 0.00 0.00 ]
+Key: SCASW: [ 0.00 0.00 ]
+Key: SEAMCALL: [ 0.00 0.00 ]
+Key: SEAMOPS: [ 0.00 0.00 ]
+Key: SEAMRET: [ 0.00 0.00 ]
+Key: SEG_ALLOCA: [ 0.00 0.00 ]
+Key: SEH_BeginEpilogue: [ 0.00 0.00 ]
+Key: SEH_EndEpilogue: [ 0.00 0.00 ]
+Key: SEH_EndPrologue: [ 0.00 0.00 ]
+Key: SEH_PushFrame: [ 0.00 0.00 ]
+Key: SEH_PushReg: [ 0.00 0.00 ]
+Key: SEH_SaveReg: [ 0.00 0.00 ]
+Key: SEH_SaveXMM: [ 0.00 0.00 ]
+Key: SEH_SetFrame: [ 0.00 0.00 ]
+Key: SEH_StackAlign: [ 0.00 0.00 ]
+Key: SEH_StackAlloc: [ 0.00 0.00 ]
+Key: SEH_UnwindV: [ 0.00 0.00 ]
+Key: SEH_UnwindVersion: [ 0.00 0.00 ]
+Key: SENDUIPI: [ 0.00 0.00 ]
+Key: SERIALIZE: [ 0.00 0.00 ]
+Key: SETB_C: [ 0.00 0.00 ]
+Key: SETCCm: [ 0.00 0.00 ]
+Key: SETCCm_EVEX: [ 0.00 0.00 ]
+Key: SETCCr: [ 0.00 0.00 ]
+Key: SETCCr_EVEX: [ 0.00 0.00 ]
+Key: SETSSBSY: [ 0.00 0.00 ]
+Key: SETZUCCm: [ 0.00 0.00 ]
+Key: SETZUCCr: [ 0.00 0.00 ]
+Key: SFENCE: [ 0.00 0.00 ]
+Key: SGDT: [ 0.00 0.00 ]
+Key: SHA: [ 0.00 0.00 ]
+Key: SHL: [ 0.00 0.00 ]
+Key: SHLD: [ 0.00 0.00 ]
+Key: SHLDROT: [ 0.00 0.00 ]
+Key: SHLX: [ 0.00 0.00 ]
+Key: SHR: [ 0.00 0.00 ]
+Key: SHRD: [ 0.00 0.00 ]
+Key: SHRDROT: [ 0.00 0.00 ]
+Key: SHRX: [ 0.00 0.00 ]
+Key: SHUFPDrmi: [ 0.00 0.00 ]
+Key: SHUFPDrri: [ 0.00 0.00 ]
+Key: SHUFPSrmi: [ 0.00 0.00 ]
+Key: SHUFPSrri: [ 0.00 0.00 ]
+Key: SIDT: [ 0.00 0.00 ]
+Key: SKINIT: [ 0.00 0.00 ]
+Key: SLDT: [ 0.00 0.00 ]
+Key: SLWPCB: [ 0.00 0.00 ]
+Key: SMSW: [ 0.00 0.00 ]
+Key: SQRTPDm: [ 0.00 0.00 ]
+Key: SQRTPDr: [ 0.00 0.00 ]
+Key: SQRTPSm: [ 0.00 0.00 ]
+Key: SQRTPSr: [ 0.00 0.00 ]
+Key: SQRTSDm: [ 0.00 0.00 ]
+Key: SQRTSDm_Int: [ 0.00 0.00 ]
+Key: SQRTSDr: [ 0.00 0.00 ]
+Key: SQRTSDr_Int: [ 0.00 0.00 ]
+Key: SQRTSSm: [ 0.00 0.00 ]
+Key: SQRTSSm_Int: [ 0.00 0.00 ]
+Key: SQRTSSr: [ 0.00 0.00 ]
+Key: SQRTSSr_Int: [ 0.00 0.00 ]
+Key: SQRT_F: [ 0.00 0.00 ]
+Key: SQRT_Fp: [ 0.00 0.00 ]
+Key: SS_PREFIX: [ 0.00 0.00 ]
+Key: STAC: [ 0.00 0.00 ]
+Key: STACKALLOC_W_PROBING: [ 0.00 0.00 ]
+Key: STACKMAP: [ 0.00 0.00 ]
+Key: STATEPOINT: [ 0.00 0.00 ]
+Key: STC: [ 0.00 0.00 ]
+Key: STD: [ 0.00 0.00 ]
+Key: STGI: [ 0.00 0.00 ]
+Key: STI: [ 0.00 0.00 ]
+Key: STMXCSR: [ 0.00 0.00 ]
+Key: STOSB: [ 0.00 0.00 ]
+Key: STOSL: [ 0.00 0.00 ]
+Key: STOSQ: [ 0.00 0.00 ]
+Key: STOSW: [ 0.00 0.00 ]
+Key: STR: [ 0.00 0.00 ]
+Key: STRm: [ 0.00 0.00 ]
+Key: STTILECFG: [ 0.00 0.00 ]
+Key: STTILECFG_EVEX: [ 0.00 0.00 ]
+Key: STUI: [ 0.00 0.00 ]
+Key: ST_F: [ 0.00 0.00 ]
+Key: ST_FP: [ 0.00 0.00 ]
+Key: ST_FPrr: [ 0.00 0.00 ]
+Key: ST_Fp: [ 0.00 0.00 ]
+Key: ST_FpP: [ 0.00 0.00 ]
+Key: ST_Frr: [ 0.00 0.00 ]
+Key: SUB: [ 0.00 0.00 ]
+Key: SUBPDrm: [ 0.00 0.00 ]
+Key: SUBPDrr: [ 0.00 0.00 ]
+Key: SUBPSrm: [ 0.00 0.00 ]
+Key: SUBPSrr: [ 0.00 0.00 ]
+Key: SUBREG_TO_REG: [ 0.00 0.00 ]
+Key: SUBR_F: [ 0.00 0.00 ]
+Key: SUBR_FI: [ 0.00 0.00 ]
+Key: SUBR_FPrST: [ 0.00 0.00 ]
+Key: SUBR_FST: [ 0.00 0.00 ]
+Key: SUBR_Fp: [ 0.00 0.00 ]
+Key: SUBR_FpI: [ 0.00 0.00 ]
+Key: SUBR_FrST: [ 0.00 0.00 ]
+Key: SUBSDrm: [ 0.00 0.00 ]
+Key: SUBSDrm_Int: [ 0.00 0.00 ]
+Key: SUBSDrr: [ 0.00 0.00 ]
+Key: SUBSDrr_Int: [ 0.00 0.00 ]
+Key: SUBSSrm: [ 0.00 0.00 ]
+Key: SUBSSrm_Int: [ 0.00 0.00 ]
+Key: SUBSSrr: [ 0.00 0.00 ]
+Key: SUBSSrr_Int: [ 0.00 0.00 ]
+Key: SUB_F: [ 0.00 0.00 ]
+Key: SUB_FI: [ 0.00 0.00 ]
+Key: SUB_FPrST: [ 0.00 0.00 ]
+Key: SUB_FST: [ 0.00 0.00 ]
+Key: SUB_Fp: [ 0.00 0.00 ]
+Key: SUB_FpI: [ 0.00 0.00 ]
+Key: SUB_FrST: [ 0.00 0.00 ]
+Key: SWAPGS: [ 0.00 0.00 ]
+Key: SYSCALL: [ 0.00 0.00 ]
+Key: SYSENTER: [ 0.00 0.00 ]
+Key: SYSEXIT: [ 0.00 0.00 ]
+Key: SYSRET: [ 0.00 0.00 ]
+Key: T: [ 0.00 0.00 ]
+Key: TAILJMPd: [ 0.00 0.00 ]
+Key: TAILJMPd_CC: [ 0.00 0.00 ]
+Key: TAILJMPm: [ 0.00 0.00 ]
+Key: TAILJMPr: [ 0.00 0.00 ]
+Key: TCMMIMFP: [ 0.00 0.00 ]
+Key: TCMMRLFP: [ 0.00 0.00 ]
+Key: TCONJTCMMIMFP: [ 0.00 0.00 ]
+Key: TCONJTFP: [ 0.00 0.00 ]
+Key: TCRETURN_HIPE: [ 0.00 0.00 ]
+Key: TCRETURN_WIN: [ 0.00 0.00 ]
+Key: TCRETURN_WINmi: [ 0.00 0.00 ]
+Key: TCRETURNdi: [ 0.00 0.00 ]
+Key: TCRETURNdicc: [ 0.00 0.00 ]
+Key: TCRETURNmi: [ 0.00 0.00 ]
+Key: TCRETURNri: [ 0.00 0.00 ]
+Key: TCVTROWD: [ 0.00 0.00 ]
+Key: TCVTROWPS: [ 0.00 0.00 ]
+Key: TDCALL: [ 0.00 0.00 ]
+Key: TDPBF: [ 0.00 0.00 ]
+Key: TDPBHF: [ 0.00 0.00 ]
+Key: TDPBSSD: [ 0.00 0.00 ]
+Key: TDPBSUD: [ 0.00 0.00 ]
+Key: TDPBUSD: [ 0.00 0.00 ]
+Key: TDPBUUD: [ 0.00 0.00 ]
+Key: TDPFP: [ 0.00 0.00 ]
+Key: TDPHBF: [ 0.00 0.00 ]
+Key: TDPHF: [ 0.00 0.00 ]
+Key: TEST: [ 0.00 0.00 ]
+Key: TESTUI: [ 0.00 0.00 ]
+Key: TILELOADD: [ 0.00 0.00 ]
+Key: TILELOADDRS: [ 0.00 0.00 ]
+Key: TILELOADDRST: [ 0.00 0.00 ]
+Key: TILELOADDRS_EVEX: [ 0.00 0.00 ]
+Key: TILELOADDT: [ 0.00 0.00 ]
+Key: TILELOADD_EVEX: [ 0.00 0.00 ]
+Key: TILEMOVROWrre: [ 0.00 0.00 ]
+Key: TILEMOVROWrri: [ 0.00 0.00 ]
+Key: TILERELEASE: [ 0.00 0.00 ]
+Key: TILESTORED: [ 0.00 0.00 ]
+Key: TILESTORED_EVEX: [ 0.00 0.00 ]
+Key: TILEZERO: [ 0.00 0.00 ]
+Key: TLBSYNC: [ 0.00 0.00 ]
+Key: TLSCall: [ 0.00 0.00 ]
+Key: TLS_addr: [ 0.00 0.00 ]
+Key: TLS_addrX: [ 0.00 0.00 ]
+Key: TLS_base_addr: [ 0.00 0.00 ]
+Key: TLS_base_addrX: [ 0.00 0.00 ]
+Key: TLS_desc: [ 0.00 0.00 ]
+Key: TMMULTF: [ 0.00 0.00 ]
+Key: TPAUSE: [ 0.00 0.00 ]
+Key: TRAP: [ 0.00 0.00 ]
+Key: TST_F: [ 0.00 0.00 ]
+Key: TST_Fp: [ 0.00 0.00 ]
+Key: TTCMMIMFP: [ 0.00 0.00 ]
+Key: TTCMMRLFP: [ 0.00 0.00 ]
+Key: TTDPBF: [ 0.00 0.00 ]
+Key: TTDPFP: [ 0.00 0.00 ]
+Key: TTMMULTF: [ 0.00 0.00 ]
+Key: TTRANSPOSED: [ 0.00 0.00 ]
+Key: TZCNT: [ 0.00 0.00 ]
+Key: TZMSK: [ 0.00 0.00 ]
+Key: UBSAN_UD: [ 0.00 0.00 ]
+Key: UCOMISDrm: [ 0.00 0.00 ]
+Key: UCOMISDrm_Int: [ 0.00 0.00 ]
+Key: UCOMISDrr: [ 0.00 0.00 ]
+Key: UCOMISDrr_Int: [ 0.00 0.00 ]
+Key: UCOMISSrm: [ 0.00 0.00 ]
+Key: UCOMISSrm_Int: [ 0.00 0.00 ]
+Key: UCOMISSrr: [ 0.00 0.00 ]
+Key: UCOMISSrr_Int: [ 0.00 0.00 ]
+Key: UCOM_FIPr: [ 0.00 0.00 ]
+Key: UCOM_FIr: [ 0.00 0.00 ]
+Key: UCOM_FPPr: [ 0.00 0.00 ]
+Key: UCOM_FPr: [ 0.00 0.00 ]
+Key: UCOM_FpIr: [ 0.00 0.00 ]
+Key: UCOM_Fpr: [ 0.00 0.00 ]
+Key: UCOM_Fr: [ 0.00 0.00 ]
+Key: UD: [ 0.00 0.00 ]
+Key: UIRET: [ 0.00 0.00 ]
+Key: UMONITOR: [ 0.00 0.00 ]
+Key: UMWAIT: [ 0.00 0.00 ]
+Key: UNPCKHPDrm: [ 0.00 0.00 ]
+Key: UNPCKHPDrr: [ 0.00 0.00 ]
+Key: UNPCKHPSrm: [ 0.00 0.00 ]
+Key: UNPCKHPSrr: [ 0.00 0.00 ]
+Key: UNPCKLPDrm: [ 0.00 0.00 ]
+Key: UNPCKLPDrr: [ 0.00 0.00 ]
+Key: UNPCKLPSrm: [ 0.00 0.00 ]
+Key: UNPCKLPSrr: [ 0.00 0.00 ]
+Key: URDMSRri: [ 0.00 0.00 ]
+Key: URDMSRri_EVEX: [ 0.00 0.00 ]
+Key: URDMSRrr: [ 0.00 0.00 ]
+Key: URDMSRrr_EVEX: [ 0.00 0.00 ]
+Key: UWRMSRir: [ 0.00 0.00 ]
+Key: UWRMSRir_EVEX: [ 0.00 0.00 ]
+Key: UWRMSRrr: [ 0.00 0.00 ]
+Key: UWRMSRrr_EVEX: [ 0.00 0.00 ]
+Key: V: [ 0.00 0.00 ]
+Key: VAARG: [ 0.00 0.00 ]
+Key: VAARG_X: [ 0.00 0.00 ]
+Key: VADDBF: [ 0.00 0.00 ]
+Key: VADDPDYrm: [ 0.00 0.00 ]
+Key: VADDPDYrr: [ 0.00 0.00 ]
+Key: VADDPDZ: [ 0.00 0.00 ]
+Key: VADDPDZrm: [ 0.00 0.00 ]
+Key: VADDPDZrmb: [ 0.00 0.00 ]
+Key: VADDPDZrmbk: [ 0.00 0.00 ]
+Key: VADDPDZrmbkz: [ 0.00 0.00 ]
+Key: VADDPDZrmk: [ 0.00 0.00 ]
+Key: VADDPDZrmkz: [ 0.00 0.00 ]
+Key: VADDPDZrr: [ 0.00 0.00 ]
+Key: VADDPDZrrb: [ 0.00 0.00 ]
+Key: VADDPDZrrbk: [ 0.00 0.00 ]
+Key: VADDPDZrrbkz: [ 0.00 0.00 ]
+Key: VADDPDZrrk: [ 0.00 0.00 ]
+Key: VADDPDZrrkz: [ 0.00 0.00 ]
+Key: VADDPDrm: [ 0.00 0.00 ]
+Key: VADDPDrr: [ 0.00 0.00 ]
+Key: VADDPHZ: [ 0.00 0.00 ]
+Key: VADDPHZrm: [ 0.00 0.00 ]
+Key: VADDPHZrmb: [ 0.00 0.00 ]
+Key: VADDPHZrmbk: [ 0.00 0.00 ]
+Key: VADDPHZrmbkz: [ 0.00 0.00 ]
+Key: VADDPHZrmk: [ 0.00 0.00 ]
+Key: VADDPHZrmkz: [ 0.00 0.00 ]
+Key: VADDPHZrr: [ 0.00 0.00 ]
+Key: VADDPHZrrb: [ 0.00 0.00 ]
+Key: VADDPHZrrbk: [ 0.00 0.00 ]
+Key: VADDPHZrrbkz: [ 0.00 0.00 ]
+Key: VADDPHZrrk: [ 0.00 0.00 ]
+Key: VADDPHZrrkz: [ 0.00 0.00 ]
+Key: VADDPSYrm: [ 0.00 0.00 ]
+Key: VADDPSYrr: [ 0.00 0.00 ]
+Key: VADDPSZ: [ 0.00 0.00 ]
+Key: VADDPSZrm: [ 0.00 0.00 ]
+Key: VADDPSZrmb: [ 0.00 0.00 ]
+Key: VADDPSZrmbk: [ 0.00 0.00 ]
+Key: VADDPSZrmbkz: [ 0.00 0.00 ]
+Key: VADDPSZrmk: [ 0.00 0.00 ]
+Key: VADDPSZrmkz: [ 0.00 0.00 ]
+Key: VADDPSZrr: [ 0.00 0.00 ]
+Key: VADDPSZrrb: [ 0.00 0.00 ]
+Key: VADDPSZrrbk: [ 0.00 0.00 ]
+Key: VADDPSZrrbkz: [ 0.00 0.00 ]
+Key: VADDPSZrrk: [ 0.00 0.00 ]
+Key: VADDPSZrrkz: [ 0.00 0.00 ]
+Key: VADDPSrm: [ 0.00 0.00 ]
+Key: VADDPSrr: [ 0.00 0.00 ]
+Key: VADDSDZrm: [ 0.00 0.00 ]
+Key: VADDSDZrm_Int: [ 0.00 0.00 ]
+Key: VADDSDZrmk_Int: [ 0.00 0.00 ]
+Key: VADDSDZrmkz_Int: [ 0.00 0.00 ]
+Key: VADDSDZrr: [ 0.00 0.00 ]
+Key: VADDSDZrr_Int: [ 0.00 0.00 ]
+Key: VADDSDZrrb_Int: [ 0.00 0.00 ]
+Key: VADDSDZrrbk_Int: [ 0.00 0.00 ]
+Key: VADDSDZrrbkz_Int: [ 0.00 0.00 ]
+Key: VADDSDZrrk_Int: [ 0.00 0.00 ]
+Key: VADDSDZrrkz_Int: [ 0.00 0.00 ]
+Key: VADDSDrm: [ 0.00 0.00 ]
+Key: VADDSDrm_Int: [ 0.00 0.00 ]
+Key: VADDSDrr: [ 0.00 0.00 ]
+Key: VADDSDrr_Int: [ 0.00 0.00 ]
+Key: VADDSHZrm: [ 0.00 0.00 ]
+Key: VADDSHZrm_Int: [ 0.00 0.00 ]
+Key: VADDSHZrmk_Int: [ 0.00 0.00 ]
+Key: VADDSHZrmkz_Int: [ 0.00 0.00 ]
+Key: VADDSHZrr: [ 0.00 0.00 ]
+Key: VADDSHZrr_Int: [ 0.00 0.00 ]
+Key: VADDSHZrrb_Int: [ 0.00 0.00 ]
+Key: VADDSHZrrbk_Int: [ 0.00 0.00 ]
+Key: VADDSHZrrbkz_Int: [ 0.00 0.00 ]
+Key: VADDSHZrrk_Int: [ 0.00 0.00 ]
+Key: VADDSHZrrkz_Int: [ 0.00 0.00 ]
+Key: VADDSSZrm: [ 0.00 0.00 ]
+Key: VADDSSZrm_Int: [ 0.00 0.00 ]
+Key: VADDSSZrmk_Int: [ 0.00 0.00 ]
+Key: VADDSSZrmkz_Int: [ 0.00 0.00 ]
+Key: VADDSSZrr: [ 0.00 0.00 ]
+Key: VADDSSZrr_Int: [ 0.00 0.00 ]
+Key: VADDSSZrrb_Int: [ 0.00 0.00 ]
+Key: VADDSSZrrbk_Int: [ 0.00 0.00 ]
+Key: VADDSSZrrbkz_Int: [ 0.00 0.00 ]
+Key: VADDSSZrrk_Int: [ 0.00 0.00 ]
+Key: VADDSSZrrkz_Int: [ 0.00 0.00 ]
+Key: VADDSSrm: [ 0.00 0.00 ]
+Key: VADDSSrm_Int: [ 0.00 0.00 ]
+Key: VADDSSrr: [ 0.00 0.00 ]
+Key: VADDSSrr_Int: [ 0.00 0.00 ]
+Key: VADDSUBPDYrm: [ 0.00 0.00 ]
+Key: VADDSUBPDYrr: [ 0.00 0.00 ]
+Key: VADDSUBPDrm: [ 0.00 0.00 ]
+Key: VADDSUBPDrr: [ 0.00 0.00 ]
+Key: VADDSUBPSYrm: [ 0.00 0.00 ]
+Key: VADDSUBPSYrr: [ 0.00 0.00 ]
+Key: VADDSUBPSrm: [ 0.00 0.00 ]
+Key: VADDSUBPSrr: [ 0.00 0.00 ]
+Key: VAESDECLASTYrm: [ 0.00 0.00 ]
+Key: VAESDECLASTYrr: [ 0.00 0.00 ]
+Key: VAESDECLASTZ: [ 0.00 0.00 ]
+Key: VAESDECLASTZrm: [ 0.00 0.00 ]
+Key: VAESDECLASTZrr: [ 0.00 0.00 ]
+Key: VAESDECLASTrm: [ 0.00 0.00 ]
+Key: VAESDECLASTrr: [ 0.00 0.00 ]
+Key: VAESDECYrm: [ 0.00 0.00 ]
+Key: VAESDECYrr: [ 0.00 0.00 ]
+Key: VAESDECZ: [ 0.00 0.00 ]
+Key: VAESDECZrm: [ 0.00 0.00 ]
+Key: VAESDECZrr: [ 0.00 0.00 ]
+Key: VAESDECrm: [ 0.00 0.00 ]
+Key: VAESDECrr: [ 0.00 0.00 ]
+Key: VAESENCLASTYrm: [ 0.00 0.00 ]
+Key: VAESENCLASTYrr: [ 0.00 0.00 ]
+Key: VAESENCLASTZ: [ 0.00 0.00 ]
+Key: VAESENCLASTZrm: [ 0.00 0.00 ]
+Key: VAESENCLASTZrr: [ 0.00 0.00 ]
+Key: VAESENCLASTrm: [ 0.00 0.00 ]
+Key: VAESENCLASTrr: [ 0.00 0.00 ]
+Key: VAESENCYrm: [ 0.00 0.00 ]
+Key: VAESENCYrr: [ 0.00 0.00 ]
+Key: VAESENCZ: [ 0.00 0.00 ]
+Key: VAESENCZrm: [ 0.00 0.00 ]
+Key: VAESENCZrr: [ 0.00 0.00 ]
+Key: VAESENCrm: [ 0.00 0.00 ]
+Key: VAESENCrr: [ 0.00 0.00 ]
+Key: VAESIMCrm: [ 0.00 0.00 ]
+Key: VAESIMCrr: [ 0.00 0.00 ]
+Key: VAESKEYGENASSISTrmi: [ 0.00 0.00 ]
+Key: VAESKEYGENASSISTrri: [ 0.00 0.00 ]
+Key: VALIGNDZ: [ 0.00 0.00 ]
+Key: VALIGNDZrmbi: [ 0.00 0.00 ]
+Key: VALIGNDZrmbik: [ 0.00 0.00 ]
+Key: VALIGNDZrmbikz: [ 0.00 0.00 ]
+Key: VALIGNDZrmi: [ 0.00 0.00 ]
+Key: VALIGNDZrmik: [ 0.00 0.00 ]
+Key: VALIGNDZrmikz: [ 0.00 0.00 ]
+Key: VALIGNDZrri: [ 0.00 0.00 ]
+Key: VALIGNDZrrik: [ 0.00 0.00 ]
+Key: VALIGNDZrrikz: [ 0.00 0.00 ]
+Key: VALIGNQZ: [ 0.00 0.00 ]
+Key: VALIGNQZrmbi: [ 0.00 0.00 ]
+Key: VALIGNQZrmbik: [ 0.00 0.00 ]
+Key: VALIGNQZrmbikz: [ 0.00 0.00 ]
+Key: VALIGNQZrmi: [ 0.00 0.00 ]
+Key: VALIGNQZrmik: [ 0.00 0.00 ]
+Key: VALIGNQZrmikz: [ 0.00 0.00 ]
+Key: VALIGNQZrri: [ 0.00 0.00 ]
+Key: VALIGNQZrrik: [ 0.00 0.00 ]
+Key: VALIGNQZrrikz: [ 0.00 0.00 ]
+Key: VANDNPDYrm: [ 0.00 0.00 ]
+Key: VANDNPDYrr: [ 0.00 0.00 ]
+Key: VANDNPDZ: [ 0.00 0.00 ]
+Key: VANDNPDZrm: [ 0.00 0.00 ]
+Key: VANDNPDZrmb: [ 0.00 0.00 ]
+Key: VANDNPDZrmbk: [ 0.00 0.00 ]
+Key: VANDNPDZrmbkz: [ 0.00 0.00 ]
+Key: VANDNPDZrmk: [ 0.00 0.00 ]
+Key: VANDNPDZrmkz: [ 0.00 0.00 ]
+Key: VANDNPDZrr: [ 0.00 0.00 ]
+Key: VANDNPDZrrk: [ 0.00 0.00 ]
+Key: VANDNPDZrrkz: [ 0.00 0.00 ]
+Key: VANDNPDrm: [ 0.00 0.00 ]
+Key: VANDNPDrr: [ 0.00 0.00 ]
+Key: VANDNPSYrm: [ 0.00 0.00 ]
+Key: VANDNPSYrr: [ 0.00 0.00 ]
+Key: VANDNPSZ: [ 0.00 0.00 ]
+Key: VANDNPSZrm: [ 0.00 0.00 ]
+Key: VANDNPSZrmb: [ 0.00 0.00 ]
+Key: VANDNPSZrmbk: [ 0.00 0.00 ]
+Key: VANDNPSZrmbkz: [ 0.00 0.00 ]
+Key: VANDNPSZrmk: [ 0.00 0.00 ]
+Key: VANDNPSZrmkz: [ 0.00 0.00 ]
+Key: VANDNPSZrr: [ 0.00 0.00 ]
+Key: VANDNPSZrrk: [ 0.00 0.00 ]
+Key: VANDNPSZrrkz: [ 0.00 0.00 ]
+Key: VANDNPSrm: [ 0.00 0.00 ]
+Key: VANDNPSrr: [ 0.00 0.00 ]
+Key: VANDPDYrm: [ 0.00 0.00 ]
+Key: VANDPDYrr: [ 0.00 0.00 ]
+Key: VANDPDZ: [ 0.00 0.00 ]
+Key: VANDPDZrm: [ 0.00 0.00 ]
+Key: VANDPDZrmb: [ 0.00 0.00 ]
+Key: VANDPDZrmbk: [ 0.00 0.00 ]
+Key: VANDPDZrmbkz: [ 0.00 0.00 ]
+Key: VANDPDZrmk: [ 0.00 0.00 ]
+Key: VANDPDZrmkz: [ 0.00 0.00 ]
+Key: VANDPDZrr: [ 0.00 0.00 ]
+Key: VANDPDZrrk: [ 0.00 0.00 ]
+Key: VANDPDZrrkz: [ 0.00 0.00 ]
+Key: VANDPDrm: [ 0.00 0.00 ]
+Key: VANDPDrr: [ 0.00 0.00 ]
+Key: VANDPSYrm: [ 0.00 0.00 ]
+Key: VANDPSYrr: [ 0.00 0.00 ]
+Key: VANDPSZ: [ 0.00 0.00 ]
+Key: VANDPSZrm: [ 0.00 0.00 ]
+Key: VANDPSZrmb: [ 0.00 0.00 ]
+Key: VANDPSZrmbk: [ 0.00 0.00 ]
+Key: VANDPSZrmbkz: [ 0.00 0.00 ]
+Key: VANDPSZrmk: [ 0.00 0.00 ]
+Key: VANDPSZrmkz: [ 0.00 0.00 ]
+Key: VANDPSZrr: [ 0.00 0.00 ]
+Key: VANDPSZrrk: [ 0.00 0.00 ]
+Key: VANDPSZrrkz: [ 0.00 0.00 ]
+Key: VANDPSrm: [ 0.00 0.00 ]
+Key: VANDPSrr: [ 0.00 0.00 ]
+Key: VASTART_SAVE_XMM_REGS: [ 0.00 0.00 ]
+Key: VBCSTNEBF: [ 0.00 0.00 ]
+Key: VBCSTNESH: [ 0.00 0.00 ]
+Key: VBLENDMPDZ: [ 0.00 0.00 ]
+Key: VBLENDMPDZrm: [ 0.00 0.00 ]
+Key: VBLENDMPDZrmb: [ 0.00 0.00 ]
+Key: VBLENDMPDZrmbk: [ 0.00 0.00 ]
+Key: VBLENDMPDZrmbkz: [ 0.00 0.00 ]
+Key: VBLENDMPDZrmk: [ 0.00 0.00 ]
+Key: VBLENDMPDZrmkz: [ 0.00 0.00 ]
+Key: VBLENDMPDZrr: [ 0.00 0.00 ]
+Key: VBLENDMPDZrrk: [ 0.00 0.00 ]
+Key: VBLENDMPDZrrkz: [ 0.00 0.00 ]
+Key: VBLENDMPSZ: [ 0.00 0.00 ]
+Key: VBLENDMPSZrm: [ 0.00 0.00 ]
+Key: VBLENDMPSZrmb: [ 0.00 0.00 ]
+Key: VBLENDMPSZrmbk: [ 0.00 0.00 ]
+Key: VBLENDMPSZrmbkz: [ 0.00 0.00 ]
+Key: VBLENDMPSZrmk: [ 0.00 0.00 ]
+Key: VBLENDMPSZrmkz: [ 0.00 0.00 ]
+Key: VBLENDMPSZrr: [ 0.00 0.00 ]
+Key: VBLENDMPSZrrk: [ 0.00 0.00 ]
+Key: VBLENDMPSZrrkz: [ 0.00 0.00 ]
+Key: VBLENDPDYrmi: [ 0.00 0.00 ]
+Key: VBLENDPDYrri: [ 0.00 0.00 ]
+Key: VBLENDPDrmi: [ 0.00 0.00 ]
+Key: VBLENDPDrri: [ 0.00 0.00 ]
+Key: VBLENDPSYrmi: [ 0.00 0.00 ]
+Key: VBLENDPSYrri: [ 0.00 0.00 ]
+Key: VBLENDPSrmi: [ 0.00 0.00 ]
+Key: VBLENDPSrri: [ 0.00 0.00 ]
+Key: VBLENDVPDYrmr: [ 0.00 0.00 ]
+Key: VBLENDVPDYrrr: [ 0.00 0.00 ]
+Key: VBLENDVPDrmr: [ 0.00 0.00 ]
+Key: VBLENDVPDrrr: [ 0.00 0.00 ]
+Key: VBLENDVPSYrmr: [ 0.00 0.00 ]
+Key: VBLENDVPSYrrr: [ 0.00 0.00 ]
+Key: VBLENDVPSrmr: [ 0.00 0.00 ]
+Key: VBLENDVPSrrr: [ 0.00 0.00 ]
+Key: VBROADCASTF: [ 0.00 0.00 ]
+Key: VBROADCASTI: [ 0.00 0.00 ]
+Key: VBROADCASTSDYrm: [ 0.00 0.00 ]
+Key: VBROADCASTSDYrr: [ 0.00 0.00 ]
+Key: VBROADCASTSDZ: [ 0.00 0.00 ]
+Key: VBROADCASTSDZrm: [ 0.00 0.00 ]
+Key: VBROADCASTSDZrmk: [ 0.00 0.00 ]
+Key: VBROADCASTSDZrmkz: [ 0.00 0.00 ]
+Key: VBROADCASTSDZrr: [ 0.00 0.00 ]
+Key: VBROADCASTSDZrrk: [ 0.00 0.00 ]
+Key: VBROADCASTSDZrrkz: [ 0.00 0.00 ]
+Key: VBROADCASTSSYrm: [ 0.00 0.00 ]
+Key: VBROADCASTSSYrr: [ 0.00 0.00 ]
+Key: VBROADCASTSSZ: [ 0.00 0.00 ]
+Key: VBROADCASTSSZrm: [ 0.00 0.00 ]
+Key: VBROADCASTSSZrmk: [ 0.00 0.00 ]
+Key: VBROADCASTSSZrmkz: [ 0.00 0.00 ]
+Key: VBROADCASTSSZrr: [ 0.00 0.00 ]
+Key: VBROADCASTSSZrrk: [ 0.00 0.00 ]
+Key: VBROADCASTSSZrrkz: [ 0.00 0.00 ]
+Key: VBROADCASTSSrm: [ 0.00 0.00 ]
+Key: VBROADCASTSSrr: [ 0.00 0.00 ]
+Key: VCMPBF: [ 0.00 0.00 ]
+Key: VCMPPDYrmi: [ 0.00 0.00 ]
+Key: VCMPPDYrri: [ 0.00 0.00 ]
+Key: VCMPPDZ: [ 0.00 0.00 ]
+Key: VCMPPDZrmbi: [ 0.00 0.00 ]
+Key: VCMPPDZrmbik: [ 0.00 0.00 ]
+Key: VCMPPDZrmi: [ 0.00 0.00 ]
+Key: VCMPPDZrmik: [ 0.00 0.00 ]
+Key: VCMPPDZrri: [ 0.00 0.00 ]
+Key: VCMPPDZrrib: [ 0.00 0.00 ]
+Key: VCMPPDZrribk: [ 0.00 0.00 ]
+Key: VCMPPDZrrik: [ 0.00 0.00 ]
+Key: VCMPPDrmi: [ 0.00 0.00 ]
+Key: VCMPPDrri: [ 0.00 0.00 ]
+Key: VCMPPHZ: [ 0.00 0.00 ]
+Key: VCMPPHZrmbi: [ 0.00 0.00 ]
+Key: VCMPPHZrmbik: [ 0.00 0.00 ]
+Key: VCMPPHZrmi: [ 0.00 0.00 ]
+Key: VCMPPHZrmik: [ 0.00 0.00 ]
+Key: VCMPPHZrri: [ 0.00 0.00 ]
+Key: VCMPPHZrrib: [ 0.00 0.00 ]
+Key: VCMPPHZrribk: [ 0.00 0.00 ]
+Key: VCMPPHZrrik: [ 0.00 0.00 ]
+Key: VCMPPSYrmi: [ 0.00 0.00 ]
+Key: VCMPPSYrri: [ 0.00 0.00 ]
+Key: VCMPPSZ: [ 0.00 0.00 ]
+Key: VCMPPSZrmbi: [ 0.00 0.00 ]
+Key: VCMPPSZrmbik: [ 0.00 0.00 ]
+Key: VCMPPSZrmi: [ 0.00 0.00 ]
+Key: VCMPPSZrmik: [ 0.00 0.00 ]
+Key: VCMPPSZrri: [ 0.00 0.00 ]
+Key: VCMPPSZrrib: [ 0.00 0.00 ]
+Key: VCMPPSZrribk: [ 0.00 0.00 ]
+Key: VCMPPSZrrik: [ 0.00 0.00 ]
+Key: VCMPPSrmi: [ 0.00 0.00 ]
+Key: VCMPPSrri: [ 0.00 0.00 ]
+Key: VCMPSDZrmi: [ 0.00 0.00 ]
+Key: VCMPSDZrmi_Int: [ 0.00 0.00 ]
+Key: VCMPSDZrmik_Int: [ 0.00 0.00 ]
+Key: VCMPSDZrri: [ 0.00 0.00 ]
+Key: VCMPSDZrri_Int: [ 0.00 0.00 ]
+Key: VCMPSDZrrib_Int: [ 0.00 0.00 ]
+Key: VCMPSDZrribk_Int: [ 0.00 0.00 ]
+Key: VCMPSDZrrik_Int: [ 0.00 0.00 ]
+Key: VCMPSDrmi: [ 0.00 0.00 ]
+Key: VCMPSDrmi_Int: [ 0.00 0.00 ]
+Key: VCMPSDrri: [ 0.00 0.00 ]
+Key: VCMPSDrri_Int: [ 0.00 0.00 ]
+Key: VCMPSHZrmi: [ 0.00 0.00 ]
+Key: VCMPSHZrmi_Int: [ 0.00 0.00 ]
+Key: VCMPSHZrmik_Int: [ 0.00 0.00 ]
+Key: VCMPSHZrri: [ 0.00 0.00 ]
+Key: VCMPSHZrri_Int: [ 0.00 0.00 ]
+Key: VCMPSHZrrib_Int: [ 0.00 0.00 ]
+Key: VCMPSHZrribk_Int: [ 0.00 0.00 ]
+Key: VCMPSHZrrik_Int: [ 0.00 0.00 ]
+Key: VCMPSSZrmi: [ 0.00 0.00 ]
+Key: VCMPSSZrmi_Int: [ 0.00 0.00 ]
+Key: VCMPSSZrmik_Int: [ 0.00 0.00 ]
+Key: VCMPSSZrri: [ 0.00 0.00 ]
+Key: VCMPSSZrri_Int: [ 0.00 0.00 ]
+Key: VCMPSSZrrib_Int: [ 0.00 0.00 ]
+Key: VCMPSSZrribk_Int: [ 0.00 0.00 ]
+Key: VCMPSSZrrik_Int: [ 0.00 0.00 ]
+Key: VCMPSSrmi: [ 0.00 0.00 ]
+Key: VCMPSSrmi_Int: [ 0.00 0.00 ]
+Key: VCMPSSrri: [ 0.00 0.00 ]
+Key: VCMPSSrri_Int: [ 0.00 0.00 ]
+Key: VCOMISBF: [ 0.00 0.00 ]
+Key: VCOMISDZrm: [ 0.00 0.00 ]
+Key: VCOMISDZrm_Int: [ 0.00 0.00 ]
+Key: VCOMISDZrr: [ 0.00 0.00 ]
+Key: VCOMISDZrr_Int: [ 0.00 0.00 ]
+Key: VCOMISDZrrb: [ 0.00 0.00 ]
+Key: VCOMISDrm: [ 0.00 0.00 ]
+Key: VCOMISDrm_Int: [ 0.00 0.00 ]
+Key: VCOMISDrr: [ 0.00 0.00 ]
+Key: VCOMISDrr_Int: [ 0.00 0.00 ]
+Key: VCOMISHZrm: [ 0.00 0.00 ]
+Key: VCOMISHZrm_Int: [ 0.00 0.00 ]
+Key: VCOMISHZrr: [ 0.00 0.00 ]
+Key: VCOMISHZrr_Int: [ 0.00 0.00 ]
+Key: VCOMISHZrrb: [ 0.00 0.00 ]
+Key: VCOMISSZrm: [ 0.00 0.00 ]
+Key: VCOMISSZrm_Int: [ 0.00 0.00 ]
+Key: VCOMISSZrr: [ 0.00 0.00 ]
+Key: VCOMISSZrr_Int: [ 0.00 0.00 ]
+Key: VCOMISSZrrb: [ 0.00 0.00 ]
+Key: VCOMISSrm: [ 0.00 0.00 ]
+Key: VCOMISSrm_Int: [ 0.00 0.00 ]
+Key: VCOMISSrr: [ 0.00 0.00 ]
+Key: VCOMISSrr_Int: [ 0.00 0.00 ]
+Key: VCOMPRESSPDZ: [ 0.00 0.00 ]
+Key: VCOMPRESSPDZmr: [ 0.00 0.00 ]
+Key: VCOMPRESSPDZmrk: [ 0.00 0.00 ]
+Key: VCOMPRESSPDZrr: [ 0.00 0.00 ]
+Key: VCOMPRESSPDZrrk: [ 0.00 0.00 ]
+Key: VCOMPRESSPDZrrkz: [ 0.00 0.00 ]
+Key: VCOMPRESSPSZ: [ 0.00 0.00 ]
+Key: VCOMPRESSPSZmr: [ 0.00 0.00 ]
+Key: VCOMPRESSPSZmrk: [ 0.00 0.00 ]
+Key: VCOMPRESSPSZrr: [ 0.00 0.00 ]
+Key: VCOMPRESSPSZrrk: [ 0.00 0.00 ]
+Key: VCOMPRESSPSZrrkz: [ 0.00 0.00 ]
+Key: VCOMXSDZrm_Int: [ 0.00 0.00 ]
+Key: VCOMXSDZrr_Int: [ 0.00 0.00 ]
+Key: VCOMXSDZrrb_Int: [ 0.00 0.00 ]
+Key: VCOMXSHZrm_Int: [ 0.00 0.00 ]
+Key: VCOMXSHZrr_Int: [ 0.00 0.00 ]
+Key: VCOMXSHZrrb_Int: [ 0.00 0.00 ]
+Key: VCOMXSSZrm_Int: [ 0.00 0.00 ]
+Key: VCOMXSSZrr_Int: [ 0.00 0.00 ]
+Key: VCOMXSSZrrb_Int: [ 0.00 0.00 ]
+Key: VCVT: [ 0.00 0.00 ]
+Key: VCVTBF: [ 0.00 0.00 ]
+Key: VCVTBIASPH: [ 0.00 0.00 ]
+Key: VCVTDQ: [ 0.00 0.00 ]
+Key: VCVTHF: [ 0.00 0.00 ]
+Key: VCVTNE: [ 0.00 0.00 ]
+Key: VCVTNEEBF: [ 0.00 0.00 ]
+Key: VCVTNEEPH: [ 0.00 0.00 ]
+Key: VCVTNEOBF: [ 0.00 0.00 ]
+Key: VCVTNEOPH: [ 0.00 0.00 ]
+Key: VCVTNEPS: [ 0.00 0.00 ]
+Key: VCVTPD: [ 0.00 0.00 ]
+Key: VCVTPH: [ 0.00 0.00 ]
+Key: VCVTPS: [ 0.00 0.00 ]
+Key: VCVTQQ: [ 0.00 0.00 ]
+Key: VCVTSD: [ 0.00 0.00 ]
+Key: VCVTSH: [ 0.00 0.00 ]
+Key: VCVTSI: [ 0.00 0.00 ]
+Key: VCVTSS: [ 0.00 0.00 ]
+Key: VCVTTBF: [ 0.00 0.00 ]
+Key: VCVTTPD: [ 0.00 0.00 ]
+Key: VCVTTPH: [ 0.00 0.00 ]
+Key: VCVTTPS: [ 0.00 0.00 ]
+Key: VCVTTSD: [ 0.00 0.00 ]
+Key: VCVTTSH: [ 0.00 0.00 ]
+Key: VCVTTSS: [ 0.00 0.00 ]
+Key: VCVTUDQ: [ 0.00 0.00 ]
+Key: VCVTUQQ: [ 0.00 0.00 ]
+Key: VCVTUSI: [ 0.00 0.00 ]
+Key: VCVTUW: [ 0.00 0.00 ]
+Key: VCVTW: [ 0.00 0.00 ]
+Key: VDBPSADBWZ: [ 0.00 0.00 ]
+Key: VDBPSADBWZrmi: [ 0.00 0.00 ]
+Key: VDBPSADBWZrmik: [ 0.00 0.00 ]
+Key: VDBPSADBWZrmikz: [ 0.00 0.00 ]
+Key: VDBPSADBWZrri: [ 0.00 0.00 ]
+Key: VDBPSADBWZrrik: [ 0.00 0.00 ]
+Key: VDBPSADBWZrrikz: [ 0.00 0.00 ]
+Key: VDIVBF: [ 0.00 0.00 ]
+Key: VDIVPDYrm: [ 0.00 0.00 ]
+Key: VDIVPDYrr: [ 0.00 0.00 ]
+Key: VDIVPDZ: [ 0.00 0.00 ]
+Key: VDIVPDZrm: [ 0.00 0.00 ]
+Key: VDIVPDZrmb: [ 0.00 0.00 ]
+Key: VDIVPDZrmbk: [ 0.00 0.00 ]
+Key: VDIVPDZrmbkz: [ 0.00 0.00 ]
+Key: VDIVPDZrmk: [ 0.00 0.00 ]
+Key: VDIVPDZrmkz: [ 0.00 0.00 ]
+Key: VDIVPDZrr: [ 0.00 0.00 ]
+Key: VDIVPDZrrb: [ 0.00 0.00 ]
+Key: VDIVPDZrrbk: [ 0.00 0.00 ]
+Key: VDIVPDZrrbkz: [ 0.00 0.00 ]
+Key: VDIVPDZrrk: [ 0.00 0.00 ]
+Key: VDIVPDZrrkz: [ 0.00 0.00 ]
+Key: VDIVPDrm: [ 0.00 0.00 ]
+Key: VDIVPDrr: [ 0.00 0.00 ]
+Key: VDIVPHZ: [ 0.00 0.00 ]
+Key: VDIVPHZrm: [ 0.00 0.00 ]
+Key: VDIVPHZrmb: [ 0.00 0.00 ]
+Key: VDIVPHZrmbk: [ 0.00 0.00 ]
+Key: VDIVPHZrmbkz: [ 0.00 0.00 ]
+Key: VDIVPHZrmk: [ 0.00 0.00 ]
+Key: VDIVPHZrmkz: [ 0.00 0.00 ]
+Key: VDIVPHZrr: [ 0.00 0.00 ]
+Key: VDIVPHZrrb: [ 0.00 0.00 ]
+Key: VDIVPHZrrbk: [ 0.00 0.00 ]
+Key: VDIVPHZrrbkz: [ 0.00 0.00 ]
+Key: VDIVPHZrrk: [ 0.00 0.00 ]
+Key: VDIVPHZrrkz: [ 0.00 0.00 ]
+Key: VDIVPSYrm: [ 0.00 0.00 ]
+Key: VDIVPSYrr: [ 0.00 0.00 ]
+Key: VDIVPSZ: [ 0.00 0.00 ]
+Key: VDIVPSZrm: [ 0.00 0.00 ]
+Key: VDIVPSZrmb: [ 0.00 0.00 ]
+Key: VDIVPSZrmbk: [ 0.00 0.00 ]
+Key: VDIVPSZrmbkz: [ 0.00 0.00 ]
+Key: VDIVPSZrmk: [ 0.00 0.00 ]
+Key: VDIVPSZrmkz: [ 0.00 0.00 ]
+Key: VDIVPSZrr: [ 0.00 0.00 ]
+Key: VDIVPSZrrb: [ 0.00 0.00 ]
+Key: VDIVPSZrrbk: [ 0.00 0.00 ]
+Key: VDIVPSZrrbkz: [ 0.00 0.00 ]
+Key: VDIVPSZrrk: [ 0.00 0.00 ]
+Key: VDIVPSZrrkz: [ 0.00 0.00 ]
+Key: VDIVPSrm: [ 0.00 0.00 ]
+Key: VDIVPSrr: [ 0.00 0.00 ]
+Key: VDIVSDZrm: [ 0.00 0.00 ]
+Key: VDIVSDZrm_Int: [ 0.00 0.00 ]
+Key: VDIVSDZrmk_Int: [ 0.00 0.00 ]
+Key: VDIVSDZrmkz_Int: [ 0.00 0.00 ]
+Key: VDIVSDZrr: [ 0.00 0.00 ]
+Key: VDIVSDZrr_Int: [ 0.00 0.00 ]
+Key: VDIVSDZrrb_Int: [ 0.00 0.00 ]
+Key: VDIVSDZrrbk_Int: [ 0.00 0.00 ]
+Key: VDIVSDZrrbkz_Int: [ 0.00 0.00 ]
+Key: VDIVSDZrrk_Int: [ 0.00 0.00 ]
+Key: VDIVSDZrrkz_Int: [ 0.00 0.00 ]
+Key: VDIVSDrm: [ 0.00 0.00 ]
+Key: VDIVSDrm_Int: [ 0.00 0.00 ]
+Key: VDIVSDrr: [ 0.00 0.00 ]
+Key: VDIVSDrr_Int: [ 0.00 0.00 ]
+Key: VDIVSHZrm: [ 0.00 0.00 ]
+Key: VDIVSHZrm_Int: [ 0.00 0.00 ]
+Key: VDIVSHZrmk_Int: [ 0.00 0.00 ]
+Key: VDIVSHZrmkz_Int: [ 0.00 0.00 ]
+Key: VDIVSHZrr: [ 0.00 0.00 ]
+Key: VDIVSHZrr_Int: [ 0.00 0.00 ]
+Key: VDIVSHZrrb_Int: [ 0.00 0.00 ]
+Key: VDIVSHZrrbk_Int: [ 0.00 0.00 ]
+Key: VDIVSHZrrbkz_Int: [ 0.00 0.00 ]
+Key: VDIVSHZrrk_Int: [ 0.00 0.00 ]
+Key: VDIVSHZrrkz_Int: [ 0.00 0.00 ]
+Key: VDIVSSZrm: [ 0.00 0.00 ]
+Key: VDIVSSZrm_Int: [ 0.00 0.00 ]
+Key: VDIVSSZrmk_Int: [ 0.00 0.00 ]
+Key: VDIVSSZrmkz_Int: [ 0.00 0.00 ]
+Key: VDIVSSZrr: [ 0.00 0.00 ]
+Key: VDIVSSZrr_Int: [ 0.00 0.00 ]
+Key: VDIVSSZrrb_Int: [ 0.00 0.00 ]
+Key: VDIVSSZrrbk_Int: [ 0.00 0.00 ]
+Key: VDIVSSZrrbkz_Int: [ 0.00 0.00 ]
+Key: VDIVSSZrrk_Int: [ 0.00 0.00 ]
+Key: VDIVSSZrrkz_Int: [ 0.00 0.00 ]
+Key: VDIVSSrm: [ 0.00 0.00 ]
+Key: VDIVSSrm_Int: [ 0.00 0.00 ]
+Key: VDIVSSrr: [ 0.00 0.00 ]
+Key: VDIVSSrr_Int: [ 0.00 0.00 ]
+Key: VDPBF: [ 0.00 0.00 ]
+Key: VDPPDrmi: [ 0.00 0.00 ]
+Key: VDPPDrri: [ 0.00 0.00 ]
+Key: VDPPHPSZ: [ 0.00 0.00 ]
+Key: VDPPHPSZm: [ 0.00 0.00 ]
+Key: VDPPHPSZmb: [ 0.00 0.00 ]
+Key: VDPPHPSZmbk: [ 0.00 0.00 ]
+Key: VDPPHPSZmbkz: [ 0.00 0.00 ]
+Key: VDPPHPSZmk: [ 0.00 0.00 ]
+Key: VDPPHPSZmkz: [ 0.00 0.00 ]
+Key: VDPPHPSZr: [ 0.00 0.00 ]
+Key: VDPPHPSZrk: [ 0.00 0.00 ]
+Key: VDPPHPSZrkz: [ 0.00 0.00 ]
+Key: VDPPSYrmi: [ 0.00 0.00 ]
+Key: VDPPSYrri: [ 0.00 0.00 ]
+Key: VDPPSrmi: [ 0.00 0.00 ]
+Key: VDPPSrri: [ 0.00 0.00 ]
+Key: VERRm: [ 0.00 0.00 ]
+Key: VERRr: [ 0.00 0.00 ]
+Key: VERWm: [ 0.00 0.00 ]
+Key: VERWr: [ 0.00 0.00 ]
+Key: VEXP: [ 0.00 0.00 ]
+Key: VEXPANDPDZ: [ 0.00 0.00 ]
+Key: VEXPANDPDZrm: [ 0.00 0.00 ]
+Key: VEXPANDPDZrmk: [ 0.00 0.00 ]
+Key: VEXPANDPDZrmkz: [ 0.00 0.00 ]
+Key: VEXPANDPDZrr: [ 0.00 0.00 ]
+Key: VEXPANDPDZrrk: [ 0.00 0.00 ]
+Key: VEXPANDPDZrrkz: [ 0.00 0.00 ]
+Key: VEXPANDPSZ: [ 0.00 0.00 ]
+Key: VEXPANDPSZrm: [ 0.00 0.00 ]
+Key: VEXPANDPSZrmk: [ 0.00 0.00 ]
+Key: VEXPANDPSZrmkz: [ 0.00 0.00 ]
+Key: VEXPANDPSZrr: [ 0.00 0.00 ]
+Key: VEXPANDPSZrrk: [ 0.00 0.00 ]
+Key: VEXPANDPSZrrkz: [ 0.00 0.00 ]
+Key: VEXTRACTF: [ 0.00 0.00 ]
+Key: VEXTRACTI: [ 0.00 0.00 ]
+Key: VEXTRACTPSZmri: [ 0.00 0.00 ]
+Key: VEXTRACTPSZrri: [ 0.00 0.00 ]
+Key: VEXTRACTPSmri: [ 0.00 0.00 ]
+Key: VEXTRACTPSrri: [ 0.00 0.00 ]
+Key: VFCMADDCPHZ: [ 0.00 0.00 ]
+Key: VFCMADDCPHZm: [ 0.00 0.00 ]
+Key: VFCMADDCPHZmb: [ 0.00 0.00 ]
+Key: VFCMADDCPHZmbk: [ 0.00 0.00 ]
+Key: VFCMADDCPHZmbkz: [ 0.00 0.00 ]
+Key: VFCMADDCPHZmk: [ 0.00 0.00 ]
+Key: VFCMADDCPHZmkz: [ 0.00 0.00 ]
+Key: VFCMADDCPHZr: [ 0.00 0.00 ]
+Key: VFCMADDCPHZrb: [ 0.00 0.00 ]
+Key: VFCMADDCPHZrbk: [ 0.00 0.00 ]
+Key: VFCMADDCPHZrbkz: [ 0.00 0.00 ]
+Key: VFCMADDCPHZrk: [ 0.00 0.00 ]
+Key: VFCMADDCPHZrkz: [ 0.00 0.00 ]
+Key: VFCMADDCSHZm: [ 0.00 0.00 ]
+Key: VFCMADDCSHZmk: [ 0.00 0.00 ]
+Key: VFCMADDCSHZmkz: [ 0.00 0.00 ]
+Key: VFCMADDCSHZr: [ 0.00 0.00 ]
+Key: VFCMADDCSHZrb: [ 0.00 0.00 ]
+Key: VFCMADDCSHZrbk: [ 0.00 0.00 ]
+Key: VFCMADDCSHZrbkz: [ 0.00 0.00 ]
+Key: VFCMADDCSHZrk: [ 0.00 0.00 ]
+Key: VFCMADDCSHZrkz: [ 0.00 0.00 ]
+Key: VFCMULCPHZ: [ 0.00 0.00 ]
+Key: VFCMULCPHZrm: [ 0.00 0.00 ]
+Key: VFCMULCPHZrmb: [ 0.00 0.00 ]
+Key: VFCMULCPHZrmbk: [ 0.00 0.00 ]
+Key: VFCMULCPHZrmbkz: [ 0.00 0.00 ]
+Key: VFCMULCPHZrmk: [ 0.00 0.00 ]
+Key: VFCMULCPHZrmkz: [ 0.00 0.00 ]
+Key: VFCMULCPHZrr: [ 0.00 0.00 ]
+Key: VFCMULCPHZrrb: [ 0.00 0.00 ]
+Key: VFCMULCPHZrrbk: [ 0.00 0.00 ]
+Key: VFCMULCPHZrrbkz: [ 0.00 0.00 ]
+Key: VFCMULCPHZrrk: [ 0.00 0.00 ]
+Key: VFCMULCPHZrrkz: [ 0.00 0.00 ]
+Key: VFCMULCSHZrm: [ 0.00 0.00 ]
+Key: VFCMULCSHZrmk: [ 0.00 0.00 ]
+Key: VFCMULCSHZrmkz: [ 0.00 0.00 ]
+Key: VFCMULCSHZrr: [ 0.00 0.00 ]
+Key: VFCMULCSHZrrb: [ 0.00 0.00 ]
+Key: VFCMULCSHZrrbk: [ 0.00 0.00 ]
+Key: VFCMULCSHZrrbkz: [ 0.00 0.00 ]
+Key: VFCMULCSHZrrk: [ 0.00 0.00 ]
+Key: VFCMULCSHZrrkz: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZ: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrmbi: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrmbik: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrmbikz: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrmi: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrmik: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrmikz: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrri: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrrib: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrribk: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrribkz: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrrik: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrrikz: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZ: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrmbi: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrmbik: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrmbikz: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrmi: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrmik: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrmikz: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrri: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrrib: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrribk: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrribkz: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrrik: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrrikz: [ 0.00 0.00 ]
+Key: VFIXUPIMMSDZrmi: [ 0.00 0.00 ]
+Key: VFIXUPIMMSDZrmik: [ 0.00 0.00 ]
+Key: VFIXUPIMMSDZrmikz: [ 0.00 0.00 ]
+Key: VFIXUPIMMSDZrri: [ 0.00 0.00 ]
+Key: VFIXUPIMMSDZrrib: [ 0.00 0.00 ]
+Key: VFIXUPIMMSDZrribk: [ 0.00 0.00 ]
+Key: VFIXUPIMMSDZrribkz: [ 0.00 0.00 ]
+Key: VFIXUPIMMSDZrrik: [ 0.00 0.00 ]
+Key: VFIXUPIMMSDZrrikz: [ 0.00 0.00 ]
+Key: VFIXUPIMMSSZrmi: [ 0.00 0.00 ]
+Key: VFIXUPIMMSSZrmik: [ 0.00 0.00 ]
+Key: VFIXUPIMMSSZrmikz: [ 0.00 0.00 ]
+Key: VFIXUPIMMSSZrri: [ 0.00 0.00 ]
+Key: VFIXUPIMMSSZrrib: [ 0.00 0.00 ]
+Key: VFIXUPIMMSSZrribk: [ 0.00 0.00 ]
+Key: VFIXUPIMMSSZrribkz: [ 0.00 0.00 ]
+Key: VFIXUPIMMSSZrrik: [ 0.00 0.00 ]
+Key: VFIXUPIMMSSZrrikz: [ 0.00 0.00 ]
+Key: VFMADD: [ 0.00 0.00 ]
+Key: VFMADDCPHZ: [ 0.00 0.00 ]
+Key: VFMADDCPHZm: [ 0.00 0.00 ]
+Key: VFMADDCPHZmb: [ 0.00 0.00 ]
+Key: VFMADDCPHZmbk: [ 0.00 0.00 ]
+Key: VFMADDCPHZmbkz: [ 0.00 0.00 ]
+Key: VFMADDCPHZmk: [ 0.00 0.00 ]
+Key: VFMADDCPHZmkz: [ 0.00 0.00 ]
+Key: VFMADDCPHZr: [ 0.00 0.00 ]
+Key: VFMADDCPHZrb: [ 0.00 0.00 ]
+Key: VFMADDCPHZrbk: [ 0.00 0.00 ]
+Key: VFMADDCPHZrbkz: [ 0.00 0.00 ]
+Key: VFMADDCPHZrk: [ 0.00 0.00 ]
+Key: VFMADDCPHZrkz: [ 0.00 0.00 ]
+Key: VFMADDCSHZm: [ 0.00 0.00 ]
+Key: VFMADDCSHZmk: [ 0.00 0.00 ]
+Key: VFMADDCSHZmkz: [ 0.00 0.00 ]
+Key: VFMADDCSHZr: [ 0.00 0.00 ]
+Key: VFMADDCSHZrb: [ 0.00 0.00 ]
+Key: VFMADDCSHZrbk: [ 0.00 0.00 ]
+Key: VFMADDCSHZrbkz: [ 0.00 0.00 ]
+Key: VFMADDCSHZrk: [ 0.00 0.00 ]
+Key: VFMADDCSHZrkz: [ 0.00 0.00 ]
+Key: VFMADDPD: [ 0.00 0.00 ]
+Key: VFMADDPS: [ 0.00 0.00 ]
+Key: VFMADDSD: [ 0.00 0.00 ]
+Key: VFMADDSS: [ 0.00 0.00 ]
+Key: VFMADDSUB: [ 0.00 0.00 ]
+Key: VFMADDSUBPD: [ 0.00 0.00 ]
+Key: VFMADDSUBPS: [ 0.00 0.00 ]
+Key: VFMSUB: [ 0.00 0.00 ]
+Key: VFMSUBADD: [ 0.00 0.00 ]
+Key: VFMSUBADDPD: [ 0.00 0.00 ]
+Key: VFMSUBADDPS: [ 0.00 0.00 ]
+Key: VFMSUBPD: [ 0.00 0.00 ]
+Key: VFMSUBPS: [ 0.00 0.00 ]
+Key: VFMSUBSD: [ 0.00 0.00 ]
+Key: VFMSUBSS: [ 0.00 0.00 ]
+Key: VFMULCPHZ: [ 0.00 0.00 ]
+Key: VFMULCPHZrm: [ 0.00 0.00 ]
+Key: VFMULCPHZrmb: [ 0.00 0.00 ]
+Key: VFMULCPHZrmbk: [ 0.00 0.00 ]
+Key: VFMULCPHZrmbkz: [ 0.00 0.00 ]
+Key: VFMULCPHZrmk: [ 0.00 0.00 ]
+Key: VFMULCPHZrmkz: [ 0.00 0.00 ]
+Key: VFMULCPHZrr: [ 0.00 0.00 ]
+Key: VFMULCPHZrrb: [ 0.00 0.00 ]
+Key: VFMULCPHZrrbk: [ 0.00 0.00 ]
+Key: VFMULCPHZrrbkz: [ 0.00 0.00 ]
+Key: VFMULCPHZrrk: [ 0.00 0.00 ]
+Key: VFMULCPHZrrkz: [ 0.00 0.00 ]
+Key: VFMULCSHZrm: [ 0.00 0.00 ]
+Key: VFMULCSHZrmk: [ 0.00 0.00 ]
+Key: VFMULCSHZrmkz: [ 0.00 0.00 ]
+Key: VFMULCSHZrr: [ 0.00 0.00 ]
+Key: VFMULCSHZrrb: [ 0.00 0.00 ]
+Key: VFMULCSHZrrbk: [ 0.00 0.00 ]
+Key: VFMULCSHZrrbkz: [ 0.00 0.00 ]
+Key: VFMULCSHZrrk: [ 0.00 0.00 ]
+Key: VFMULCSHZrrkz: [ 0.00 0.00 ]
+Key: VFNMADD: [ 0.00 0.00 ]
+Key: VFNMADDPD: [ 0.00 0.00 ]
+Key: VFNMADDPS: [ 0.00 0.00 ]
+Key: VFNMADDSD: [ 0.00 0.00 ]
+Key: VFNMADDSS: [ 0.00 0.00 ]
+Key: VFNMSUB: [ 0.00 0.00 ]
+Key: VFNMSUBPD: [ 0.00 0.00 ]
+Key: VFNMSUBPS: [ 0.00 0.00 ]
+Key: VFNMSUBSD: [ 0.00 0.00 ]
+Key: VFNMSUBSS: [ 0.00 0.00 ]
+Key: VFPCLASSBF: [ 0.00 0.00 ]
+Key: VFPCLASSPDZ: [ 0.00 0.00 ]
+Key: VFPCLASSPDZmbi: [ 0.00 0.00 ]
+Key: VFPCLASSPDZmbik: [ 0.00 0.00 ]
+Key: VFPCLASSPDZmi: [ 0.00 0.00 ]
+Key: VFPCLASSPDZmik: [ 0.00 0.00 ]
+Key: VFPCLASSPDZri: [ 0.00 0.00 ]
+Key: VFPCLASSPDZrik: [ 0.00 0.00 ]
+Key: VFPCLASSPHZ: [ 0.00 0.00 ]
+Key: VFPCLASSPHZmbi: [ 0.00 0.00 ]
+Key: VFPCLASSPHZmbik: [ 0.00 0.00 ]
+Key: VFPCLASSPHZmi: [ 0.00 0.00 ]
+Key: VFPCLASSPHZmik: [ 0.00 0.00 ]
+Key: VFPCLASSPHZri: [ 0.00 0.00 ]
+Key: VFPCLASSPHZrik: [ 0.00 0.00 ]
+Key: VFPCLASSPSZ: [ 0.00 0.00 ]
+Key: VFPCLASSPSZmbi: [ 0.00 0.00 ]
+Key: VFPCLASSPSZmbik: [ 0.00 0.00 ]
+Key: VFPCLASSPSZmi: [ 0.00 0.00 ]
+Key: VFPCLASSPSZmik: [ 0.00 0.00 ]
+Key: VFPCLASSPSZri: [ 0.00 0.00 ]
+Key: VFPCLASSPSZrik: [ 0.00 0.00 ]
+Key: VFPCLASSSDZmi: [ 0.00 0.00 ]
+Key: VFPCLASSSDZmik: [ 0.00 0.00 ]
+Key: VFPCLASSSDZri: [ 0.00 0.00 ]
+Key: VFPCLASSSDZrik: [ 0.00 0.00 ]
+Key: VFPCLASSSHZmi: [ 0.00 0.00 ]
+Key: VFPCLASSSHZmik: [ 0.00 0.00 ]
+Key: VFPCLASSSHZri: [ 0.00 0.00 ]
+Key: VFPCLASSSHZrik: [ 0.00 0.00 ]
+Key: VFPCLASSSSZmi: [ 0.00 0.00 ]
+Key: VFPCLASSSSZmik: [ 0.00 0.00 ]
+Key: VFPCLASSSSZri: [ 0.00 0.00 ]
+Key: VFPCLASSSSZrik: [ 0.00 0.00 ]
+Key: VFRCZPDYrm: [ 0.00 0.00 ]
+Key: VFRCZPDYrr: [ 0.00 0.00 ]
+Key: VFRCZPDrm: [ 0.00 0.00 ]
+Key: VFRCZPDrr: [ 0.00 0.00 ]
+Key: VFRCZPSYrm: [ 0.00 0.00 ]
+Key: VFRCZPSYrr: [ 0.00 0.00 ]
+Key: VFRCZPSrm: [ 0.00 0.00 ]
+Key: VFRCZPSrr: [ 0.00 0.00 ]
+Key: VFRCZSDrm: [ 0.00 0.00 ]
+Key: VFRCZSDrr: [ 0.00 0.00 ]
+Key: VFRCZSSrm: [ 0.00 0.00 ]
+Key: VFRCZSSrr: [ 0.00 0.00 ]
+Key: VGATHERDPDYrm: [ 0.00 0.00 ]
+Key: VGATHERDPDZ: [ 0.00 0.00 ]
+Key: VGATHERDPDZrm: [ 0.00 0.00 ]
+Key: VGATHERDPDrm: [ 0.00 0.00 ]
+Key: VGATHERDPSYrm: [ 0.00 0.00 ]
+Key: VGATHERDPSZ: [ 0.00 0.00 ]
+Key: VGATHERDPSZrm: [ 0.00 0.00 ]
+Key: VGATHERDPSrm: [ 0.00 0.00 ]
+Key: VGATHERPF: [ 0.00 0.00 ]
+Key: VGATHERQPDYrm: [ 0.00 0.00 ]
+Key: VGATHERQPDZ: [ 0.00 0.00 ]
+Key: VGATHERQPDZrm: [ 0.00 0.00 ]
+Key: VGATHERQPDrm: [ 0.00 0.00 ]
+Key: VGATHERQPSYrm: [ 0.00 0.00 ]
+Key: VGATHERQPSZ: [ 0.00 0.00 ]
+Key: VGATHERQPSZrm: [ 0.00 0.00 ]
+Key: VGATHERQPSrm: [ 0.00 0.00 ]
+Key: VGETEXPBF: [ 0.00 0.00 ]
+Key: VGETEXPPDZ: [ 0.00 0.00 ]
+Key: VGETEXPPDZm: [ 0.00 0.00 ]
+Key: VGETEXPPDZmb: [ 0.00 0.00 ]
+Key: VGETEXPPDZmbk: [ 0.00 0.00 ]
+Key: VGETEXPPDZmbkz: [ 0.00 0.00 ]
+Key: VGETEXPPDZmk: [ 0.00 0.00 ]
+Key: VGETEXPPDZmkz: [ 0.00 0.00 ]
+Key: VGETEXPPDZr: [ 0.00 0.00 ]
+Key: VGETEXPPDZrb: [ 0.00 0.00 ]
+Key: VGETEXPPDZrbk: [ 0.00 0.00 ]
+Key: VGETEXPPDZrbkz: [ 0.00 0.00 ]
+Key: VGETEXPPDZrk: [ 0.00 0.00 ]
+Key: VGETEXPPDZrkz: [ 0.00 0.00 ]
+Key: VGETEXPPHZ: [ 0.00 0.00 ]
+Key: VGETEXPPHZm: [ 0.00 0.00 ]
+Key: VGETEXPPHZmb: [ 0.00 0.00 ]
+Key: VGETEXPPHZmbk: [ 0.00 0.00 ]
+Key: VGETEXPPHZmbkz: [ 0.00 0.00 ]
+Key: VGETEXPPHZmk: [ 0.00 0.00 ]
+Key: VGETEXPPHZmkz: [ 0.00 0.00 ]
+Key: VGETEXPPHZr: [ 0.00 0.00 ]
+Key: VGETEXPPHZrb: [ 0.00 0.00 ]
+Key: VGETEXPPHZrbk: [ 0.00 0.00 ]
+Key: VGETEXPPHZrbkz: [ 0.00 0.00 ]
+Key: VGETEXPPHZrk: [ 0.00 0.00 ]
+Key: VGETEXPPHZrkz: [ 0.00 0.00 ]
+Key: VGETEXPPSZ: [ 0.00 0.00 ]
+Key: VGETEXPPSZm: [ 0.00 0.00 ]
+Key: VGETEXPPSZmb: [ 0.00 0.00 ]
+Key: VGETEXPPSZmbk: [ 0.00 0.00 ]
+Key: VGETEXPPSZmbkz: [ 0.00 0.00 ]
+Key: VGETEXPPSZmk: [ 0.00 0.00 ]
+Key: VGETEXPPSZmkz: [ 0.00 0.00 ]
+Key: VGETEXPPSZr: [ 0.00 0.00 ]
+Key: VGETEXPPSZrb: [ 0.00 0.00 ]
+Key: VGETEXPPSZrbk: [ 0.00 0.00 ]
+Key: VGETEXPPSZrbkz: [ 0.00 0.00 ]
+Key: VGETEXPPSZrk: [ 0.00 0.00 ]
+Key: VGETEXPPSZrkz: [ 0.00 0.00 ]
+Key: VGETEXPSDZm: [ 0.00 0.00 ]
+Key: VGETEXPSDZmk: [ 0.00 0.00 ]
+Key: VGETEXPSDZmkz: [ 0.00 0.00 ]
+Key: VGETEXPSDZr: [ 0.00 0.00 ]
+Key: VGETEXPSDZrb: [ 0.00 0.00 ]
+Key: VGETEXPSDZrbk: [ 0.00 0.00 ]
+Key: VGETEXPSDZrbkz: [ 0.00 0.00 ]
+Key: VGETEXPSDZrk: [ 0.00 0.00 ]
+Key: VGETEXPSDZrkz: [ 0.00 0.00 ]
+Key: VGETEXPSHZm: [ 0.00 0.00 ]
+Key: VGETEXPSHZmk: [ 0.00 0.00 ]
+Key: VGETEXPSHZmkz: [ 0.00 0.00 ]
+Key: VGETEXPSHZr: [ 0.00 0.00 ]
+Key: VGETEXPSHZrb: [ 0.00 0.00 ]
+Key: VGETEXPSHZrbk: [ 0.00 0.00 ]
+Key: VGETEXPSHZrbkz: [ 0.00 0.00 ]
+Key: VGETEXPSHZrk: [ 0.00 0.00 ]
+Key: VGETEXPSHZrkz: [ 0.00 0.00 ]
+Key: VGETEXPSSZm: [ 0.00 0.00 ]
+Key: VGETEXPSSZmk: [ 0.00 0.00 ]
+Key: VGETEXPSSZmkz: [ 0.00 0.00 ]
+Key: VGETEXPSSZr: [ 0.00 0.00 ]
+Key: VGETEXPSSZrb: [ 0.00 0.00 ]
+Key: VGETEXPSSZrbk: [ 0.00 0.00 ]
+Key: VGETEXPSSZrbkz: [ 0.00 0.00 ]
+Key: VGETEXPSSZrk: [ 0.00 0.00 ]
+Key: VGETEXPSSZrkz: [ 0.00 0.00 ]
+Key: VGETMANTBF: [ 0.00 0.00 ]
+Key: VGETMANTPDZ: [ 0.00 0.00 ]
+Key: VGETMANTPDZrmbi: [ 0.00 0.00 ]
+Key: VGETMANTPDZrmbik: [ 0.00 0.00 ]
+Key: VGETMANTPDZrmbikz: [ 0.00 0.00 ]
+Key: VGETMANTPDZrmi: [ 0.00 0.00 ]
+Key: VGETMANTPDZrmik: [ 0.00 0.00 ]
+Key: VGETMANTPDZrmikz: [ 0.00 0.00 ]
+Key: VGETMANTPDZrri: [ 0.00 0.00 ]
+Key: VGETMANTPDZrrib: [ 0.00 0.00 ]
+Key: VGETMANTPDZrribk: [ 0.00 0.00 ]
+Key: VGETMANTPDZrribkz: [ 0.00 0.00 ]
+Key: VGETMANTPDZrrik: [ 0.00 0.00 ]
+Key: VGETMANTPDZrrikz: [ 0.00 0.00 ]
+Key: VGETMANTPHZ: [ 0.00 0.00 ]
+Key: VGETMANTPHZrmbi: [ 0.00 0.00 ]
+Key: VGETMANTPHZrmbik: [ 0.00 0.00 ]
+Key: VGETMANTPHZrmbikz: [ 0.00 0.00 ]
+Key: VGETMANTPHZrmi: [ 0.00 0.00 ]
+Key: VGETMANTPHZrmik: [ 0.00 0.00 ]
+Key: VGETMANTPHZrmikz: [ 0.00 0.00 ]
+Key: VGETMANTPHZrri: [ 0.00 0.00 ]
+Key: VGETMANTPHZrrib: [ 0.00 0.00 ]
+Key: VGETMANTPHZrribk: [ 0.00 0.00 ]
+Key: VGETMANTPHZrribkz: [ 0.00 0.00 ]
+Key: VGETMANTPHZrrik: [ 0.00 0.00 ]
+Key: VGETMANTPHZrrikz: [ 0.00 0.00 ]
+Key: VGETMANTPSZ: [ 0.00 0.00 ]
+Key: VGETMANTPSZrmbi: [ 0.00 0.00 ]
+Key: VGETMANTPSZrmbik: [ 0.00 0.00 ]
+Key: VGETMANTPSZrmbikz: [ 0.00 0.00 ]
+Key: VGETMANTPSZrmi: [ 0.00 0.00 ]
+Key: VGETMANTPSZrmik: [ 0.00 0.00 ]
+Key: VGETMANTPSZrmikz: [ 0.00 0.00 ]
+Key: VGETMANTPSZrri: [ 0.00 0.00 ]
+Key: VGETMANTPSZrrib: [ 0.00 0.00 ]
+Key: VGETMANTPSZrribk: [ 0.00 0.00 ]
+Key: VGETMANTPSZrribkz: [ 0.00 0.00 ]
+Key: VGETMANTPSZrrik: [ 0.00 0.00 ]
+Key: VGETMANTPSZrrikz: [ 0.00 0.00 ]
+Key: VGETMANTSDZrmi: [ 0.00 0.00 ]
+Key: VGETMANTSDZrmik: [ 0.00 0.00 ]
+Key: VGETMANTSDZrmikz: [ 0.00 0.00 ]
+Key: VGETMANTSDZrri: [ 0.00 0.00 ]
+Key: VGETMANTSDZrrib: [ 0.00 0.00 ]
+Key: VGETMANTSDZrribk: [ 0.00 0.00 ]
+Key: VGETMANTSDZrribkz: [ 0.00 0.00 ]
+Key: VGETMANTSDZrrik: [ 0.00 0.00 ]
+Key: VGETMANTSDZrrikz: [ 0.00 0.00 ]
+Key: VGETMANTSHZrmi: [ 0.00 0.00 ]
+Key: VGETMANTSHZrmik: [ 0.00 0.00 ]
+Key: VGETMANTSHZrmikz: [ 0.00 0.00 ]
+Key: VGETMANTSHZrri: [ 0.00 0.00 ]
+Key: VGETMANTSHZrrib: [ 0.00 0.00 ]
+Key: VGETMANTSHZrribk: [ 0.00 0.00 ]
+Key: VGETMANTSHZrribkz: [ 0.00 0.00 ]
+Key: VGETMANTSHZrrik: [ 0.00 0.00 ]
+Key: VGETMANTSHZrrikz: [ 0.00 0.00 ]
+Key: VGETMANTSSZrmi: [ 0.00 0.00 ]
+Key: VGETMANTSSZrmik: [ 0.00 0.00 ]
+Key: VGETMANTSSZrmikz: [ 0.00 0.00 ]
+Key: VGETMANTSSZrri: [ 0.00 0.00 ]
+Key: VGETMANTSSZrrib: [ 0.00 0.00 ]
+Key: VGETMANTSSZrribk: [ 0.00 0.00 ]
+Key: VGETMANTSSZrribkz: [ 0.00 0.00 ]
+Key: VGETMANTSSZrrik: [ 0.00 0.00 ]
+Key: VGETMANTSSZrrikz: [ 0.00 0.00 ]
+Key: VGF: [ 0.00 0.00 ]
+Key: VHADDPDYrm: [ 0.00 0.00 ]
+Key: VHADDPDYrr: [ 0.00 0.00 ]
+Key: VHADDPDrm: [ 0.00 0.00 ]
+Key: VHADDPDrr: [ 0.00 0.00 ]
+Key: VHADDPSYrm: [ 0.00 0.00 ]
+Key: VHADDPSYrr: [ 0.00 0.00 ]
+Key: VHADDPSrm: [ 0.00 0.00 ]
+Key: VHADDPSrr: [ 0.00 0.00 ]
+Key: VHSUBPDYrm: [ 0.00 0.00 ]
+Key: VHSUBPDYrr: [ 0.00 0.00 ]
+Key: VHSUBPDrm: [ 0.00 0.00 ]
+Key: VHSUBPDrr: [ 0.00 0.00 ]
+Key: VHSUBPSYrm: [ 0.00 0.00 ]
+Key: VHSUBPSYrr: [ 0.00 0.00 ]
+Key: VHSUBPSrm: [ 0.00 0.00 ]
+Key: VHSUBPSrr: [ 0.00 0.00 ]
+Key: VINSERTF: [ 0.00 0.00 ]
+Key: VINSERTI: [ 0.00 0.00 ]
+Key: VINSERTPSZrmi: [ 0.00 0.00 ]
+Key: VINSERTPSZrri: [ 0.00 0.00 ]
+Key: VINSERTPSrmi: [ 0.00 0.00 ]
+Key: VINSERTPSrri: [ 0.00 0.00 ]
+Key: VLDDQUYrm: [ 0.00 0.00 ]
+Key: VLDDQUrm: [ 0.00 0.00 ]
+Key: VLDMXCSR: [ 0.00 0.00 ]
+Key: VMASKMOVDQU: [ 0.00 0.00 ]
+Key: VMASKMOVPDYmr: [ 0.00 0.00 ]
+Key: VMASKMOVPDYrm: [ 0.00 0.00 ]
+Key: VMASKMOVPDmr: [ 0.00 0.00 ]
+Key: VMASKMOVPDrm: [ 0.00 0.00 ]
+Key: VMASKMOVPSYmr: [ 0.00 0.00 ]
+Key: VMASKMOVPSYrm: [ 0.00 0.00 ]
+Key: VMASKMOVPSmr: [ 0.00 0.00 ]
+Key: VMASKMOVPSrm: [ 0.00 0.00 ]
+Key: VMAXBF: [ 0.00 0.00 ]
+Key: VMAXCPDYrm: [ 0.00 0.00 ]
+Key: VMAXCPDYrr: [ 0.00 0.00 ]
+Key: VMAXCPDZ: [ 0.00 0.00 ]
+Key: VMAXCPDZrm: [ 0.00 0.00 ]
+Key: VMAXCPDZrmb: [ 0.00 0.00 ]
+Key: VMAXCPDZrmbk: [ 0.00 0.00 ]
+Key: VMAXCPDZrmbkz: [ 0.00 0.00 ]
+Key: VMAXCPDZrmk: [ 0.00 0.00 ]
+Key: VMAXCPDZrmkz: [ 0.00 0.00 ]
+Key: VMAXCPDZrr: [ 0.00 0.00 ]
+Key: VMAXCPDZrrk: [ 0.00 0.00 ]
+Key: VMAXCPDZrrkz: [ 0.00 0.00 ]
+Key: VMAXCPDrm: [ 0.00 0.00 ]
+Key: VMAXCPDrr: [ 0.00 0.00 ]
+Key: VMAXCPHZ: [ 0.00 0.00 ]
+Key: VMAXCPHZrm: [ 0.00 0.00 ]
+Key: VMAXCPHZrmb: [ 0.00 0.00 ]
+Key: VMAXCPHZrmbk: [ 0.00 0.00 ]
+Key: VMAXCPHZrmbkz: [ 0.00 0.00 ]
+Key: VMAXCPHZrmk: [ 0.00 0.00 ]
+Key: VMAXCPHZrmkz: [ 0.00 0.00 ]
+Key: VMAXCPHZrr: [ 0.00 0.00 ]
+Key: VMAXCPHZrrk: [ 0.00 0.00 ]
+Key: VMAXCPHZrrkz: [ 0.00 0.00 ]
+Key: VMAXCPSYrm: [ 0.00 0.00 ]
+Key: VMAXCPSYrr: [ 0.00 0.00 ]
+Key: VMAXCPSZ: [ 0.00 0.00 ]
+Key: VMAXCPSZrm: [ 0.00 0.00 ]
+Key: VMAXCPSZrmb: [ 0.00 0.00 ]
+Key: VMAXCPSZrmbk: [ 0.00 0.00 ]
+Key: VMAXCPSZrmbkz: [ 0.00 0.00 ]
+Key: VMAXCPSZrmk: [ 0.00 0.00 ]
+Key: VMAXCPSZrmkz: [ 0.00 0.00 ]
+Key: VMAXCPSZrr: [ 0.00 0.00 ]
+Key: VMAXCPSZrrk: [ 0.00 0.00 ]
+Key: VMAXCPSZrrkz: [ 0.00 0.00 ]
+Key: VMAXCPSrm: [ 0.00 0.00 ]
+Key: VMAXCPSrr: [ 0.00 0.00 ]
+Key: VMAXCSDZrm: [ 0.00 0.00 ]
+Key: VMAXCSDZrr: [ 0.00 0.00 ]
+Key: VMAXCSDrm: [ 0.00 0.00 ]
+Key: VMAXCSDrr: [ 0.00 0.00 ]
+Key: VMAXCSHZrm: [ 0.00 0.00 ]
+Key: VMAXCSHZrr: [ 0.00 0.00 ]
+Key: VMAXCSSZrm: [ 0.00 0.00 ]
+Key: VMAXCSSZrr: [ 0.00 0.00 ]
+Key: VMAXCSSrm: [ 0.00 0.00 ]
+Key: VMAXCSSrr: [ 0.00 0.00 ]
+Key: VMAXPDYrm: [ 0.00 0.00 ]
+Key: VMAXPDYrr: [ 0.00 0.00 ]
+Key: VMAXPDZ: [ 0.00 0.00 ]
+Key: VMAXPDZrm: [ 0.00 0.00 ]
+Key: VMAXPDZrmb: [ 0.00 0.00 ]
+Key: VMAXPDZrmbk: [ 0.00 0.00 ]
+Key: VMAXPDZrmbkz: [ 0.00 0.00 ]
+Key: VMAXPDZrmk: [ 0.00 0.00 ]
+Key: VMAXPDZrmkz: [ 0.00 0.00 ]
+Key: VMAXPDZrr: [ 0.00 0.00 ]
+Key: VMAXPDZrrb: [ 0.00 0.00 ]
+Key: VMAXPDZrrbk: [ 0.00 0.00 ]
+Key: VMAXPDZrrbkz: [ 0.00 0.00 ]
+Key: VMAXPDZrrk: [ 0.00 0.00 ]
+Key: VMAXPDZrrkz: [ 0.00 0.00 ]
+Key: VMAXPDrm: [ 0.00 0.00 ]
+Key: VMAXPDrr: [ 0.00 0.00 ]
+Key: VMAXPHZ: [ 0.00 0.00 ]
+Key: VMAXPHZrm: [ 0.00 0.00 ]
+Key: VMAXPHZrmb: [ 0.00 0.00 ]
+Key: VMAXPHZrmbk: [ 0.00 0.00 ]
+Key: VMAXPHZrmbkz: [ 0.00 0.00 ]
+Key: VMAXPHZrmk: [ 0.00 0.00 ]
+Key: VMAXPHZrmkz: [ 0.00 0.00 ]
+Key: VMAXPHZrr: [ 0.00 0.00 ]
+Key: VMAXPHZrrb: [ 0.00 0.00 ]
+Key: VMAXPHZrrbk: [ 0.00 0.00 ]
+Key: VMAXPHZrrbkz: [ 0.00 0.00 ]
+Key: VMAXPHZrrk: [ 0.00 0.00 ]
+Key: VMAXPHZrrkz: [ 0.00 0.00 ]
+Key: VMAXPSYrm: [ 0.00 0.00 ]
+Key: VMAXPSYrr: [ 0.00 0.00 ]
+Key: VMAXPSZ: [ 0.00 0.00 ]
+Key: VMAXPSZrm: [ 0.00 0.00 ]
+Key: VMAXPSZrmb: [ 0.00 0.00 ]
+Key: VMAXPSZrmbk: [ 0.00 0.00 ]
+Key: VMAXPSZrmbkz: [ 0.00 0.00 ]
+Key: VMAXPSZrmk: [ 0.00 0.00 ]
+Key: VMAXPSZrmkz: [ 0.00 0.00 ]
+Key: VMAXPSZrr: [ 0.00 0.00 ]
+Key: VMAXPSZrrb: [ 0.00 0.00 ]
+Key: VMAXPSZrrbk: [ 0.00 0.00 ]
+Key: VMAXPSZrrbkz: [ 0.00 0.00 ]
+Key: VMAXPSZrrk: [ 0.00 0.00 ]
+Key: VMAXPSZrrkz: [ 0.00 0.00 ]
+Key: VMAXPSrm: [ 0.00 0.00 ]
+Key: VMAXPSrr: [ 0.00 0.00 ]
+Key: VMAXSDZrm: [ 0.00 0.00 ]
+Key: VMAXSDZrm_Int: [ 0.00 0.00 ]
+Key: VMAXSDZrmk_Int: [ 0.00 0.00 ]
+Key: VMAXSDZrmkz_Int: [ 0.00 0.00 ]
+Key: VMAXSDZrr: [ 0.00 0.00 ]
+Key: VMAXSDZrr_Int: [ 0.00 0.00 ]
+Key: VMAXSDZrrb_Int: [ 0.00 0.00 ]
+Key: VMAXSDZrrbk_Int: [ 0.00 0.00 ]
+Key: VMAXSDZrrbkz_Int: [ 0.00 0.00 ]
+Key: VMAXSDZrrk_Int: [ 0.00 0.00 ]
+Key: VMAXSDZrrkz_Int: [ 0.00 0.00 ]
+Key: VMAXSDrm: [ 0.00 0.00 ]
+Key: VMAXSDrm_Int: [ 0.00 0.00 ]
+Key: VMAXSDrr: [ 0.00 0.00 ]
+Key: VMAXSDrr_Int: [ 0.00 0.00 ]
+Key: VMAXSHZrm: [ 0.00 0.00 ]
+Key: VMAXSHZrm_Int: [ 0.00 0.00 ]
+Key: VMAXSHZrmk_Int: [ 0.00 0.00 ]
+Key: VMAXSHZrmkz_Int: [ 0.00 0.00 ]
+Key: VMAXSHZrr: [ 0.00 0.00 ]
+Key: VMAXSHZrr_Int: [ 0.00 0.00 ]
+Key: VMAXSHZrrb_Int: [ 0.00 0.00 ]
+Key: VMAXSHZrrbk_Int: [ 0.00 0.00 ]
+Key: VMAXSHZrrbkz_Int: [ 0.00 0.00 ]
+Key: VMAXSHZrrk_Int: [ 0.00 0.00 ]
+Key: VMAXSHZrrkz_Int: [ 0.00 0.00 ]
+Key: VMAXSSZrm: [ 0.00 0.00 ]
+Key: VMAXSSZrm_Int: [ 0.00 0.00 ]
+Key: VMAXSSZrmk_Int: [ 0.00 0.00 ]
+Key: VMAXSSZrmkz_Int: [ 0.00 0.00 ]
+Key: VMAXSSZrr: [ 0.00 0.00 ]
+Key: VMAXSSZrr_Int: [ 0.00 0.00 ]
+Key: VMAXSSZrrb_Int: [ 0.00 0.00 ]
+Key: VMAXSSZrrbk_Int: [ 0.00 0.00 ]
+Key: VMAXSSZrrbkz_Int: [ 0.00 0.00 ]
+Key: VMAXSSZrrk_Int: [ 0.00 0.00 ]
+Key: VMAXSSZrrkz_Int: [ 0.00 0.00 ]
+Key: VMAXSSrm: [ 0.00 0.00 ]
+Key: VMAXSSrm_Int: [ 0.00 0.00 ]
+Key: VMAXSSrr: [ 0.00 0.00 ]
+Key: VMAXSSrr_Int: [ 0.00 0.00 ]
+Key: VMCALL: [ 0.00 0.00 ]
+Key: VMCLEARm: [ 0.00 0.00 ]
+Key: VMFUNC: [ 0.00 0.00 ]
+Key: VMINBF: [ 0.00 0.00 ]
+Key: VMINCPDYrm: [ 0.00 0.00 ]
+Key: VMINCPDYrr: [ 0.00 0.00 ]
+Key: VMINCPDZ: [ 0.00 0.00 ]
+Key: VMINCPDZrm: [ 0.00 0.00 ]
+Key: VMINCPDZrmb: [ 0.00 0.00 ]
+Key: VMINCPDZrmbk: [ 0.00 0.00 ]
+Key: VMINCPDZrmbkz: [ 0.00 0.00 ]
+Key: VMINCPDZrmk: [ 0.00 0.00 ]
+Key: VMINCPDZrmkz: [ 0.00 0.00 ]
+Key: VMINCPDZrr: [ 0.00 0.00 ]
+Key: VMINCPDZrrk: [ 0.00 0.00 ]
+Key: VMINCPDZrrkz: [ 0.00 0.00 ]
+Key: VMINCPDrm: [ 0.00 0.00 ]
+Key: VMINCPDrr: [ 0.00 0.00 ]
+Key: VMINCPHZ: [ 0.00 0.00 ]
+Key: VMINCPHZrm: [ 0.00 0.00 ]
+Key: VMINCPHZrmb: [ 0.00 0.00 ]
+Key: VMINCPHZrmbk: [ 0.00 0.00 ]
+Key: VMINCPHZrmbkz: [ 0.00 0.00 ]
+Key: VMINCPHZrmk: [ 0.00 0.00 ]
+Key: VMINCPHZrmkz: [ 0.00 0.00 ]
+Key: VMINCPHZrr: [ 0.00 0.00 ]
+Key: VMINCPHZrrk: [ 0.00 0.00 ]
+Key: VMINCPHZrrkz: [ 0.00 0.00 ]
+Key: VMINCPSYrm: [ 0.00 0.00 ]
+Key: VMINCPSYrr: [ 0.00 0.00 ]
+Key: VMINCPSZ: [ 0.00 0.00 ]
+Key: VMINCPSZrm: [ 0.00 0.00 ]
+Key: VMINCPSZrmb: [ 0.00 0.00 ]
+Key: VMINCPSZrmbk: [ 0.00 0.00 ]
+Key: VMINCPSZrmbkz: [ 0.00 0.00 ]
+Key: VMINCPSZrmk: [ 0.00 0.00 ]
+Key: VMINCPSZrmkz: [ 0.00 0.00 ]
+Key: VMINCPSZrr: [ 0.00 0.00 ]
+Key: VMINCPSZrrk: [ 0.00 0.00 ]
+Key: VMINCPSZrrkz: [ 0.00 0.00 ]
+Key: VMINCPSrm: [ 0.00 0.00 ]
+Key: VMINCPSrr: [ 0.00 0.00 ]
+Key: VMINCSDZrm: [ 0.00 0.00 ]
+Key: VMINCSDZrr: [ 0.00 0.00 ]
+Key: VMINCSDrm: [ 0.00 0.00 ]
+Key: VMINCSDrr: [ 0.00 0.00 ]
+Key: VMINCSHZrm: [ 0.00 0.00 ]
+Key: VMINCSHZrr: [ 0.00 0.00 ]
+Key: VMINCSSZrm: [ 0.00 0.00 ]
+Key: VMINCSSZrr: [ 0.00 0.00 ]
+Key: VMINCSSrm: [ 0.00 0.00 ]
+Key: VMINCSSrr: [ 0.00 0.00 ]
+Key: VMINMAXBF: [ 0.00 0.00 ]
+Key: VMINMAXPDZ: [ 0.00 0.00 ]
+Key: VMINMAXPDZrmbi: [ 0.00 0.00 ]
+Key: VMINMAXPDZrmbik: [ 0.00 0.00 ]
+Key: VMINMAXPDZrmbikz: [ 0.00 0.00 ]
+Key: VMINMAXPDZrmi: [ 0.00 0.00 ]
+Key: VMINMAXPDZrmik: [ 0.00 0.00 ]
+Key: VMINMAXPDZrmikz: [ 0.00 0.00 ]
+Key: VMINMAXPDZrri: [ 0.00 0.00 ]
+Key: VMINMAXPDZrrib: [ 0.00 0.00 ]
+Key: VMINMAXPDZrribk: [ 0.00 0.00 ]
+Key: VMINMAXPDZrribkz: [ 0.00 0.00 ]
+Key: VMINMAXPDZrrik: [ 0.00 0.00 ]
+Key: VMINMAXPDZrrikz: [ 0.00 0.00 ]
+Key: VMINMAXPHZ: [ 0.00 0.00 ]
+Key: VMINMAXPHZrmbi: [ 0.00 0.00 ]
+Key: VMINMAXPHZrmbik: [ 0.00 0.00 ]
+Key: VMINMAXPHZrmbikz: [ 0.00 0.00 ]
+Key: VMINMAXPHZrmi: [ 0.00 0.00 ]
+Key: VMINMAXPHZrmik: [ 0.00 0.00 ]
+Key: VMINMAXPHZrmikz: [ 0.00 0.00 ]
+Key: VMINMAXPHZrri: [ 0.00 0.00 ]
+Key: VMINMAXPHZrrib: [ 0.00 0.00 ]
+Key: VMINMAXPHZrribk: [ 0.00 0.00 ]
+Key: VMINMAXPHZrribkz: [ 0.00 0.00 ]
+Key: VMINMAXPHZrrik: [ 0.00 0.00 ]
+Key: VMINMAXPHZrrikz: [ 0.00 0.00 ]
+Key: VMINMAXPSZ: [ 0.00 0.00 ]
+Key: VMINMAXPSZrmbi: [ 0.00 0.00 ]
+Key: VMINMAXPSZrmbik: [ 0.00 0.00 ]
+Key: VMINMAXPSZrmbikz: [ 0.00 0.00 ]
+Key: VMINMAXPSZrmi: [ 0.00 0.00 ]
+Key: VMINMAXPSZrmik: [ 0.00 0.00 ]
+Key: VMINMAXPSZrmikz: [ 0.00 0.00 ]
+Key: VMINMAXPSZrri: [ 0.00 0.00 ]
+Key: VMINMAXPSZrrib: [ 0.00 0.00 ]
+Key: VMINMAXPSZrribk: [ 0.00 0.00 ]
+Key: VMINMAXPSZrribkz: [ 0.00 0.00 ]
+Key: VMINMAXPSZrrik: [ 0.00 0.00 ]
+Key: VMINMAXPSZrrikz: [ 0.00 0.00 ]
+Key: VMINMAXSDrmi: [ 0.00 0.00 ]
+Key: VMINMAXSDrmi_Int: [ 0.00 0.00 ]
+Key: VMINMAXSDrmik_Int: [ 0.00 0.00 ]
+Key: VMINMAXSDrmikz_Int: [ 0.00 0.00 ]
+Key: VMINMAXSDrri: [ 0.00 0.00 ]
+Key: VMINMAXSDrri_Int: [ 0.00 0.00 ]
+Key: VMINMAXSDrrib_Int: [ 0.00 0.00 ]
+Key: VMINMAXSDrribk_Int: [ 0.00 0.00 ]
+Key: VMINMAXSDrribkz_Int: [ 0.00 0.00 ]
+Key: VMINMAXSDrrik_Int: [ 0.00 0.00 ]
+Key: VMINMAXSDrrikz_Int: [ 0.00 0.00 ]
+Key: VMINMAXSHrmi: [ 0.00 0.00 ]
+Key: VMINMAXSHrmi_Int: [ 0.00 0.00 ]
+Key: VMINMAXSHrmik_Int: [ 0.00 0.00 ]
+Key: VMINMAXSHrmikz_Int: [ 0.00 0.00 ]
+Key: VMINMAXSHrri: [ 0.00 0.00 ]
+Key: VMINMAXSHrri_Int: [ 0.00 0.00 ]
+Key: VMINMAXSHrrib_Int: [ 0.00 0.00 ]
+Key: VMINMAXSHrribk_Int: [ 0.00 0.00 ]
+Key: VMINMAXSHrribkz_Int: [ 0.00 0.00 ]
+Key: VMINMAXSHrrik_Int: [ 0.00 0.00 ]
+Key: VMINMAXSHrrikz_Int: [ 0.00 0.00 ]
+Key: VMINMAXSSrmi: [ 0.00 0.00 ]
+Key: VMINMAXSSrmi_Int: [ 0.00 0.00 ]
+Key: VMINMAXSSrmik_Int: [ 0.00 0.00 ]
+Key: VMINMAXSSrmikz_Int: [ 0.00 0.00 ]
+Key: VMINMAXSSrri: [ 0.00 0.00 ]
+Key: VMINMAXSSrri_Int: [ 0.00 0.00 ]
+Key: VMINMAXSSrrib_Int: [ 0.00 0.00 ]
+Key: VMINMAXSSrribk_Int: [ 0.00 0.00 ]
+Key: VMINMAXSSrribkz_Int: [ 0.00 0.00 ]
+Key: VMINMAXSSrrik_Int: [ 0.00 0.00 ]
+Key: VMINMAXSSrrikz_Int: [ 0.00 0.00 ]
+Key: VMINPDYrm: [ 0.00 0.00 ]
+Key: VMINPDYrr: [ 0.00 0.00 ]
+Key: VMINPDZ: [ 0.00 0.00 ]
+Key: VMINPDZrm: [ 0.00 0.00 ]
+Key: VMINPDZrmb: [ 0.00 0.00 ]
+Key: VMINPDZrmbk: [ 0.00 0.00 ]
+Key: VMINPDZrmbkz: [ 0.00 0.00 ]
+Key: VMINPDZrmk: [ 0.00 0.00 ]
+Key: VMINPDZrmkz: [ 0.00 0.00 ]
+Key: VMINPDZrr: [ 0.00 0.00 ]
+Key: VMINPDZrrb: [ 0.00 0.00 ]
+Key: VMINPDZrrbk: [ 0.00 0.00 ]
+Key: VMINPDZrrbkz: [ 0.00 0.00 ]
+Key: VMINPDZrrk: [ 0.00 0.00 ]
+Key: VMINPDZrrkz: [ 0.00 0.00 ]
+Key: VMINPDrm: [ 0.00 0.00 ]
+Key: VMINPDrr: [ 0.00 0.00 ]
+Key: VMINPHZ: [ 0.00 0.00 ]
+Key: VMINPHZrm: [ 0.00 0.00 ]
+Key: VMINPHZrmb: [ 0.00 0.00 ]
+Key: VMINPHZrmbk: [ 0.00 0.00 ]
+Key: VMINPHZrmbkz: [ 0.00 0.00 ]
+Key: VMINPHZrmk: [ 0.00 0.00 ]
+Key: VMINPHZrmkz: [ 0.00 0.00 ]
+Key: VMINPHZrr: [ 0.00 0.00 ]
+Key: VMINPHZrrb: [ 0.00 0.00 ]
+Key: VMINPHZrrbk: [ 0.00 0.00 ]
+Key: VMINPHZrrbkz: [ 0.00 0.00 ]
+Key: VMINPHZrrk: [ 0.00 0.00 ]
+Key: VMINPHZrrkz: [ 0.00 0.00 ]
+Key: VMINPSYrm: [ 0.00 0.00 ]
+Key: VMINPSYrr: [ 0.00 0.00 ]
+Key: VMINPSZ: [ 0.00 0.00 ]
+Key: VMINPSZrm: [ 0.00 0.00 ]
+Key: VMINPSZrmb: [ 0.00 0.00 ]
+Key: VMINPSZrmbk: [ 0.00 0.00 ]
+Key: VMINPSZrmbkz: [ 0.00 0.00 ]
+Key: VMINPSZrmk: [ 0.00 0.00 ]
+Key: VMINPSZrmkz: [ 0.00 0.00 ]
+Key: VMINPSZrr: [ 0.00 0.00 ]
+Key: VMINPSZrrb: [ 0.00 0.00 ]
+Key: VMINPSZrrbk: [ 0.00 0.00 ]
+Key: VMINPSZrrbkz: [ 0.00 0.00 ]
+Key: VMINPSZrrk: [ 0.00 0.00 ]
+Key: VMINPSZrrkz: [ 0.00 0.00 ]
+Key: VMINPSrm: [ 0.00 0.00 ]
+Key: VMINPSrr: [ 0.00 0.00 ]
+Key: VMINSDZrm: [ 0.00 0.00 ]
+Key: VMINSDZrm_Int: [ 0.00 0.00 ]
+Key: VMINSDZrmk_Int: [ 0.00 0.00 ]
+Key: VMINSDZrmkz_Int: [ 0.00 0.00 ]
+Key: VMINSDZrr: [ 0.00 0.00 ]
+Key: VMINSDZrr_Int: [ 0.00 0.00 ]
+Key: VMINSDZrrb_Int: [ 0.00 0.00 ]
+Key: VMINSDZrrbk_Int: [ 0.00 0.00 ]
+Key: VMINSDZrrbkz_Int: [ 0.00 0.00 ]
+Key: VMINSDZrrk_Int: [ 0.00 0.00 ]
+Key: VMINSDZrrkz_Int: [ 0.00 0.00 ]
+Key: VMINSDrm: [ 0.00 0.00 ]
+Key: VMINSDrm_Int: [ 0.00 0.00 ]
+Key: VMINSDrr: [ 0.00 0.00 ]
+Key: VMINSDrr_Int: [ 0.00 0.00 ]
+Key: VMINSHZrm: [ 0.00 0.00 ]
+Key: VMINSHZrm_Int: [ 0.00 0.00 ]
+Key: VMINSHZrmk_Int: [ 0.00 0.00 ]
+Key: VMINSHZrmkz_Int: [ 0.00 0.00 ]
+Key: VMINSHZrr: [ 0.00 0.00 ]
+Key: VMINSHZrr_Int: [ 0.00 0.00 ]
+Key: VMINSHZrrb_Int: [ 0.00 0.00 ]
+Key: VMINSHZrrbk_Int: [ 0.00 0.00 ]
+Key: VMINSHZrrbkz_Int: [ 0.00 0.00 ]
+Key: VMINSHZrrk_Int: [ 0.00 0.00 ]
+Key: VMINSHZrrkz_Int: [ 0.00 0.00 ]
+Key: VMINSSZrm: [ 0.00 0.00 ]
+Key: VMINSSZrm_Int: [ 0.00 0.00 ]
+Key: VMINSSZrmk_Int: [ 0.00 0.00 ]
+Key: VMINSSZrmkz_Int: [ 0.00 0.00 ]
+Key: VMINSSZrr: [ 0.00 0.00 ]
+Key: VMINSSZrr_Int: [ 0.00 0.00 ]
+Key: VMINSSZrrb_Int: [ 0.00 0.00 ]
+Key: VMINSSZrrbk_Int: [ 0.00 0.00 ]
+Key: VMINSSZrrbkz_Int: [ 0.00 0.00 ]
+Key: VMINSSZrrk_Int: [ 0.00 0.00 ]
+Key: VMINSSZrrkz_Int: [ 0.00 0.00 ]
+Key: VMINSSrm: [ 0.00 0.00 ]
+Key: VMINSSrm_Int: [ 0.00 0.00 ]
+Key: VMINSSrr: [ 0.00 0.00 ]
+Key: VMINSSrr_Int: [ 0.00 0.00 ]
+Key: VMLAUNCH: [ 0.00 0.00 ]
+Key: VMLOAD: [ 0.00 0.00 ]
+Key: VMMCALL: [ 0.00 0.00 ]
+Key: VMOV: [ 0.00 0.00 ]
+Key: VMOVAPDYmr: [ 0.00 0.00 ]
+Key: VMOVAPDYrm: [ 0.00 0.00 ]
+Key: VMOVAPDYrr: [ 0.00 0.00 ]
+Key: VMOVAPDYrr_REV: [ 0.00 0.00 ]
+Key: VMOVAPDZ: [ 0.00 0.00 ]
+Key: VMOVAPDZmr: [ 0.00 0.00 ]
+Key: VMOVAPDZmrk: [ 0.00 0.00 ]
+Key: VMOVAPDZrm: [ 0.00 0.00 ]
+Key: VMOVAPDZrmk: [ 0.00 0.00 ]
+Key: VMOVAPDZrmkz: [ 0.00 0.00 ]
+Key: VMOVAPDZrr: [ 0.00 0.00 ]
+Key: VMOVAPDZrr_REV: [ 0.00 0.00 ]
+Key: VMOVAPDZrrk: [ 0.00 0.00 ]
+Key: VMOVAPDZrrk_REV: [ 0.00 0.00 ]
+Key: VMOVAPDZrrkz: [ 0.00 0.00 ]
+Key: VMOVAPDZrrkz_REV: [ 0.00 0.00 ]
+Key: VMOVAPDmr: [ 0.00 0.00 ]
+Key: VMOVAPDrm: [ 0.00 0.00 ]
+Key: VMOVAPDrr: [ 0.00 0.00 ]
+Key: VMOVAPDrr_REV: [ 0.00 0.00 ]
+Key: VMOVAPSYmr: [ 0.00 0.00 ]
+Key: VMOVAPSYrm: [ 0.00 0.00 ]
+Key: VMOVAPSYrr: [ 0.00 0.00 ]
+Key: VMOVAPSYrr_REV: [ 0.00 0.00 ]
+Key: VMOVAPSZ: [ 0.00 0.00 ]
+Key: VMOVAPSZmr: [ 0.00 0.00 ]
+Key: VMOVAPSZmrk: [ 0.00 0.00 ]
+Key: VMOVAPSZrm: [ 0.00 0.00 ]
+Key: VMOVAPSZrmk: [ 0.00 0.00 ]
+Key: VMOVAPSZrmkz: [ 0.00 0.00 ]
+Key: VMOVAPSZrr: [ 0.00 0.00 ]
+Key: VMOVAPSZrr_REV: [ 0.00 0.00 ]
+Key: VMOVAPSZrrk: [ 0.00 0.00 ]
+Key: VMOVAPSZrrk_REV: [ 0.00 0.00 ]
+Key: VMOVAPSZrrkz: [ 0.00 0.00 ]
+Key: VMOVAPSZrrkz_REV: [ 0.00 0.00 ]
+Key: VMOVAPSmr: [ 0.00 0.00 ]
+Key: VMOVAPSrm: [ 0.00 0.00 ]
+Key: VMOVAPSrr: [ 0.00 0.00 ]
+Key: VMOVAPSrr_REV: [ 0.00 0.00 ]
+Key: VMOVDDUPYrm: [ 0.00 0.00 ]
+Key: VMOVDDUPYrr: [ 0.00 0.00 ]
+Key: VMOVDDUPZ: [ 0.00 0.00 ]
+Key: VMOVDDUPZrm: [ 0.00 0.00 ]
+Key: VMOVDDUPZrmk: [ 0.00 0.00 ]
+Key: VMOVDDUPZrmkz: [ 0.00 0.00 ]
+Key: VMOVDDUPZrr: [ 0.00 0.00 ]
+Key: VMOVDDUPZrrk: [ 0.00 0.00 ]
+Key: VMOVDDUPZrrkz: [ 0.00 0.00 ]
+Key: VMOVDDUPrm: [ 0.00 0.00 ]
+Key: VMOVDDUPrr: [ 0.00 0.00 ]
+Key: VMOVDI: [ 0.00 0.00 ]
+Key: VMOVDQA: [ 0.00 0.00 ]
+Key: VMOVDQAYmr: [ 0.00 0.00 ]
+Key: VMOVDQAYrm: [ 0.00 0.00 ]
+Key: VMOVDQAYrr: [ 0.00 0.00 ]
+Key: VMOVDQAYrr_REV: [ 0.00 0.00 ]
+Key: VMOVDQAmr: [ 0.00 0.00 ]
+Key: VMOVDQArm: [ 0.00 0.00 ]
+Key: VMOVDQArr: [ 0.00 0.00 ]
+Key: VMOVDQArr_REV: [ 0.00 0.00 ]
+Key: VMOVDQU: [ 0.00 0.00 ]
+Key: VMOVDQUYmr: [ 0.00 0.00 ]
+Key: VMOVDQUYrm: [ 0.00 0.00 ]
+Key: VMOVDQUYrr: [ 0.00 0.00 ]
+Key: VMOVDQUYrr_REV: [ 0.00 0.00 ]
+Key: VMOVDQUmr: [ 0.00 0.00 ]
+Key: VMOVDQUrm: [ 0.00 0.00 ]
+Key: VMOVDQUrr: [ 0.00 0.00 ]
+Key: VMOVDQUrr_REV: [ 0.00 0.00 ]
+Key: VMOVHLPSZrr: [ 0.00 0.00 ]
+Key: VMOVHLPSrr: [ 0.00 0.00 ]
+Key: VMOVHPDZ: [ 0.00 0.00 ]
+Key: VMOVHPDmr: [ 0.00 0.00 ]
+Key: VMOVHPDrm: [ 0.00 0.00 ]
+Key: VMOVHPSZ: [ 0.00 0.00 ]
+Key: VMOVHPSmr: [ 0.00 0.00 ]
+Key: VMOVHPSrm: [ 0.00 0.00 ]
+Key: VMOVLHPSZrr: [ 0.00 0.00 ]
+Key: VMOVLHPSrr: [ 0.00 0.00 ]
+Key: VMOVLPDZ: [ 0.00 0.00 ]
+Key: VMOVLPDmr: [ 0.00 0.00 ]
+Key: VMOVLPDrm: [ 0.00 0.00 ]
+Key: VMOVLPSZ: [ 0.00 0.00 ]
+Key: VMOVLPSmr: [ 0.00 0.00 ]
+Key: VMOVLPSrm: [ 0.00 0.00 ]
+Key: VMOVMSKPDYrr: [ 0.00 0.00 ]
+Key: VMOVMSKPDrr: [ 0.00 0.00 ]
+Key: VMOVMSKPSYrr: [ 0.00 0.00 ]
+Key: VMOVMSKPSrr: [ 0.00 0.00 ]
+Key: VMOVNTDQAYrm: [ 0.00 0.00 ]
+Key: VMOVNTDQAZ: [ 0.00 0.00 ]
+Key: VMOVNTDQAZrm: [ 0.00 0.00 ]
+Key: VMOVNTDQArm: [ 0.00 0.00 ]
+Key: VMOVNTDQYmr: [ 0.00 0.00 ]
+Key: VMOVNTDQZ: [ 0.00 0.00 ]
+Key: VMOVNTDQZmr: [ 0.00 0.00 ]
+Key: VMOVNTDQmr: [ 0.00 0.00 ]
+Key: VMOVNTPDYmr: [ 0.00 0.00 ]
+Key: VMOVNTPDZ: [ 0.00 0.00 ]
+Key: VMOVNTPDZmr: [ 0.00 0.00 ]
+Key: VMOVNTPDmr: [ 0.00 0.00 ]
+Key: VMOVNTPSYmr: [ 0.00 0.00 ]
+Key: VMOVNTPSZ: [ 0.00 0.00 ]
+Key: VMOVNTPSZmr: [ 0.00 0.00 ]
+Key: VMOVNTPSmr: [ 0.00 0.00 ]
+Key: VMOVPDI: [ 0.00 0.00 ]
+Key: VMOVPQI: [ 0.00 0.00 ]
+Key: VMOVPQIto: [ 0.00 0.00 ]
+Key: VMOVQI: [ 0.00 0.00 ]
+Key: VMOVRSBZ: [ 0.00 0.00 ]
+Key: VMOVRSBZm: [ 0.00 0.00 ]
+Key: VMOVRSBZmk: [ 0.00 0.00 ]
+Key: VMOVRSBZmkz: [ 0.00 0.00 ]
+Key: VMOVRSDZ: [ 0.00 0.00 ]
+Key: VMOVRSDZm: [ 0.00 0.00 ]
+Key: VMOVRSDZmk: [ 0.00 0.00 ]
+Key: VMOVRSDZmkz: [ 0.00 0.00 ]
+Key: VMOVRSQZ: [ 0.00 0.00 ]
+Key: VMOVRSQZm: [ 0.00 0.00 ]
+Key: VMOVRSQZmk: [ 0.00 0.00 ]
+Key: VMOVRSQZmkz: [ 0.00 0.00 ]
+Key: VMOVRSWZ: [ 0.00 0.00 ]
+Key: VMOVRSWZm: [ 0.00 0.00 ]
+Key: VMOVRSWZmk: [ 0.00 0.00 ]
+Key: VMOVRSWZmkz: [ 0.00 0.00 ]
+Key: VMOVSDZmr: [ 0.00 0.00 ]
+Key: VMOVSDZmrk: [ 0.00 0.00 ]
+Key: VMOVSDZrm: [ 0.00 0.00 ]
+Key: VMOVSDZrm_alt: [ 0.00 0.00 ]
+Key: VMOVSDZrmk: [ 0.00 0.00 ]
+Key: VMOVSDZrmkz: [ 0.00 0.00 ]
+Key: VMOVSDZrr: [ 0.00 0.00 ]
+Key: VMOVSDZrr_REV: [ 0.00 0.00 ]
+Key: VMOVSDZrrk: [ 0.00 0.00 ]
+Key: VMOVSDZrrk_REV: [ 0.00 0.00 ]
+Key: VMOVSDZrrkz: [ 0.00 0.00 ]
+Key: VMOVSDZrrkz_REV: [ 0.00 0.00 ]
+Key: VMOVSDmr: [ 0.00 0.00 ]
+Key: VMOVSDrm: [ 0.00 0.00 ]
+Key: VMOVSDrm_alt: [ 0.00 0.00 ]
+Key: VMOVSDrr: [ 0.00 0.00 ]
+Key: VMOVSDrr_REV: [ 0.00 0.00 ]
+Key: VMOVSDto: [ 0.00 0.00 ]
+Key: VMOVSH: [ 0.00 0.00 ]
+Key: VMOVSHDUPYrm: [ 0.00 0.00 ]
+Key: VMOVSHDUPYrr: [ 0.00 0.00 ]
+Key: VMOVSHDUPZ: [ 0.00 0.00 ]
+Key: VMOVSHDUPZrm: [ 0.00 0.00 ]
+Key: VMOVSHDUPZrmk: [ 0.00 0.00 ]
+Key: VMOVSHDUPZrmkz: [ 0.00 0.00 ]
+Key: VMOVSHDUPZrr: [ 0.00 0.00 ]
+Key: VMOVSHDUPZrrk: [ 0.00 0.00 ]
+Key: VMOVSHDUPZrrkz: [ 0.00 0.00 ]
+Key: VMOVSHDUPrm: [ 0.00 0.00 ]
+Key: VMOVSHDUPrr: [ 0.00 0.00 ]
+Key: VMOVSHZmr: [ 0.00 0.00 ]
+Key: VMOVSHZmrk: [ 0.00 0.00 ]
+Key: VMOVSHZrm: [ 0.00 0.00 ]
+Key: VMOVSHZrm_alt: [ 0.00 0.00 ]
+Key: VMOVSHZrmk: [ 0.00 0.00 ]
+Key: VMOVSHZrmkz: [ 0.00 0.00 ]
+Key: VMOVSHZrr: [ 0.00 0.00 ]
+Key: VMOVSHZrr_REV: [ 0.00 0.00 ]
+Key: VMOVSHZrrk: [ 0.00 0.00 ]
+Key: VMOVSHZrrk_REV: [ 0.00 0.00 ]
+Key: VMOVSHZrrkz: [ 0.00 0.00 ]
+Key: VMOVSHZrrkz_REV: [ 0.00 0.00 ]
+Key: VMOVSHtoW: [ 0.00 0.00 ]
+Key: VMOVSLDUPYrm: [ 0.00 0.00 ]
+Key: VMOVSLDUPYrr: [ 0.00 0.00 ]
+Key: VMOVSLDUPZ: [ 0.00 0.00 ]
+Key: VMOVSLDUPZrm: [ 0.00 0.00 ]
+Key: VMOVSLDUPZrmk: [ 0.00 0.00 ]
+Key: VMOVSLDUPZrmkz: [ 0.00 0.00 ]
+Key: VMOVSLDUPZrr: [ 0.00 0.00 ]
+Key: VMOVSLDUPZrrk: [ 0.00 0.00 ]
+Key: VMOVSLDUPZrrkz: [ 0.00 0.00 ]
+Key: VMOVSLDUPrm: [ 0.00 0.00 ]
+Key: VMOVSLDUPrr: [ 0.00 0.00 ]
+Key: VMOVSS: [ 0.00 0.00 ]
+Key: VMOVSSZmr: [ 0.00 0.00 ]
+Key: VMOVSSZmrk: [ 0.00 0.00 ]
+Key: VMOVSSZrm: [ 0.00 0.00 ]
+Key: VMOVSSZrm_alt: [ 0.00 0.00 ]
+Key: VMOVSSZrmk: [ 0.00 0.00 ]
+Key: VMOVSSZrmkz: [ 0.00 0.00 ]
+Key: VMOVSSZrr: [ 0.00 0.00 ]
+Key: VMOVSSZrr_REV: [ 0.00 0.00 ]
+Key: VMOVSSZrrk: [ 0.00 0.00 ]
+Key: VMOVSSZrrk_REV: [ 0.00 0.00 ]
+Key: VMOVSSZrrkz: [ 0.00 0.00 ]
+Key: VMOVSSZrrkz_REV: [ 0.00 0.00 ]
+Key: VMOVSSmr: [ 0.00 0.00 ]
+Key: VMOVSSrm: [ 0.00 0.00 ]
+Key: VMOVSSrm_alt: [ 0.00 0.00 ]
+Key: VMOVSSrr: [ 0.00 0.00 ]
+Key: VMOVSSrr_REV: [ 0.00 0.00 ]
+Key: VMOVUPDYmr: [ 0.00 0.00 ]
+Key: VMOVUPDYrm: [ 0.00 0.00 ]
+Key: VMOVUPDYrr: [ 0.00 0.00 ]
+Key: VMOVUPDYrr_REV: [ 0.00 0.00 ]
+Key: VMOVUPDZ: [ 0.00 0.00 ]
+Key: VMOVUPDZmr: [ 0.00 0.00 ]
+Key: VMOVUPDZmrk: [ 0.00 0.00 ]
+Key: VMOVUPDZrm: [ 0.00 0.00 ]
+Key: VMOVUPDZrmk: [ 0.00 0.00 ]
+Key: VMOVUPDZrmkz: [ 0.00 0.00 ]
+Key: VMOVUPDZrr: [ 0.00 0.00 ]
+Key: VMOVUPDZrr_REV: [ 0.00 0.00 ]
+Key: VMOVUPDZrrk: [ 0.00 0.00 ]
+Key: VMOVUPDZrrk_REV: [ 0.00 0.00 ]
+Key: VMOVUPDZrrkz: [ 0.00 0.00 ]
+Key: VMOVUPDZrrkz_REV: [ 0.00 0.00 ]
+Key: VMOVUPDmr: [ 0.00 0.00 ]
+Key: VMOVUPDrm: [ 0.00 0.00 ]
+Key: VMOVUPDrr: [ 0.00 0.00 ]
+Key: VMOVUPDrr_REV: [ 0.00 0.00 ]
+Key: VMOVUPSYmr: [ 0.00 0.00 ]
+Key: VMOVUPSYrm: [ 0.00 0.00 ]
+Key: VMOVUPSYrr: [ 0.00 0.00 ]
+Key: VMOVUPSYrr_REV: [ 0.00 0.00 ]
+Key: VMOVUPSZ: [ 0.00 0.00 ]
+Key: VMOVUPSZmr: [ 0.00 0.00 ]
+Key: VMOVUPSZmrk: [ 0.00 0.00 ]
+Key: VMOVUPSZrm: [ 0.00 0.00 ]
+Key: VMOVUPSZrmk: [ 0.00 0.00 ]
+Key: VMOVUPSZrmkz: [ 0.00 0.00 ]
+Key: VMOVUPSZrr: [ 0.00 0.00 ]
+Key: VMOVUPSZrr_REV: [ 0.00 0.00 ]
+Key: VMOVUPSZrrk: [ 0.00 0.00 ]
+Key: VMOVUPSZrrk_REV: [ 0.00 0.00 ]
+Key: VMOVUPSZrrkz: [ 0.00 0.00 ]
+Key: VMOVUPSZrrkz_REV: [ 0.00 0.00 ]
+Key: VMOVUPSmr: [ 0.00 0.00 ]
+Key: VMOVUPSrm: [ 0.00 0.00 ]
+Key: VMOVUPSrr: [ 0.00 0.00 ]
+Key: VMOVUPSrr_REV: [ 0.00 0.00 ]
+Key: VMOVW: [ 0.00 0.00 ]
+Key: VMOVWmr: [ 0.00 0.00 ]
+Key: VMOVWrm: [ 0.00 0.00 ]
+Key: VMOVZPDILo: [ 0.00 0.00 ]
+Key: VMOVZPQILo: [ 0.00 0.00 ]
+Key: VMOVZPWILo: [ 0.00 0.00 ]
+Key: VMPSADBWYrmi: [ 0.00 0.00 ]
+Key: VMPSADBWYrri: [ 0.00 0.00 ]
+Key: VMPSADBWZ: [ 0.00 0.00 ]
+Key: VMPSADBWZrmi: [ 0.00 0.00 ]
+Key: VMPSADBWZrmik: [ 0.00 0.00 ]
+Key: VMPSADBWZrmikz: [ 0.00 0.00 ]
+Key: VMPSADBWZrri: [ 0.00 0.00 ]
+Key: VMPSADBWZrrik: [ 0.00 0.00 ]
+Key: VMPSADBWZrrikz: [ 0.00 0.00 ]
+Key: VMPSADBWrmi: [ 0.00 0.00 ]
+Key: VMPSADBWrri: [ 0.00 0.00 ]
+Key: VMPTRLDm: [ 0.00 0.00 ]
+Key: VMPTRSTm: [ 0.00 0.00 ]
+Key: VMREAD: [ 0.00 0.00 ]
+Key: VMRESUME: [ 0.00 0.00 ]
+Key: VMRUN: [ 0.00 0.00 ]
+Key: VMSAVE: [ 0.00 0.00 ]
+Key: VMULBF: [ 0.00 0.00 ]
+Key: VMULPDYrm: [ 0.00 0.00 ]
+Key: VMULPDYrr: [ 0.00 0.00 ]
+Key: VMULPDZ: [ 0.00 0.00 ]
+Key: VMULPDZrm: [ 0.00 0.00 ]
+Key: VMULPDZrmb: [ 0.00 0.00 ]
+Key: VMULPDZrmbk: [ 0.00 0.00 ]
+Key: VMULPDZrmbkz: [ 0.00 0.00 ]
+Key: VMULPDZrmk: [ 0.00 0.00 ]
+Key: VMULPDZrmkz: [ 0.00 0.00 ]
+Key: VMULPDZrr: [ 0.00 0.00 ]
+Key: VMULPDZrrb: [ 0.00 0.00 ]
+Key: VMULPDZrrbk: [ 0.00 0.00 ]
+Key: VMULPDZrrbkz: [ 0.00 0.00 ]
+Key: VMULPDZrrk: [ 0.00 0.00 ]
+Key: VMULPDZrrkz: [ 0.00 0.00 ]
+Key: VMULPDrm: [ 0.00 0.00 ]
+Key: VMULPDrr: [ 0.00 0.00 ]
+Key: VMULPHZ: [ 0.00 0.00 ]
+Key: VMULPHZrm: [ 0.00 0.00 ]
+Key: VMULPHZrmb: [ 0.00 0.00 ]
+Key: VMULPHZrmbk: [ 0.00 0.00 ]
+Key: VMULPHZrmbkz: [ 0.00 0.00 ]
+Key: VMULPHZrmk: [ 0.00 0.00 ]
+Key: VMULPHZrmkz: [ 0.00 0.00 ]
+Key: VMULPHZrr: [ 0.00 0.00 ]
+Key: VMULPHZrrb: [ 0.00 0.00 ]
+Key: VMULPHZrrbk: [ 0.00 0.00 ]
+Key: VMULPHZrrbkz: [ 0.00 0.00 ]
+Key: VMULPHZrrk: [ 0.00 0.00 ]
+Key: VMULPHZrrkz: [ 0.00 0.00 ]
+Key: VMULPSYrm: [ 0.00 0.00 ]
+Key: VMULPSYrr: [ 0.00 0.00 ]
+Key: VMULPSZ: [ 0.00 0.00 ]
+Key: VMULPSZrm: [ 0.00 0.00 ]
+Key: VMULPSZrmb: [ 0.00 0.00 ]
+Key: VMULPSZrmbk: [ 0.00 0.00 ]
+Key: VMULPSZrmbkz: [ 0.00 0.00 ]
+Key: VMULPSZrmk: [ 0.00 0.00 ]
+Key: VMULPSZrmkz: [ 0.00 0.00 ]
+Key: VMULPSZrr: [ 0.00 0.00 ]
+Key: VMULPSZrrb: [ 0.00 0.00 ]
+Key: VMULPSZrrbk: [ 0.00 0.00 ]
+Key: VMULPSZrrbkz: [ 0.00 0.00 ]
+Key: VMULPSZrrk: [ 0.00 0.00 ]
+Key: VMULPSZrrkz: [ 0.00 0.00 ]
+Key: VMULPSrm: [ 0.00 0.00 ]
+Key: VMULPSrr: [ 0.00 0.00 ]
+Key: VMULSDZrm: [ 0.00 0.00 ]
+Key: VMULSDZrm_Int: [ 0.00 0.00 ]
+Key: VMULSDZrmk_Int: [ 0.00 0.00 ]
+Key: VMULSDZrmkz_Int: [ 0.00 0.00 ]
+Key: VMULSDZrr: [ 0.00 0.00 ]
+Key: VMULSDZrr_Int: [ 0.00 0.00 ]
+Key: VMULSDZrrb_Int: [ 0.00 0.00 ]
+Key: VMULSDZrrbk_Int: [ 0.00 0.00 ]
+Key: VMULSDZrrbkz_Int: [ 0.00 0.00 ]
+Key: VMULSDZrrk_Int: [ 0.00 0.00 ]
+Key: VMULSDZrrkz_Int: [ 0.00 0.00 ]
+Key: VMULSDrm: [ 0.00 0.00 ]
+Key: VMULSDrm_Int: [ 0.00 0.00 ]
+Key: VMULSDrr: [ 0.00 0.00 ]
+Key: VMULSDrr_Int: [ 0.00 0.00 ]
+Key: VMULSHZrm: [ 0.00 0.00 ]
+Key: VMULSHZrm_Int: [ 0.00 0.00 ]
+Key: VMULSHZrmk_Int: [ 0.00 0.00 ]
+Key: VMULSHZrmkz_Int: [ 0.00 0.00 ]
+Key: VMULSHZrr: [ 0.00 0.00 ]
+Key: VMULSHZrr_Int: [ 0.00 0.00 ]
+Key: VMULSHZrrb_Int: [ 0.00 0.00 ]
+Key: VMULSHZrrbk_Int: [ 0.00 0.00 ]
+Key: VMULSHZrrbkz_Int: [ 0.00 0.00 ]
+Key: VMULSHZrrk_Int: [ 0.00 0.00 ]
+Key: VMULSHZrrkz_Int: [ 0.00 0.00 ]
+Key: VMULSSZrm: [ 0.00 0.00 ]
+Key: VMULSSZrm_Int: [ 0.00 0.00 ]
+Key: VMULSSZrmk_Int: [ 0.00 0.00 ]
+Key: VMULSSZrmkz_Int: [ 0.00 0.00 ]
+Key: VMULSSZrr: [ 0.00 0.00 ]
+Key: VMULSSZrr_Int: [ 0.00 0.00 ]
+Key: VMULSSZrrb_Int: [ 0.00 0.00 ]
+Key: VMULSSZrrbk_Int: [ 0.00 0.00 ]
+Key: VMULSSZrrbkz_Int: [ 0.00 0.00 ]
+Key: VMULSSZrrk_Int: [ 0.00 0.00 ]
+Key: VMULSSZrrkz_Int: [ 0.00 0.00 ]
+Key: VMULSSrm: [ 0.00 0.00 ]
+Key: VMULSSrm_Int: [ 0.00 0.00 ]
+Key: VMULSSrr: [ 0.00 0.00 ]
+Key: VMULSSrr_Int: [ 0.00 0.00 ]
+Key: VMWRITE: [ 0.00 0.00 ]
+Key: VMXOFF: [ 0.00 0.00 ]
+Key: VMXON: [ 0.00 0.00 ]
+Key: VORPDYrm: [ 0.00 0.00 ]
+Key: VORPDYrr: [ 0.00 0.00 ]
+Key: VORPDZ: [ 0.00 0.00 ]
+Key: VORPDZrm: [ 0.00 0.00 ]
+Key: VORPDZrmb: [ 0.00 0.00 ]
+Key: VORPDZrmbk: [ 0.00 0.00 ]
+Key: VORPDZrmbkz: [ 0.00 0.00 ]
+Key: VORPDZrmk: [ 0.00 0.00 ]
+Key: VORPDZrmkz: [ 0.00 0.00 ]
+Key: VORPDZrr: [ 0.00 0.00 ]
+Key: VORPDZrrk: [ 0.00 0.00 ]
+Key: VORPDZrrkz: [ 0.00 0.00 ]
+Key: VORPDrm: [ 0.00 0.00 ]
+Key: VORPDrr: [ 0.00 0.00 ]
+Key: VORPSYrm: [ 0.00 0.00 ]
+Key: VORPSYrr: [ 0.00 0.00 ]
+Key: VORPSZ: [ 0.00 0.00 ]
+Key: VORPSZrm: [ 0.00 0.00 ]
+Key: VORPSZrmb: [ 0.00 0.00 ]
+Key: VORPSZrmbk: [ 0.00 0.00 ]
+Key: VORPSZrmbkz: [ 0.00 0.00 ]
+Key: VORPSZrmk: [ 0.00 0.00 ]
+Key: VORPSZrmkz: [ 0.00 0.00 ]
+Key: VORPSZrr: [ 0.00 0.00 ]
+Key: VORPSZrrk: [ 0.00 0.00 ]
+Key: VORPSZrrkz: [ 0.00 0.00 ]
+Key: VORPSrm: [ 0.00 0.00 ]
+Key: VORPSrr: [ 0.00 0.00 ]
+Key: VP: [ 0.00 0.00 ]
+Key: VPABSBYrm: [ 0.00 0.00 ]
+Key: VPABSBYrr: [ 0.00 0.00 ]
+Key: VPABSBZ: [ 0.00 0.00 ]
+Key: VPABSBZrm: [ 0.00 0.00 ]
+Key: VPABSBZrmk: [ 0.00 0.00 ]
+Key: VPABSBZrmkz: [ 0.00 0.00 ]
+Key: VPABSBZrr: [ 0.00 0.00 ]
+Key: VPABSBZrrk: [ 0.00 0.00 ]
+Key: VPABSBZrrkz: [ 0.00 0.00 ]
+Key: VPABSBrm: [ 0.00 0.00 ]
+Key: VPABSBrr: [ 0.00 0.00 ]
+Key: VPABSDYrm: [ 0.00 0.00 ]
+Key: VPABSDYrr: [ 0.00 0.00 ]
+Key: VPABSDZ: [ 0.00 0.00 ]
+Key: VPABSDZrm: [ 0.00 0.00 ]
+Key: VPABSDZrmb: [ 0.00 0.00 ]
+Key: VPABSDZrmbk: [ 0.00 0.00 ]
+Key: VPABSDZrmbkz: [ 0.00 0.00 ]
+Key: VPABSDZrmk: [ 0.00 0.00 ]
+Key: VPABSDZrmkz: [ 0.00 0.00 ]
+Key: VPABSDZrr: [ 0.00 0.00 ]
+Key: VPABSDZrrk: [ 0.00 0.00 ]
+Key: VPABSDZrrkz: [ 0.00 0.00 ]
+Key: VPABSDrm: [ 0.00 0.00 ]
+Key: VPABSDrr: [ 0.00 0.00 ]
+Key: VPABSQZ: [ 0.00 0.00 ]
+Key: VPABSQZrm: [ 0.00 0.00 ]
+Key: VPABSQZrmb: [ 0.00 0.00 ]
+Key: VPABSQZrmbk: [ 0.00 0.00 ]
+Key: VPABSQZrmbkz: [ 0.00 0.00 ]
+Key: VPABSQZrmk: [ 0.00 0.00 ]
+Key: VPABSQZrmkz: [ 0.00 0.00 ]
+Key: VPABSQZrr: [ 0.00 0.00 ]
+Key: VPABSQZrrk: [ 0.00 0.00 ]
+Key: VPABSQZrrkz: [ 0.00 0.00 ]
+Key: VPABSWYrm: [ 0.00 0.00 ]
+Key: VPABSWYrr: [ 0.00 0.00 ]
+Key: VPABSWZ: [ 0.00 0.00 ]
+Key: VPABSWZrm: [ 0.00 0.00 ]
+Key: VPABSWZrmk: [ 0.00 0.00 ]
+Key: VPABSWZrmkz: [ 0.00 0.00 ]
+Key: VPABSWZrr: [ 0.00 0.00 ]
+Key: VPABSWZrrk: [ 0.00 0.00 ]
+Key: VPABSWZrrkz: [ 0.00 0.00 ]
+Key: VPABSWrm: [ 0.00 0.00 ]
+Key: VPABSWrr: [ 0.00 0.00 ]
+Key: VPACKSSDWYrm: [ 0.00 0.00 ]
+Key: VPACKSSDWYrr: [ 0.00 0.00 ]
+Key: VPACKSSDWZ: [ 0.00 0.00 ]
+Key: VPACKSSDWZrm: [ 0.00 0.00 ]
+Key: VPACKSSDWZrmb: [ 0.00 0.00 ]
+Key: VPACKSSDWZrmbk: [ 0.00 0.00 ]
+Key: VPACKSSDWZrmbkz: [ 0.00 0.00 ]
+Key: VPACKSSDWZrmk: [ 0.00 0.00 ]
+Key: VPACKSSDWZrmkz: [ 0.00 0.00 ]
+Key: VPACKSSDWZrr: [ 0.00 0.00 ]
+Key: VPACKSSDWZrrk: [ 0.00 0.00 ]
+Key: VPACKSSDWZrrkz: [ 0.00 0.00 ]
+Key: VPACKSSDWrm: [ 0.00 0.00 ]
+Key: VPACKSSDWrr: [ 0.00 0.00 ]
+Key: VPACKSSWBYrm: [ 0.00 0.00 ]
+Key: VPACKSSWBYrr: [ 0.00 0.00 ]
+Key: VPACKSSWBZ: [ 0.00 0.00 ]
+Key: VPACKSSWBZrm: [ 0.00 0.00 ]
+Key: VPACKSSWBZrmk: [ 0.00 0.00 ]
+Key: VPACKSSWBZrmkz: [ 0.00 0.00 ]
+Key: VPACKSSWBZrr: [ 0.00 0.00 ]
+Key: VPACKSSWBZrrk: [ 0.00 0.00 ]
+Key: VPACKSSWBZrrkz: [ 0.00 0.00 ]
+Key: VPACKSSWBrm: [ 0.00 0.00 ]
+Key: VPACKSSWBrr: [ 0.00 0.00 ]
+Key: VPACKUSDWYrm: [ 0.00 0.00 ]
+Key: VPACKUSDWYrr: [ 0.00 0.00 ]
+Key: VPACKUSDWZ: [ 0.00 0.00 ]
+Key: VPACKUSDWZrm: [ 0.00 0.00 ]
+Key: VPACKUSDWZrmb: [ 0.00 0.00 ]
+Key: VPACKUSDWZrmbk: [ 0.00 0.00 ]
+Key: VPACKUSDWZrmbkz: [ 0.00 0.00 ]
+Key: VPACKUSDWZrmk: [ 0.00 0.00 ]
+Key: VPACKUSDWZrmkz: [ 0.00 0.00 ]
+Key: VPACKUSDWZrr: [ 0.00 0.00 ]
+Key: VPACKUSDWZrrk: [ 0.00 0.00 ]
+Key: VPACKUSDWZrrkz: [ 0.00 0.00 ]
+Key: VPACKUSDWrm: [ 0.00 0.00 ]
+Key: VPACKUSDWrr: [ 0.00 0.00 ]
+Key: VPACKUSWBYrm: [ 0.00 0.00 ]
+Key: VPACKUSWBYrr: [ 0.00 0.00 ]
+Key: VPACKUSWBZ: [ 0.00 0.00 ]
+Key: VPACKUSWBZrm: [ 0.00 0.00 ]
+Key: VPACKUSWBZrmk: [ 0.00 0.00 ]
+Key: VPACKUSWBZrmkz: [ 0.00 0.00 ]
+Key: VPACKUSWBZrr: [ 0.00 0.00 ]
+Key: VPACKUSWBZrrk: [ 0.00 0.00 ]
+Key: VPACKUSWBZrrkz: [ 0.00 0.00 ]
+Key: VPACKUSWBrm: [ 0.00 0.00 ]
+Key: VPACKUSWBrr: [ 0.00 0.00 ]
+Key: VPADDBYrm: [ 0.00 0.00 ]
+Key: VPADDBYrr: [ 0.00 0.00 ]
+Key: VPADDBZ: [ 0.00 0.00 ]
+Key: VPADDBZrm: [ 0.00 0.00 ]
+Key: VPADDBZrmk: [ 0.00 0.00 ]
+Key: VPADDBZrmkz: [ 0.00 0.00 ]
+Key: VPADDBZrr: [ 0.00 0.00 ]
+Key: VPADDBZrrk: [ 0.00 0.00 ]
+Key: VPADDBZrrkz: [ 0.00 0.00 ]
+Key: VPADDBrm: [ 0.00 0.00 ]
+Key: VPADDBrr: [ 0.00 0.00 ]
+Key: VPADDDYrm: [ 0.00 0.00 ]
+Key: VPADDDYrr: [ 0.00 0.00 ]
+Key: VPADDDZ: [ 0.00 0.00 ]
+Key: VPADDDZrm: [ 0.00 0.00 ]
+Key: VPADDDZrmb: [ 0.00 0.00 ]
+Key: VPADDDZrmbk: [ 0.00 0.00 ]
+Key: VPADDDZrmbkz: [ 0.00 0.00 ]
+Key: VPADDDZrmk: [ 0.00 0.00 ]
+Key: VPADDDZrmkz: [ 0.00 0.00 ]
+Key: VPADDDZrr: [ 0.00 0.00 ]
+Key: VPADDDZrrk: [ 0.00 0.00 ]
+Key: VPADDDZrrkz: [ 0.00 0.00 ]
+Key: VPADDDrm: [ 0.00 0.00 ]
+Key: VPADDDrr: [ 0.00 0.00 ]
+Key: VPADDQYrm: [ 0.00 0.00 ]
+Key: VPADDQYrr: [ 0.00 0.00 ]
+Key: VPADDQZ: [ 0.00 0.00 ]
+Key: VPADDQZrm: [ 0.00 0.00 ]
+Key: VPADDQZrmb: [ 0.00 0.00 ]
+Key: VPADDQZrmbk: [ 0.00 0.00 ]
+Key: VPADDQZrmbkz: [ 0.00 0.00 ]
+Key: VPADDQZrmk: [ 0.00 0.00 ]
+Key: VPADDQZrmkz: [ 0.00 0.00 ]
+Key: VPADDQZrr: [ 0.00 0.00 ]
+Key: VPADDQZrrk: [ 0.00 0.00 ]
+Key: VPADDQZrrkz: [ 0.00 0.00 ]
+Key: VPADDQrm: [ 0.00 0.00 ]
+Key: VPADDQrr: [ 0.00 0.00 ]
+Key: VPADDSBYrm: [ 0.00 0.00 ]
+Key: VPADDSBYrr: [ 0.00 0.00 ]
+Key: VPADDSBZ: [ 0.00 0.00 ]
+Key: VPADDSBZrm: [ 0.00 0.00 ]
+Key: VPADDSBZrmk: [ 0.00 0.00 ]
+Key: VPADDSBZrmkz: [ 0.00 0.00 ]
+Key: VPADDSBZrr: [ 0.00 0.00 ]
+Key: VPADDSBZrrk: [ 0.00 0.00 ]
+Key: VPADDSBZrrkz: [ 0.00 0.00 ]
+Key: VPADDSBrm: [ 0.00 0.00 ]
+Key: VPADDSBrr: [ 0.00 0.00 ]
+Key: VPADDSWYrm: [ 0.00 0.00 ]
+Key: VPADDSWYrr: [ 0.00 0.00 ]
+Key: VPADDSWZ: [ 0.00 0.00 ]
+Key: VPADDSWZrm: [ 0.00 0.00 ]
+Key: VPADDSWZrmk: [ 0.00 0.00 ]
+Key: VPADDSWZrmkz: [ 0.00 0.00 ]
+Key: VPADDSWZrr: [ 0.00 0.00 ]
+Key: VPADDSWZrrk: [ 0.00 0.00 ]
+Key: VPADDSWZrrkz: [ 0.00 0.00 ]
+Key: VPADDSWrm: [ 0.00 0.00 ]
+Key: VPADDSWrr: [ 0.00 0.00 ]
+Key: VPADDUSBYrm: [ 0.00 0.00 ]
+Key: VPADDUSBYrr: [ 0.00 0.00 ]
+Key: VPADDUSBZ: [ 0.00 0.00 ]
+Key: VPADDUSBZrm: [ 0.00 0.00 ]
+Key: VPADDUSBZrmk: [ 0.00 0.00 ]
+Key: VPADDUSBZrmkz: [ 0.00 0.00 ]
+Key: VPADDUSBZrr: [ 0.00 0.00 ]
+Key: VPADDUSBZrrk: [ 0.00 0.00 ]
+Key: VPADDUSBZrrkz: [ 0.00 0.00 ]
+Key: VPADDUSBrm: [ 0.00 0.00 ]
+Key: VPADDUSBrr: [ 0.00 0.00 ]
+Key: VPADDUSWYrm: [ 0.00 0.00 ]
+Key: VPADDUSWYrr: [ 0.00 0.00 ]
+Key: VPADDUSWZ: [ 0.00 0.00 ]
+Key: VPADDUSWZrm: [ 0.00 0.00 ]
+Key: VPADDUSWZrmk: [ 0.00 0.00 ]
+Key: VPADDUSWZrmkz: [ 0.00 0.00 ]
+Key: VPADDUSWZrr: [ 0.00 0.00 ]
+Key: VPADDUSWZrrk: [ 0.00 0.00 ]
+Key: VPADDUSWZrrkz: [ 0.00 0.00 ]
+Key: VPADDUSWrm: [ 0.00 0.00 ]
+Key: VPADDUSWrr: [ 0.00 0.00 ]
+Key: VPADDWYrm: [ 0.00 0.00 ]
+Key: VPADDWYrr: [ 0.00 0.00 ]
+Key: VPADDWZ: [ 0.00 0.00 ]
+Key: VPADDWZrm: [ 0.00 0.00 ]
+Key: VPADDWZrmk: [ 0.00 0.00 ]
+Key: VPADDWZrmkz: [ 0.00 0.00 ]
+Key: VPADDWZrr: [ 0.00 0.00 ]
+Key: VPADDWZrrk: [ 0.00 0.00 ]
+Key: VPADDWZrrkz: [ 0.00 0.00 ]
+Key: VPADDWrm: [ 0.00 0.00 ]
+Key: VPADDWrr: [ 0.00 0.00 ]
+Key: VPALIGNRYrmi: [ 0.00 0.00 ]
+Key: VPALIGNRYrri: [ 0.00 0.00 ]
+Key: VPALIGNRZ: [ 0.00 0.00 ]
+Key: VPALIGNRZrmi: [ 0.00 0.00 ]
+Key: VPALIGNRZrmik: [ 0.00 0.00 ]
+Key: VPALIGNRZrmikz: [ 0.00 0.00 ]
+Key: VPALIGNRZrri: [ 0.00 0.00 ]
+Key: VPALIGNRZrrik: [ 0.00 0.00 ]
+Key: VPALIGNRZrrikz: [ 0.00 0.00 ]
+Key: VPALIGNRrmi: [ 0.00 0.00 ]
+Key: VPALIGNRrri: [ 0.00 0.00 ]
+Key: VPANDDZ: [ 0.00 0.00 ]
+Key: VPANDDZrm: [ 0.00 0.00 ]
+Key: VPANDDZrmb: [ 0.00 0.00 ]
+Key: VPANDDZrmbk: [ 0.00 0.00 ]
+Key: VPANDDZrmbkz: [ 0.00 0.00 ]
+Key: VPANDDZrmk: [ 0.00 0.00 ]
+Key: VPANDDZrmkz: [ 0.00 0.00 ]
+Key: VPANDDZrr: [ 0.00 0.00 ]
+Key: VPANDDZrrk: [ 0.00 0.00 ]
+Key: VPANDDZrrkz: [ 0.00 0.00 ]
+Key: VPANDNDZ: [ 0.00 0.00 ]
+Key: VPANDNDZrm: [ 0.00 0.00 ]
+Key: VPANDNDZrmb: [ 0.00 0.00 ]
+Key: VPANDNDZrmbk: [ 0.00 0.00 ]
+Key: VPANDNDZrmbkz: [ 0.00 0.00 ]
+Key: VPANDNDZrmk: [ 0.00 0.00 ]
+Key: VPANDNDZrmkz: [ 0.00 0.00 ]
+Key: VPANDNDZrr: [ 0.00 0.00 ]
+Key: VPANDNDZrrk: [ 0.00 0.00 ]
+Key: VPANDNDZrrkz: [ 0.00 0.00 ]
+Key: VPANDNQZ: [ 0.00 0.00 ]
+Key: VPANDNQZrm: [ 0.00 0.00 ]
+Key: VPANDNQZrmb: [ 0.00 0.00 ]
+Key: VPANDNQZrmbk: [ 0.00 0.00 ]
+Key: VPANDNQZrmbkz: [ 0.00 0.00 ]
+Key: VPANDNQZrmk: [ 0.00 0.00 ]
+Key: VPANDNQZrmkz: [ 0.00 0.00 ]
+Key: VPANDNQZrr: [ 0.00 0.00 ]
+Key: VPANDNQZrrk: [ 0.00 0.00 ]
+Key: VPANDNQZrrkz: [ 0.00 0.00 ]
+Key: VPANDNYrm: [ 0.00 0.00 ]
+Key: VPANDNYrr: [ 0.00 0.00 ]
+Key: VPANDNrm: [ 0.00 0.00 ]
+Key: VPANDNrr: [ 0.00 0.00 ]
+Key: VPANDQZ: [ 0.00 0.00 ]
+Key: VPANDQZrm: [ 0.00 0.00 ]
+Key: VPANDQZrmb: [ 0.00 0.00 ]
+Key: VPANDQZrmbk: [ 0.00 0.00 ]
+Key: VPANDQZrmbkz: [ 0.00 0.00 ]
+Key: VPANDQZrmk: [ 0.00 0.00 ]
+Key: VPANDQZrmkz: [ 0.00 0.00 ]
+Key: VPANDQZrr: [ 0.00 0.00 ]
+Key: VPANDQZrrk: [ 0.00 0.00 ]
+Key: VPANDQZrrkz: [ 0.00 0.00 ]
+Key: VPANDYrm: [ 0.00 0.00 ]
+Key: VPANDYrr: [ 0.00 0.00 ]
+Key: VPANDrm: [ 0.00 0.00 ]
+Key: VPANDrr: [ 0.00 0.00 ]
+Key: VPAVGBYrm: [ 0.00 0.00 ]
+Key: VPAVGBYrr: [ 0.00 0.00 ]
+Key: VPAVGBZ: [ 0.00 0.00 ]
+Key: VPAVGBZrm: [ 0.00 0.00 ]
+Key: VPAVGBZrmk: [ 0.00 0.00 ]
+Key: VPAVGBZrmkz: [ 0.00 0.00 ]
+Key: VPAVGBZrr: [ 0.00 0.00 ]
+Key: VPAVGBZrrk: [ 0.00 0.00 ]
+Key: VPAVGBZrrkz: [ 0.00 0.00 ]
+Key: VPAVGBrm: [ 0.00 0.00 ]
+Key: VPAVGBrr: [ 0.00 0.00 ]
+Key: VPAVGWYrm: [ 0.00 0.00 ]
+Key: VPAVGWYrr: [ 0.00 0.00 ]
+Key: VPAVGWZ: [ 0.00 0.00 ]
+Key: VPAVGWZrm: [ 0.00 0.00 ]
+Key: VPAVGWZrmk: [ 0.00 0.00 ]
+Key: VPAVGWZrmkz: [ 0.00 0.00 ]
+Key: VPAVGWZrr: [ 0.00 0.00 ]
+Key: VPAVGWZrrk: [ 0.00 0.00 ]
+Key: VPAVGWZrrkz: [ 0.00 0.00 ]
+Key: VPAVGWrm: [ 0.00 0.00 ]
+Key: VPAVGWrr: [ 0.00 0.00 ]
+Key: VPBLENDDYrmi: [ 0.00 0.00 ]
+Key: VPBLENDDYrri: [ 0.00 0.00 ]
+Key: VPBLENDDrmi: [ 0.00 0.00 ]
+Key: VPBLENDDrri: [ 0.00 0.00 ]
+Key: VPBLENDMBZ: [ 0.00 0.00 ]
+Key: VPBLENDMBZrm: [ 0.00 0.00 ]
+Key: VPBLENDMBZrmk: [ 0.00 0.00 ]
+Key: VPBLENDMBZrmkz: [ 0.00 0.00 ]
+Key: VPBLENDMBZrr: [ 0.00 0.00 ]
+Key: VPBLENDMBZrrk: [ 0.00 0.00 ]
+Key: VPBLENDMBZrrkz: [ 0.00 0.00 ]
+Key: VPBLENDMDZ: [ 0.00 0.00 ]
+Key: VPBLENDMDZrm: [ 0.00 0.00 ]
+Key: VPBLENDMDZrmb: [ 0.00 0.00 ]
+Key: VPBLENDMDZrmbk: [ 0.00 0.00 ]
+Key: VPBLENDMDZrmbkz: [ 0.00 0.00 ]
+Key: VPBLENDMDZrmk: [ 0.00 0.00 ]
+Key: VPBLENDMDZrmkz: [ 0.00 0.00 ]
+Key: VPBLENDMDZrr: [ 0.00 0.00 ]
+Key: VPBLENDMDZrrk: [ 0.00 0.00 ]
+Key: VPBLENDMDZrrkz: [ 0.00 0.00 ]
+Key: VPBLENDMQZ: [ 0.00 0.00 ]
+Key: VPBLENDMQZrm: [ 0.00 0.00 ]
+Key: VPBLENDMQZrmb: [ 0.00 0.00 ]
+Key: VPBLENDMQZrmbk: [ 0.00 0.00 ]
+Key: VPBLENDMQZrmbkz: [ 0.00 0.00 ]
+Key: VPBLENDMQZrmk: [ 0.00 0.00 ]
+Key: VPBLENDMQZrmkz: [ 0.00 0.00 ]
+Key: VPBLENDMQZrr: [ 0.00 0.00 ]
+Key: VPBLENDMQZrrk: [ 0.00 0.00 ]
+Key: VPBLENDMQZrrkz: [ 0.00 0.00 ]
+Key: VPBLENDMWZ: [ 0.00 0.00 ]
+Key: VPBLENDMWZrm: [ 0.00 0.00 ]
+Key: VPBLENDMWZrmk: [ 0.00 0.00 ]
+Key: VPBLENDMWZrmkz: [ 0.00 0.00 ]
+Key: VPBLENDMWZrr: [ 0.00 0.00 ]
+Key: VPBLENDMWZrrk: [ 0.00 0.00 ]
+Key: VPBLENDMWZrrkz: [ 0.00 0.00 ]
+Key: VPBLENDVBYrmr: [ 0.00 0.00 ]
+Key: VPBLENDVBYrrr: [ 0.00 0.00 ]
+Key: VPBLENDVBrmr: [ 0.00 0.00 ]
+Key: VPBLENDVBrrr: [ 0.00 0.00 ]
+Key: VPBLENDWYrmi: [ 0.00 0.00 ]
+Key: VPBLENDWYrri: [ 0.00 0.00 ]
+Key: VPBLENDWrmi: [ 0.00 0.00 ]
+Key: VPBLENDWrri: [ 0.00 0.00 ]
+Key: VPBROADCASTBYrm: [ 0.00 0.00 ]
+Key: VPBROADCASTBYrr: [ 0.00 0.00 ]
+Key: VPBROADCASTBZ: [ 0.00 0.00 ]
+Key: VPBROADCASTBZrm: [ 0.00 0.00 ]
+Key: VPBROADCASTBZrmk: [ 0.00 0.00 ]
+Key: VPBROADCASTBZrmkz: [ 0.00 0.00 ]
+Key: VPBROADCASTBZrr: [ 0.00 0.00 ]
+Key: VPBROADCASTBZrrk: [ 0.00 0.00 ]
+Key: VPBROADCASTBZrrkz: [ 0.00 0.00 ]
+Key: VPBROADCASTBrZ: [ 0.00 0.00 ]
+Key: VPBROADCASTBrZrr: [ 0.00 0.00 ]
+Key: VPBROADCASTBrZrrk: [ 0.00 0.00 ]
+Key: VPBROADCASTBrZrrkz: [ 0.00 0.00 ]
+Key: VPBROADCASTBrm: [ 0.00 0.00 ]
+Key: VPBROADCASTBrr: [ 0.00 0.00 ]
+Key: VPBROADCASTDYrm: [ 0.00 0.00 ]
+Key: VPBROADCASTDYrr: [ 0.00 0.00 ]
+Key: VPBROADCASTDZ: [ 0.00 0.00 ]
+Key: VPBROADCASTDZrm: [ 0.00 0.00 ]
+Key: VPBROADCASTDZrmk: [ 0.00 0.00 ]
+Key: VPBROADCASTDZrmkz: [ 0.00 0.00 ]
+Key: VPBROADCASTDZrr: [ 0.00 0.00 ]
+Key: VPBROADCASTDZrrk: [ 0.00 0.00 ]
+Key: VPBROADCASTDZrrkz: [ 0.00 0.00 ]
+Key: VPBROADCASTDrZ: [ 0.00 0.00 ]
+Key: VPBROADCASTDrZrr: [ 0.00 0.00 ]
+Key: VPBROADCASTDrZrrk: [ 0.00 0.00 ]
+Key: VPBROADCASTDrZrrkz: [ 0.00 0.00 ]
+Key: VPBROADCASTDrm: [ 0.00 0.00 ]
+Key: VPBROADCASTDrr: [ 0.00 0.00 ]
+Key: VPBROADCASTMB: [ 0.00 0.00 ]
+Key: VPBROADCASTMW: [ 0.00 0.00 ]
+Key: VPBROADCASTQYrm: [ 0.00 0.00 ]
+Key: VPBROADCASTQYrr: [ 0.00 0.00 ]
+Key: VPBROADCASTQZ: [ 0.00 0.00 ]
+Key: VPBROADCASTQZrm: [ 0.00 0.00 ]
+Key: VPBROADCASTQZrmk: [ 0.00 0.00 ]
+Key: VPBROADCASTQZrmkz: [ 0.00 0.00 ]
+Key: VPBROADCASTQZrr: [ 0.00 0.00 ]
+Key: VPBROADCASTQZrrk: [ 0.00 0.00 ]
+Key: VPBROADCASTQZrrkz: [ 0.00 0.00 ]
+Key: VPBROADCASTQrZ: [ 0.00 0.00 ]
+Key: VPBROADCASTQrZrr: [ 0.00 0.00 ]
+Key: VPBROADCASTQrZrrk: [ 0.00 0.00 ]
+Key: VPBROADCASTQrZrrkz: [ 0.00 0.00 ]
+Key: VPBROADCASTQrm: [ 0.00 0.00 ]
+Key: VPBROADCASTQrr: [ 0.00 0.00 ]
+Key: VPBROADCASTWYrm: [ 0.00 0.00 ]
+Key: VPBROADCASTWYrr: [ 0.00 0.00 ]
+Key: VPBROADCASTWZ: [ 0.00 0.00 ]
+Key: VPBROADCASTWZrm: [ 0.00 0.00 ]
+Key: VPBROADCASTWZrmk: [ 0.00 0.00 ]
+Key: VPBROADCASTWZrmkz: [ 0.00 0.00 ]
+Key: VPBROADCASTWZrr: [ 0.00 0.00 ]
+Key: VPBROADCASTWZrrk: [ 0.00 0.00 ]
+Key: VPBROADCASTWZrrkz: [ 0.00 0.00 ]
+Key: VPBROADCASTWrZ: [ 0.00 0.00 ]
+Key: VPBROADCASTWrZrr: [ 0.00 0.00 ]
+Key: VPBROADCASTWrZrrk: [ 0.00 0.00 ]
+Key: VPBROADCASTWrZrrkz: [ 0.00 0.00 ]
+Key: VPBROADCASTWrm: [ 0.00 0.00 ]
+Key: VPBROADCASTWrr: [ 0.00 0.00 ]
+Key: VPCLMULQDQYrmi: [ 0.00 0.00 ]
+Key: VPCLMULQDQYrri: [ 0.00 0.00 ]
+Key: VPCLMULQDQZ: [ 0.00 0.00 ]
+Key: VPCLMULQDQZrmi: [ 0.00 0.00 ]
+Key: VPCLMULQDQZrri: [ 0.00 0.00 ]
+Key: VPCLMULQDQrmi: [ 0.00 0.00 ]
+Key: VPCLMULQDQrri: [ 0.00 0.00 ]
+Key: VPCMOVYrmr: [ 0.00 0.00 ]
+Key: VPCMOVYrrm: [ 0.00 0.00 ]
+Key: VPCMOVYrrr: [ 0.00 0.00 ]
+Key: VPCMOVYrrr_REV: [ 0.00 0.00 ]
+Key: VPCMOVrmr: [ 0.00 0.00 ]
+Key: VPCMOVrrm: [ 0.00 0.00 ]
+Key: VPCMOVrrr: [ 0.00 0.00 ]
+Key: VPCMOVrrr_REV: [ 0.00 0.00 ]
+Key: VPCMPBZ: [ 0.00 0.00 ]
+Key: VPCMPBZrmi: [ 0.00 0.00 ]
+Key: VPCMPBZrmik: [ 0.00 0.00 ]
+Key: VPCMPBZrri: [ 0.00 0.00 ]
+Key: VPCMPBZrrik: [ 0.00 0.00 ]
+Key: VPCMPDZ: [ 0.00 0.00 ]
+Key: VPCMPDZrmbi: [ 0.00 0.00 ]
+Key: VPCMPDZrmbik: [ 0.00 0.00 ]
+Key: VPCMPDZrmi: [ 0.00 0.00 ]
+Key: VPCMPDZrmik: [ 0.00 0.00 ]
+Key: VPCMPDZrri: [ 0.00 0.00 ]
+Key: VPCMPDZrrik: [ 0.00 0.00 ]
+Key: VPCMPEQBYrm: [ 0.00 0.00 ]
+Key: VPCMPEQBYrr: [ 0.00 0.00 ]
+Key: VPCMPEQBZ: [ 0.00 0.00 ]
+Key: VPCMPEQBZrm: [ 0.00 0.00 ]
+Key: VPCMPEQBZrmk: [ 0.00 0.00 ]
+Key: VPCMPEQBZrr: [ 0.00 0.00 ]
+Key: VPCMPEQBZrrk: [ 0.00 0.00 ]
+Key: VPCMPEQBrm: [ 0.00 0.00 ]
+Key: VPCMPEQBrr: [ 0.00 0.00 ]
+Key: VPCMPEQDYrm: [ 0.00 0.00 ]
+Key: VPCMPEQDYrr: [ 0.00 0.00 ]
+Key: VPCMPEQDZ: [ 0.00 0.00 ]
+Key: VPCMPEQDZrm: [ 0.00 0.00 ]
+Key: VPCMPEQDZrmb: [ 0.00 0.00 ]
+Key: VPCMPEQDZrmbk: [ 0.00 0.00 ]
+Key: VPCMPEQDZrmk: [ 0.00 0.00 ]
+Key: VPCMPEQDZrr: [ 0.00 0.00 ]
+Key: VPCMPEQDZrrk: [ 0.00 0.00 ]
+Key: VPCMPEQDrm: [ 0.00 0.00 ]
+Key: VPCMPEQDrr: [ 0.00 0.00 ]
+Key: VPCMPEQQYrm: [ 0.00 0.00 ]
+Key: VPCMPEQQYrr: [ 0.00 0.00 ]
+Key: VPCMPEQQZ: [ 0.00 0.00 ]
+Key: VPCMPEQQZrm: [ 0.00 0.00 ]
+Key: VPCMPEQQZrmb: [ 0.00 0.00 ]
+Key: VPCMPEQQZrmbk: [ 0.00 0.00 ]
+Key: VPCMPEQQZrmk: [ 0.00 0.00 ]
+Key: VPCMPEQQZrr: [ 0.00 0.00 ]
+Key: VPCMPEQQZrrk: [ 0.00 0.00 ]
+Key: VPCMPEQQrm: [ 0.00 0.00 ]
+Key: VPCMPEQQrr: [ 0.00 0.00 ]
+Key: VPCMPEQWYrm: [ 0.00 0.00 ]
+Key: VPCMPEQWYrr: [ 0.00 0.00 ]
+Key: VPCMPEQWZ: [ 0.00 0.00 ]
+Key: VPCMPEQWZrm: [ 0.00 0.00 ]
+Key: VPCMPEQWZrmk: [ 0.00 0.00 ]
+Key: VPCMPEQWZrr: [ 0.00 0.00 ]
+Key: VPCMPEQWZrrk: [ 0.00 0.00 ]
+Key: VPCMPEQWrm: [ 0.00 0.00 ]
+Key: VPCMPEQWrr: [ 0.00 0.00 ]
+Key: VPCMPESTRIrmi: [ 0.00 0.00 ]
+Key: VPCMPESTRIrri: [ 0.00 0.00 ]
+Key: VPCMPESTRMrmi: [ 0.00 0.00 ]
+Key: VPCMPESTRMrri: [ 0.00 0.00 ]
+Key: VPCMPGTBYrm: [ 0.00 0.00 ]
+Key: VPCMPGTBYrr: [ 0.00 0.00 ]
+Key: VPCMPGTBZ: [ 0.00 0.00 ]
+Key: VPCMPGTBZrm: [ 0.00 0.00 ]
+Key: VPCMPGTBZrmk: [ 0.00 0.00 ]
+Key: VPCMPGTBZrr: [ 0.00 0.00 ]
+Key: VPCMPGTBZrrk: [ 0.00 0.00 ]
+Key: VPCMPGTBrm: [ 0.00 0.00 ]
+Key: VPCMPGTBrr: [ 0.00 0.00 ]
+Key: VPCMPGTDYrm: [ 0.00 0.00 ]
+Key: VPCMPGTDYrr: [ 0.00 0.00 ]
+Key: VPCMPGTDZ: [ 0.00 0.00 ]
+Key: VPCMPGTDZrm: [ 0.00 0.00 ]
+Key: VPCMPGTDZrmb: [ 0.00 0.00 ]
+Key: VPCMPGTDZrmbk: [ 0.00 0.00 ]
+Key: VPCMPGTDZrmk: [ 0.00 0.00 ]
+Key: VPCMPGTDZrr: [ 0.00 0.00 ]
+Key: VPCMPGTDZrrk: [ 0.00 0.00 ]
+Key: VPCMPGTDrm: [ 0.00 0.00 ]
+Key: VPCMPGTDrr: [ 0.00 0.00 ]
+Key: VPCMPGTQYrm: [ 0.00 0.00 ]
+Key: VPCMPGTQYrr: [ 0.00 0.00 ]
+Key: VPCMPGTQZ: [ 0.00 0.00 ]
+Key: VPCMPGTQZrm: [ 0.00 0.00 ]
+Key: VPCMPGTQZrmb: [ 0.00 0.00 ]
+Key: VPCMPGTQZrmbk: [ 0.00 0.00 ]
+Key: VPCMPGTQZrmk: [ 0.00 0.00 ]
+Key: VPCMPGTQZrr: [ 0.00 0.00 ]
+Key: VPCMPGTQZrrk: [ 0.00 0.00 ]
+Key: VPCMPGTQrm: [ 0.00 0.00 ]
+Key: VPCMPGTQrr: [ 0.00 0.00 ]
+Key: VPCMPGTWYrm: [ 0.00 0.00 ]
+Key: VPCMPGTWYrr: [ 0.00 0.00 ]
+Key: VPCMPGTWZ: [ 0.00 0.00 ]
+Key: VPCMPGTWZrm: [ 0.00 0.00 ]
+Key: VPCMPGTWZrmk: [ 0.00 0.00 ]
+Key: VPCMPGTWZrr: [ 0.00 0.00 ]
+Key: VPCMPGTWZrrk: [ 0.00 0.00 ]
+Key: VPCMPGTWrm: [ 0.00 0.00 ]
+Key: VPCMPGTWrr: [ 0.00 0.00 ]
+Key: VPCMPISTRIrmi: [ 0.00 0.00 ]
+Key: VPCMPISTRIrri: [ 0.00 0.00 ]
+Key: VPCMPISTRMrmi: [ 0.00 0.00 ]
+Key: VPCMPISTRMrri: [ 0.00 0.00 ]
+Key: VPCMPQZ: [ 0.00 0.00 ]
+Key: VPCMPQZrmbi: [ 0.00 0.00 ]
+Key: VPCMPQZrmbik: [ 0.00 0.00 ]
+Key: VPCMPQZrmi: [ 0.00 0.00 ]
+Key: VPCMPQZrmik: [ 0.00 0.00 ]
+Key: VPCMPQZrri: [ 0.00 0.00 ]
+Key: VPCMPQZrrik: [ 0.00 0.00 ]
+Key: VPCMPUBZ: [ 0.00 0.00 ]
+Key: VPCMPUBZrmi: [ 0.00 0.00 ]
+Key: VPCMPUBZrmik: [ 0.00 0.00 ]
+Key: VPCMPUBZrri: [ 0.00 0.00 ]
+Key: VPCMPUBZrrik: [ 0.00 0.00 ]
+Key: VPCMPUDZ: [ 0.00 0.00 ]
+Key: VPCMPUDZrmbi: [ 0.00 0.00 ]
+Key: VPCMPUDZrmbik: [ 0.00 0.00 ]
+Key: VPCMPUDZrmi: [ 0.00 0.00 ]
+Key: VPCMPUDZrmik: [ 0.00 0.00 ]
+Key: VPCMPUDZrri: [ 0.00 0.00 ]
+Key: VPCMPUDZrrik: [ 0.00 0.00 ]
+Key: VPCMPUQZ: [ 0.00 0.00 ]
+Key: VPCMPUQZrmbi: [ 0.00 0.00 ]
+Key: VPCMPUQZrmbik: [ 0.00 0.00 ]
+Key: VPCMPUQZrmi: [ 0.00 0.00 ]
+Key: VPCMPUQZrmik: [ 0.00 0.00 ]
+Key: VPCMPUQZrri: [ 0.00 0.00 ]
+Key: VPCMPUQZrrik: [ 0.00 0.00 ]
+Key: VPCMPUWZ: [ 0.00 0.00 ]
+Key: VPCMPUWZrmi: [ 0.00 0.00 ]
+Key: VPCMPUWZrmik: [ 0.00 0.00 ]
+Key: VPCMPUWZrri: [ 0.00 0.00 ]
+Key: VPCMPUWZrrik: [ 0.00 0.00 ]
+Key: VPCMPWZ: [ 0.00 0.00 ]
+Key: VPCMPWZrmi: [ 0.00 0.00 ]
+Key: VPCMPWZrmik: [ 0.00 0.00 ]
+Key: VPCMPWZrri: [ 0.00 0.00 ]
+Key: VPCMPWZrrik: [ 0.00 0.00 ]
+Key: VPCOMBmi: [ 0.00 0.00 ]
+Key: VPCOMBri: [ 0.00 0.00 ]
+Key: VPCOMDmi: [ 0.00 0.00 ]
+Key: VPCOMDri: [ 0.00 0.00 ]
+Key: VPCOMPRESSBZ: [ 0.00 0.00 ]
+Key: VPCOMPRESSBZmr: [ 0.00 0.00 ]
+Key: VPCOMPRESSBZmrk: [ 0.00 0.00 ]
+Key: VPCOMPRESSBZrr: [ 0.00 0.00 ]
+Key: VPCOMPRESSBZrrk: [ 0.00 0.00 ]
+Key: VPCOMPRESSBZrrkz: [ 0.00 0.00 ]
+Key: VPCOMPRESSDZ: [ 0.00 0.00 ]
+Key: VPCOMPRESSDZmr: [ 0.00 0.00 ]
+Key: VPCOMPRESSDZmrk: [ 0.00 0.00 ]
+Key: VPCOMPRESSDZrr: [ 0.00 0.00 ]
+Key: VPCOMPRESSDZrrk: [ 0.00 0.00 ]
+Key: VPCOMPRESSDZrrkz: [ 0.00 0.00 ]
+Key: VPCOMPRESSQZ: [ 0.00 0.00 ]
+Key: VPCOMPRESSQZmr: [ 0.00 0.00 ]
+Key: VPCOMPRESSQZmrk: [ 0.00 0.00 ]
+Key: VPCOMPRESSQZrr: [ 0.00 0.00 ]
+Key: VPCOMPRESSQZrrk: [ 0.00 0.00 ]
+Key: VPCOMPRESSQZrrkz: [ 0.00 0.00 ]
+Key: VPCOMPRESSWZ: [ 0.00 0.00 ]
+Key: VPCOMPRESSWZmr: [ 0.00 0.00 ]
+Key: VPCOMPRESSWZmrk: [ 0.00 0.00 ]
+Key: VPCOMPRESSWZrr: [ 0.00 0.00 ]
+Key: VPCOMPRESSWZrrk: [ 0.00 0.00 ]
+Key: VPCOMPRESSWZrrkz: [ 0.00 0.00 ]
+Key: VPCOMQmi: [ 0.00 0.00 ]
+Key: VPCOMQri: [ 0.00 0.00 ]
+Key: VPCOMUBmi: [ 0.00 0.00 ]
+Key: VPCOMUBri: [ 0.00 0.00 ]
+Key: VPCOMUDmi: [ 0.00 0.00 ]
+Key: VPCOMUDri: [ 0.00 0.00 ]
+Key: VPCOMUQmi: [ 0.00 0.00 ]
+Key: VPCOMUQri: [ 0.00 0.00 ]
+Key: VPCOMUWmi: [ 0.00 0.00 ]
+Key: VPCOMUWri: [ 0.00 0.00 ]
+Key: VPCOMWmi: [ 0.00 0.00 ]
+Key: VPCOMWri: [ 0.00 0.00 ]
+Key: VPCONFLICTDZ: [ 0.00 0.00 ]
+Key: VPCONFLICTDZrm: [ 0.00 0.00 ]
+Key: VPCONFLICTDZrmb: [ 0.00 0.00 ]
+Key: VPCONFLICTDZrmbk: [ 0.00 0.00 ]
+Key: VPCONFLICTDZrmbkz: [ 0.00 0.00 ]
+Key: VPCONFLICTDZrmk: [ 0.00 0.00 ]
+Key: VPCONFLICTDZrmkz: [ 0.00 0.00 ]
+Key: VPCONFLICTDZrr: [ 0.00 0.00 ]
+Key: VPCONFLICTDZrrk: [ 0.00 0.00 ]
+Key: VPCONFLICTDZrrkz: [ 0.00 0.00 ]
+Key: VPCONFLICTQZ: [ 0.00 0.00 ]
+Key: VPCONFLICTQZrm: [ 0.00 0.00 ]
+Key: VPCONFLICTQZrmb: [ 0.00 0.00 ]
+Key: VPCONFLICTQZrmbk: [ 0.00 0.00 ]
+Key: VPCONFLICTQZrmbkz: [ 0.00 0.00 ]
+Key: VPCONFLICTQZrmk: [ 0.00 0.00 ]
+Key: VPCONFLICTQZrmkz: [ 0.00 0.00 ]
+Key: VPCONFLICTQZrr: [ 0.00 0.00 ]
+Key: VPCONFLICTQZrrk: [ 0.00 0.00 ]
+Key: VPCONFLICTQZrrkz: [ 0.00 0.00 ]
+Key: VPDPBSSDSYrm: [ 0.00 0.00 ]
+Key: VPDPBSSDSYrr: [ 0.00 0.00 ]
+Key: VPDPBSSDSZ: [ 0.00 0.00 ]
+Key: VPDPBSSDSZrm: [ 0.00 0.00 ]
+Key: VPDPBSSDSZrmb: [ 0.00 0.00 ]
+Key: VPDPBSSDSZrmbk: [ 0.00 0.00 ]
+Key: VPDPBSSDSZrmbkz: [ 0.00 0.00 ]
+Key: VPDPBSSDSZrmk: [ 0.00 0.00 ]
+Key: VPDPBSSDSZrmkz: [ 0.00 0.00 ]
+Key: VPDPBSSDSZrr: [ 0.00 0.00 ]
+Key: VPDPBSSDSZrrk: [ 0.00 0.00 ]
+Key: VPDPBSSDSZrrkz: [ 0.00 0.00 ]
+Key: VPDPBSSDSrm: [ 0.00 0.00 ]
+Key: VPDPBSSDSrr: [ 0.00 0.00 ]
+Key: VPDPBSSDYrm: [ 0.00 0.00 ]
+Key: VPDPBSSDYrr: [ 0.00 0.00 ]
+Key: VPDPBSSDZ: [ 0.00 0.00 ]
+Key: VPDPBSSDZrm: [ 0.00 0.00 ]
+Key: VPDPBSSDZrmb: [ 0.00 0.00 ]
+Key: VPDPBSSDZrmbk: [ 0.00 0.00 ]
+Key: VPDPBSSDZrmbkz: [ 0.00 0.00 ]
+Key: VPDPBSSDZrmk: [ 0.00 0.00 ]
+Key: VPDPBSSDZrmkz: [ 0.00 0.00 ]
+Key: VPDPBSSDZrr: [ 0.00 0.00 ]
+Key: VPDPBSSDZrrk: [ 0.00 0.00 ]
+Key: VPDPBSSDZrrkz: [ 0.00 0.00 ]
+Key: VPDPBSSDrm: [ 0.00 0.00 ]
+Key: VPDPBSSDrr: [ 0.00 0.00 ]
+Key: VPDPBSUDSYrm: [ 0.00 0.00 ]
+Key: VPDPBSUDSYrr: [ 0.00 0.00 ]
+Key: VPDPBSUDSZ: [ 0.00 0.00 ]
+Key: VPDPBSUDSZrm: [ 0.00 0.00 ]
+Key: VPDPBSUDSZrmb: [ 0.00 0.00 ]
+Key: VPDPBSUDSZrmbk: [ 0.00 0.00 ]
+Key: VPDPBSUDSZrmbkz: [ 0.00 0.00 ]
+Key: VPDPBSUDSZrmk: [ 0.00 0.00 ]
+Key: VPDPBSUDSZrmkz: [ 0.00 0.00 ]
+Key: VPDPBSUDSZrr: [ 0.00 0.00 ]
+Key: VPDPBSUDSZrrk: [ 0.00 0.00 ]
+Key: VPDPBSUDSZrrkz: [ 0.00 0.00 ]
+Key: VPDPBSUDSrm: [ 0.00 0.00 ]
+Key: VPDPBSUDSrr: [ 0.00 0.00 ]
+Key: VPDPBSUDYrm: [ 0.00 0.00 ]
+Key: VPDPBSUDYrr: [ 0.00 0.00 ]
+Key: VPDPBSUDZ: [ 0.00 0.00 ]
+Key: VPDPBSUDZrm: [ 0.00 0.00 ]
+Key: VPDPBSUDZrmb: [ 0.00 0.00 ]
+Key: VPDPBSUDZrmbk: [ 0.00 0.00 ]
+Key: VPDPBSUDZrmbkz: [ 0.00 0.00 ]
+Key: VPDPBSUDZrmk: [ 0.00 0.00 ]
+Key: VPDPBSUDZrmkz: [ 0.00 0.00 ]
+Key: VPDPBSUDZrr: [ 0.00 0.00 ]
+Key: VPDPBSUDZrrk: [ 0.00 0.00 ]
+Key: VPDPBSUDZrrkz: [ 0.00 0.00 ]
+Key: VPDPBSUDrm: [ 0.00 0.00 ]
+Key: VPDPBSUDrr: [ 0.00 0.00 ]
+Key: VPDPBUSDSYrm: [ 0.00 0.00 ]
+Key: VPDPBUSDSYrr: [ 0.00 0.00 ]
+Key: VPDPBUSDSZ: [ 0.00 0.00 ]
+Key: VPDPBUSDSZrm: [ 0.00 0.00 ]
+Key: VPDPBUSDSZrmb: [ 0.00 0.00 ]
+Key: VPDPBUSDSZrmbk: [ 0.00 0.00 ]
+Key: VPDPBUSDSZrmbkz: [ 0.00 0.00 ]
+Key: VPDPBUSDSZrmk: [ 0.00 0.00 ]
+Key: VPDPBUSDSZrmkz: [ 0.00 0.00 ]
+Key: VPDPBUSDSZrr: [ 0.00 0.00 ]
+Key: VPDPBUSDSZrrk: [ 0.00 0.00 ]
+Key: VPDPBUSDSZrrkz: [ 0.00 0.00 ]
+Key: VPDPBUSDSrm: [ 0.00 0.00 ]
+Key: VPDPBUSDSrr: [ 0.00 0.00 ]
+Key: VPDPBUSDYrm: [ 0.00 0.00 ]
+Key: VPDPBUSDYrr: [ 0.00 0.00 ]
+Key: VPDPBUSDZ: [ 0.00 0.00 ]
+Key: VPDPBUSDZrm: [ 0.00 0.00 ]
+Key: VPDPBUSDZrmb: [ 0.00 0.00 ]
+Key: VPDPBUSDZrmbk: [ 0.00 0.00 ]
+Key: VPDPBUSDZrmbkz: [ 0.00 0.00 ]
+Key: VPDPBUSDZrmk: [ 0.00 0.00 ]
+Key: VPDPBUSDZrmkz: [ 0.00 0.00 ]
+Key: VPDPBUSDZrr: [ 0.00 0.00 ]
+Key: VPDPBUSDZrrk: [ 0.00 0.00 ]
+Key: VPDPBUSDZrrkz: [ 0.00 0.00 ]
+Key: VPDPBUSDrm: [ 0.00 0.00 ]
+Key: VPDPBUSDrr: [ 0.00 0.00 ]
+Key: VPDPBUUDSYrm: [ 0.00 0.00 ]
+Key: VPDPBUUDSYrr: [ 0.00 0.00 ]
+Key: VPDPBUUDSZ: [ 0.00 0.00 ]
+Key: VPDPBUUDSZrm: [ 0.00 0.00 ]
+Key: VPDPBUUDSZrmb: [ 0.00 0.00 ]
+Key: VPDPBUUDSZrmbk: [ 0.00 0.00 ]
+Key: VPDPBUUDSZrmbkz: [ 0.00 0.00 ]
+Key: VPDPBUUDSZrmk: [ 0.00 0.00 ]
+Key: VPDPBUUDSZrmkz: [ 0.00 0.00 ]
+Key: VPDPBUUDSZrr: [ 0.00 0.00 ]
+Key: VPDPBUUDSZrrk: [ 0.00 0.00 ]
+Key: VPDPBUUDSZrrkz: [ 0.00 0.00 ]
+Key: VPDPBUUDSrm: [ 0.00 0.00 ]
+Key: VPDPBUUDSrr: [ 0.00 0.00 ]
+Key: VPDPBUUDYrm: [ 0.00 0.00 ]
+Key: VPDPBUUDYrr: [ 0.00 0.00 ]
+Key: VPDPBUUDZ: [ 0.00 0.00 ]
+Key: VPDPBUUDZrm: [ 0.00 0.00 ]
+Key: VPDPBUUDZrmb: [ 0.00 0.00 ]
+Key: VPDPBUUDZrmbk: [ 0.00 0.00 ]
+Key: VPDPBUUDZrmbkz: [ 0.00 0.00 ]
+Key: VPDPBUUDZrmk: [ 0.00 0.00 ]
+Key: VPDPBUUDZrmkz: [ 0.00 0.00 ]
+Key: VPDPBUUDZrr: [ 0.00 0.00 ]
+Key: VPDPBUUDZrrk: [ 0.00 0.00 ]
+Key: VPDPBUUDZrrkz: [ 0.00 0.00 ]
+Key: VPDPBUUDrm: [ 0.00 0.00 ]
+Key: VPDPBUUDrr: [ 0.00 0.00 ]
+Key: VPDPWSSDSYrm: [ 0.00 0.00 ]
+Key: VPDPWSSDSYrr: [ 0.00 0.00 ]
+Key: VPDPWSSDSZ: [ 0.00 0.00 ]
+Key: VPDPWSSDSZrm: [ 0.00 0.00 ]
+Key: VPDPWSSDSZrmb: [ 0.00 0.00 ]
+Key: VPDPWSSDSZrmbk: [ 0.00 0.00 ]
+Key: VPDPWSSDSZrmbkz: [ 0.00 0.00 ]
+Key: VPDPWSSDSZrmk: [ 0.00 0.00 ]
+Key: VPDPWSSDSZrmkz: [ 0.00 0.00 ]
+Key: VPDPWSSDSZrr: [ 0.00 0.00 ]
+Key: VPDPWSSDSZrrk: [ 0.00 0.00 ]
+Key: VPDPWSSDSZrrkz: [ 0.00 0.00 ]
+Key: VPDPWSSDSrm: [ 0.00 0.00 ]
+Key: VPDPWSSDSrr: [ 0.00 0.00 ]
+Key: VPDPWSSDYrm: [ 0.00 0.00 ]
+Key: VPDPWSSDYrr: [ 0.00 0.00 ]
+Key: VPDPWSSDZ: [ 0.00 0.00 ]
+Key: VPDPWSSDZrm: [ 0.00 0.00 ]
+Key: VPDPWSSDZrmb: [ 0.00 0.00 ]
+Key: VPDPWSSDZrmbk: [ 0.00 0.00 ]
+Key: VPDPWSSDZrmbkz: [ 0.00 0.00 ]
+Key: VPDPWSSDZrmk: [ 0.00 0.00 ]
+Key: VPDPWSSDZrmkz: [ 0.00 0.00 ]
+Key: VPDPWSSDZrr: [ 0.00 0.00 ]
+Key: VPDPWSSDZrrk: [ 0.00 0.00 ]
+Key: VPDPWSSDZrrkz: [ 0.00 0.00 ]
+Key: VPDPWSSDrm: [ 0.00 0.00 ]
+Key: VPDPWSSDrr: [ 0.00 0.00 ]
+Key: VPDPWSUDSYrm: [ 0.00 0.00 ]
+Key: VPDPWSUDSYrr: [ 0.00 0.00 ]
+Key: VPDPWSUDSZ: [ 0.00 0.00 ]
+Key: VPDPWSUDSZrm: [ 0.00 0.00 ]
+Key: VPDPWSUDSZrmb: [ 0.00 0.00 ]
+Key: VPDPWSUDSZrmbk: [ 0.00 0.00 ]
+Key: VPDPWSUDSZrmbkz: [ 0.00 0.00 ]
+Key: VPDPWSUDSZrmk: [ 0.00 0.00 ]
+Key: VPDPWSUDSZrmkz: [ 0.00 0.00 ]
+Key: VPDPWSUDSZrr: [ 0.00 0.00 ]
+Key: VPDPWSUDSZrrk: [ 0.00 0.00 ]
+Key: VPDPWSUDSZrrkz: [ 0.00 0.00 ]
+Key: VPDPWSUDSrm: [ 0.00 0.00 ]
+Key: VPDPWSUDSrr: [ 0.00 0.00 ]
+Key: VPDPWSUDYrm: [ 0.00 0.00 ]
+Key: VPDPWSUDYrr: [ 0.00 0.00 ]
+Key: VPDPWSUDZ: [ 0.00 0.00 ]
+Key: VPDPWSUDZrm: [ 0.00 0.00 ]
+Key: VPDPWSUDZrmb: [ 0.00 0.00 ]
+Key: VPDPWSUDZrmbk: [ 0.00 0.00 ]
+Key: VPDPWSUDZrmbkz: [ 0.00 0.00 ]
+Key: VPDPWSUDZrmk: [ 0.00 0.00 ]
+Key: VPDPWSUDZrmkz: [ 0.00 0.00 ]
+Key: VPDPWSUDZrr: [ 0.00 0.00 ]
+Key: VPDPWSUDZrrk: [ 0.00 0.00 ]
+Key: VPDPWSUDZrrkz: [ 0.00 0.00 ]
+Key: VPDPWSUDrm: [ 0.00 0.00 ]
+Key: VPDPWSUDrr: [ 0.00 0.00 ]
+Key: VPDPWUSDSYrm: [ 0.00 0.00 ]
+Key: VPDPWUSDSYrr: [ 0.00 0.00 ]
+Key: VPDPWUSDSZ: [ 0.00 0.00 ]
+Key: VPDPWUSDSZrm: [ 0.00 0.00 ]
+Key: VPDPWUSDSZrmb: [ 0.00 0.00 ]
+Key: VPDPWUSDSZrmbk: [ 0.00 0.00 ]
+Key: VPDPWUSDSZrmbkz: [ 0.00 0.00 ]
+Key: VPDPWUSDSZrmk: [ 0.00 0.00 ]
+Key: VPDPWUSDSZrmkz: [ 0.00 0.00 ]
+Key: VPDPWUSDSZrr: [ 0.00 0.00 ]
+Key: VPDPWUSDSZrrk: [ 0.00 0.00 ]
+Key: VPDPWUSDSZrrkz: [ 0.00 0.00 ]
+Key: VPDPWUSDSrm: [ 0.00 0.00 ]
+Key: VPDPWUSDSrr: [ 0.00 0.00 ]
+Key: VPDPWUSDYrm: [ 0.00 0.00 ]
+Key: VPDPWUSDYrr: [ 0.00 0.00 ]
+Key: VPDPWUSDZ: [ 0.00 0.00 ]
+Key: VPDPWUSDZrm: [ 0.00 0.00 ]
+Key: VPDPWUSDZrmb: [ 0.00 0.00 ]
+Key: VPDPWUSDZrmbk: [ 0.00 0.00 ]
+Key: VPDPWUSDZrmbkz: [ 0.00 0.00 ]
+Key: VPDPWUSDZrmk: [ 0.00 0.00 ]
+Key: VPDPWUSDZrmkz: [ 0.00 0.00 ]
+Key: VPDPWUSDZrr: [ 0.00 0.00 ]
+Key: VPDPWUSDZrrk: [ 0.00 0.00 ]
+Key: VPDPWUSDZrrkz: [ 0.00 0.00 ]
+Key: VPDPWUSDrm: [ 0.00 0.00 ]
+Key: VPDPWUSDrr: [ 0.00 0.00 ]
+Key: VPDPWUUDSYrm: [ 0.00 0.00 ]
+Key: VPDPWUUDSYrr: [ 0.00 0.00 ]
+Key: VPDPWUUDSZ: [ 0.00 0.00 ]
+Key: VPDPWUUDSZrm: [ 0.00 0.00 ]
+Key: VPDPWUUDSZrmb: [ 0.00 0.00 ]
+Key: VPDPWUUDSZrmbk: [ 0.00 0.00 ]
+Key: VPDPWUUDSZrmbkz: [ 0.00 0.00 ]
+Key: VPDPWUUDSZrmk: [ 0.00 0.00 ]
+Key: VPDPWUUDSZrmkz: [ 0.00 0.00 ]
+Key: VPDPWUUDSZrr: [ 0.00 0.00 ]
+Key: VPDPWUUDSZrrk: [ 0.00 0.00 ]
+Key: VPDPWUUDSZrrkz: [ 0.00 0.00 ]
+Key: VPDPWUUDSrm: [ 0.00 0.00 ]
+Key: VPDPWUUDSrr: [ 0.00 0.00 ]
+Key: VPDPWUUDYrm: [ 0.00 0.00 ]
+Key: VPDPWUUDYrr: [ 0.00 0.00 ]
+Key: VPDPWUUDZ: [ 0.00 0.00 ]
+Key: VPDPWUUDZrm: [ 0.00 0.00 ]
+Key: VPDPWUUDZrmb: [ 0.00 0.00 ]
+Key: VPDPWUUDZrmbk: [ 0.00 0.00 ]
+Key: VPDPWUUDZrmbkz: [ 0.00 0.00 ]
+Key: VPDPWUUDZrmk: [ 0.00 0.00 ]
+Key: VPDPWUUDZrmkz: [ 0.00 0.00 ]
+Key: VPDPWUUDZrr: [ 0.00 0.00 ]
+Key: VPDPWUUDZrrk: [ 0.00 0.00 ]
+Key: VPDPWUUDZrrkz: [ 0.00 0.00 ]
+Key: VPDPWUUDrm: [ 0.00 0.00 ]
+Key: VPDPWUUDrr: [ 0.00 0.00 ]
+Key: VPERM: [ 0.00 0.00 ]
+Key: VPERMBZ: [ 0.00 0.00 ]
+Key: VPERMBZrm: [ 0.00 0.00 ]
+Key: VPERMBZrmk: [ 0.00 0.00 ]
+Key: VPERMBZrmkz: [ 0.00 0.00 ]
+Key: VPERMBZrr: [ 0.00 0.00 ]
+Key: VPERMBZrrk: [ 0.00 0.00 ]
+Key: VPERMBZrrkz: [ 0.00 0.00 ]
+Key: VPERMDYrm: [ 0.00 0.00 ]
+Key: VPERMDYrr: [ 0.00 0.00 ]
+Key: VPERMDZ: [ 0.00 0.00 ]
+Key: VPERMDZrm: [ 0.00 0.00 ]
+Key: VPERMDZrmb: [ 0.00 0.00 ]
+Key: VPERMDZrmbk: [ 0.00 0.00 ]
+Key: VPERMDZrmbkz: [ 0.00 0.00 ]
+Key: VPERMDZrmk: [ 0.00 0.00 ]
+Key: VPERMDZrmkz: [ 0.00 0.00 ]
+Key: VPERMDZrr: [ 0.00 0.00 ]
+Key: VPERMDZrrk: [ 0.00 0.00 ]
+Key: VPERMDZrrkz: [ 0.00 0.00 ]
+Key: VPERMI: [ 0.00 0.00 ]
+Key: VPERMIL: [ 0.00 0.00 ]
+Key: VPERMILPDYmi: [ 0.00 0.00 ]
+Key: VPERMILPDYri: [ 0.00 0.00 ]
+Key: VPERMILPDYrm: [ 0.00 0.00 ]
+Key: VPERMILPDYrr: [ 0.00 0.00 ]
+Key: VPERMILPDZ: [ 0.00 0.00 ]
+Key: VPERMILPDZmbi: [ 0.00 0.00 ]
+Key: VPERMILPDZmbik: [ 0.00 0.00 ]
+Key: VPERMILPDZmbikz: [ 0.00 0.00 ]
+Key: VPERMILPDZmi: [ 0.00 0.00 ]
+Key: VPERMILPDZmik: [ 0.00 0.00 ]
+Key: VPERMILPDZmikz: [ 0.00 0.00 ]
+Key: VPERMILPDZri: [ 0.00 0.00 ]
+Key: VPERMILPDZrik: [ 0.00 0.00 ]
+Key: VPERMILPDZrikz: [ 0.00 0.00 ]
+Key: VPERMILPDZrm: [ 0.00 0.00 ]
+Key: VPERMILPDZrmb: [ 0.00 0.00 ]
+Key: VPERMILPDZrmbk: [ 0.00 0.00 ]
+Key: VPERMILPDZrmbkz: [ 0.00 0.00 ]
+Key: VPERMILPDZrmk: [ 0.00 0.00 ]
+Key: VPERMILPDZrmkz: [ 0.00 0.00 ]
+Key: VPERMILPDZrr: [ 0.00 0.00 ]
+Key: VPERMILPDZrrk: [ 0.00 0.00 ]
+Key: VPERMILPDZrrkz: [ 0.00 0.00 ]
+Key: VPERMILPDmi: [ 0.00 0.00 ]
+Key: VPERMILPDri: [ 0.00 0.00 ]
+Key: VPERMILPDrm: [ 0.00 0.00 ]
+Key: VPERMILPDrr: [ 0.00 0.00 ]
+Key: VPERMILPSYmi: [ 0.00 0.00 ]
+Key: VPERMILPSYri: [ 0.00 0.00 ]
+Key: VPERMILPSYrm: [ 0.00 0.00 ]
+Key: VPERMILPSYrr: [ 0.00 0.00 ]
+Key: VPERMILPSZ: [ 0.00 0.00 ]
+Key: VPERMILPSZmbi: [ 0.00 0.00 ]
+Key: VPERMILPSZmbik: [ 0.00 0.00 ]
+Key: VPERMILPSZmbikz: [ 0.00 0.00 ]
+Key: VPERMILPSZmi: [ 0.00 0.00 ]
+Key: VPERMILPSZmik: [ 0.00 0.00 ]
+Key: VPERMILPSZmikz: [ 0.00 0.00 ]
+Key: VPERMILPSZri: [ 0.00 0.00 ]
+Key: VPERMILPSZrik: [ 0.00 0.00 ]
+Key: VPERMILPSZrikz: [ 0.00 0.00 ]
+Key: VPERMILPSZrm: [ 0.00 0.00 ]
+Key: VPERMILPSZrmb: [ 0.00 0.00 ]
+Key: VPERMILPSZrmbk: [ 0.00 0.00 ]
+Key: VPERMILPSZrmbkz: [ 0.00 0.00 ]
+Key: VPERMILPSZrmk: [ 0.00 0.00 ]
+Key: VPERMILPSZrmkz: [ 0.00 0.00 ]
+Key: VPERMILPSZrr: [ 0.00 0.00 ]
+Key: VPERMILPSZrrk: [ 0.00 0.00 ]
+Key: VPERMILPSZrrkz: [ 0.00 0.00 ]
+Key: VPERMILPSmi: [ 0.00 0.00 ]
+Key: VPERMILPSri: [ 0.00 0.00 ]
+Key: VPERMILPSrm: [ 0.00 0.00 ]
+Key: VPERMILPSrr: [ 0.00 0.00 ]
+Key: VPERMPDYmi: [ 0.00 0.00 ]
+Key: VPERMPDYri: [ 0.00 0.00 ]
+Key: VPERMPDZ: [ 0.00 0.00 ]
+Key: VPERMPDZmbi: [ 0.00 0.00 ]
+Key: VPERMPDZmbik: [ 0.00 0.00 ]
+Key: VPERMPDZmbikz: [ 0.00 0.00 ]
+Key: VPERMPDZmi: [ 0.00 0.00 ]
+Key: VPERMPDZmik: [ 0.00 0.00 ]
+Key: VPERMPDZmikz: [ 0.00 0.00 ]
+Key: VPERMPDZri: [ 0.00 0.00 ]
+Key: VPERMPDZrik: [ 0.00 0.00 ]
+Key: VPERMPDZrikz: [ 0.00 0.00 ]
+Key: VPERMPDZrm: [ 0.00 0.00 ]
+Key: VPERMPDZrmb: [ 0.00 0.00 ]
+Key: VPERMPDZrmbk: [ 0.00 0.00 ]
+Key: VPERMPDZrmbkz: [ 0.00 0.00 ]
+Key: VPERMPDZrmk: [ 0.00 0.00 ]
+Key: VPERMPDZrmkz: [ 0.00 0.00 ]
+Key: VPERMPDZrr: [ 0.00 0.00 ]
+Key: VPERMPDZrrk: [ 0.00 0.00 ]
+Key: VPERMPDZrrkz: [ 0.00 0.00 ]
+Key: VPERMPSYrm: [ 0.00 0.00 ]
+Key: VPERMPSYrr: [ 0.00 0.00 ]
+Key: VPERMPSZ: [ 0.00 0.00 ]
+Key: VPERMPSZrm: [ 0.00 0.00 ]
+Key: VPERMPSZrmb: [ 0.00 0.00 ]
+Key: VPERMPSZrmbk: [ 0.00 0.00 ]
+Key: VPERMPSZrmbkz: [ 0.00 0.00 ]
+Key: VPERMPSZrmk: [ 0.00 0.00 ]
+Key: VPERMPSZrmkz: [ 0.00 0.00 ]
+Key: VPERMPSZrr: [ 0.00 0.00 ]
+Key: VPERMPSZrrk: [ 0.00 0.00 ]
+Key: VPERMPSZrrkz: [ 0.00 0.00 ]
+Key: VPERMQYmi: [ 0.00 0.00 ]
+Key: VPERMQYri: [ 0.00 0.00 ]
+Key: VPERMQZ: [ 0.00 0.00 ]
+Key: VPERMQZmbi: [ 0.00 0.00 ]
+Key: VPERMQZmbik: [ 0.00 0.00 ]
+Key: VPERMQZmbikz: [ 0.00 0.00 ]
+Key: VPERMQZmi: [ 0.00 0.00 ]
+Key: VPERMQZmik: [ 0.00 0.00 ]
+Key: VPERMQZmikz: [ 0.00 0.00 ]
+Key: VPERMQZri: [ 0.00 0.00 ]
+Key: VPERMQZrik: [ 0.00 0.00 ]
+Key: VPERMQZrikz: [ 0.00 0.00 ]
+Key: VPERMQZrm: [ 0.00 0.00 ]
+Key: VPERMQZrmb: [ 0.00 0.00 ]
+Key: VPERMQZrmbk: [ 0.00 0.00 ]
+Key: VPERMQZrmbkz: [ 0.00 0.00 ]
+Key: VPERMQZrmk: [ 0.00 0.00 ]
+Key: VPERMQZrmkz: [ 0.00 0.00 ]
+Key: VPERMQZrr: [ 0.00 0.00 ]
+Key: VPERMQZrrk: [ 0.00 0.00 ]
+Key: VPERMQZrrkz: [ 0.00 0.00 ]
+Key: VPERMT: [ 0.00 0.00 ]
+Key: VPERMWZ: [ 0.00 0.00 ]
+Key: VPERMWZrm: [ 0.00 0.00 ]
+Key: VPERMWZrmk: [ 0.00 0.00 ]
+Key: VPERMWZrmkz: [ 0.00 0.00 ]
+Key: VPERMWZrr: [ 0.00 0.00 ]
+Key: VPERMWZrrk: [ 0.00 0.00 ]
+Key: VPERMWZrrkz: [ 0.00 0.00 ]
+Key: VPEXPANDBZ: [ 0.00 0.00 ]
+Key: VPEXPANDBZrm: [ 0.00 0.00 ]
+Key: VPEXPANDBZrmk: [ 0.00 0.00 ]
+Key: VPEXPANDBZrmkz: [ 0.00 0.00 ]
+Key: VPEXPANDBZrr: [ 0.00 0.00 ]
+Key: VPEXPANDBZrrk: [ 0.00 0.00 ]
+Key: VPEXPANDBZrrkz: [ 0.00 0.00 ]
+Key: VPEXPANDDZ: [ 0.00 0.00 ]
+Key: VPEXPANDDZrm: [ 0.00 0.00 ]
+Key: VPEXPANDDZrmk: [ 0.00 0.00 ]
+Key: VPEXPANDDZrmkz: [ 0.00 0.00 ]
+Key: VPEXPANDDZrr: [ 0.00 0.00 ]
+Key: VPEXPANDDZrrk: [ 0.00 0.00 ]
+Key: VPEXPANDDZrrkz: [ 0.00 0.00 ]
+Key: VPEXPANDQZ: [ 0.00 0.00 ]
+Key: VPEXPANDQZrm: [ 0.00 0.00 ]
+Key: VPEXPANDQZrmk: [ 0.00 0.00 ]
+Key: VPEXPANDQZrmkz: [ 0.00 0.00 ]
+Key: VPEXPANDQZrr: [ 0.00 0.00 ]
+Key: VPEXPANDQZrrk: [ 0.00 0.00 ]
+Key: VPEXPANDQZrrkz: [ 0.00 0.00 ]
+Key: VPEXPANDWZ: [ 0.00 0.00 ]
+Key: VPEXPANDWZrm: [ 0.00 0.00 ]
+Key: VPEXPANDWZrmk: [ 0.00 0.00 ]
+Key: VPEXPANDWZrmkz: [ 0.00 0.00 ]
+Key: VPEXPANDWZrr: [ 0.00 0.00 ]
+Key: VPEXPANDWZrrk: [ 0.00 0.00 ]
+Key: VPEXPANDWZrrkz: [ 0.00 0.00 ]
+Key: VPEXTRBZmri: [ 0.00 0.00 ]
+Key: VPEXTRBZrri: [ 0.00 0.00 ]
+Key: VPEXTRBmri: [ 0.00 0.00 ]
+Key: VPEXTRBrri: [ 0.00 0.00 ]
+Key: VPEXTRDZmri: [ 0.00 0.00 ]
+Key: VPEXTRDZrri: [ 0.00 0.00 ]
+Key: VPEXTRDmri: [ 0.00 0.00 ]
+Key: VPEXTRDrri: [ 0.00 0.00 ]
+Key: VPEXTRQZmri: [ 0.00 0.00 ]
+Key: VPEXTRQZrri: [ 0.00 0.00 ]
+Key: VPEXTRQmri: [ 0.00 0.00 ]
+Key: VPEXTRQrri: [ 0.00 0.00 ]
+Key: VPEXTRWZmri: [ 0.00 0.00 ]
+Key: VPEXTRWZrri: [ 0.00 0.00 ]
+Key: VPEXTRWZrri_REV: [ 0.00 0.00 ]
+Key: VPEXTRWmri: [ 0.00 0.00 ]
+Key: VPEXTRWrri: [ 0.00 0.00 ]
+Key: VPEXTRWrri_REV: [ 0.00 0.00 ]
+Key: VPGATHERDDYrm: [ 0.00 0.00 ]
+Key: VPGATHERDDZ: [ 0.00 0.00 ]
+Key: VPGATHERDDZrm: [ 0.00 0.00 ]
+Key: VPGATHERDDrm: [ 0.00 0.00 ]
+Key: VPGATHERDQYrm: [ 0.00 0.00 ]
+Key: VPGATHERDQZ: [ 0.00 0.00 ]
+Key: VPGATHERDQZrm: [ 0.00 0.00 ]
+Key: VPGATHERDQrm: [ 0.00 0.00 ]
+Key: VPGATHERQDYrm: [ 0.00 0.00 ]
+Key: VPGATHERQDZ: [ 0.00 0.00 ]
+Key: VPGATHERQDZrm: [ 0.00 0.00 ]
+Key: VPGATHERQDrm: [ 0.00 0.00 ]
+Key: VPGATHERQQYrm: [ 0.00 0.00 ]
+Key: VPGATHERQQZ: [ 0.00 0.00 ]
+Key: VPGATHERQQZrm: [ 0.00 0.00 ]
+Key: VPGATHERQQrm: [ 0.00 0.00 ]
+Key: VPHADDBDrm: [ 0.00 0.00 ]
+Key: VPHADDBDrr: [ 0.00 0.00 ]
+Key: VPHADDBQrm: [ 0.00 0.00 ]
+Key: VPHADDBQrr: [ 0.00 0.00 ]
+Key: VPHADDBWrm: [ 0.00 0.00 ]
+Key: VPHADDBWrr: [ 0.00 0.00 ]
+Key: VPHADDDQrm: [ 0.00 0.00 ]
+Key: VPHADDDQrr: [ 0.00 0.00 ]
+Key: VPHADDDYrm: [ 0.00 0.00 ]
+Key: VPHADDDYrr: [ 0.00 0.00 ]
+Key: VPHADDDrm: [ 0.00 0.00 ]
+Key: VPHADDDrr: [ 0.00 0.00 ]
+Key: VPHADDSWYrm: [ 0.00 0.00 ]
+Key: VPHADDSWYrr: [ 0.00 0.00 ]
+Key: VPHADDSWrm: [ 0.00 0.00 ]
+Key: VPHADDSWrr: [ 0.00 0.00 ]
+Key: VPHADDUBDrm: [ 0.00 0.00 ]
+Key: VPHADDUBDrr: [ 0.00 0.00 ]
+Key: VPHADDUBQrm: [ 0.00 0.00 ]
+Key: VPHADDUBQrr: [ 0.00 0.00 ]
+Key: VPHADDUBWrm: [ 0.00 0.00 ]
+Key: VPHADDUBWrr: [ 0.00 0.00 ]
+Key: VPHADDUDQrm: [ 0.00 0.00 ]
+Key: VPHADDUDQrr: [ 0.00 0.00 ]
+Key: VPHADDUWDrm: [ 0.00 0.00 ]
+Key: VPHADDUWDrr: [ 0.00 0.00 ]
+Key: VPHADDUWQrm: [ 0.00 0.00 ]
+Key: VPHADDUWQrr: [ 0.00 0.00 ]
+Key: VPHADDWDrm: [ 0.00 0.00 ]
+Key: VPHADDWDrr: [ 0.00 0.00 ]
+Key: VPHADDWQrm: [ 0.00 0.00 ]
+Key: VPHADDWQrr: [ 0.00 0.00 ]
+Key: VPHADDWYrm: [ 0.00 0.00 ]
+Key: VPHADDWYrr: [ 0.00 0.00 ]
+Key: VPHADDWrm: [ 0.00 0.00 ]
+Key: VPHADDWrr: [ 0.00 0.00 ]
+Key: VPHMINPOSUWrm: [ 0.00 0.00 ]
+Key: VPHMINPOSUWrr: [ 0.00 0.00 ]
+Key: VPHSUBBWrm: [ 0.00 0.00 ]
+Key: VPHSUBBWrr: [ 0.00 0.00 ]
+Key: VPHSUBDQrm: [ 0.00 0.00 ]
+Key: VPHSUBDQrr: [ 0.00 0.00 ]
+Key: VPHSUBDYrm: [ 0.00 0.00 ]
+Key: VPHSUBDYrr: [ 0.00 0.00 ]
+Key: VPHSUBDrm: [ 0.00 0.00 ]
+Key: VPHSUBDrr: [ 0.00 0.00 ]
+Key: VPHSUBSWYrm: [ 0.00 0.00 ]
+Key: VPHSUBSWYrr: [ 0.00 0.00 ]
+Key: VPHSUBSWrm: [ 0.00 0.00 ]
+Key: VPHSUBSWrr: [ 0.00 0.00 ]
+Key: VPHSUBWDrm: [ 0.00 0.00 ]
+Key: VPHSUBWDrr: [ 0.00 0.00 ]
+Key: VPHSUBWYrm: [ 0.00 0.00 ]
+Key: VPHSUBWYrr: [ 0.00 0.00 ]
+Key: VPHSUBWrm: [ 0.00 0.00 ]
+Key: VPHSUBWrr: [ 0.00 0.00 ]
+Key: VPINSRBZrmi: [ 0.00 0.00 ]
+Key: VPINSRBZrri: [ 0.00 0.00 ]
+Key: VPINSRBrmi: [ 0.00 0.00 ]
+Key: VPINSRBrri: [ 0.00 0.00 ]
+Key: VPINSRDZrmi: [ 0.00 0.00 ]
+Key: VPINSRDZrri: [ 0.00 0.00 ]
+Key: VPINSRDrmi: [ 0.00 0.00 ]
+Key: VPINSRDrri: [ 0.00 0.00 ]
+Key: VPINSRQZrmi: [ 0.00 0.00 ]
+Key: VPINSRQZrri: [ 0.00 0.00 ]
+Key: VPINSRQrmi: [ 0.00 0.00 ]
+Key: VPINSRQrri: [ 0.00 0.00 ]
+Key: VPINSRWZrmi: [ 0.00 0.00 ]
+Key: VPINSRWZrri: [ 0.00 0.00 ]
+Key: VPINSRWrmi: [ 0.00 0.00 ]
+Key: VPINSRWrri: [ 0.00 0.00 ]
+Key: VPLZCNTDZ: [ 0.00 0.00 ]
+Key: VPLZCNTDZrm: [ 0.00 0.00 ]
+Key: VPLZCNTDZrmb: [ 0.00 0.00 ]
+Key: VPLZCNTDZrmbk: [ 0.00 0.00 ]
+Key: VPLZCNTDZrmbkz: [ 0.00 0.00 ]
+Key: VPLZCNTDZrmk: [ 0.00 0.00 ]
+Key: VPLZCNTDZrmkz: [ 0.00 0.00 ]
+Key: VPLZCNTDZrr: [ 0.00 0.00 ]
+Key: VPLZCNTDZrrk: [ 0.00 0.00 ]
+Key: VPLZCNTDZrrkz: [ 0.00 0.00 ]
+Key: VPLZCNTQZ: [ 0.00 0.00 ]
+Key: VPLZCNTQZrm: [ 0.00 0.00 ]
+Key: VPLZCNTQZrmb: [ 0.00 0.00 ]
+Key: VPLZCNTQZrmbk: [ 0.00 0.00 ]
+Key: VPLZCNTQZrmbkz: [ 0.00 0.00 ]
+Key: VPLZCNTQZrmk: [ 0.00 0.00 ]
+Key: VPLZCNTQZrmkz: [ 0.00 0.00 ]
+Key: VPLZCNTQZrr: [ 0.00 0.00 ]
+Key: VPLZCNTQZrrk: [ 0.00 0.00 ]
+Key: VPLZCNTQZrrkz: [ 0.00 0.00 ]
+Key: VPMACSDDrm: [ 0.00 0.00 ]
+Key: VPMACSDDrr: [ 0.00 0.00 ]
+Key: VPMACSDQHrm: [ 0.00 0.00 ]
+Key: VPMACSDQHrr: [ 0.00 0.00 ]
+Key: VPMACSDQLrm: [ 0.00 0.00 ]
+Key: VPMACSDQLrr: [ 0.00 0.00 ]
+Key: VPMACSSDDrm: [ 0.00 0.00 ]
+Key: VPMACSSDDrr: [ 0.00 0.00 ]
+Key: VPMACSSDQHrm: [ 0.00 0.00 ]
+Key: VPMACSSDQHrr: [ 0.00 0.00 ]
+Key: VPMACSSDQLrm: [ 0.00 0.00 ]
+Key: VPMACSSDQLrr: [ 0.00 0.00 ]
+Key: VPMACSSWDrm: [ 0.00 0.00 ]
+Key: VPMACSSWDrr: [ 0.00 0.00 ]
+Key: VPMACSSWWrm: [ 0.00 0.00 ]
+Key: VPMACSSWWrr: [ 0.00 0.00 ]
+Key: VPMACSWDrm: [ 0.00 0.00 ]
+Key: VPMACSWDrr: [ 0.00 0.00 ]
+Key: VPMACSWWrm: [ 0.00 0.00 ]
+Key: VPMACSWWrr: [ 0.00 0.00 ]
+Key: VPMADCSSWDrm: [ 0.00 0.00 ]
+Key: VPMADCSSWDrr: [ 0.00 0.00 ]
+Key: VPMADCSWDrm: [ 0.00 0.00 ]
+Key: VPMADCSWDrr: [ 0.00 0.00 ]
+Key: VPMADD: [ 0.00 0.00 ]
+Key: VPMADDUBSWYrm: [ 0.00 0.00 ]
+Key: VPMADDUBSWYrr: [ 0.00 0.00 ]
+Key: VPMADDUBSWZ: [ 0.00 0.00 ]
+Key: VPMADDUBSWZrm: [ 0.00 0.00 ]
+Key: VPMADDUBSWZrmk: [ 0.00 0.00 ]
+Key: VPMADDUBSWZrmkz: [ 0.00 0.00 ]
+Key: VPMADDUBSWZrr: [ 0.00 0.00 ]
+Key: VPMADDUBSWZrrk: [ 0.00 0.00 ]
+Key: VPMADDUBSWZrrkz: [ 0.00 0.00 ]
+Key: VPMADDUBSWrm: [ 0.00 0.00 ]
+Key: VPMADDUBSWrr: [ 0.00 0.00 ]
+Key: VPMADDWDYrm: [ 0.00 0.00 ]
+Key: VPMADDWDYrr: [ 0.00 0.00 ]
+Key: VPMADDWDZ: [ 0.00 0.00 ]
+Key: VPMADDWDZrm: [ 0.00 0.00 ]
+Key: VPMADDWDZrmk: [ 0.00 0.00 ]
+Key: VPMADDWDZrmkz: [ 0.00 0.00 ]
+Key: VPMADDWDZrr: [ 0.00 0.00 ]
+Key: VPMADDWDZrrk: [ 0.00 0.00 ]
+Key: VPMADDWDZrrkz: [ 0.00 0.00 ]
+Key: VPMADDWDrm: [ 0.00 0.00 ]
+Key: VPMADDWDrr: [ 0.00 0.00 ]
+Key: VPMASKMOVDYmr: [ 0.00 0.00 ]
+Key: VPMASKMOVDYrm: [ 0.00 0.00 ]
+Key: VPMASKMOVDmr: [ 0.00 0.00 ]
+Key: VPMASKMOVDrm: [ 0.00 0.00 ]
+Key: VPMASKMOVQYmr: [ 0.00 0.00 ]
+Key: VPMASKMOVQYrm: [ 0.00 0.00 ]
+Key: VPMASKMOVQmr: [ 0.00 0.00 ]
+Key: VPMASKMOVQrm: [ 0.00 0.00 ]
+Key: VPMAXSBYrm: [ 0.00 0.00 ]
+Key: VPMAXSBYrr: [ 0.00 0.00 ]
+Key: VPMAXSBZ: [ 0.00 0.00 ]
+Key: VPMAXSBZrm: [ 0.00 0.00 ]
+Key: VPMAXSBZrmk: [ 0.00 0.00 ]
+Key: VPMAXSBZrmkz: [ 0.00 0.00 ]
+Key: VPMAXSBZrr: [ 0.00 0.00 ]
+Key: VPMAXSBZrrk: [ 0.00 0.00 ]
+Key: VPMAXSBZrrkz: [ 0.00 0.00 ]
+Key: VPMAXSBrm: [ 0.00 0.00 ]
+Key: VPMAXSBrr: [ 0.00 0.00 ]
+Key: VPMAXSDYrm: [ 0.00 0.00 ]
+Key: VPMAXSDYrr: [ 0.00 0.00 ]
+Key: VPMAXSDZ: [ 0.00 0.00 ]
+Key: VPMAXSDZrm: [ 0.00 0.00 ]
+Key: VPMAXSDZrmb: [ 0.00 0.00 ]
+Key: VPMAXSDZrmbk: [ 0.00 0.00 ]
+Key: VPMAXSDZrmbkz: [ 0.00 0.00 ]
+Key: VPMAXSDZrmk: [ 0.00 0.00 ]
+Key: VPMAXSDZrmkz: [ 0.00 0.00 ]
+Key: VPMAXSDZrr: [ 0.00 0.00 ]
+Key: VPMAXSDZrrk: [ 0.00 0.00 ]
+Key: VPMAXSDZrrkz: [ 0.00 0.00 ]
+Key: VPMAXSDrm: [ 0.00 0.00 ]
+Key: VPMAXSDrr: [ 0.00 0.00 ]
+Key: VPMAXSQZ: [ 0.00 0.00 ]
+Key: VPMAXSQZrm: [ 0.00 0.00 ]
+Key: VPMAXSQZrmb: [ 0.00 0.00 ]
+Key: VPMAXSQZrmbk: [ 0.00 0.00 ]
+Key: VPMAXSQZrmbkz: [ 0.00 0.00 ]
+Key: VPMAXSQZrmk: [ 0.00 0.00 ]
+Key: VPMAXSQZrmkz: [ 0.00 0.00 ]
+Key: VPMAXSQZrr: [ 0.00 0.00 ]
+Key: VPMAXSQZrrk: [ 0.00 0.00 ]
+Key: VPMAXSQZrrkz: [ 0.00 0.00 ]
+Key: VPMAXSWYrm: [ 0.00 0.00 ]
+Key: VPMAXSWYrr: [ 0.00 0.00 ]
+Key: VPMAXSWZ: [ 0.00 0.00 ]
+Key: VPMAXSWZrm: [ 0.00 0.00 ]
+Key: VPMAXSWZrmk: [ 0.00 0.00 ]
+Key: VPMAXSWZrmkz: [ 0.00 0.00 ]
+Key: VPMAXSWZrr: [ 0.00 0.00 ]
+Key: VPMAXSWZrrk: [ 0.00 0.00 ]
+Key: VPMAXSWZrrkz: [ 0.00 0.00 ]
+Key: VPMAXSWrm: [ 0.00 0.00 ]
+Key: VPMAXSWrr: [ 0.00 0.00 ]
+Key: VPMAXUBYrm: [ 0.00 0.00 ]
+Key: VPMAXUBYrr: [ 0.00 0.00 ]
+Key: VPMAXUBZ: [ 0.00 0.00 ]
+Key: VPMAXUBZrm: [ 0.00 0.00 ]
+Key: VPMAXUBZrmk: [ 0.00 0.00 ]
+Key: VPMAXUBZrmkz: [ 0.00 0.00 ]
+Key: VPMAXUBZrr: [ 0.00 0.00 ]
+Key: VPMAXUBZrrk: [ 0.00 0.00 ]
+Key: VPMAXUBZrrkz: [ 0.00 0.00 ]
+Key: VPMAXUBrm: [ 0.00 0.00 ]
+Key: VPMAXUBrr: [ 0.00 0.00 ]
+Key: VPMAXUDYrm: [ 0.00 0.00 ]
+Key: VPMAXUDYrr: [ 0.00 0.00 ]
+Key: VPMAXUDZ: [ 0.00 0.00 ]
+Key: VPMAXUDZrm: [ 0.00 0.00 ]
+Key: VPMAXUDZrmb: [ 0.00 0.00 ]
+Key: VPMAXUDZrmbk: [ 0.00 0.00 ]
+Key: VPMAXUDZrmbkz: [ 0.00 0.00 ]
+Key: VPMAXUDZrmk: [ 0.00 0.00 ]
+Key: VPMAXUDZrmkz: [ 0.00 0.00 ]
+Key: VPMAXUDZrr: [ 0.00 0.00 ]
+Key: VPMAXUDZrrk: [ 0.00 0.00 ]
+Key: VPMAXUDZrrkz: [ 0.00 0.00 ]
+Key: VPMAXUDrm: [ 0.00 0.00 ]
+Key: VPMAXUDrr: [ 0.00 0.00 ]
+Key: VPMAXUQZ: [ 0.00 0.00 ]
+Key: VPMAXUQZrm: [ 0.00 0.00 ]
+Key: VPMAXUQZrmb: [ 0.00 0.00 ]
+Key: VPMAXUQZrmbk: [ 0.00 0.00 ]
+Key: VPMAXUQZrmbkz: [ 0.00 0.00 ]
+Key: VPMAXUQZrmk: [ 0.00 0.00 ]
+Key: VPMAXUQZrmkz: [ 0.00 0.00 ]
+Key: VPMAXUQZrr: [ 0.00 0.00 ]
+Key: VPMAXUQZrrk: [ 0.00 0.00 ]
+Key: VPMAXUQZrrkz: [ 0.00 0.00 ]
+Key: VPMAXUWYrm: [ 0.00 0.00 ]
+Key: VPMAXUWYrr: [ 0.00 0.00 ]
+Key: VPMAXUWZ: [ 0.00 0.00 ]
+Key: VPMAXUWZrm: [ 0.00 0.00 ]
+Key: VPMAXUWZrmk: [ 0.00 0.00 ]
+Key: VPMAXUWZrmkz: [ 0.00 0.00 ]
+Key: VPMAXUWZrr: [ 0.00 0.00 ]
+Key: VPMAXUWZrrk: [ 0.00 0.00 ]
+Key: VPMAXUWZrrkz: [ 0.00 0.00 ]
+Key: VPMAXUWrm: [ 0.00 0.00 ]
+Key: VPMAXUWrr: [ 0.00 0.00 ]
+Key: VPMINSBYrm: [ 0.00 0.00 ]
+Key: VPMINSBYrr: [ 0.00 0.00 ]
+Key: VPMINSBZ: [ 0.00 0.00 ]
+Key: VPMINSBZrm: [ 0.00 0.00 ]
+Key: VPMINSBZrmk: [ 0.00 0.00 ]
+Key: VPMINSBZrmkz: [ 0.00 0.00 ]
+Key: VPMINSBZrr: [ 0.00 0.00 ]
+Key: VPMINSBZrrk: [ 0.00 0.00 ]
+Key: VPMINSBZrrkz: [ 0.00 0.00 ]
+Key: VPMINSBrm: [ 0.00 0.00 ]
+Key: VPMINSBrr: [ 0.00 0.00 ]
+Key: VPMINSDYrm: [ 0.00 0.00 ]
+Key: VPMINSDYrr: [ 0.00 0.00 ]
+Key: VPMINSDZ: [ 0.00 0.00 ]
+Key: VPMINSDZrm: [ 0.00 0.00 ]
+Key: VPMINSDZrmb: [ 0.00 0.00 ]
+Key: VPMINSDZrmbk: [ 0.00 0.00 ]
+Key: VPMINSDZrmbkz: [ 0.00 0.00 ]
+Key: VPMINSDZrmk: [ 0.00 0.00 ]
+Key: VPMINSDZrmkz: [ 0.00 0.00 ]
+Key: VPMINSDZrr: [ 0.00 0.00 ]
+Key: VPMINSDZrrk: [ 0.00 0.00 ]
+Key: VPMINSDZrrkz: [ 0.00 0.00 ]
+Key: VPMINSDrm: [ 0.00 0.00 ]
+Key: VPMINSDrr: [ 0.00 0.00 ]
+Key: VPMINSQZ: [ 0.00 0.00 ]
+Key: VPMINSQZrm: [ 0.00 0.00 ]
+Key: VPMINSQZrmb: [ 0.00 0.00 ]
+Key: VPMINSQZrmbk: [ 0.00 0.00 ]
+Key: VPMINSQZrmbkz: [ 0.00 0.00 ]
+Key: VPMINSQZrmk: [ 0.00 0.00 ]
+Key: VPMINSQZrmkz: [ 0.00 0.00 ]
+Key: VPMINSQZrr: [ 0.00 0.00 ]
+Key: VPMINSQZrrk: [ 0.00 0.00 ]
+Key: VPMINSQZrrkz: [ 0.00 0.00 ]
+Key: VPMINSWYrm: [ 0.00 0.00 ]
+Key: VPMINSWYrr: [ 0.00 0.00 ]
+Key: VPMINSWZ: [ 0.00 0.00 ]
+Key: VPMINSWZrm: [ 0.00 0.00 ]
+Key: VPMINSWZrmk: [ 0.00 0.00 ]
+Key: VPMINSWZrmkz: [ 0.00 0.00 ]
+Key: VPMINSWZrr: [ 0.00 0.00 ]
+Key: VPMINSWZrrk: [ 0.00 0.00 ]
+Key: VPMINSWZrrkz: [ 0.00 0.00 ]
+Key: VPMINSWrm: [ 0.00 0.00 ]
+Key: VPMINSWrr: [ 0.00 0.00 ]
+Key: VPMINUBYrm: [ 0.00 0.00 ]
+Key: VPMINUBYrr: [ 0.00 0.00 ]
+Key: VPMINUBZ: [ 0.00 0.00 ]
+Key: VPMINUBZrm: [ 0.00 0.00 ]
+Key: VPMINUBZrmk: [ 0.00 0.00 ]
+Key: VPMINUBZrmkz: [ 0.00 0.00 ]
+Key: VPMINUBZrr: [ 0.00 0.00 ]
+Key: VPMINUBZrrk: [ 0.00 0.00 ]
+Key: VPMINUBZrrkz: [ 0.00 0.00 ]
+Key: VPMINUBrm: [ 0.00 0.00 ]
+Key: VPMINUBrr: [ 0.00 0.00 ]
+Key: VPMINUDYrm: [ 0.00 0.00 ]
+Key: VPMINUDYrr: [ 0.00 0.00 ]
+Key: VPMINUDZ: [ 0.00 0.00 ]
+Key: VPMINUDZrm: [ 0.00 0.00 ]
+Key: VPMINUDZrmb: [ 0.00 0.00 ]
+Key: VPMINUDZrmbk: [ 0.00 0.00 ]
+Key: VPMINUDZrmbkz: [ 0.00 0.00 ]
+Key: VPMINUDZrmk: [ 0.00 0.00 ]
+Key: VPMINUDZrmkz: [ 0.00 0.00 ]
+Key: VPMINUDZrr: [ 0.00 0.00 ]
+Key: VPMINUDZrrk: [ 0.00 0.00 ]
+Key: VPMINUDZrrkz: [ 0.00 0.00 ]
+Key: VPMINUDrm: [ 0.00 0.00 ]
+Key: VPMINUDrr: [ 0.00 0.00 ]
+Key: VPMINUQZ: [ 0.00 0.00 ]
+Key: VPMINUQZrm: [ 0.00 0.00 ]
+Key: VPMINUQZrmb: [ 0.00 0.00 ]
+Key: VPMINUQZrmbk: [ 0.00 0.00 ]
+Key: VPMINUQZrmbkz: [ 0.00 0.00 ]
+Key: VPMINUQZrmk: [ 0.00 0.00 ]
+Key: VPMINUQZrmkz: [ 0.00 0.00 ]
+Key: VPMINUQZrr: [ 0.00 0.00 ]
+Key: VPMINUQZrrk: [ 0.00 0.00 ]
+Key: VPMINUQZrrkz: [ 0.00 0.00 ]
+Key: VPMINUWYrm: [ 0.00 0.00 ]
+Key: VPMINUWYrr: [ 0.00 0.00 ]
+Key: VPMINUWZ: [ 0.00 0.00 ]
+Key: VPMINUWZrm: [ 0.00 0.00 ]
+Key: VPMINUWZrmk: [ 0.00 0.00 ]
+Key: VPMINUWZrmkz: [ 0.00 0.00 ]
+Key: VPMINUWZrr: [ 0.00 0.00 ]
+Key: VPMINUWZrrk: [ 0.00 0.00 ]
+Key: VPMINUWZrrkz: [ 0.00 0.00 ]
+Key: VPMINUWrm: [ 0.00 0.00 ]
+Key: VPMINUWrr: [ 0.00 0.00 ]
+Key: VPMOVB: [ 0.00 0.00 ]
+Key: VPMOVD: [ 0.00 0.00 ]
+Key: VPMOVDBZ: [ 0.00 0.00 ]
+Key: VPMOVDBZmr: [ 0.00 0.00 ]
+Key: VPMOVDBZmrk: [ 0.00 0.00 ]
+Key: VPMOVDBZrr: [ 0.00 0.00 ]
+Key: VPMOVDBZrrk: [ 0.00 0.00 ]
+Key: VPMOVDBZrrkz: [ 0.00 0.00 ]
+Key: VPMOVDWZ: [ 0.00 0.00 ]
+Key: VPMOVDWZmr: [ 0.00 0.00 ]
+Key: VPMOVDWZmrk: [ 0.00 0.00 ]
+Key: VPMOVDWZrr: [ 0.00 0.00 ]
+Key: VPMOVDWZrrk: [ 0.00 0.00 ]
+Key: VPMOVDWZrrkz: [ 0.00 0.00 ]
+Key: VPMOVM: [ 0.00 0.00 ]
+Key: VPMOVMSKBYrr: [ 0.00 0.00 ]
+Key: VPMOVMSKBrr: [ 0.00 0.00 ]
+Key: VPMOVQ: [ 0.00 0.00 ]
+Key: VPMOVQBZ: [ 0.00 0.00 ]
+Key: VPMOVQBZmr: [ 0.00 0.00 ]
+Key: VPMOVQBZmrk: [ 0.00 0.00 ]
+Key: VPMOVQBZrr: [ 0.00 0.00 ]
+Key: VPMOVQBZrrk: [ 0.00 0.00 ]
+Key: VPMOVQBZrrkz: [ 0.00 0.00 ]
+Key: VPMOVQDZ: [ 0.00 0.00 ]
+Key: VPMOVQDZmr: [ 0.00 0.00 ]
+Key: VPMOVQDZmrk: [ 0.00 0.00 ]
+Key: VPMOVQDZrr: [ 0.00 0.00 ]
+Key: VPMOVQDZrrk: [ 0.00 0.00 ]
+Key: VPMOVQDZrrkz: [ 0.00 0.00 ]
+Key: VPMOVQWZ: [ 0.00 0.00 ]
+Key: VPMOVQWZmr: [ 0.00 0.00 ]
+Key: VPMOVQWZmrk: [ 0.00 0.00 ]
+Key: VPMOVQWZrr: [ 0.00 0.00 ]
+Key: VPMOVQWZrrk: [ 0.00 0.00 ]
+Key: VPMOVQWZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSDBZ: [ 0.00 0.00 ]
+Key: VPMOVSDBZmr: [ 0.00 0.00 ]
+Key: VPMOVSDBZmrk: [ 0.00 0.00 ]
+Key: VPMOVSDBZrr: [ 0.00 0.00 ]
+Key: VPMOVSDBZrrk: [ 0.00 0.00 ]
+Key: VPMOVSDBZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSDWZ: [ 0.00 0.00 ]
+Key: VPMOVSDWZmr: [ 0.00 0.00 ]
+Key: VPMOVSDWZmrk: [ 0.00 0.00 ]
+Key: VPMOVSDWZrr: [ 0.00 0.00 ]
+Key: VPMOVSDWZrrk: [ 0.00 0.00 ]
+Key: VPMOVSDWZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSQBZ: [ 0.00 0.00 ]
+Key: VPMOVSQBZmr: [ 0.00 0.00 ]
+Key: VPMOVSQBZmrk: [ 0.00 0.00 ]
+Key: VPMOVSQBZrr: [ 0.00 0.00 ]
+Key: VPMOVSQBZrrk: [ 0.00 0.00 ]
+Key: VPMOVSQBZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSQDZ: [ 0.00 0.00 ]
+Key: VPMOVSQDZmr: [ 0.00 0.00 ]
+Key: VPMOVSQDZmrk: [ 0.00 0.00 ]
+Key: VPMOVSQDZrr: [ 0.00 0.00 ]
+Key: VPMOVSQDZrrk: [ 0.00 0.00 ]
+Key: VPMOVSQDZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSQWZ: [ 0.00 0.00 ]
+Key: VPMOVSQWZmr: [ 0.00 0.00 ]
+Key: VPMOVSQWZmrk: [ 0.00 0.00 ]
+Key: VPMOVSQWZrr: [ 0.00 0.00 ]
+Key: VPMOVSQWZrrk: [ 0.00 0.00 ]
+Key: VPMOVSQWZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSWBZ: [ 0.00 0.00 ]
+Key: VPMOVSWBZmr: [ 0.00 0.00 ]
+Key: VPMOVSWBZmrk: [ 0.00 0.00 ]
+Key: VPMOVSWBZrr: [ 0.00 0.00 ]
+Key: VPMOVSWBZrrk: [ 0.00 0.00 ]
+Key: VPMOVSWBZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSXBDYrm: [ 0.00 0.00 ]
+Key: VPMOVSXBDYrr: [ 0.00 0.00 ]
+Key: VPMOVSXBDZ: [ 0.00 0.00 ]
+Key: VPMOVSXBDZrm: [ 0.00 0.00 ]
+Key: VPMOVSXBDZrmk: [ 0.00 0.00 ]
+Key: VPMOVSXBDZrmkz: [ 0.00 0.00 ]
+Key: VPMOVSXBDZrr: [ 0.00 0.00 ]
+Key: VPMOVSXBDZrrk: [ 0.00 0.00 ]
+Key: VPMOVSXBDZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSXBDrm: [ 0.00 0.00 ]
+Key: VPMOVSXBDrr: [ 0.00 0.00 ]
+Key: VPMOVSXBQYrm: [ 0.00 0.00 ]
+Key: VPMOVSXBQYrr: [ 0.00 0.00 ]
+Key: VPMOVSXBQZ: [ 0.00 0.00 ]
+Key: VPMOVSXBQZrm: [ 0.00 0.00 ]
+Key: VPMOVSXBQZrmk: [ 0.00 0.00 ]
+Key: VPMOVSXBQZrmkz: [ 0.00 0.00 ]
+Key: VPMOVSXBQZrr: [ 0.00 0.00 ]
+Key: VPMOVSXBQZrrk: [ 0.00 0.00 ]
+Key: VPMOVSXBQZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSXBQrm: [ 0.00 0.00 ]
+Key: VPMOVSXBQrr: [ 0.00 0.00 ]
+Key: VPMOVSXBWYrm: [ 0.00 0.00 ]
+Key: VPMOVSXBWYrr: [ 0.00 0.00 ]
+Key: VPMOVSXBWZ: [ 0.00 0.00 ]
+Key: VPMOVSXBWZrm: [ 0.00 0.00 ]
+Key: VPMOVSXBWZrmk: [ 0.00 0.00 ]
+Key: VPMOVSXBWZrmkz: [ 0.00 0.00 ]
+Key: VPMOVSXBWZrr: [ 0.00 0.00 ]
+Key: VPMOVSXBWZrrk: [ 0.00 0.00 ]
+Key: VPMOVSXBWZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSXBWrm: [ 0.00 0.00 ]
+Key: VPMOVSXBWrr: [ 0.00 0.00 ]
+Key: VPMOVSXDQYrm: [ 0.00 0.00 ]
+Key: VPMOVSXDQYrr: [ 0.00 0.00 ]
+Key: VPMOVSXDQZ: [ 0.00 0.00 ]
+Key: VPMOVSXDQZrm: [ 0.00 0.00 ]
+Key: VPMOVSXDQZrmk: [ 0.00 0.00 ]
+Key: VPMOVSXDQZrmkz: [ 0.00 0.00 ]
+Key: VPMOVSXDQZrr: [ 0.00 0.00 ]
+Key: VPMOVSXDQZrrk: [ 0.00 0.00 ]
+Key: VPMOVSXDQZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSXDQrm: [ 0.00 0.00 ]
+Key: VPMOVSXDQrr: [ 0.00 0.00 ]
+Key: VPMOVSXWDYrm: [ 0.00 0.00 ]
+Key: VPMOVSXWDYrr: [ 0.00 0.00 ]
+Key: VPMOVSXWDZ: [ 0.00 0.00 ]
+Key: VPMOVSXWDZrm: [ 0.00 0.00 ]
+Key: VPMOVSXWDZrmk: [ 0.00 0.00 ]
+Key: VPMOVSXWDZrmkz: [ 0.00 0.00 ]
+Key: VPMOVSXWDZrr: [ 0.00 0.00 ]
+Key: VPMOVSXWDZrrk: [ 0.00 0.00 ]
+Key: VPMOVSXWDZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSXWDrm: [ 0.00 0.00 ]
+Key: VPMOVSXWDrr: [ 0.00 0.00 ]
+Key: VPMOVSXWQYrm: [ 0.00 0.00 ]
+Key: VPMOVSXWQYrr: [ 0.00 0.00 ]
+Key: VPMOVSXWQZ: [ 0.00 0.00 ]
+Key: VPMOVSXWQZrm: [ 0.00 0.00 ]
+Key: VPMOVSXWQZrmk: [ 0.00 0.00 ]
+Key: VPMOVSXWQZrmkz: [ 0.00 0.00 ]
+Key: VPMOVSXWQZrr: [ 0.00 0.00 ]
+Key: VPMOVSXWQZrrk: [ 0.00 0.00 ]
+Key: VPMOVSXWQZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSXWQrm: [ 0.00 0.00 ]
+Key: VPMOVSXWQrr: [ 0.00 0.00 ]
+Key: VPMOVUSDBZ: [ 0.00 0.00 ]
+Key: VPMOVUSDBZmr: [ 0.00 0.00 ]
+Key: VPMOVUSDBZmrk: [ 0.00 0.00 ]
+Key: VPMOVUSDBZrr: [ 0.00 0.00 ]
+Key: VPMOVUSDBZrrk: [ 0.00 0.00 ]
+Key: VPMOVUSDBZrrkz: [ 0.00 0.00 ]
+Key: VPMOVUSDWZ: [ 0.00 0.00 ]
+Key: VPMOVUSDWZmr: [ 0.00 0.00 ]
+Key: VPMOVUSDWZmrk: [ 0.00 0.00 ]
+Key: VPMOVUSDWZrr: [ 0.00 0.00 ]
+Key: VPMOVUSDWZrrk: [ 0.00 0.00 ]
+Key: VPMOVUSDWZrrkz: [ 0.00 0.00 ]
+Key: VPMOVUSQBZ: [ 0.00 0.00 ]
+Key: VPMOVUSQBZmr: [ 0.00 0.00 ]
+Key: VPMOVUSQBZmrk: [ 0.00 0.00 ]
+Key: VPMOVUSQBZrr: [ 0.00 0.00 ]
+Key: VPMOVUSQBZrrk: [ 0.00 0.00 ]
+Key: VPMOVUSQBZrrkz: [ 0.00 0.00 ]
+Key: VPMOVUSQDZ: [ 0.00 0.00 ]
+Key: VPMOVUSQDZmr: [ 0.00 0.00 ]
+Key: VPMOVUSQDZmrk: [ 0.00 0.00 ]
+Key: VPMOVUSQDZrr: [ 0.00 0.00 ]
+Key: VPMOVUSQDZrrk: [ 0.00 0.00 ]
+Key: VPMOVUSQDZrrkz: [ 0.00 0.00 ]
+Key: VPMOVUSQWZ: [ 0.00 0.00 ]
+Key: VPMOVUSQWZmr: [ 0.00 0.00 ]
+Key: VPMOVUSQWZmrk: [ 0.00 0.00 ]
+Key: VPMOVUSQWZrr: [ 0.00 0.00 ]
+Key: VPMOVUSQWZrrk: [ 0.00 0.00 ]
+Key: VPMOVUSQWZrrkz: [ 0.00 0.00 ]
+Key: VPMOVUSWBZ: [ 0.00 0.00 ]
+Key: VPMOVUSWBZmr: [ 0.00 0.00 ]
+Key: VPMOVUSWBZmrk: [ 0.00 0.00 ]
+Key: VPMOVUSWBZrr: [ 0.00 0.00 ]
+Key: VPMOVUSWBZrrk: [ 0.00 0.00 ]
+Key: VPMOVUSWBZrrkz: [ 0.00 0.00 ]
+Key: VPMOVW: [ 0.00 0.00 ]
+Key: VPMOVWBZ: [ 0.00 0.00 ]
+Key: VPMOVWBZmr: [ 0.00 0.00 ]
+Key: VPMOVWBZmrk: [ 0.00 0.00 ]
+Key: VPMOVWBZrr: [ 0.00 0.00 ]
+Key: VPMOVWBZrrk: [ 0.00 0.00 ]
+Key: VPMOVWBZrrkz: [ 0.00 0.00 ]
+Key: VPMOVZXBDYrm: [ 0.00 0.00 ]
+Key: VPMOVZXBDYrr: [ 0.00 0.00 ]
+Key: VPMOVZXBDZ: [ 0.00 0.00 ]
+Key: VPMOVZXBDZrm: [ 0.00 0.00 ]
+Key: VPMOVZXBDZrmk: [ 0.00 0.00 ]
+Key: VPMOVZXBDZrmkz: [ 0.00 0.00 ]
+Key: VPMOVZXBDZrr: [ 0.00 0.00 ]
+Key: VPMOVZXBDZrrk: [ 0.00 0.00 ]
+Key: VPMOVZXBDZrrkz: [ 0.00 0.00 ]
+Key: VPMOVZXBDrm: [ 0.00 0.00 ]
+Key: VPMOVZXBDrr: [ 0.00 0.00 ]
+Key: VPMOVZXBQYrm: [ 0.00 0.00 ]
+Key: VPMOVZXBQYrr: [ 0.00 0.00 ]
+Key: VPMOVZXBQZ: [ 0.00 0.00 ]
+Key: VPMOVZXBQZrm: [ 0.00 0.00 ]
+Key: VPMOVZXBQZrmk: [ 0.00 0.00 ]
+Key: VPMOVZXBQZrmkz: [ 0.00 0.00 ]
+Key: VPMOVZXBQZrr: [ 0.00 0.00 ]
+Key: VPMOVZXBQZrrk: [ 0.00 0.00 ]
+Key: VPMOVZXBQZrrkz: [ 0.00 0.00 ]
+Key: VPMOVZXBQrm: [ 0.00 0.00 ]
+Key: VPMOVZXBQrr: [ 0.00 0.00 ]
+Key: VPMOVZXBWYrm: [ 0.00 0.00 ]
+Key: VPMOVZXBWYrr: [ 0.00 0.00 ]
+Key: VPMOVZXBWZ: [ 0.00 0.00 ]
+Key: VPMOVZXBWZrm: [ 0.00 0.00 ]
+Key: VPMOVZXBWZrmk: [ 0.00 0.00 ]
+Key: VPMOVZXBWZrmkz: [ 0.00 0.00 ]
+Key: VPMOVZXBWZrr: [ 0.00 0.00 ]
+Key: VPMOVZXBWZrrk: [ 0.00 0.00 ]
+Key: VPMOVZXBWZrrkz: [ 0.00 0.00 ]
+Key: VPMOVZXBWrm: [ 0.00 0.00 ]
+Key: VPMOVZXBWrr: [ 0.00 0.00 ]
+Key: VPMOVZXDQYrm: [ 0.00 0.00 ]
+Key: VPMOVZXDQYrr: [ 0.00 0.00 ]
+Key: VPMOVZXDQZ: [ 0.00 0.00 ]
+Key: VPMOVZXDQZrm: [ 0.00 0.00 ]
+Key: VPMOVZXDQZrmk: [ 0.00 0.00 ]
+Key: VPMOVZXDQZrmkz: [ 0.00 0.00 ]
+Key: VPMOVZXDQZrr: [ 0.00 0.00 ]
+Key: VPMOVZXDQZrrk: [ 0.00 0.00 ]
+Key: VPMOVZXDQZrrkz: [ 0.00 0.00 ]
+Key: VPMOVZXDQrm: [ 0.00 0.00 ]
+Key: VPMOVZXDQrr: [ 0.00 0.00 ]
+Key: VPMOVZXWDYrm: [ 0.00 0.00 ]
+Key: VPMOVZXWDYrr: [ 0.00 0.00 ]
+Key: VPMOVZXWDZ: [ 0.00 0.00 ]
+Key: VPMOVZXWDZrm: [ 0.00 0.00 ]
+Key: VPMOVZXWDZrmk: [ 0.00 0.00 ]
+Key: VPMOVZXWDZrmkz: [ 0.00 0.00 ]
+Key: VPMOVZXWDZrr: [ 0.00 0.00 ]
+Key: VPMOVZXWDZrrk: [ 0.00 0.00 ]
+Key: VPMOVZXWDZrrkz: [ 0.00 0.00 ]
+Key: VPMOVZXWDrm: [ 0.00 0.00 ]
+Key: VPMOVZXWDrr: [ 0.00 0.00 ]
+Key: VPMOVZXWQYrm: [ 0.00 0.00 ]
+Key: VPMOVZXWQYrr: [ 0.00 0.00 ]
+Key: VPMOVZXWQZ: [ 0.00 0.00 ]
+Key: VPMOVZXWQZrm: [ 0.00 0.00 ]
+Key: VPMOVZXWQZrmk: [ 0.00 0.00 ]
+Key: VPMOVZXWQZrmkz: [ 0.00 0.00 ]
+Key: VPMOVZXWQZrr: [ 0.00 0.00 ]
+Key: VPMOVZXWQZrrk: [ 0.00 0.00 ]
+Key: VPMOVZXWQZrrkz: [ 0.00 0.00 ]
+Key: VPMOVZXWQrm: [ 0.00 0.00 ]
+Key: VPMOVZXWQrr: [ 0.00 0.00 ]
+Key: VPMULDQYrm: [ 0.00 0.00 ]
+Key: VPMULDQYrr: [ 0.00 0.00 ]
+Key: VPMULDQZ: [ 0.00 0.00 ]
+Key: VPMULDQZrm: [ 0.00 0.00 ]
+Key: VPMULDQZrmb: [ 0.00 0.00 ]
+Key: VPMULDQZrmbk: [ 0.00 0.00 ]
+Key: VPMULDQZrmbkz: [ 0.00 0.00 ]
+Key: VPMULDQZrmk: [ 0.00 0.00 ]
+Key: VPMULDQZrmkz: [ 0.00 0.00 ]
+Key: VPMULDQZrr: [ 0.00 0.00 ]
+Key: VPMULDQZrrk: [ 0.00 0.00 ]
+Key: VPMULDQZrrkz: [ 0.00 0.00 ]
+Key: VPMULDQrm: [ 0.00 0.00 ]
+Key: VPMULDQrr: [ 0.00 0.00 ]
+Key: VPMULHRSWYrm: [ 0.00 0.00 ]
+Key: VPMULHRSWYrr: [ 0.00 0.00 ]
+Key: VPMULHRSWZ: [ 0.00 0.00 ]
+Key: VPMULHRSWZrm: [ 0.00 0.00 ]
+Key: VPMULHRSWZrmk: [ 0.00 0.00 ]
+Key: VPMULHRSWZrmkz: [ 0.00 0.00 ]
+Key: VPMULHRSWZrr: [ 0.00 0.00 ]
+Key: VPMULHRSWZrrk: [ 0.00 0.00 ]
+Key: VPMULHRSWZrrkz: [ 0.00 0.00 ]
+Key: VPMULHRSWrm: [ 0.00 0.00 ]
+Key: VPMULHRSWrr: [ 0.00 0.00 ]
+Key: VPMULHUWYrm: [ 0.00 0.00 ]
+Key: VPMULHUWYrr: [ 0.00 0.00 ]
+Key: VPMULHUWZ: [ 0.00 0.00 ]
+Key: VPMULHUWZrm: [ 0.00 0.00 ]
+Key: VPMULHUWZrmk: [ 0.00 0.00 ]
+Key: VPMULHUWZrmkz: [ 0.00 0.00 ]
+Key: VPMULHUWZrr: [ 0.00 0.00 ]
+Key: VPMULHUWZrrk: [ 0.00 0.00 ]
+Key: VPMULHUWZrrkz: [ 0.00 0.00 ]
+Key: VPMULHUWrm: [ 0.00 0.00 ]
+Key: VPMULHUWrr: [ 0.00 0.00 ]
+Key: VPMULHWYrm: [ 0.00 0.00 ]
+Key: VPMULHWYrr: [ 0.00 0.00 ]
+Key: VPMULHWZ: [ 0.00 0.00 ]
+Key: VPMULHWZrm: [ 0.00 0.00 ]
+Key: VPMULHWZrmk: [ 0.00 0.00 ]
+Key: VPMULHWZrmkz: [ 0.00 0.00 ]
+Key: VPMULHWZrr: [ 0.00 0.00 ]
+Key: VPMULHWZrrk: [ 0.00 0.00 ]
+Key: VPMULHWZrrkz: [ 0.00 0.00 ]
+Key: VPMULHWrm: [ 0.00 0.00 ]
+Key: VPMULHWrr: [ 0.00 0.00 ]
+Key: VPMULLDYrm: [ 0.00 0.00 ]
+Key: VPMULLDYrr: [ 0.00 0.00 ]
+Key: VPMULLDZ: [ 0.00 0.00 ]
+Key: VPMULLDZrm: [ 0.00 0.00 ]
+Key: VPMULLDZrmb: [ 0.00 0.00 ]
+Key: VPMULLDZrmbk: [ 0.00 0.00 ]
+Key: VPMULLDZrmbkz: [ 0.00 0.00 ]
+Key: VPMULLDZrmk: [ 0.00 0.00 ]
+Key: VPMULLDZrmkz: [ 0.00 0.00 ]
+Key: VPMULLDZrr: [ 0.00 0.00 ]
+Key: VPMULLDZrrk: [ 0.00 0.00 ]
+Key: VPMULLDZrrkz: [ 0.00 0.00 ]
+Key: VPMULLDrm: [ 0.00 0.00 ]
+Key: VPMULLDrr: [ 0.00 0.00 ]
+Key: VPMULLQZ: [ 0.00 0.00 ]
+Key: VPMULLQZrm: [ 0.00 0.00 ]
+Key: VPMULLQZrmb: [ 0.00 0.00 ]
+Key: VPMULLQZrmbk: [ 0.00 0.00 ]
+Key: VPMULLQZrmbkz: [ 0.00 0.00 ]
+Key: VPMULLQZrmk: [ 0.00 0.00 ]
+Key: VPMULLQZrmkz: [ 0.00 0.00 ]
+Key: VPMULLQZrr: [ 0.00 0.00 ]
+Key: VPMULLQZrrk: [ 0.00 0.00 ]
+Key: VPMULLQZrrkz: [ 0.00 0.00 ]
+Key: VPMULLWYrm: [ 0.00 0.00 ]
+Key: VPMULLWYrr: [ 0.00 0.00 ]
+Key: VPMULLWZ: [ 0.00 0.00 ]
+Key: VPMULLWZrm: [ 0.00 0.00 ]
+Key: VPMULLWZrmk: [ 0.00 0.00 ]
+Key: VPMULLWZrmkz: [ 0.00 0.00 ]
+Key: VPMULLWZrr: [ 0.00 0.00 ]
+Key: VPMULLWZrrk: [ 0.00 0.00 ]
+Key: VPMULLWZrrkz: [ 0.00 0.00 ]
+Key: VPMULLWrm: [ 0.00 0.00 ]
+Key: VPMULLWrr: [ 0.00 0.00 ]
+Key: VPMULTISHIFTQBZ: [ 0.00 0.00 ]
+Key: VPMULTISHIFTQBZrm: [ 0.00 0.00 ]
+Key: VPMULTISHIFTQBZrmb: [ 0.00 0.00 ]
+Key: VPMULTISHIFTQBZrmbk: [ 0.00 0.00 ]
+Key: VPMULTISHIFTQBZrmbkz: [ 0.00 0.00 ]
+Key: VPMULTISHIFTQBZrmk: [ 0.00 0.00 ]
+Key: VPMULTISHIFTQBZrmkz: [ 0.00 0.00 ]
+Key: VPMULTISHIFTQBZrr: [ 0.00 0.00 ]
+Key: VPMULTISHIFTQBZrrk: [ 0.00 0.00 ]
+Key: VPMULTISHIFTQBZrrkz: [ 0.00 0.00 ]
+Key: VPMULUDQYrm: [ 0.00 0.00 ]
+Key: VPMULUDQYrr: [ 0.00 0.00 ]
+Key: VPMULUDQZ: [ 0.00 0.00 ]
+Key: VPMULUDQZrm: [ 0.00 0.00 ]
+Key: VPMULUDQZrmb: [ 0.00 0.00 ]
+Key: VPMULUDQZrmbk: [ 0.00 0.00 ]
+Key: VPMULUDQZrmbkz: [ 0.00 0.00 ]
+Key: VPMULUDQZrmk: [ 0.00 0.00 ]
+Key: VPMULUDQZrmkz: [ 0.00 0.00 ]
+Key: VPMULUDQZrr: [ 0.00 0.00 ]
+Key: VPMULUDQZrrk: [ 0.00 0.00 ]
+Key: VPMULUDQZrrkz: [ 0.00 0.00 ]
+Key: VPMULUDQrm: [ 0.00 0.00 ]
+Key: VPMULUDQrr: [ 0.00 0.00 ]
+Key: VPOPCNTBZ: [ 0.00 0.00 ]
+Key: VPOPCNTBZrm: [ 0.00 0.00 ]
+Key: VPOPCNTBZrmk: [ 0.00 0.00 ]
+Key: VPOPCNTBZrmkz: [ 0.00 0.00 ]
+Key: VPOPCNTBZrr: [ 0.00 0.00 ]
+Key: VPOPCNTBZrrk: [ 0.00 0.00 ]
+Key: VPOPCNTBZrrkz: [ 0.00 0.00 ]
+Key: VPOPCNTDZ: [ 0.00 0.00 ]
+Key: VPOPCNTDZrm: [ 0.00 0.00 ]
+Key: VPOPCNTDZrmb: [ 0.00 0.00 ]
+Key: VPOPCNTDZrmbk: [ 0.00 0.00 ]
+Key: VPOPCNTDZrmbkz: [ 0.00 0.00 ]
+Key: VPOPCNTDZrmk: [ 0.00 0.00 ]
+Key: VPOPCNTDZrmkz: [ 0.00 0.00 ]
+Key: VPOPCNTDZrr: [ 0.00 0.00 ]
+Key: VPOPCNTDZrrk: [ 0.00 0.00 ]
+Key: VPOPCNTDZrrkz: [ 0.00 0.00 ]
+Key: VPOPCNTQZ: [ 0.00 0.00 ]
+Key: VPOPCNTQZrm: [ 0.00 0.00 ]
+Key: VPOPCNTQZrmb: [ 0.00 0.00 ]
+Key: VPOPCNTQZrmbk: [ 0.00 0.00 ]
+Key: VPOPCNTQZrmbkz: [ 0.00 0.00 ]
+Key: VPOPCNTQZrmk: [ 0.00 0.00 ]
+Key: VPOPCNTQZrmkz: [ 0.00 0.00 ]
+Key: VPOPCNTQZrr: [ 0.00 0.00 ]
+Key: VPOPCNTQZrrk: [ 0.00 0.00 ]
+Key: VPOPCNTQZrrkz: [ 0.00 0.00 ]
+Key: VPOPCNTWZ: [ 0.00 0.00 ]
+Key: VPOPCNTWZrm: [ 0.00 0.00 ]
+Key: VPOPCNTWZrmk: [ 0.00 0.00 ]
+Key: VPOPCNTWZrmkz: [ 0.00 0.00 ]
+Key: VPOPCNTWZrr: [ 0.00 0.00 ]
+Key: VPOPCNTWZrrk: [ 0.00 0.00 ]
+Key: VPOPCNTWZrrkz: [ 0.00 0.00 ]
+Key: VPORDZ: [ 0.00 0.00 ]
+Key: VPORDZrm: [ 0.00 0.00 ]
+Key: VPORDZrmb: [ 0.00 0.00 ]
+Key: VPORDZrmbk: [ 0.00 0.00 ]
+Key: VPORDZrmbkz: [ 0.00 0.00 ]
+Key: VPORDZrmk: [ 0.00 0.00 ]
+Key: VPORDZrmkz: [ 0.00 0.00 ]
+Key: VPORDZrr: [ 0.00 0.00 ]
+Key: VPORDZrrk: [ 0.00 0.00 ]
+Key: VPORDZrrkz: [ 0.00 0.00 ]
+Key: VPORQZ: [ 0.00 0.00 ]
+Key: VPORQZrm: [ 0.00 0.00 ]
+Key: VPORQZrmb: [ 0.00 0.00 ]
+Key: VPORQZrmbk: [ 0.00 0.00 ]
+Key: VPORQZrmbkz: [ 0.00 0.00 ]
+Key: VPORQZrmk: [ 0.00 0.00 ]
+Key: VPORQZrmkz: [ 0.00 0.00 ]
+Key: VPORQZrr: [ 0.00 0.00 ]
+Key: VPORQZrrk: [ 0.00 0.00 ]
+Key: VPORQZrrkz: [ 0.00 0.00 ]
+Key: VPORYrm: [ 0.00 0.00 ]
+Key: VPORYrr: [ 0.00 0.00 ]
+Key: VPORrm: [ 0.00 0.00 ]
+Key: VPORrr: [ 0.00 0.00 ]
+Key: VPPERMrmr: [ 0.00 0.00 ]
+Key: VPPERMrrm: [ 0.00 0.00 ]
+Key: VPPERMrrr: [ 0.00 0.00 ]
+Key: VPPERMrrr_REV: [ 0.00 0.00 ]
+Key: VPROLDZ: [ 0.00 0.00 ]
+Key: VPROLDZmbi: [ 0.00 0.00 ]
+Key: VPROLDZmbik: [ 0.00 0.00 ]
+Key: VPROLDZmbikz: [ 0.00 0.00 ]
+Key: VPROLDZmi: [ 0.00 0.00 ]
+Key: VPROLDZmik: [ 0.00 0.00 ]
+Key: VPROLDZmikz: [ 0.00 0.00 ]
+Key: VPROLDZri: [ 0.00 0.00 ]
+Key: VPROLDZrik: [ 0.00 0.00 ]
+Key: VPROLDZrikz: [ 0.00 0.00 ]
+Key: VPROLQZ: [ 0.00 0.00 ]
+Key: VPROLQZmbi: [ 0.00 0.00 ]
+Key: VPROLQZmbik: [ 0.00 0.00 ]
+Key: VPROLQZmbikz: [ 0.00 0.00 ]
+Key: VPROLQZmi: [ 0.00 0.00 ]
+Key: VPROLQZmik: [ 0.00 0.00 ]
+Key: VPROLQZmikz: [ 0.00 0.00 ]
+Key: VPROLQZri: [ 0.00 0.00 ]
+Key: VPROLQZrik: [ 0.00 0.00 ]
+Key: VPROLQZrikz: [ 0.00 0.00 ]
+Key: VPROLVDZ: [ 0.00 0.00 ]
+Key: VPROLVDZrm: [ 0.00 0.00 ]
+Key: VPROLVDZrmb: [ 0.00 0.00 ]
+Key: VPROLVDZrmbk: [ 0.00 0.00 ]
+Key: VPROLVDZrmbkz: [ 0.00 0.00 ]
+Key: VPROLVDZrmk: [ 0.00 0.00 ]
+Key: VPROLVDZrmkz: [ 0.00 0.00 ]
+Key: VPROLVDZrr: [ 0.00 0.00 ]
+Key: VPROLVDZrrk: [ 0.00 0.00 ]
+Key: VPROLVDZrrkz: [ 0.00 0.00 ]
+Key: VPROLVQZ: [ 0.00 0.00 ]
+Key: VPROLVQZrm: [ 0.00 0.00 ]
+Key: VPROLVQZrmb: [ 0.00 0.00 ]
+Key: VPROLVQZrmbk: [ 0.00 0.00 ]
+Key: VPROLVQZrmbkz: [ 0.00 0.00 ]
+Key: VPROLVQZrmk: [ 0.00 0.00 ]
+Key: VPROLVQZrmkz: [ 0.00 0.00 ]
+Key: VPROLVQZrr: [ 0.00 0.00 ]
+Key: VPROLVQZrrk: [ 0.00 0.00 ]
+Key: VPROLVQZrrkz: [ 0.00 0.00 ]
+Key: VPRORDZ: [ 0.00 0.00 ]
+Key: VPRORDZmbi: [ 0.00 0.00 ]
+Key: VPRORDZmbik: [ 0.00 0.00 ]
+Key: VPRORDZmbikz: [ 0.00 0.00 ]
+Key: VPRORDZmi: [ 0.00 0.00 ]
+Key: VPRORDZmik: [ 0.00 0.00 ]
+Key: VPRORDZmikz: [ 0.00 0.00 ]
+Key: VPRORDZri: [ 0.00 0.00 ]
+Key: VPRORDZrik: [ 0.00 0.00 ]
+Key: VPRORDZrikz: [ 0.00 0.00 ]
+Key: VPRORQZ: [ 0.00 0.00 ]
+Key: VPRORQZmbi: [ 0.00 0.00 ]
+Key: VPRORQZmbik: [ 0.00 0.00 ]
+Key: VPRORQZmbikz: [ 0.00 0.00 ]
+Key: VPRORQZmi: [ 0.00 0.00 ]
+Key: VPRORQZmik: [ 0.00 0.00 ]
+Key: VPRORQZmikz: [ 0.00 0.00 ]
+Key: VPRORQZri: [ 0.00 0.00 ]
+Key: VPRORQZrik: [ 0.00 0.00 ]
+Key: VPRORQZrikz: [ 0.00 0.00 ]
+Key: VPRORVDZ: [ 0.00 0.00 ]
+Key: VPRORVDZrm: [ 0.00 0.00 ]
+Key: VPRORVDZrmb: [ 0.00 0.00 ]
+Key: VPRORVDZrmbk: [ 0.00 0.00 ]
+Key: VPRORVDZrmbkz: [ 0.00 0.00 ]
+Key: VPRORVDZrmk: [ 0.00 0.00 ]
+Key: VPRORVDZrmkz: [ 0.00 0.00 ]
+Key: VPRORVDZrr: [ 0.00 0.00 ]
+Key: VPRORVDZrrk: [ 0.00 0.00 ]
+Key: VPRORVDZrrkz: [ 0.00 0.00 ]
+Key: VPRORVQZ: [ 0.00 0.00 ]
+Key: VPRORVQZrm: [ 0.00 0.00 ]
+Key: VPRORVQZrmb: [ 0.00 0.00 ]
+Key: VPRORVQZrmbk: [ 0.00 0.00 ]
+Key: VPRORVQZrmbkz: [ 0.00 0.00 ]
+Key: VPRORVQZrmk: [ 0.00 0.00 ]
+Key: VPRORVQZrmkz: [ 0.00 0.00 ]
+Key: VPRORVQZrr: [ 0.00 0.00 ]
+Key: VPRORVQZrrk: [ 0.00 0.00 ]
+Key: VPRORVQZrrkz: [ 0.00 0.00 ]
+Key: VPROTBmi: [ 0.00 0.00 ]
+Key: VPROTBmr: [ 0.00 0.00 ]
+Key: VPROTBri: [ 0.00 0.00 ]
+Key: VPROTBrm: [ 0.00 0.00 ]
+Key: VPROTBrr: [ 0.00 0.00 ]
+Key: VPROTBrr_REV: [ 0.00 0.00 ]
+Key: VPROTDmi: [ 0.00 0.00 ]
+Key: VPROTDmr: [ 0.00 0.00 ]
+Key: VPROTDri: [ 0.00 0.00 ]
+Key: VPROTDrm: [ 0.00 0.00 ]
+Key: VPROTDrr: [ 0.00 0.00 ]
+Key: VPROTDrr_REV: [ 0.00 0.00 ]
+Key: VPROTQmi: [ 0.00 0.00 ]
+Key: VPROTQmr: [ 0.00 0.00 ]
+Key: VPROTQri: [ 0.00 0.00 ]
+Key: VPROTQrm: [ 0.00 0.00 ]
+Key: VPROTQrr: [ 0.00 0.00 ]
+Key: VPROTQrr_REV: [ 0.00 0.00 ]
+Key: VPROTWmi: [ 0.00 0.00 ]
+Key: VPROTWmr: [ 0.00 0.00 ]
+Key: VPROTWri: [ 0.00 0.00 ]
+Key: VPROTWrm: [ 0.00 0.00 ]
+Key: VPROTWrr: [ 0.00 0.00 ]
+Key: VPROTWrr_REV: [ 0.00 0.00 ]
+Key: VPSADBWYrm: [ 0.00 0.00 ]
+Key: VPSADBWYrr: [ 0.00 0.00 ]
+Key: VPSADBWZ: [ 0.00 0.00 ]
+Key: VPSADBWZrm: [ 0.00 0.00 ]
+Key: VPSADBWZrr: [ 0.00 0.00 ]
+Key: VPSADBWrm: [ 0.00 0.00 ]
+Key: VPSADBWrr: [ 0.00 0.00 ]
+Key: VPSCATTERDDZ: [ 0.00 0.00 ]
+Key: VPSCATTERDDZmr: [ 0.00 0.00 ]
+Key: VPSCATTERDQZ: [ 0.00 0.00 ]
+Key: VPSCATTERDQZmr: [ 0.00 0.00 ]
+Key: VPSCATTERQDZ: [ 0.00 0.00 ]
+Key: VPSCATTERQDZmr: [ 0.00 0.00 ]
+Key: VPSCATTERQQZ: [ 0.00 0.00 ]
+Key: VPSCATTERQQZmr: [ 0.00 0.00 ]
+Key: VPSHABmr: [ 0.00 0.00 ]
+Key: VPSHABrm: [ 0.00 0.00 ]
+Key: VPSHABrr: [ 0.00 0.00 ]
+Key: VPSHABrr_REV: [ 0.00 0.00 ]
+Key: VPSHADmr: [ 0.00 0.00 ]
+Key: VPSHADrm: [ 0.00 0.00 ]
+Key: VPSHADrr: [ 0.00 0.00 ]
+Key: VPSHADrr_REV: [ 0.00 0.00 ]
+Key: VPSHAQmr: [ 0.00 0.00 ]
+Key: VPSHAQrm: [ 0.00 0.00 ]
+Key: VPSHAQrr: [ 0.00 0.00 ]
+Key: VPSHAQrr_REV: [ 0.00 0.00 ]
+Key: VPSHAWmr: [ 0.00 0.00 ]
+Key: VPSHAWrm: [ 0.00 0.00 ]
+Key: VPSHAWrr: [ 0.00 0.00 ]
+Key: VPSHAWrr_REV: [ 0.00 0.00 ]
+Key: VPSHLBmr: [ 0.00 0.00 ]
+Key: VPSHLBrm: [ 0.00 0.00 ]
+Key: VPSHLBrr: [ 0.00 0.00 ]
+Key: VPSHLBrr_REV: [ 0.00 0.00 ]
+Key: VPSHLDDZ: [ 0.00 0.00 ]
+Key: VPSHLDDZrmbi: [ 0.00 0.00 ]
+Key: VPSHLDDZrmbik: [ 0.00 0.00 ]
+Key: VPSHLDDZrmbikz: [ 0.00 0.00 ]
+Key: VPSHLDDZrmi: [ 0.00 0.00 ]
+Key: VPSHLDDZrmik: [ 0.00 0.00 ]
+Key: VPSHLDDZrmikz: [ 0.00 0.00 ]
+Key: VPSHLDDZrri: [ 0.00 0.00 ]
+Key: VPSHLDDZrrik: [ 0.00 0.00 ]
+Key: VPSHLDDZrrikz: [ 0.00 0.00 ]
+Key: VPSHLDQZ: [ 0.00 0.00 ]
+Key: VPSHLDQZrmbi: [ 0.00 0.00 ]
+Key: VPSHLDQZrmbik: [ 0.00 0.00 ]
+Key: VPSHLDQZrmbikz: [ 0.00 0.00 ]
+Key: VPSHLDQZrmi: [ 0.00 0.00 ]
+Key: VPSHLDQZrmik: [ 0.00 0.00 ]
+Key: VPSHLDQZrmikz: [ 0.00 0.00 ]
+Key: VPSHLDQZrri: [ 0.00 0.00 ]
+Key: VPSHLDQZrrik: [ 0.00 0.00 ]
+Key: VPSHLDQZrrikz: [ 0.00 0.00 ]
+Key: VPSHLDVDZ: [ 0.00 0.00 ]
+Key: VPSHLDVDZm: [ 0.00 0.00 ]
+Key: VPSHLDVDZmb: [ 0.00 0.00 ]
+Key: VPSHLDVDZmbk: [ 0.00 0.00 ]
+Key: VPSHLDVDZmbkz: [ 0.00 0.00 ]
+Key: VPSHLDVDZmk: [ 0.00 0.00 ]
+Key: VPSHLDVDZmkz: [ 0.00 0.00 ]
+Key: VPSHLDVDZr: [ 0.00 0.00 ]
+Key: VPSHLDVDZrk: [ 0.00 0.00 ]
+Key: VPSHLDVDZrkz: [ 0.00 0.00 ]
+Key: VPSHLDVQZ: [ 0.00 0.00 ]
+Key: VPSHLDVQZm: [ 0.00 0.00 ]
+Key: VPSHLDVQZmb: [ 0.00 0.00 ]
+Key: VPSHLDVQZmbk: [ 0.00 0.00 ]
+Key: VPSHLDVQZmbkz: [ 0.00 0.00 ]
+Key: VPSHLDVQZmk: [ 0.00 0.00 ]
+Key: VPSHLDVQZmkz: [ 0.00 0.00 ]
+Key: VPSHLDVQZr: [ 0.00 0.00 ]
+Key: VPSHLDVQZrk: [ 0.00 0.00 ]
+Key: VPSHLDVQZrkz: [ 0.00 0.00 ]
+Key: VPSHLDVWZ: [ 0.00 0.00 ]
+Key: VPSHLDVWZm: [ 0.00 0.00 ]
+Key: VPSHLDVWZmk: [ 0.00 0.00 ]
+Key: VPSHLDVWZmkz: [ 0.00 0.00 ]
+Key: VPSHLDVWZr: [ 0.00 0.00 ]
+Key: VPSHLDVWZrk: [ 0.00 0.00 ]
+Key: VPSHLDVWZrkz: [ 0.00 0.00 ]
+Key: VPSHLDWZ: [ 0.00 0.00 ]
+Key: VPSHLDWZrmi: [ 0.00 0.00 ]
+Key: VPSHLDWZrmik: [ 0.00 0.00 ]
+Key: VPSHLDWZrmikz: [ 0.00 0.00 ]
+Key: VPSHLDWZrri: [ 0.00 0.00 ]
+Key: VPSHLDWZrrik: [ 0.00 0.00 ]
+Key: VPSHLDWZrrikz: [ 0.00 0.00 ]
+Key: VPSHLDmr: [ 0.00 0.00 ]
+Key: VPSHLDrm: [ 0.00 0.00 ]
+Key: VPSHLDrr: [ 0.00 0.00 ]
+Key: VPSHLDrr_REV: [ 0.00 0.00 ]
+Key: VPSHLQmr: [ 0.00 0.00 ]
+Key: VPSHLQrm: [ 0.00 0.00 ]
+Key: VPSHLQrr: [ 0.00 0.00 ]
+Key: VPSHLQrr_REV: [ 0.00 0.00 ]
+Key: VPSHLWmr: [ 0.00 0.00 ]
+Key: VPSHLWrm: [ 0.00 0.00 ]
+Key: VPSHLWrr: [ 0.00 0.00 ]
+Key: VPSHLWrr_REV: [ 0.00 0.00 ]
+Key: VPSHRDDZ: [ 0.00 0.00 ]
+Key: VPSHRDDZrmbi: [ 0.00 0.00 ]
+Key: VPSHRDDZrmbik: [ 0.00 0.00 ]
+Key: VPSHRDDZrmbikz: [ 0.00 0.00 ]
+Key: VPSHRDDZrmi: [ 0.00 0.00 ]
+Key: VPSHRDDZrmik: [ 0.00 0.00 ]
+Key: VPSHRDDZrmikz: [ 0.00 0.00 ]
+Key: VPSHRDDZrri: [ 0.00 0.00 ]
+Key: VPSHRDDZrrik: [ 0.00 0.00 ]
+Key: VPSHRDDZrrikz: [ 0.00 0.00 ]
+Key: VPSHRDQZ: [ 0.00 0.00 ]
+Key: VPSHRDQZrmbi: [ 0.00 0.00 ]
+Key: VPSHRDQZrmbik: [ 0.00 0.00 ]
+Key: VPSHRDQZrmbikz: [ 0.00 0.00 ]
+Key: VPSHRDQZrmi: [ 0.00 0.00 ]
+Key: VPSHRDQZrmik: [ 0.00 0.00 ]
+Key: VPSHRDQZrmikz: [ 0.00 0.00 ]
+Key: VPSHRDQZrri: [ 0.00 0.00 ]
+Key: VPSHRDQZrrik: [ 0.00 0.00 ]
+Key: VPSHRDQZrrikz: [ 0.00 0.00 ]
+Key: VPSHRDVDZ: [ 0.00 0.00 ]
+Key: VPSHRDVDZm: [ 0.00 0.00 ]
+Key: VPSHRDVDZmb: [ 0.00 0.00 ]
+Key: VPSHRDVDZmbk: [ 0.00 0.00 ]
+Key: VPSHRDVDZmbkz: [ 0.00 0.00 ]
+Key: VPSHRDVDZmk: [ 0.00 0.00 ]
+Key: VPSHRDVDZmkz: [ 0.00 0.00 ]
+Key: VPSHRDVDZr: [ 0.00 0.00 ]
+Key: VPSHRDVDZrk: [ 0.00 0.00 ]
+Key: VPSHRDVDZrkz: [ 0.00 0.00 ]
+Key: VPSHRDVQZ: [ 0.00 0.00 ]
+Key: VPSHRDVQZm: [ 0.00 0.00 ]
+Key: VPSHRDVQZmb: [ 0.00 0.00 ]
+Key: VPSHRDVQZmbk: [ 0.00 0.00 ]
+Key: VPSHRDVQZmbkz: [ 0.00 0.00 ]
+Key: VPSHRDVQZmk: [ 0.00 0.00 ]
+Key: VPSHRDVQZmkz: [ 0.00 0.00 ]
+Key: VPSHRDVQZr: [ 0.00 0.00 ]
+Key: VPSHRDVQZrk: [ 0.00 0.00 ]
+Key: VPSHRDVQZrkz: [ 0.00 0.00 ]
+Key: VPSHRDVWZ: [ 0.00 0.00 ]
+Key: VPSHRDVWZm: [ 0.00 0.00 ]
+Key: VPSHRDVWZmk: [ 0.00 0.00 ]
+Key: VPSHRDVWZmkz: [ 0.00 0.00 ]
+Key: VPSHRDVWZr: [ 0.00 0.00 ]
+Key: VPSHRDVWZrk: [ 0.00 0.00 ]
+Key: VPSHRDVWZrkz: [ 0.00 0.00 ]
+Key: VPSHRDWZ: [ 0.00 0.00 ]
+Key: VPSHRDWZrmi: [ 0.00 0.00 ]
+Key: VPSHRDWZrmik: [ 0.00 0.00 ]
+Key: VPSHRDWZrmikz: [ 0.00 0.00 ]
+Key: VPSHRDWZrri: [ 0.00 0.00 ]
+Key: VPSHRDWZrrik: [ 0.00 0.00 ]
+Key: VPSHRDWZrrikz: [ 0.00 0.00 ]
+Key: VPSHUFBITQMBZ: [ 0.00 0.00 ]
+Key: VPSHUFBITQMBZrm: [ 0.00 0.00 ]
+Key: VPSHUFBITQMBZrmk: [ 0.00 0.00 ]
+Key: VPSHUFBITQMBZrr: [ 0.00 0.00 ]
+Key: VPSHUFBITQMBZrrk: [ 0.00 0.00 ]
+Key: VPSHUFBYrm: [ 0.00 0.00 ]
+Key: VPSHUFBYrr: [ 0.00 0.00 ]
+Key: VPSHUFBZ: [ 0.00 0.00 ]
+Key: VPSHUFBZrm: [ 0.00 0.00 ]
+Key: VPSHUFBZrmk: [ 0.00 0.00 ]
+Key: VPSHUFBZrmkz: [ 0.00 0.00 ]
+Key: VPSHUFBZrr: [ 0.00 0.00 ]
+Key: VPSHUFBZrrk: [ 0.00 0.00 ]
+Key: VPSHUFBZrrkz: [ 0.00 0.00 ]
+Key: VPSHUFBrm: [ 0.00 0.00 ]
+Key: VPSHUFBrr: [ 0.00 0.00 ]
+Key: VPSHUFDYmi: [ 0.00 0.00 ]
+Key: VPSHUFDYri: [ 0.00 0.00 ]
+Key: VPSHUFDZ: [ 0.00 0.00 ]
+Key: VPSHUFDZmbi: [ 0.00 0.00 ]
+Key: VPSHUFDZmbik: [ 0.00 0.00 ]
+Key: VPSHUFDZmbikz: [ 0.00 0.00 ]
+Key: VPSHUFDZmi: [ 0.00 0.00 ]
+Key: VPSHUFDZmik: [ 0.00 0.00 ]
+Key: VPSHUFDZmikz: [ 0.00 0.00 ]
+Key: VPSHUFDZri: [ 0.00 0.00 ]
+Key: VPSHUFDZrik: [ 0.00 0.00 ]
+Key: VPSHUFDZrikz: [ 0.00 0.00 ]
+Key: VPSHUFDmi: [ 0.00 0.00 ]
+Key: VPSHUFDri: [ 0.00 0.00 ]
+Key: VPSHUFHWYmi: [ 0.00 0.00 ]
+Key: VPSHUFHWYri: [ 0.00 0.00 ]
+Key: VPSHUFHWZ: [ 0.00 0.00 ]
+Key: VPSHUFHWZmi: [ 0.00 0.00 ]
+Key: VPSHUFHWZmik: [ 0.00 0.00 ]
+Key: VPSHUFHWZmikz: [ 0.00 0.00 ]
+Key: VPSHUFHWZri: [ 0.00 0.00 ]
+Key: VPSHUFHWZrik: [ 0.00 0.00 ]
+Key: VPSHUFHWZrikz: [ 0.00 0.00 ]
+Key: VPSHUFHWmi: [ 0.00 0.00 ]
+Key: VPSHUFHWri: [ 0.00 0.00 ]
+Key: VPSHUFLWYmi: [ 0.00 0.00 ]
+Key: VPSHUFLWYri: [ 0.00 0.00 ]
+Key: VPSHUFLWZ: [ 0.00 0.00 ]
+Key: VPSHUFLWZmi: [ 0.00 0.00 ]
+Key: VPSHUFLWZmik: [ 0.00 0.00 ]
+Key: VPSHUFLWZmikz: [ 0.00 0.00 ]
+Key: VPSHUFLWZri: [ 0.00 0.00 ]
+Key: VPSHUFLWZrik: [ 0.00 0.00 ]
+Key: VPSHUFLWZrikz: [ 0.00 0.00 ]
+Key: VPSHUFLWmi: [ 0.00 0.00 ]
+Key: VPSHUFLWri: [ 0.00 0.00 ]
+Key: VPSIGNBYrm: [ 0.00 0.00 ]
+Key: VPSIGNBYrr: [ 0.00 0.00 ]
+Key: VPSIGNBrm: [ 0.00 0.00 ]
+Key: VPSIGNBrr: [ 0.00 0.00 ]
+Key: VPSIGNDYrm: [ 0.00 0.00 ]
+Key: VPSIGNDYrr: [ 0.00 0.00 ]
+Key: VPSIGNDrm: [ 0.00 0.00 ]
+Key: VPSIGNDrr: [ 0.00 0.00 ]
+Key: VPSIGNWYrm: [ 0.00 0.00 ]
+Key: VPSIGNWYrr: [ 0.00 0.00 ]
+Key: VPSIGNWrm: [ 0.00 0.00 ]
+Key: VPSIGNWrr: [ 0.00 0.00 ]
+Key: VPSLLDQYri: [ 0.00 0.00 ]
+Key: VPSLLDQZ: [ 0.00 0.00 ]
+Key: VPSLLDQZmi: [ 0.00 0.00 ]
+Key: VPSLLDQZri: [ 0.00 0.00 ]
+Key: VPSLLDQri: [ 0.00 0.00 ]
+Key: VPSLLDYri: [ 0.00 0.00 ]
+Key: VPSLLDYrm: [ 0.00 0.00 ]
+Key: VPSLLDYrr: [ 0.00 0.00 ]
+Key: VPSLLDZ: [ 0.00 0.00 ]
+Key: VPSLLDZmbi: [ 0.00 0.00 ]
+Key: VPSLLDZmbik: [ 0.00 0.00 ]
+Key: VPSLLDZmbikz: [ 0.00 0.00 ]
+Key: VPSLLDZmi: [ 0.00 0.00 ]
+Key: VPSLLDZmik: [ 0.00 0.00 ]
+Key: VPSLLDZmikz: [ 0.00 0.00 ]
+Key: VPSLLDZri: [ 0.00 0.00 ]
+Key: VPSLLDZrik: [ 0.00 0.00 ]
+Key: VPSLLDZrikz: [ 0.00 0.00 ]
+Key: VPSLLDZrm: [ 0.00 0.00 ]
+Key: VPSLLDZrmk: [ 0.00 0.00 ]
+Key: VPSLLDZrmkz: [ 0.00 0.00 ]
+Key: VPSLLDZrr: [ 0.00 0.00 ]
+Key: VPSLLDZrrk: [ 0.00 0.00 ]
+Key: VPSLLDZrrkz: [ 0.00 0.00 ]
+Key: VPSLLDri: [ 0.00 0.00 ]
+Key: VPSLLDrm: [ 0.00 0.00 ]
+Key: VPSLLDrr: [ 0.00 0.00 ]
+Key: VPSLLQYri: [ 0.00 0.00 ]
+Key: VPSLLQYrm: [ 0.00 0.00 ]
+Key: VPSLLQYrr: [ 0.00 0.00 ]
+Key: VPSLLQZ: [ 0.00 0.00 ]
+Key: VPSLLQZmbi: [ 0.00 0.00 ]
+Key: VPSLLQZmbik: [ 0.00 0.00 ]
+Key: VPSLLQZmbikz: [ 0.00 0.00 ]
+Key: VPSLLQZmi: [ 0.00 0.00 ]
+Key: VPSLLQZmik: [ 0.00 0.00 ]
+Key: VPSLLQZmikz: [ 0.00 0.00 ]
+Key: VPSLLQZri: [ 0.00 0.00 ]
+Key: VPSLLQZrik: [ 0.00 0.00 ]
+Key: VPSLLQZrikz: [ 0.00 0.00 ]
+Key: VPSLLQZrm: [ 0.00 0.00 ]
+Key: VPSLLQZrmk: [ 0.00 0.00 ]
+Key: VPSLLQZrmkz: [ 0.00 0.00 ]
+Key: VPSLLQZrr: [ 0.00 0.00 ]
+Key: VPSLLQZrrk: [ 0.00 0.00 ]
+Key: VPSLLQZrrkz: [ 0.00 0.00 ]
+Key: VPSLLQri: [ 0.00 0.00 ]
+Key: VPSLLQrm: [ 0.00 0.00 ]
+Key: VPSLLQrr: [ 0.00 0.00 ]
+Key: VPSLLVDYrm: [ 0.00 0.00 ]
+Key: VPSLLVDYrr: [ 0.00 0.00 ]
+Key: VPSLLVDZ: [ 0.00 0.00 ]
+Key: VPSLLVDZrm: [ 0.00 0.00 ]
+Key: VPSLLVDZrmb: [ 0.00 0.00 ]
+Key: VPSLLVDZrmbk: [ 0.00 0.00 ]
+Key: VPSLLVDZrmbkz: [ 0.00 0.00 ]
+Key: VPSLLVDZrmk: [ 0.00 0.00 ]
+Key: VPSLLVDZrmkz: [ 0.00 0.00 ]
+Key: VPSLLVDZrr: [ 0.00 0.00 ]
+Key: VPSLLVDZrrk: [ 0.00 0.00 ]
+Key: VPSLLVDZrrkz: [ 0.00 0.00 ]
+Key: VPSLLVDrm: [ 0.00 0.00 ]
+Key: VPSLLVDrr: [ 0.00 0.00 ]
+Key: VPSLLVQYrm: [ 0.00 0.00 ]
+Key: VPSLLVQYrr: [ 0.00 0.00 ]
+Key: VPSLLVQZ: [ 0.00 0.00 ]
+Key: VPSLLVQZrm: [ 0.00 0.00 ]
+Key: VPSLLVQZrmb: [ 0.00 0.00 ]
+Key: VPSLLVQZrmbk: [ 0.00 0.00 ]
+Key: VPSLLVQZrmbkz: [ 0.00 0.00 ]
+Key: VPSLLVQZrmk: [ 0.00 0.00 ]
+Key: VPSLLVQZrmkz: [ 0.00 0.00 ]
+Key: VPSLLVQZrr: [ 0.00 0.00 ]
+Key: VPSLLVQZrrk: [ 0.00 0.00 ]
+Key: VPSLLVQZrrkz: [ 0.00 0.00 ]
+Key: VPSLLVQrm: [ 0.00 0.00 ]
+Key: VPSLLVQrr: [ 0.00 0.00 ]
+Key: VPSLLVWZ: [ 0.00 0.00 ]
+Key: VPSLLVWZrm: [ 0.00 0.00 ]
+Key: VPSLLVWZrmk: [ 0.00 0.00 ]
+Key: VPSLLVWZrmkz: [ 0.00 0.00 ]
+Key: VPSLLVWZrr: [ 0.00 0.00 ]
+Key: VPSLLVWZrrk: [ 0.00 0.00 ]
+Key: VPSLLVWZrrkz: [ 0.00 0.00 ]
+Key: VPSLLWYri: [ 0.00 0.00 ]
+Key: VPSLLWYrm: [ 0.00 0.00 ]
+Key: VPSLLWYrr: [ 0.00 0.00 ]
+Key: VPSLLWZ: [ 0.00 0.00 ]
+Key: VPSLLWZmi: [ 0.00 0.00 ]
+Key: VPSLLWZmik: [ 0.00 0.00 ]
+Key: VPSLLWZmikz: [ 0.00 0.00 ]
+Key: VPSLLWZri: [ 0.00 0.00 ]
+Key: VPSLLWZrik: [ 0.00 0.00 ]
+Key: VPSLLWZrikz: [ 0.00 0.00 ]
+Key: VPSLLWZrm: [ 0.00 0.00 ]
+Key: VPSLLWZrmk: [ 0.00 0.00 ]
+Key: VPSLLWZrmkz: [ 0.00 0.00 ]
+Key: VPSLLWZrr: [ 0.00 0.00 ]
+Key: VPSLLWZrrk: [ 0.00 0.00 ]
+Key: VPSLLWZrrkz: [ 0.00 0.00 ]
+Key: VPSLLWri: [ 0.00 0.00 ]
+Key: VPSLLWrm: [ 0.00 0.00 ]
+Key: VPSLLWrr: [ 0.00 0.00 ]
+Key: VPSRADYri: [ 0.00 0.00 ]
+Key: VPSRADYrm: [ 0.00 0.00 ]
+Key: VPSRADYrr: [ 0.00 0.00 ]
+Key: VPSRADZ: [ 0.00 0.00 ]
+Key: VPSRADZmbi: [ 0.00 0.00 ]
+Key: VPSRADZmbik: [ 0.00 0.00 ]
+Key: VPSRADZmbikz: [ 0.00 0.00 ]
+Key: VPSRADZmi: [ 0.00 0.00 ]
+Key: VPSRADZmik: [ 0.00 0.00 ]
+Key: VPSRADZmikz: [ 0.00 0.00 ]
+Key: VPSRADZri: [ 0.00 0.00 ]
+Key: VPSRADZrik: [ 0.00 0.00 ]
+Key: VPSRADZrikz: [ 0.00 0.00 ]
+Key: VPSRADZrm: [ 0.00 0.00 ]
+Key: VPSRADZrmk: [ 0.00 0.00 ]
+Key: VPSRADZrmkz: [ 0.00 0.00 ]
+Key: VPSRADZrr: [ 0.00 0.00 ]
+Key: VPSRADZrrk: [ 0.00 0.00 ]
+Key: VPSRADZrrkz: [ 0.00 0.00 ]
+Key: VPSRADri: [ 0.00 0.00 ]
+Key: VPSRADrm: [ 0.00 0.00 ]
+Key: VPSRADrr: [ 0.00 0.00 ]
+Key: VPSRAQZ: [ 0.00 0.00 ]
+Key: VPSRAQZmbi: [ 0.00 0.00 ]
+Key: VPSRAQZmbik: [ 0.00 0.00 ]
+Key: VPSRAQZmbikz: [ 0.00 0.00 ]
+Key: VPSRAQZmi: [ 0.00 0.00 ]
+Key: VPSRAQZmik: [ 0.00 0.00 ]
+Key: VPSRAQZmikz: [ 0.00 0.00 ]
+Key: VPSRAQZri: [ 0.00 0.00 ]
+Key: VPSRAQZrik: [ 0.00 0.00 ]
+Key: VPSRAQZrikz: [ 0.00 0.00 ]
+Key: VPSRAQZrm: [ 0.00 0.00 ]
+Key: VPSRAQZrmk: [ 0.00 0.00 ]
+Key: VPSRAQZrmkz: [ 0.00 0.00 ]
+Key: VPSRAQZrr: [ 0.00 0.00 ]
+Key: VPSRAQZrrk: [ 0.00 0.00 ]
+Key: VPSRAQZrrkz: [ 0.00 0.00 ]
+Key: VPSRAVDYrm: [ 0.00 0.00 ]
+Key: VPSRAVDYrr: [ 0.00 0.00 ]
+Key: VPSRAVDZ: [ 0.00 0.00 ]
+Key: VPSRAVDZrm: [ 0.00 0.00 ]
+Key: VPSRAVDZrmb: [ 0.00 0.00 ]
+Key: VPSRAVDZrmbk: [ 0.00 0.00 ]
+Key: VPSRAVDZrmbkz: [ 0.00 0.00 ]
+Key: VPSRAVDZrmk: [ 0.00 0.00 ]
+Key: VPSRAVDZrmkz: [ 0.00 0.00 ]
+Key: VPSRAVDZrr: [ 0.00 0.00 ]
+Key: VPSRAVDZrrk: [ 0.00 0.00 ]
+Key: VPSRAVDZrrkz: [ 0.00 0.00 ]
+Key: VPSRAVDrm: [ 0.00 0.00 ]
+Key: VPSRAVDrr: [ 0.00 0.00 ]
+Key: VPSRAVQZ: [ 0.00 0.00 ]
+Key: VPSRAVQZrm: [ 0.00 0.00 ]
+Key: VPSRAVQZrmb: [ 0.00 0.00 ]
+Key: VPSRAVQZrmbk: [ 0.00 0.00 ]
+Key: VPSRAVQZrmbkz: [ 0.00 0.00 ]
+Key: VPSRAVQZrmk: [ 0.00 0.00 ]
+Key: VPSRAVQZrmkz: [ 0.00 0.00 ]
+Key: VPSRAVQZrr: [ 0.00 0.00 ]
+Key: VPSRAVQZrrk: [ 0.00 0.00 ]
+Key: VPSRAVQZrrkz: [ 0.00 0.00 ]
+Key: VPSRAVWZ: [ 0.00 0.00 ]
+Key: VPSRAVWZrm: [ 0.00 0.00 ]
+Key: VPSRAVWZrmk: [ 0.00 0.00 ]
+Key: VPSRAVWZrmkz: [ 0.00 0.00 ]
+Key: VPSRAVWZrr: [ 0.00 0.00 ]
+Key: VPSRAVWZrrk: [ 0.00 0.00 ]
+Key: VPSRAVWZrrkz: [ 0.00 0.00 ]
+Key: VPSRAWYri: [ 0.00 0.00 ]
+Key: VPSRAWYrm: [ 0.00 0.00 ]
+Key: VPSRAWYrr: [ 0.00 0.00 ]
+Key: VPSRAWZ: [ 0.00 0.00 ]
+Key: VPSRAWZmi: [ 0.00 0.00 ]
+Key: VPSRAWZmik: [ 0.00 0.00 ]
+Key: VPSRAWZmikz: [ 0.00 0.00 ]
+Key: VPSRAWZri: [ 0.00 0.00 ]
+Key: VPSRAWZrik: [ 0.00 0.00 ]
+Key: VPSRAWZrikz: [ 0.00 0.00 ]
+Key: VPSRAWZrm: [ 0.00 0.00 ]
+Key: VPSRAWZrmk: [ 0.00 0.00 ]
+Key: VPSRAWZrmkz: [ 0.00 0.00 ]
+Key: VPSRAWZrr: [ 0.00 0.00 ]
+Key: VPSRAWZrrk: [ 0.00 0.00 ]
+Key: VPSRAWZrrkz: [ 0.00 0.00 ]
+Key: VPSRAWri: [ 0.00 0.00 ]
+Key: VPSRAWrm: [ 0.00 0.00 ]
+Key: VPSRAWrr: [ 0.00 0.00 ]
+Key: VPSRLDQYri: [ 0.00 0.00 ]
+Key: VPSRLDQZ: [ 0.00 0.00 ]
+Key: VPSRLDQZmi: [ 0.00 0.00 ]
+Key: VPSRLDQZri: [ 0.00 0.00 ]
+Key: VPSRLDQri: [ 0.00 0.00 ]
+Key: VPSRLDYri: [ 0.00 0.00 ]
+Key: VPSRLDYrm: [ 0.00 0.00 ]
+Key: VPSRLDYrr: [ 0.00 0.00 ]
+Key: VPSRLDZ: [ 0.00 0.00 ]
+Key: VPSRLDZmbi: [ 0.00 0.00 ]
+Key: VPSRLDZmbik: [ 0.00 0.00 ]
+Key: VPSRLDZmbikz: [ 0.00 0.00 ]
+Key: VPSRLDZmi: [ 0.00 0.00 ]
+Key: VPSRLDZmik: [ 0.00 0.00 ]
+Key: VPSRLDZmikz: [ 0.00 0.00 ]
+Key: VPSRLDZri: [ 0.00 0.00 ]
+Key: VPSRLDZrik: [ 0.00 0.00 ]
+Key: VPSRLDZrikz: [ 0.00 0.00 ]
+Key: VPSRLDZrm: [ 0.00 0.00 ]
+Key: VPSRLDZrmk: [ 0.00 0.00 ]
+Key: VPSRLDZrmkz: [ 0.00 0.00 ]
+Key: VPSRLDZrr: [ 0.00 0.00 ]
+Key: VPSRLDZrrk: [ 0.00 0.00 ]
+Key: VPSRLDZrrkz: [ 0.00 0.00 ]
+Key: VPSRLDri: [ 0.00 0.00 ]
+Key: VPSRLDrm: [ 0.00 0.00 ]
+Key: VPSRLDrr: [ 0.00 0.00 ]
+Key: VPSRLQYri: [ 0.00 0.00 ]
+Key: VPSRLQYrm: [ 0.00 0.00 ]
+Key: VPSRLQYrr: [ 0.00 0.00 ]
+Key: VPSRLQZ: [ 0.00 0.00 ]
+Key: VPSRLQZmbi: [ 0.00 0.00 ]
+Key: VPSRLQZmbik: [ 0.00 0.00 ]
+Key: VPSRLQZmbikz: [ 0.00 0.00 ]
+Key: VPSRLQZmi: [ 0.00 0.00 ]
+Key: VPSRLQZmik: [ 0.00 0.00 ]
+Key: VPSRLQZmikz: [ 0.00 0.00 ]
+Key: VPSRLQZri: [ 0.00 0.00 ]
+Key: VPSRLQZrik: [ 0.00 0.00 ]
+Key: VPSRLQZrikz: [ 0.00 0.00 ]
+Key: VPSRLQZrm: [ 0.00 0.00 ]
+Key: VPSRLQZrmk: [ 0.00 0.00 ]
+Key: VPSRLQZrmkz: [ 0.00 0.00 ]
+Key: VPSRLQZrr: [ 0.00 0.00 ]
+Key: VPSRLQZrrk: [ 0.00 0.00 ]
+Key: VPSRLQZrrkz: [ 0.00 0.00 ]
+Key: VPSRLQri: [ 0.00 0.00 ]
+Key: VPSRLQrm: [ 0.00 0.00 ]
+Key: VPSRLQrr: [ 0.00 0.00 ]
+Key: VPSRLVDYrm: [ 0.00 0.00 ]
+Key: VPSRLVDYrr: [ 0.00 0.00 ]
+Key: VPSRLVDZ: [ 0.00 0.00 ]
+Key: VPSRLVDZrm: [ 0.00 0.00 ]
+Key: VPSRLVDZrmb: [ 0.00 0.00 ]
+Key: VPSRLVDZrmbk: [ 0.00 0.00 ]
+Key: VPSRLVDZrmbkz: [ 0.00 0.00 ]
+Key: VPSRLVDZrmk: [ 0.00 0.00 ]
+Key: VPSRLVDZrmkz: [ 0.00 0.00 ]
+Key: VPSRLVDZrr: [ 0.00 0.00 ]
+Key: VPSRLVDZrrk: [ 0.00 0.00 ]
+Key: VPSRLVDZrrkz: [ 0.00 0.00 ]
+Key: VPSRLVDrm: [ 0.00 0.00 ]
+Key: VPSRLVDrr: [ 0.00 0.00 ]
+Key: VPSRLVQYrm: [ 0.00 0.00 ]
+Key: VPSRLVQYrr: [ 0.00 0.00 ]
+Key: VPSRLVQZ: [ 0.00 0.00 ]
+Key: VPSRLVQZrm: [ 0.00 0.00 ]
+Key: VPSRLVQZrmb: [ 0.00 0.00 ]
+Key: VPSRLVQZrmbk: [ 0.00 0.00 ]
+Key: VPSRLVQZrmbkz: [ 0.00 0.00 ]
+Key: VPSRLVQZrmk: [ 0.00 0.00 ]
+Key: VPSRLVQZrmkz: [ 0.00 0.00 ]
+Key: VPSRLVQZrr: [ 0.00 0.00 ]
+Key: VPSRLVQZrrk: [ 0.00 0.00 ]
+Key: VPSRLVQZrrkz: [ 0.00 0.00 ]
+Key: VPSRLVQrm: [ 0.00 0.00 ]
+Key: VPSRLVQrr: [ 0.00 0.00 ]
+Key: VPSRLVWZ: [ 0.00 0.00 ]
+Key: VPSRLVWZrm: [ 0.00 0.00 ]
+Key: VPSRLVWZrmk: [ 0.00 0.00 ]
+Key: VPSRLVWZrmkz: [ 0.00 0.00 ]
+Key: VPSRLVWZrr: [ 0.00 0.00 ]
+Key: VPSRLVWZrrk: [ 0.00 0.00 ]
+Key: VPSRLVWZrrkz: [ 0.00 0.00 ]
+Key: VPSRLWYri: [ 0.00 0.00 ]
+Key: VPSRLWYrm: [ 0.00 0.00 ]
+Key: VPSRLWYrr: [ 0.00 0.00 ]
+Key: VPSRLWZ: [ 0.00 0.00 ]
+Key: VPSRLWZmi: [ 0.00 0.00 ]
+Key: VPSRLWZmik: [ 0.00 0.00 ]
+Key: VPSRLWZmikz: [ 0.00 0.00 ]
+Key: VPSRLWZri: [ 0.00 0.00 ]
+Key: VPSRLWZrik: [ 0.00 0.00 ]
+Key: VPSRLWZrikz: [ 0.00 0.00 ]
+Key: VPSRLWZrm: [ 0.00 0.00 ]
+Key: VPSRLWZrmk: [ 0.00 0.00 ]
+Key: VPSRLWZrmkz: [ 0.00 0.00 ]
+Key: VPSRLWZrr: [ 0.00 0.00 ]
+Key: VPSRLWZrrk: [ 0.00 0.00 ]
+Key: VPSRLWZrrkz: [ 0.00 0.00 ]
+Key: VPSRLWri: [ 0.00 0.00 ]
+Key: VPSRLWrm: [ 0.00 0.00 ]
+Key: VPSRLWrr: [ 0.00 0.00 ]
+Key: VPSUBBYrm: [ 0.00 0.00 ]
+Key: VPSUBBYrr: [ 0.00 0.00 ]
+Key: VPSUBBZ: [ 0.00 0.00 ]
+Key: VPSUBBZrm: [ 0.00 0.00 ]
+Key: VPSUBBZrmk: [ 0.00 0.00 ]
+Key: VPSUBBZrmkz: [ 0.00 0.00 ]
+Key: VPSUBBZrr: [ 0.00 0.00 ]
+Key: VPSUBBZrrk: [ 0.00 0.00 ]
+Key: VPSUBBZrrkz: [ 0.00 0.00 ]
+Key: VPSUBBrm: [ 0.00 0.00 ]
+Key: VPSUBBrr: [ 0.00 0.00 ]
+Key: VPSUBDYrm: [ 0.00 0.00 ]
+Key: VPSUBDYrr: [ 0.00 0.00 ]
+Key: VPSUBDZ: [ 0.00 0.00 ]
+Key: VPSUBDZrm: [ 0.00 0.00 ]
+Key: VPSUBDZrmb: [ 0.00 0.00 ]
+Key: VPSUBDZrmbk: [ 0.00 0.00 ]
+Key: VPSUBDZrmbkz: [ 0.00 0.00 ]
+Key: VPSUBDZrmk: [ 0.00 0.00 ]
+Key: VPSUBDZrmkz: [ 0.00 0.00 ]
+Key: VPSUBDZrr: [ 0.00 0.00 ]
+Key: VPSUBDZrrk: [ 0.00 0.00 ]
+Key: VPSUBDZrrkz: [ 0.00 0.00 ]
+Key: VPSUBDrm: [ 0.00 0.00 ]
+Key: VPSUBDrr: [ 0.00 0.00 ]
+Key: VPSUBQYrm: [ 0.00 0.00 ]
+Key: VPSUBQYrr: [ 0.00 0.00 ]
+Key: VPSUBQZ: [ 0.00 0.00 ]
+Key: VPSUBQZrm: [ 0.00 0.00 ]
+Key: VPSUBQZrmb: [ 0.00 0.00 ]
+Key: VPSUBQZrmbk: [ 0.00 0.00 ]
+Key: VPSUBQZrmbkz: [ 0.00 0.00 ]
+Key: VPSUBQZrmk: [ 0.00 0.00 ]
+Key: VPSUBQZrmkz: [ 0.00 0.00 ]
+Key: VPSUBQZrr: [ 0.00 0.00 ]
+Key: VPSUBQZrrk: [ 0.00 0.00 ]
+Key: VPSUBQZrrkz: [ 0.00 0.00 ]
+Key: VPSUBQrm: [ 0.00 0.00 ]
+Key: VPSUBQrr: [ 0.00 0.00 ]
+Key: VPSUBSBYrm: [ 0.00 0.00 ]
+Key: VPSUBSBYrr: [ 0.00 0.00 ]
+Key: VPSUBSBZ: [ 0.00 0.00 ]
+Key: VPSUBSBZrm: [ 0.00 0.00 ]
+Key: VPSUBSBZrmk: [ 0.00 0.00 ]
+Key: VPSUBSBZrmkz: [ 0.00 0.00 ]
+Key: VPSUBSBZrr: [ 0.00 0.00 ]
+Key: VPSUBSBZrrk: [ 0.00 0.00 ]
+Key: VPSUBSBZrrkz: [ 0.00 0.00 ]
+Key: VPSUBSBrm: [ 0.00 0.00 ]
+Key: VPSUBSBrr: [ 0.00 0.00 ]
+Key: VPSUBSWYrm: [ 0.00 0.00 ]
+Key: VPSUBSWYrr: [ 0.00 0.00 ]
+Key: VPSUBSWZ: [ 0.00 0.00 ]
+Key: VPSUBSWZrm: [ 0.00 0.00 ]
+Key: VPSUBSWZrmk: [ 0.00 0.00 ]
+Key: VPSUBSWZrmkz: [ 0.00 0.00 ]
+Key: VPSUBSWZrr: [ 0.00 0.00 ]
+Key: VPSUBSWZrrk: [ 0.00 0.00 ]
+Key: VPSUBSWZrrkz: [ 0.00 0.00 ]
+Key: VPSUBSWrm: [ 0.00 0.00 ]
+Key: VPSUBSWrr: [ 0.00 0.00 ]
+Key: VPSUBUSBYrm: [ 0.00 0.00 ]
+Key: VPSUBUSBYrr: [ 0.00 0.00 ]
+Key: VPSUBUSBZ: [ 0.00 0.00 ]
+Key: VPSUBUSBZrm: [ 0.00 0.00 ]
+Key: VPSUBUSBZrmk: [ 0.00 0.00 ]
+Key: VPSUBUSBZrmkz: [ 0.00 0.00 ]
+Key: VPSUBUSBZrr: [ 0.00 0.00 ]
+Key: VPSUBUSBZrrk: [ 0.00 0.00 ]
+Key: VPSUBUSBZrrkz: [ 0.00 0.00 ]
+Key: VPSUBUSBrm: [ 0.00 0.00 ]
+Key: VPSUBUSBrr: [ 0.00 0.00 ]
+Key: VPSUBUSWYrm: [ 0.00 0.00 ]
+Key: VPSUBUSWYrr: [ 0.00 0.00 ]
+Key: VPSUBUSWZ: [ 0.00 0.00 ]
+Key: VPSUBUSWZrm: [ 0.00 0.00 ]
+Key: VPSUBUSWZrmk: [ 0.00 0.00 ]
+Key: VPSUBUSWZrmkz: [ 0.00 0.00 ]
+Key: VPSUBUSWZrr: [ 0.00 0.00 ]
+Key: VPSUBUSWZrrk: [ 0.00 0.00 ]
+Key: VPSUBUSWZrrkz: [ 0.00 0.00 ]
+Key: VPSUBUSWrm: [ 0.00 0.00 ]
+Key: VPSUBUSWrr: [ 0.00 0.00 ]
+Key: VPSUBWYrm: [ 0.00 0.00 ]
+Key: VPSUBWYrr: [ 0.00 0.00 ]
+Key: VPSUBWZ: [ 0.00 0.00 ]
+Key: VPSUBWZrm: [ 0.00 0.00 ]
+Key: VPSUBWZrmk: [ 0.00 0.00 ]
+Key: VPSUBWZrmkz: [ 0.00 0.00 ]
+Key: VPSUBWZrr: [ 0.00 0.00 ]
+Key: VPSUBWZrrk: [ 0.00 0.00 ]
+Key: VPSUBWZrrkz: [ 0.00 0.00 ]
+Key: VPSUBWrm: [ 0.00 0.00 ]
+Key: VPSUBWrr: [ 0.00 0.00 ]
+Key: VPTERNLOGDZ: [ 0.00 0.00 ]
+Key: VPTERNLOGDZrmbi: [ 0.00 0.00 ]
+Key: VPTERNLOGDZrmbik: [ 0.00 0.00 ]
+Key: VPTERNLOGDZrmbikz: [ 0.00 0.00 ]
+Key: VPTERNLOGDZrmi: [ 0.00 0.00 ]
+Key: VPTERNLOGDZrmik: [ 0.00 0.00 ]
+Key: VPTERNLOGDZrmikz: [ 0.00 0.00 ]
+Key: VPTERNLOGDZrri: [ 0.00 0.00 ]
+Key: VPTERNLOGDZrrik: [ 0.00 0.00 ]
+Key: VPTERNLOGDZrrikz: [ 0.00 0.00 ]
+Key: VPTERNLOGQZ: [ 0.00 0.00 ]
+Key: VPTERNLOGQZrmbi: [ 0.00 0.00 ]
+Key: VPTERNLOGQZrmbik: [ 0.00 0.00 ]
+Key: VPTERNLOGQZrmbikz: [ 0.00 0.00 ]
+Key: VPTERNLOGQZrmi: [ 0.00 0.00 ]
+Key: VPTERNLOGQZrmik: [ 0.00 0.00 ]
+Key: VPTERNLOGQZrmikz: [ 0.00 0.00 ]
+Key: VPTERNLOGQZrri: [ 0.00 0.00 ]
+Key: VPTERNLOGQZrrik: [ 0.00 0.00 ]
+Key: VPTERNLOGQZrrikz: [ 0.00 0.00 ]
+Key: VPTESTMBZ: [ 0.00 0.00 ]
+Key: VPTESTMBZrm: [ 0.00 0.00 ]
+Key: VPTESTMBZrmk: [ 0.00 0.00 ]
+Key: VPTESTMBZrr: [ 0.00 0.00 ]
+Key: VPTESTMBZrrk: [ 0.00 0.00 ]
+Key: VPTESTMDZ: [ 0.00 0.00 ]
+Key: VPTESTMDZrm: [ 0.00 0.00 ]
+Key: VPTESTMDZrmb: [ 0.00 0.00 ]
+Key: VPTESTMDZrmbk: [ 0.00 0.00 ]
+Key: VPTESTMDZrmk: [ 0.00 0.00 ]
+Key: VPTESTMDZrr: [ 0.00 0.00 ]
+Key: VPTESTMDZrrk: [ 0.00 0.00 ]
+Key: VPTESTMQZ: [ 0.00 0.00 ]
+Key: VPTESTMQZrm: [ 0.00 0.00 ]
+Key: VPTESTMQZrmb: [ 0.00 0.00 ]
+Key: VPTESTMQZrmbk: [ 0.00 0.00 ]
+Key: VPTESTMQZrmk: [ 0.00 0.00 ]
+Key: VPTESTMQZrr: [ 0.00 0.00 ]
+Key: VPTESTMQZrrk: [ 0.00 0.00 ]
+Key: VPTESTMWZ: [ 0.00 0.00 ]
+Key: VPTESTMWZrm: [ 0.00 0.00 ]
+Key: VPTESTMWZrmk: [ 0.00 0.00 ]
+Key: VPTESTMWZrr: [ 0.00 0.00 ]
+Key: VPTESTMWZrrk: [ 0.00 0.00 ]
+Key: VPTESTNMBZ: [ 0.00 0.00 ]
+Key: VPTESTNMBZrm: [ 0.00 0.00 ]
+Key: VPTESTNMBZrmk: [ 0.00 0.00 ]
+Key: VPTESTNMBZrr: [ 0.00 0.00 ]
+Key: VPTESTNMBZrrk: [ 0.00 0.00 ]
+Key: VPTESTNMDZ: [ 0.00 0.00 ]
+Key: VPTESTNMDZrm: [ 0.00 0.00 ]
+Key: VPTESTNMDZrmb: [ 0.00 0.00 ]
+Key: VPTESTNMDZrmbk: [ 0.00 0.00 ]
+Key: VPTESTNMDZrmk: [ 0.00 0.00 ]
+Key: VPTESTNMDZrr: [ 0.00 0.00 ]
+Key: VPTESTNMDZrrk: [ 0.00 0.00 ]
+Key: VPTESTNMQZ: [ 0.00 0.00 ]
+Key: VPTESTNMQZrm: [ 0.00 0.00 ]
+Key: VPTESTNMQZrmb: [ 0.00 0.00 ]
+Key: VPTESTNMQZrmbk: [ 0.00 0.00 ]
+Key: VPTESTNMQZrmk: [ 0.00 0.00 ]
+Key: VPTESTNMQZrr: [ 0.00 0.00 ]
+Key: VPTESTNMQZrrk: [ 0.00 0.00 ]
+Key: VPTESTNMWZ: [ 0.00 0.00 ]
+Key: VPTESTNMWZrm: [ 0.00 0.00 ]
+Key: VPTESTNMWZrmk: [ 0.00 0.00 ]
+Key: VPTESTNMWZrr: [ 0.00 0.00 ]
+Key: VPTESTNMWZrrk: [ 0.00 0.00 ]
+Key: VPTESTYrm: [ 0.00 0.00 ]
+Key: VPTESTYrr: [ 0.00 0.00 ]
+Key: VPTESTrm: [ 0.00 0.00 ]
+Key: VPTESTrr: [ 0.00 0.00 ]
+Key: VPUNPCKHBWYrm: [ 0.00 0.00 ]
+Key: VPUNPCKHBWYrr: [ 0.00 0.00 ]
+Key: VPUNPCKHBWZ: [ 0.00 0.00 ]
+Key: VPUNPCKHBWZrm: [ 0.00 0.00 ]
+Key: VPUNPCKHBWZrmk: [ 0.00 0.00 ]
+Key: VPUNPCKHBWZrmkz: [ 0.00 0.00 ]
+Key: VPUNPCKHBWZrr: [ 0.00 0.00 ]
+Key: VPUNPCKHBWZrrk: [ 0.00 0.00 ]
+Key: VPUNPCKHBWZrrkz: [ 0.00 0.00 ]
+Key: VPUNPCKHBWrm: [ 0.00 0.00 ]
+Key: VPUNPCKHBWrr: [ 0.00 0.00 ]
+Key: VPUNPCKHDQYrm: [ 0.00 0.00 ]
+Key: VPUNPCKHDQYrr: [ 0.00 0.00 ]
+Key: VPUNPCKHDQZ: [ 0.00 0.00 ]
+Key: VPUNPCKHDQZrm: [ 0.00 0.00 ]
+Key: VPUNPCKHDQZrmb: [ 0.00 0.00 ]
+Key: VPUNPCKHDQZrmbk: [ 0.00 0.00 ]
+Key: VPUNPCKHDQZrmbkz: [ 0.00 0.00 ]
+Key: VPUNPCKHDQZrmk: [ 0.00 0.00 ]
+Key: VPUNPCKHDQZrmkz: [ 0.00 0.00 ]
+Key: VPUNPCKHDQZrr: [ 0.00 0.00 ]
+Key: VPUNPCKHDQZrrk: [ 0.00 0.00 ]
+Key: VPUNPCKHDQZrrkz: [ 0.00 0.00 ]
+Key: VPUNPCKHDQrm: [ 0.00 0.00 ]
+Key: VPUNPCKHDQrr: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQYrm: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQYrr: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQZ: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQZrm: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQZrmb: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQZrmbk: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQZrmbkz: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQZrmk: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQZrmkz: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQZrr: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQZrrk: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQZrrkz: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQrm: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQrr: [ 0.00 0.00 ]
+Key: VPUNPCKHWDYrm: [ 0.00 0.00 ]
+Key: VPUNPCKHWDYrr: [ 0.00 0.00 ]
+Key: VPUNPCKHWDZ: [ 0.00 0.00 ]
+Key: VPUNPCKHWDZrm: [ 0.00 0.00 ]
+Key: VPUNPCKHWDZrmk: [ 0.00 0.00 ]
+Key: VPUNPCKHWDZrmkz: [ 0.00 0.00 ]
+Key: VPUNPCKHWDZrr: [ 0.00 0.00 ]
+Key: VPUNPCKHWDZrrk: [ 0.00 0.00 ]
+Key: VPUNPCKHWDZrrkz: [ 0.00 0.00 ]
+Key: VPUNPCKHWDrm: [ 0.00 0.00 ]
+Key: VPUNPCKHWDrr: [ 0.00 0.00 ]
+Key: VPUNPCKLBWYrm: [ 0.00 0.00 ]
+Key: VPUNPCKLBWYrr: [ 0.00 0.00 ]
+Key: VPUNPCKLBWZ: [ 0.00 0.00 ]
+Key: VPUNPCKLBWZrm: [ 0.00 0.00 ]
+Key: VPUNPCKLBWZrmk: [ 0.00 0.00 ]
+Key: VPUNPCKLBWZrmkz: [ 0.00 0.00 ]
+Key: VPUNPCKLBWZrr: [ 0.00 0.00 ]
+Key: VPUNPCKLBWZrrk: [ 0.00 0.00 ]
+Key: VPUNPCKLBWZrrkz: [ 0.00 0.00 ]
+Key: VPUNPCKLBWrm: [ 0.00 0.00 ]
+Key: VPUNPCKLBWrr: [ 0.00 0.00 ]
+Key: VPUNPCKLDQYrm: [ 0.00 0.00 ]
+Key: VPUNPCKLDQYrr: [ 0.00 0.00 ]
+Key: VPUNPCKLDQZ: [ 0.00 0.00 ]
+Key: VPUNPCKLDQZrm: [ 0.00 0.00 ]
+Key: VPUNPCKLDQZrmb: [ 0.00 0.00 ]
+Key: VPUNPCKLDQZrmbk: [ 0.00 0.00 ]
+Key: VPUNPCKLDQZrmbkz: [ 0.00 0.00 ]
+Key: VPUNPCKLDQZrmk: [ 0.00 0.00 ]
+Key: VPUNPCKLDQZrmkz: [ 0.00 0.00 ]
+Key: VPUNPCKLDQZrr: [ 0.00 0.00 ]
+Key: VPUNPCKLDQZrrk: [ 0.00 0.00 ]
+Key: VPUNPCKLDQZrrkz: [ 0.00 0.00 ]
+Key: VPUNPCKLDQrm: [ 0.00 0.00 ]
+Key: VPUNPCKLDQrr: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQYrm: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQYrr: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQZ: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQZrm: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQZrmb: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQZrmbk: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQZrmbkz: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQZrmk: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQZrmkz: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQZrr: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQZrrk: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQZrrkz: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQrm: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQrr: [ 0.00 0.00 ]
+Key: VPUNPCKLWDYrm: [ 0.00 0.00 ]
+Key: VPUNPCKLWDYrr: [ 0.00 0.00 ]
+Key: VPUNPCKLWDZ: [ 0.00 0.00 ]
+Key: VPUNPCKLWDZrm: [ 0.00 0.00 ]
+Key: VPUNPCKLWDZrmk: [ 0.00 0.00 ]
+Key: VPUNPCKLWDZrmkz: [ 0.00 0.00 ]
+Key: VPUNPCKLWDZrr: [ 0.00 0.00 ]
+Key: VPUNPCKLWDZrrk: [ 0.00 0.00 ]
+Key: VPUNPCKLWDZrrkz: [ 0.00 0.00 ]
+Key: VPUNPCKLWDrm: [ 0.00 0.00 ]
+Key: VPUNPCKLWDrr: [ 0.00 0.00 ]
+Key: VPXORDZ: [ 0.00 0.00 ]
+Key: VPXORDZrm: [ 0.00 0.00 ]
+Key: VPXORDZrmb: [ 0.00 0.00 ]
+Key: VPXORDZrmbk: [ 0.00 0.00 ]
+Key: VPXORDZrmbkz: [ 0.00 0.00 ]
+Key: VPXORDZrmk: [ 0.00 0.00 ]
+Key: VPXORDZrmkz: [ 0.00 0.00 ]
+Key: VPXORDZrr: [ 0.00 0.00 ]
+Key: VPXORDZrrk: [ 0.00 0.00 ]
+Key: VPXORDZrrkz: [ 0.00 0.00 ]
+Key: VPXORQZ: [ 0.00 0.00 ]
+Key: VPXORQZrm: [ 0.00 0.00 ]
+Key: VPXORQZrmb: [ 0.00 0.00 ]
+Key: VPXORQZrmbk: [ 0.00 0.00 ]
+Key: VPXORQZrmbkz: [ 0.00 0.00 ]
+Key: VPXORQZrmk: [ 0.00 0.00 ]
+Key: VPXORQZrmkz: [ 0.00 0.00 ]
+Key: VPXORQZrr: [ 0.00 0.00 ]
+Key: VPXORQZrrk: [ 0.00 0.00 ]
+Key: VPXORQZrrkz: [ 0.00 0.00 ]
+Key: VPXORYrm: [ 0.00 0.00 ]
+Key: VPXORYrr: [ 0.00 0.00 ]
+Key: VPXORrm: [ 0.00 0.00 ]
+Key: VPXORrr: [ 0.00 0.00 ]
+Key: VRANGEPDZ: [ 0.00 0.00 ]
+Key: VRANGEPDZrmbi: [ 0.00 0.00 ]
+Key: VRANGEPDZrmbik: [ 0.00 0.00 ]
+Key: VRANGEPDZrmbikz: [ 0.00 0.00 ]
+Key: VRANGEPDZrmi: [ 0.00 0.00 ]
+Key: VRANGEPDZrmik: [ 0.00 0.00 ]
+Key: VRANGEPDZrmikz: [ 0.00 0.00 ]
+Key: VRANGEPDZrri: [ 0.00 0.00 ]
+Key: VRANGEPDZrrib: [ 0.00 0.00 ]
+Key: VRANGEPDZrribk: [ 0.00 0.00 ]
+Key: VRANGEPDZrribkz: [ 0.00 0.00 ]
+Key: VRANGEPDZrrik: [ 0.00 0.00 ]
+Key: VRANGEPDZrrikz: [ 0.00 0.00 ]
+Key: VRANGEPSZ: [ 0.00 0.00 ]
+Key: VRANGEPSZrmbi: [ 0.00 0.00 ]
+Key: VRANGEPSZrmbik: [ 0.00 0.00 ]
+Key: VRANGEPSZrmbikz: [ 0.00 0.00 ]
+Key: VRANGEPSZrmi: [ 0.00 0.00 ]
+Key: VRANGEPSZrmik: [ 0.00 0.00 ]
+Key: VRANGEPSZrmikz: [ 0.00 0.00 ]
+Key: VRANGEPSZrri: [ 0.00 0.00 ]
+Key: VRANGEPSZrrib: [ 0.00 0.00 ]
+Key: VRANGEPSZrribk: [ 0.00 0.00 ]
+Key: VRANGEPSZrribkz: [ 0.00 0.00 ]
+Key: VRANGEPSZrrik: [ 0.00 0.00 ]
+Key: VRANGEPSZrrikz: [ 0.00 0.00 ]
+Key: VRANGESDZrmi: [ 0.00 0.00 ]
+Key: VRANGESDZrmik: [ 0.00 0.00 ]
+Key: VRANGESDZrmikz: [ 0.00 0.00 ]
+Key: VRANGESDZrri: [ 0.00 0.00 ]
+Key: VRANGESDZrrib: [ 0.00 0.00 ]
+Key: VRANGESDZrribk: [ 0.00 0.00 ]
+Key: VRANGESDZrribkz: [ 0.00 0.00 ]
+Key: VRANGESDZrrik: [ 0.00 0.00 ]
+Key: VRANGESDZrrikz: [ 0.00 0.00 ]
+Key: VRANGESSZrmi: [ 0.00 0.00 ]
+Key: VRANGESSZrmik: [ 0.00 0.00 ]
+Key: VRANGESSZrmikz: [ 0.00 0.00 ]
+Key: VRANGESSZrri: [ 0.00 0.00 ]
+Key: VRANGESSZrrib: [ 0.00 0.00 ]
+Key: VRANGESSZrribk: [ 0.00 0.00 ]
+Key: VRANGESSZrribkz: [ 0.00 0.00 ]
+Key: VRANGESSZrrik: [ 0.00 0.00 ]
+Key: VRANGESSZrrikz: [ 0.00 0.00 ]
+Key: VRCP: [ 0.00 0.00 ]
+Key: VRCPBF: [ 0.00 0.00 ]
+Key: VRCPPHZ: [ 0.00 0.00 ]
+Key: VRCPPHZm: [ 0.00 0.00 ]
+Key: VRCPPHZmb: [ 0.00 0.00 ]
+Key: VRCPPHZmbk: [ 0.00 0.00 ]
+Key: VRCPPHZmbkz: [ 0.00 0.00 ]
+Key: VRCPPHZmk: [ 0.00 0.00 ]
+Key: VRCPPHZmkz: [ 0.00 0.00 ]
+Key: VRCPPHZr: [ 0.00 0.00 ]
+Key: VRCPPHZrk: [ 0.00 0.00 ]
+Key: VRCPPHZrkz: [ 0.00 0.00 ]
+Key: VRCPPSYm: [ 0.00 0.00 ]
+Key: VRCPPSYr: [ 0.00 0.00 ]
+Key: VRCPPSm: [ 0.00 0.00 ]
+Key: VRCPPSr: [ 0.00 0.00 ]
+Key: VRCPSHZrm: [ 0.00 0.00 ]
+Key: VRCPSHZrmk: [ 0.00 0.00 ]
+Key: VRCPSHZrmkz: [ 0.00 0.00 ]
+Key: VRCPSHZrr: [ 0.00 0.00 ]
+Key: VRCPSHZrrk: [ 0.00 0.00 ]
+Key: VRCPSHZrrkz: [ 0.00 0.00 ]
+Key: VRCPSSm: [ 0.00 0.00 ]
+Key: VRCPSSm_Int: [ 0.00 0.00 ]
+Key: VRCPSSr: [ 0.00 0.00 ]
+Key: VRCPSSr_Int: [ 0.00 0.00 ]
+Key: VREDUCEBF: [ 0.00 0.00 ]
+Key: VREDUCEPDZ: [ 0.00 0.00 ]
+Key: VREDUCEPDZrmbi: [ 0.00 0.00 ]
+Key: VREDUCEPDZrmbik: [ 0.00 0.00 ]
+Key: VREDUCEPDZrmbikz: [ 0.00 0.00 ]
+Key: VREDUCEPDZrmi: [ 0.00 0.00 ]
+Key: VREDUCEPDZrmik: [ 0.00 0.00 ]
+Key: VREDUCEPDZrmikz: [ 0.00 0.00 ]
+Key: VREDUCEPDZrri: [ 0.00 0.00 ]
+Key: VREDUCEPDZrrib: [ 0.00 0.00 ]
+Key: VREDUCEPDZrribk: [ 0.00 0.00 ]
+Key: VREDUCEPDZrribkz: [ 0.00 0.00 ]
+Key: VREDUCEPDZrrik: [ 0.00 0.00 ]
+Key: VREDUCEPDZrrikz: [ 0.00 0.00 ]
+Key: VREDUCEPHZ: [ 0.00 0.00 ]
+Key: VREDUCEPHZrmbi: [ 0.00 0.00 ]
+Key: VREDUCEPHZrmbik: [ 0.00 0.00 ]
+Key: VREDUCEPHZrmbikz: [ 0.00 0.00 ]
+Key: VREDUCEPHZrmi: [ 0.00 0.00 ]
+Key: VREDUCEPHZrmik: [ 0.00 0.00 ]
+Key: VREDUCEPHZrmikz: [ 0.00 0.00 ]
+Key: VREDUCEPHZrri: [ 0.00 0.00 ]
+Key: VREDUCEPHZrrib: [ 0.00 0.00 ]
+Key: VREDUCEPHZrribk: [ 0.00 0.00 ]
+Key: VREDUCEPHZrribkz: [ 0.00 0.00 ]
+Key: VREDUCEPHZrrik: [ 0.00 0.00 ]
+Key: VREDUCEPHZrrikz: [ 0.00 0.00 ]
+Key: VREDUCEPSZ: [ 0.00 0.00 ]
+Key: VREDUCEPSZrmbi: [ 0.00 0.00 ]
+Key: VREDUCEPSZrmbik: [ 0.00 0.00 ]
+Key: VREDUCEPSZrmbikz: [ 0.00 0.00 ]
+Key: VREDUCEPSZrmi: [ 0.00 0.00 ]
+Key: VREDUCEPSZrmik: [ 0.00 0.00 ]
+Key: VREDUCEPSZrmikz: [ 0.00 0.00 ]
+Key: VREDUCEPSZrri: [ 0.00 0.00 ]
+Key: VREDUCEPSZrrib: [ 0.00 0.00 ]
+Key: VREDUCEPSZrribk: [ 0.00 0.00 ]
+Key: VREDUCEPSZrribkz: [ 0.00 0.00 ]
+Key: VREDUCEPSZrrik: [ 0.00 0.00 ]
+Key: VREDUCEPSZrrikz: [ 0.00 0.00 ]
+Key: VREDUCESDZrmi: [ 0.00 0.00 ]
+Key: VREDUCESDZrmik: [ 0.00 0.00 ]
+Key: VREDUCESDZrmikz: [ 0.00 0.00 ]
+Key: VREDUCESDZrri: [ 0.00 0.00 ]
+Key: VREDUCESDZrrib: [ 0.00 0.00 ]
+Key: VREDUCESDZrribk: [ 0.00 0.00 ]
+Key: VREDUCESDZrribkz: [ 0.00 0.00 ]
+Key: VREDUCESDZrrik: [ 0.00 0.00 ]
+Key: VREDUCESDZrrikz: [ 0.00 0.00 ]
+Key: VREDUCESHZrmi: [ 0.00 0.00 ]
+Key: VREDUCESHZrmik: [ 0.00 0.00 ]
+Key: VREDUCESHZrmikz: [ 0.00 0.00 ]
+Key: VREDUCESHZrri: [ 0.00 0.00 ]
+Key: VREDUCESHZrrib: [ 0.00 0.00 ]
+Key: VREDUCESHZrribk: [ 0.00 0.00 ]
+Key: VREDUCESHZrribkz: [ 0.00 0.00 ]
+Key: VREDUCESHZrrik: [ 0.00 0.00 ]
+Key: VREDUCESHZrrikz: [ 0.00 0.00 ]
+Key: VREDUCESSZrmi: [ 0.00 0.00 ]
+Key: VREDUCESSZrmik: [ 0.00 0.00 ]
+Key: VREDUCESSZrmikz: [ 0.00 0.00 ]
+Key: VREDUCESSZrri: [ 0.00 0.00 ]
+Key: VREDUCESSZrrib: [ 0.00 0.00 ]
+Key: VREDUCESSZrribk: [ 0.00 0.00 ]
+Key: VREDUCESSZrribkz: [ 0.00 0.00 ]
+Key: VREDUCESSZrrik: [ 0.00 0.00 ]
+Key: VREDUCESSZrrikz: [ 0.00 0.00 ]
+Key: VRNDSCALEBF: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZ: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrmbi: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrmbik: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrmbikz: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrmi: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrmik: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrmikz: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrri: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrrib: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrribk: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrribkz: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrrik: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrrikz: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZ: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrmbi: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrmbik: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrmbikz: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrmi: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrmik: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrmikz: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrri: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrrib: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrribk: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrribkz: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrrik: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrrikz: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZ: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrmbi: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrmbik: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrmbikz: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrmi: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrmik: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrmikz: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrri: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrrib: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrribk: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrribkz: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrrik: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrrikz: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrmi: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrmi_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrmik_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrmikz_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrri: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrri_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrrib_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrribk_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrribkz_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrrik_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrrikz_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrmi: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrmi_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrmik_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrmikz_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrri: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrri_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrrib_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrribk_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrribkz_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrrik_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrrikz_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrmi: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrmi_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrmik_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrmikz_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrri: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrri_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrrib_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrribk_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrribkz_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrrik_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrrikz_Int: [ 0.00 0.00 ]
+Key: VROUNDPDYmi: [ 0.00 0.00 ]
+Key: VROUNDPDYri: [ 0.00 0.00 ]
+Key: VROUNDPDmi: [ 0.00 0.00 ]
+Key: VROUNDPDri: [ 0.00 0.00 ]
+Key: VROUNDPSYmi: [ 0.00 0.00 ]
+Key: VROUNDPSYri: [ 0.00 0.00 ]
+Key: VROUNDPSmi: [ 0.00 0.00 ]
+Key: VROUNDPSri: [ 0.00 0.00 ]
+Key: VROUNDSDmi: [ 0.00 0.00 ]
+Key: VROUNDSDmi_Int: [ 0.00 0.00 ]
+Key: VROUNDSDri: [ 0.00 0.00 ]
+Key: VROUNDSDri_Int: [ 0.00 0.00 ]
+Key: VROUNDSSmi: [ 0.00 0.00 ]
+Key: VROUNDSSmi_Int: [ 0.00 0.00 ]
+Key: VROUNDSSri: [ 0.00 0.00 ]
+Key: VROUNDSSri_Int: [ 0.00 0.00 ]
+Key: VRSQRT: [ 0.00 0.00 ]
+Key: VRSQRTBF: [ 0.00 0.00 ]
+Key: VRSQRTPHZ: [ 0.00 0.00 ]
+Key: VRSQRTPHZm: [ 0.00 0.00 ]
+Key: VRSQRTPHZmb: [ 0.00 0.00 ]
+Key: VRSQRTPHZmbk: [ 0.00 0.00 ]
+Key: VRSQRTPHZmbkz: [ 0.00 0.00 ]
+Key: VRSQRTPHZmk: [ 0.00 0.00 ]
+Key: VRSQRTPHZmkz: [ 0.00 0.00 ]
+Key: VRSQRTPHZr: [ 0.00 0.00 ]
+Key: VRSQRTPHZrk: [ 0.00 0.00 ]
+Key: VRSQRTPHZrkz: [ 0.00 0.00 ]
+Key: VRSQRTPSYm: [ 0.00 0.00 ]
+Key: VRSQRTPSYr: [ 0.00 0.00 ]
+Key: VRSQRTPSm: [ 0.00 0.00 ]
+Key: VRSQRTPSr: [ 0.00 0.00 ]
+Key: VRSQRTSHZrm: [ 0.00 0.00 ]
+Key: VRSQRTSHZrmk: [ 0.00 0.00 ]
+Key: VRSQRTSHZrmkz: [ 0.00 0.00 ]
+Key: VRSQRTSHZrr: [ 0.00 0.00 ]
+Key: VRSQRTSHZrrk: [ 0.00 0.00 ]
+Key: VRSQRTSHZrrkz: [ 0.00 0.00 ]
+Key: VRSQRTSSm: [ 0.00 0.00 ]
+Key: VRSQRTSSm_Int: [ 0.00 0.00 ]
+Key: VRSQRTSSr: [ 0.00 0.00 ]
+Key: VRSQRTSSr_Int: [ 0.00 0.00 ]
+Key: VSCALEFBF: [ 0.00 0.00 ]
+Key: VSCALEFPDZ: [ 0.00 0.00 ]
+Key: VSCALEFPDZrm: [ 0.00 0.00 ]
+Key: VSCALEFPDZrmb: [ 0.00 0.00 ]
+Key: VSCALEFPDZrmbk: [ 0.00 0.00 ]
+Key: VSCALEFPDZrmbkz: [ 0.00 0.00 ]
+Key: VSCALEFPDZrmk: [ 0.00 0.00 ]
+Key: VSCALEFPDZrmkz: [ 0.00 0.00 ]
+Key: VSCALEFPDZrr: [ 0.00 0.00 ]
+Key: VSCALEFPDZrrb: [ 0.00 0.00 ]
+Key: VSCALEFPDZrrbk: [ 0.00 0.00 ]
+Key: VSCALEFPDZrrbkz: [ 0.00 0.00 ]
+Key: VSCALEFPDZrrk: [ 0.00 0.00 ]
+Key: VSCALEFPDZrrkz: [ 0.00 0.00 ]
+Key: VSCALEFPHZ: [ 0.00 0.00 ]
+Key: VSCALEFPHZrm: [ 0.00 0.00 ]
+Key: VSCALEFPHZrmb: [ 0.00 0.00 ]
+Key: VSCALEFPHZrmbk: [ 0.00 0.00 ]
+Key: VSCALEFPHZrmbkz: [ 0.00 0.00 ]
+Key: VSCALEFPHZrmk: [ 0.00 0.00 ]
+Key: VSCALEFPHZrmkz: [ 0.00 0.00 ]
+Key: VSCALEFPHZrr: [ 0.00 0.00 ]
+Key: VSCALEFPHZrrb: [ 0.00 0.00 ]
+Key: VSCALEFPHZrrbk: [ 0.00 0.00 ]
+Key: VSCALEFPHZrrbkz: [ 0.00 0.00 ]
+Key: VSCALEFPHZrrk: [ 0.00 0.00 ]
+Key: VSCALEFPHZrrkz: [ 0.00 0.00 ]
+Key: VSCALEFPSZ: [ 0.00 0.00 ]
+Key: VSCALEFPSZrm: [ 0.00 0.00 ]
+Key: VSCALEFPSZrmb: [ 0.00 0.00 ]
+Key: VSCALEFPSZrmbk: [ 0.00 0.00 ]
+Key: VSCALEFPSZrmbkz: [ 0.00 0.00 ]
+Key: VSCALEFPSZrmk: [ 0.00 0.00 ]
+Key: VSCALEFPSZrmkz: [ 0.00 0.00 ]
+Key: VSCALEFPSZrr: [ 0.00 0.00 ]
+Key: VSCALEFPSZrrb: [ 0.00 0.00 ]
+Key: VSCALEFPSZrrbk: [ 0.00 0.00 ]
+Key: VSCALEFPSZrrbkz: [ 0.00 0.00 ]
+Key: VSCALEFPSZrrk: [ 0.00 0.00 ]
+Key: VSCALEFPSZrrkz: [ 0.00 0.00 ]
+Key: VSCALEFSDZrm: [ 0.00 0.00 ]
+Key: VSCALEFSDZrmk: [ 0.00 0.00 ]
+Key: VSCALEFSDZrmkz: [ 0.00 0.00 ]
+Key: VSCALEFSDZrr: [ 0.00 0.00 ]
+Key: VSCALEFSDZrrb_Int: [ 0.00 0.00 ]
+Key: VSCALEFSDZrrbk_Int: [ 0.00 0.00 ]
+Key: VSCALEFSDZrrbkz_Int: [ 0.00 0.00 ]
+Key: VSCALEFSDZrrk: [ 0.00 0.00 ]
+Key: VSCALEFSDZrrkz: [ 0.00 0.00 ]
+Key: VSCALEFSHZrm: [ 0.00 0.00 ]
+Key: VSCALEFSHZrmk: [ 0.00 0.00 ]
+Key: VSCALEFSHZrmkz: [ 0.00 0.00 ]
+Key: VSCALEFSHZrr: [ 0.00 0.00 ]
+Key: VSCALEFSHZrrb_Int: [ 0.00 0.00 ]
+Key: VSCALEFSHZrrbk_Int: [ 0.00 0.00 ]
+Key: VSCALEFSHZrrbkz_Int: [ 0.00 0.00 ]
+Key: VSCALEFSHZrrk: [ 0.00 0.00 ]
+Key: VSCALEFSHZrrkz: [ 0.00 0.00 ]
+Key: VSCALEFSSZrm: [ 0.00 0.00 ]
+Key: VSCALEFSSZrmk: [ 0.00 0.00 ]
+Key: VSCALEFSSZrmkz: [ 0.00 0.00 ]
+Key: VSCALEFSSZrr: [ 0.00 0.00 ]
+Key: VSCALEFSSZrrb_Int: [ 0.00 0.00 ]
+Key: VSCALEFSSZrrbk_Int: [ 0.00 0.00 ]
+Key: VSCALEFSSZrrbkz_Int: [ 0.00 0.00 ]
+Key: VSCALEFSSZrrk: [ 0.00 0.00 ]
+Key: VSCALEFSSZrrkz: [ 0.00 0.00 ]
+Key: VSCATTERDPDZ: [ 0.00 0.00 ]
+Key: VSCATTERDPDZmr: [ 0.00 0.00 ]
+Key: VSCATTERDPSZ: [ 0.00 0.00 ]
+Key: VSCATTERDPSZmr: [ 0.00 0.00 ]
+Key: VSCATTERPF: [ 0.00 0.00 ]
+Key: VSCATTERQPDZ: [ 0.00 0.00 ]
+Key: VSCATTERQPDZmr: [ 0.00 0.00 ]
+Key: VSCATTERQPSZ: [ 0.00 0.00 ]
+Key: VSCATTERQPSZmr: [ 0.00 0.00 ]
+Key: VSHA: [ 0.00 0.00 ]
+Key: VSHUFF: [ 0.00 0.00 ]
+Key: VSHUFI: [ 0.00 0.00 ]
+Key: VSHUFPDYrmi: [ 0.00 0.00 ]
+Key: VSHUFPDYrri: [ 0.00 0.00 ]
+Key: VSHUFPDZ: [ 0.00 0.00 ]
+Key: VSHUFPDZrmbi: [ 0.00 0.00 ]
+Key: VSHUFPDZrmbik: [ 0.00 0.00 ]
+Key: VSHUFPDZrmbikz: [ 0.00 0.00 ]
+Key: VSHUFPDZrmi: [ 0.00 0.00 ]
+Key: VSHUFPDZrmik: [ 0.00 0.00 ]
+Key: VSHUFPDZrmikz: [ 0.00 0.00 ]
+Key: VSHUFPDZrri: [ 0.00 0.00 ]
+Key: VSHUFPDZrrik: [ 0.00 0.00 ]
+Key: VSHUFPDZrrikz: [ 0.00 0.00 ]
+Key: VSHUFPDrmi: [ 0.00 0.00 ]
+Key: VSHUFPDrri: [ 0.00 0.00 ]
+Key: VSHUFPSYrmi: [ 0.00 0.00 ]
+Key: VSHUFPSYrri: [ 0.00 0.00 ]
+Key: VSHUFPSZ: [ 0.00 0.00 ]
+Key: VSHUFPSZrmbi: [ 0.00 0.00 ]
+Key: VSHUFPSZrmbik: [ 0.00 0.00 ]
+Key: VSHUFPSZrmbikz: [ 0.00 0.00 ]
+Key: VSHUFPSZrmi: [ 0.00 0.00 ]
+Key: VSHUFPSZrmik: [ 0.00 0.00 ]
+Key: VSHUFPSZrmikz: [ 0.00 0.00 ]
+Key: VSHUFPSZrri: [ 0.00 0.00 ]
+Key: VSHUFPSZrrik: [ 0.00 0.00 ]
+Key: VSHUFPSZrrikz: [ 0.00 0.00 ]
+Key: VSHUFPSrmi: [ 0.00 0.00 ]
+Key: VSHUFPSrri: [ 0.00 0.00 ]
+Key: VSM: [ 0.00 0.00 ]
+Key: VSQRTBF: [ 0.00 0.00 ]
+Key: VSQRTPDYm: [ 0.00 0.00 ]
+Key: VSQRTPDYr: [ 0.00 0.00 ]
+Key: VSQRTPDZ: [ 0.00 0.00 ]
+Key: VSQRTPDZm: [ 0.00 0.00 ]
+Key: VSQRTPDZmb: [ 0.00 0.00 ]
+Key: VSQRTPDZmbk: [ 0.00 0.00 ]
+Key: VSQRTPDZmbkz: [ 0.00 0.00 ]
+Key: VSQRTPDZmk: [ 0.00 0.00 ]
+Key: VSQRTPDZmkz: [ 0.00 0.00 ]
+Key: VSQRTPDZr: [ 0.00 0.00 ]
+Key: VSQRTPDZrb: [ 0.00 0.00 ]
+Key: VSQRTPDZrbk: [ 0.00 0.00 ]
+Key: VSQRTPDZrbkz: [ 0.00 0.00 ]
+Key: VSQRTPDZrk: [ 0.00 0.00 ]
+Key: VSQRTPDZrkz: [ 0.00 0.00 ]
+Key: VSQRTPDm: [ 0.00 0.00 ]
+Key: VSQRTPDr: [ 0.00 0.00 ]
+Key: VSQRTPHZ: [ 0.00 0.00 ]
+Key: VSQRTPHZm: [ 0.00 0.00 ]
+Key: VSQRTPHZmb: [ 0.00 0.00 ]
+Key: VSQRTPHZmbk: [ 0.00 0.00 ]
+Key: VSQRTPHZmbkz: [ 0.00 0.00 ]
+Key: VSQRTPHZmk: [ 0.00 0.00 ]
+Key: VSQRTPHZmkz: [ 0.00 0.00 ]
+Key: VSQRTPHZr: [ 0.00 0.00 ]
+Key: VSQRTPHZrb: [ 0.00 0.00 ]
+Key: VSQRTPHZrbk: [ 0.00 0.00 ]
+Key: VSQRTPHZrbkz: [ 0.00 0.00 ]
+Key: VSQRTPHZrk: [ 0.00 0.00 ]
+Key: VSQRTPHZrkz: [ 0.00 0.00 ]
+Key: VSQRTPSYm: [ 0.00 0.00 ]
+Key: VSQRTPSYr: [ 0.00 0.00 ]
+Key: VSQRTPSZ: [ 0.00 0.00 ]
+Key: VSQRTPSZm: [ 0.00 0.00 ]
+Key: VSQRTPSZmb: [ 0.00 0.00 ]
+Key: VSQRTPSZmbk: [ 0.00 0.00 ]
+Key: VSQRTPSZmbkz: [ 0.00 0.00 ]
+Key: VSQRTPSZmk: [ 0.00 0.00 ]
+Key: VSQRTPSZmkz: [ 0.00 0.00 ]
+Key: VSQRTPSZr: [ 0.00 0.00 ]
+Key: VSQRTPSZrb: [ 0.00 0.00 ]
+Key: VSQRTPSZrbk: [ 0.00 0.00 ]
+Key: VSQRTPSZrbkz: [ 0.00 0.00 ]
+Key: VSQRTPSZrk: [ 0.00 0.00 ]
+Key: VSQRTPSZrkz: [ 0.00 0.00 ]
+Key: VSQRTPSm: [ 0.00 0.00 ]
+Key: VSQRTPSr: [ 0.00 0.00 ]
+Key: VSQRTSDZm: [ 0.00 0.00 ]
+Key: VSQRTSDZm_Int: [ 0.00 0.00 ]
+Key: VSQRTSDZmk_Int: [ 0.00 0.00 ]
+Key: VSQRTSDZmkz_Int: [ 0.00 0.00 ]
+Key: VSQRTSDZr: [ 0.00 0.00 ]
+Key: VSQRTSDZr_Int: [ 0.00 0.00 ]
+Key: VSQRTSDZrb_Int: [ 0.00 0.00 ]
+Key: VSQRTSDZrbk_Int: [ 0.00 0.00 ]
+Key: VSQRTSDZrbkz_Int: [ 0.00 0.00 ]
+Key: VSQRTSDZrk_Int: [ 0.00 0.00 ]
+Key: VSQRTSDZrkz_Int: [ 0.00 0.00 ]
+Key: VSQRTSDm: [ 0.00 0.00 ]
+Key: VSQRTSDm_Int: [ 0.00 0.00 ]
+Key: VSQRTSDr: [ 0.00 0.00 ]
+Key: VSQRTSDr_Int: [ 0.00 0.00 ]
+Key: VSQRTSHZm: [ 0.00 0.00 ]
+Key: VSQRTSHZm_Int: [ 0.00 0.00 ]
+Key: VSQRTSHZmk_Int: [ 0.00 0.00 ]
+Key: VSQRTSHZmkz_Int: [ 0.00 0.00 ]
+Key: VSQRTSHZr: [ 0.00 0.00 ]
+Key: VSQRTSHZr_Int: [ 0.00 0.00 ]
+Key: VSQRTSHZrb_Int: [ 0.00 0.00 ]
+Key: VSQRTSHZrbk_Int: [ 0.00 0.00 ]
+Key: VSQRTSHZrbkz_Int: [ 0.00 0.00 ]
+Key: VSQRTSHZrk_Int: [ 0.00 0.00 ]
+Key: VSQRTSHZrkz_Int: [ 0.00 0.00 ]
+Key: VSQRTSSZm: [ 0.00 0.00 ]
+Key: VSQRTSSZm_Int: [ 0.00 0.00 ]
+Key: VSQRTSSZmk_Int: [ 0.00 0.00 ]
+Key: VSQRTSSZmkz_Int: [ 0.00 0.00 ]
+Key: VSQRTSSZr: [ 0.00 0.00 ]
+Key: VSQRTSSZr_Int: [ 0.00 0.00 ]
+Key: VSQRTSSZrb_Int: [ 0.00 0.00 ]
+Key: VSQRTSSZrbk_Int: [ 0.00 0.00 ]
+Key: VSQRTSSZrbkz_Int: [ 0.00 0.00 ]
+Key: VSQRTSSZrk_Int: [ 0.00 0.00 ]
+Key: VSQRTSSZrkz_Int: [ 0.00 0.00 ]
+Key: VSQRTSSm: [ 0.00 0.00 ]
+Key: VSQRTSSm_Int: [ 0.00 0.00 ]
+Key: VSQRTSSr: [ 0.00 0.00 ]
+Key: VSQRTSSr_Int: [ 0.00 0.00 ]
+Key: VSTMXCSR: [ 0.00 0.00 ]
+Key: VSUBBF: [ 0.00 0.00 ]
+Key: VSUBPDYrm: [ 0.00 0.00 ]
+Key: VSUBPDYrr: [ 0.00 0.00 ]
+Key: VSUBPDZ: [ 0.00 0.00 ]
+Key: VSUBPDZrm: [ 0.00 0.00 ]
+Key: VSUBPDZrmb: [ 0.00 0.00 ]
+Key: VSUBPDZrmbk: [ 0.00 0.00 ]
+Key: VSUBPDZrmbkz: [ 0.00 0.00 ]
+Key: VSUBPDZrmk: [ 0.00 0.00 ]
+Key: VSUBPDZrmkz: [ 0.00 0.00 ]
+Key: VSUBPDZrr: [ 0.00 0.00 ]
+Key: VSUBPDZrrb: [ 0.00 0.00 ]
+Key: VSUBPDZrrbk: [ 0.00 0.00 ]
+Key: VSUBPDZrrbkz: [ 0.00 0.00 ]
+Key: VSUBPDZrrk: [ 0.00 0.00 ]
+Key: VSUBPDZrrkz: [ 0.00 0.00 ]
+Key: VSUBPDrm: [ 0.00 0.00 ]
+Key: VSUBPDrr: [ 0.00 0.00 ]
+Key: VSUBPHZ: [ 0.00 0.00 ]
+Key: VSUBPHZrm: [ 0.00 0.00 ]
+Key: VSUBPHZrmb: [ 0.00 0.00 ]
+Key: VSUBPHZrmbk: [ 0.00 0.00 ]
+Key: VSUBPHZrmbkz: [ 0.00 0.00 ]
+Key: VSUBPHZrmk: [ 0.00 0.00 ]
+Key: VSUBPHZrmkz: [ 0.00 0.00 ]
+Key: VSUBPHZrr: [ 0.00 0.00 ]
+Key: VSUBPHZrrb: [ 0.00 0.00 ]
+Key: VSUBPHZrrbk: [ 0.00 0.00 ]
+Key: VSUBPHZrrbkz: [ 0.00 0.00 ]
+Key: VSUBPHZrrk: [ 0.00 0.00 ]
+Key: VSUBPHZrrkz: [ 0.00 0.00 ]
+Key: VSUBPSYrm: [ 0.00 0.00 ]
+Key: VSUBPSYrr: [ 0.00 0.00 ]
+Key: VSUBPSZ: [ 0.00 0.00 ]
+Key: VSUBPSZrm: [ 0.00 0.00 ]
+Key: VSUBPSZrmb: [ 0.00 0.00 ]
+Key: VSUBPSZrmbk: [ 0.00 0.00 ]
+Key: VSUBPSZrmbkz: [ 0.00 0.00 ]
+Key: VSUBPSZrmk: [ 0.00 0.00 ]
+Key: VSUBPSZrmkz: [ 0.00 0.00 ]
+Key: VSUBPSZrr: [ 0.00 0.00 ]
+Key: VSUBPSZrrb: [ 0.00 0.00 ]
+Key: VSUBPSZrrbk: [ 0.00 0.00 ]
+Key: VSUBPSZrrbkz: [ 0.00 0.00 ]
+Key: VSUBPSZrrk: [ 0.00 0.00 ]
+Key: VSUBPSZrrkz: [ 0.00 0.00 ]
+Key: VSUBPSrm: [ 0.00 0.00 ]
+Key: VSUBPSrr: [ 0.00 0.00 ]
+Key: VSUBSDZrm: [ 0.00 0.00 ]
+Key: VSUBSDZrm_Int: [ 0.00 0.00 ]
+Key: VSUBSDZrmk_Int: [ 0.00 0.00 ]
+Key: VSUBSDZrmkz_Int: [ 0.00 0.00 ]
+Key: VSUBSDZrr: [ 0.00 0.00 ]
+Key: VSUBSDZrr_Int: [ 0.00 0.00 ]
+Key: VSUBSDZrrb_Int: [ 0.00 0.00 ]
+Key: VSUBSDZrrbk_Int: [ 0.00 0.00 ]
+Key: VSUBSDZrrbkz_Int: [ 0.00 0.00 ]
+Key: VSUBSDZrrk_Int: [ 0.00 0.00 ]
+Key: VSUBSDZrrkz_Int: [ 0.00 0.00 ]
+Key: VSUBSDrm: [ 0.00 0.00 ]
+Key: VSUBSDrm_Int: [ 0.00 0.00 ]
+Key: VSUBSDrr: [ 0.00 0.00 ]
+Key: VSUBSDrr_Int: [ 0.00 0.00 ]
+Key: VSUBSHZrm: [ 0.00 0.00 ]
+Key: VSUBSHZrm_Int: [ 0.00 0.00 ]
+Key: VSUBSHZrmk_Int: [ 0.00 0.00 ]
+Key: VSUBSHZrmkz_Int: [ 0.00 0.00 ]
+Key: VSUBSHZrr: [ 0.00 0.00 ]
+Key: VSUBSHZrr_Int: [ 0.00 0.00 ]
+Key: VSUBSHZrrb_Int: [ 0.00 0.00 ]
+Key: VSUBSHZrrbk_Int: [ 0.00 0.00 ]
+Key: VSUBSHZrrbkz_Int: [ 0.00 0.00 ]
+Key: VSUBSHZrrk_Int: [ 0.00 0.00 ]
+Key: VSUBSHZrrkz_Int: [ 0.00 0.00 ]
+Key: VSUBSSZrm: [ 0.00 0.00 ]
+Key: VSUBSSZrm_Int: [ 0.00 0.00 ]
+Key: VSUBSSZrmk_Int: [ 0.00 0.00 ]
+Key: VSUBSSZrmkz_Int: [ 0.00 0.00 ]
+Key: VSUBSSZrr: [ 0.00 0.00 ]
+Key: VSUBSSZrr_Int: [ 0.00 0.00 ]
+Key: VSUBSSZrrb_Int: [ 0.00 0.00 ]
+Key: VSUBSSZrrbk_Int: [ 0.00 0.00 ]
+Key: VSUBSSZrrbkz_Int: [ 0.00 0.00 ]
+Key: VSUBSSZrrk_Int: [ 0.00 0.00 ]
+Key: VSUBSSZrrkz_Int: [ 0.00 0.00 ]
+Key: VSUBSSrm: [ 0.00 0.00 ]
+Key: VSUBSSrm_Int: [ 0.00 0.00 ]
+Key: VSUBSSrr: [ 0.00 0.00 ]
+Key: VSUBSSrr_Int: [ 0.00 0.00 ]
+Key: VTESTPDYrm: [ 0.00 0.00 ]
+Key: VTESTPDYrr: [ 0.00 0.00 ]
+Key: VTESTPDrm: [ 0.00 0.00 ]
+Key: VTESTPDrr: [ 0.00 0.00 ]
+Key: VTESTPSYrm: [ 0.00 0.00 ]
+Key: VTESTPSYrr: [ 0.00 0.00 ]
+Key: VTESTPSrm: [ 0.00 0.00 ]
+Key: VTESTPSrr: [ 0.00 0.00 ]
+Key: VUCOMISDZrm: [ 0.00 0.00 ]
+Key: VUCOMISDZrm_Int: [ 0.00 0.00 ]
+Key: VUCOMISDZrr: [ 0.00 0.00 ]
+Key: VUCOMISDZrr_Int: [ 0.00 0.00 ]
+Key: VUCOMISDZrrb: [ 0.00 0.00 ]
+Key: VUCOMISDrm: [ 0.00 0.00 ]
+Key: VUCOMISDrm_Int: [ 0.00 0.00 ]
+Key: VUCOMISDrr: [ 0.00 0.00 ]
+Key: VUCOMISDrr_Int: [ 0.00 0.00 ]
+Key: VUCOMISHZrm: [ 0.00 0.00 ]
+Key: VUCOMISHZrm_Int: [ 0.00 0.00 ]
+Key: VUCOMISHZrr: [ 0.00 0.00 ]
+Key: VUCOMISHZrr_Int: [ 0.00 0.00 ]
+Key: VUCOMISHZrrb: [ 0.00 0.00 ]
+Key: VUCOMISSZrm: [ 0.00 0.00 ]
+Key: VUCOMISSZrm_Int: [ 0.00 0.00 ]
+Key: VUCOMISSZrr: [ 0.00 0.00 ]
+Key: VUCOMISSZrr_Int: [ 0.00 0.00 ]
+Key: VUCOMISSZrrb: [ 0.00 0.00 ]
+Key: VUCOMISSrm: [ 0.00 0.00 ]
+Key: VUCOMISSrm_Int: [ 0.00 0.00 ]
+Key: VUCOMISSrr: [ 0.00 0.00 ]
+Key: VUCOMISSrr_Int: [ 0.00 0.00 ]
+Key: VUCOMXSDZrm: [ 0.00 0.00 ]
+Key: VUCOMXSDZrm_Int: [ 0.00 0.00 ]
+Key: VUCOMXSDZrr: [ 0.00 0.00 ]
+Key: VUCOMXSDZrr_Int: [ 0.00 0.00 ]
+Key: VUCOMXSDZrrb_Int: [ 0.00 0.00 ]
+Key: VUCOMXSHZrm: [ 0.00 0.00 ]
+Key: VUCOMXSHZrm_Int: [ 0.00 0.00 ]
+Key: VUCOMXSHZrr: [ 0.00 0.00 ]
+Key: VUCOMXSHZrr_Int: [ 0.00 0.00 ]
+Key: VUCOMXSHZrrb_Int: [ 0.00 0.00 ]
+Key: VUCOMXSSZrm: [ 0.00 0.00 ]
+Key: VUCOMXSSZrm_Int: [ 0.00 0.00 ]
+Key: VUCOMXSSZrr: [ 0.00 0.00 ]
+Key: VUCOMXSSZrr_Int: [ 0.00 0.00 ]
+Key: VUCOMXSSZrrb_Int: [ 0.00 0.00 ]
+Key: VUNPCKHPDYrm: [ 0.00 0.00 ]
+Key: VUNPCKHPDYrr: [ 0.00 0.00 ]
+Key: VUNPCKHPDZ: [ 0.00 0.00 ]
+Key: VUNPCKHPDZrm: [ 0.00 0.00 ]
+Key: VUNPCKHPDZrmb: [ 0.00 0.00 ]
+Key: VUNPCKHPDZrmbk: [ 0.00 0.00 ]
+Key: VUNPCKHPDZrmbkz: [ 0.00 0.00 ]
+Key: VUNPCKHPDZrmk: [ 0.00 0.00 ]
+Key: VUNPCKHPDZrmkz: [ 0.00 0.00 ]
+Key: VUNPCKHPDZrr: [ 0.00 0.00 ]
+Key: VUNPCKHPDZrrk: [ 0.00 0.00 ]
+Key: VUNPCKHPDZrrkz: [ 0.00 0.00 ]
+Key: VUNPCKHPDrm: [ 0.00 0.00 ]
+Key: VUNPCKHPDrr: [ 0.00 0.00 ]
+Key: VUNPCKHPSYrm: [ 0.00 0.00 ]
+Key: VUNPCKHPSYrr: [ 0.00 0.00 ]
+Key: VUNPCKHPSZ: [ 0.00 0.00 ]
+Key: VUNPCKHPSZrm: [ 0.00 0.00 ]
+Key: VUNPCKHPSZrmb: [ 0.00 0.00 ]
+Key: VUNPCKHPSZrmbk: [ 0.00 0.00 ]
+Key: VUNPCKHPSZrmbkz: [ 0.00 0.00 ]
+Key: VUNPCKHPSZrmk: [ 0.00 0.00 ]
+Key: VUNPCKHPSZrmkz: [ 0.00 0.00 ]
+Key: VUNPCKHPSZrr: [ 0.00 0.00 ]
+Key: VUNPCKHPSZrrk: [ 0.00 0.00 ]
+Key: VUNPCKHPSZrrkz: [ 0.00 0.00 ]
+Key: VUNPCKHPSrm: [ 0.00 0.00 ]
+Key: VUNPCKHPSrr: [ 0.00 0.00 ]
+Key: VUNPCKLPDYrm: [ 0.00 0.00 ]
+Key: VUNPCKLPDYrr: [ 0.00 0.00 ]
+Key: VUNPCKLPDZ: [ 0.00 0.00 ]
+Key: VUNPCKLPDZrm: [ 0.00 0.00 ]
+Key: VUNPCKLPDZrmb: [ 0.00 0.00 ]
+Key: VUNPCKLPDZrmbk: [ 0.00 0.00 ]
+Key: VUNPCKLPDZrmbkz: [ 0.00 0.00 ]
+Key: VUNPCKLPDZrmk: [ 0.00 0.00 ]
+Key: VUNPCKLPDZrmkz: [ 0.00 0.00 ]
+Key: VUNPCKLPDZrr: [ 0.00 0.00 ]
+Key: VUNPCKLPDZrrk: [ 0.00 0.00 ]
+Key: VUNPCKLPDZrrkz: [ 0.00 0.00 ]
+Key: VUNPCKLPDrm: [ 0.00 0.00 ]
+Key: VUNPCKLPDrr: [ 0.00 0.00 ]
+Key: VUNPCKLPSYrm: [ 0.00 0.00 ]
+Key: VUNPCKLPSYrr: [ 0.00 0.00 ]
+Key: VUNPCKLPSZ: [ 0.00 0.00 ]
+Key: VUNPCKLPSZrm: [ 0.00 0.00 ]
+Key: VUNPCKLPSZrmb: [ 0.00 0.00 ]
+Key: VUNPCKLPSZrmbk: [ 0.00 0.00 ]
+Key: VUNPCKLPSZrmbkz: [ 0.00 0.00 ]
+Key: VUNPCKLPSZrmk: [ 0.00 0.00 ]
+Key: VUNPCKLPSZrmkz: [ 0.00 0.00 ]
+Key: VUNPCKLPSZrr: [ 0.00 0.00 ]
+Key: VUNPCKLPSZrrk: [ 0.00 0.00 ]
+Key: VUNPCKLPSZrrkz: [ 0.00 0.00 ]
+Key: VUNPCKLPSrm: [ 0.00 0.00 ]
+Key: VUNPCKLPSrr: [ 0.00 0.00 ]
+Key: VXORPDYrm: [ 0.00 0.00 ]
+Key: VXORPDYrr: [ 0.00 0.00 ]
+Key: VXORPDZ: [ 0.00 0.00 ]
+Key: VXORPDZrm: [ 0.00 0.00 ]
+Key: VXORPDZrmb: [ 0.00 0.00 ]
+Key: VXORPDZrmbk: [ 0.00 0.00 ]
+Key: VXORPDZrmbkz: [ 0.00 0.00 ]
+Key: VXORPDZrmk: [ 0.00 0.00 ]
+Key: VXORPDZrmkz: [ 0.00 0.00 ]
+Key: VXORPDZrr: [ 0.00 0.00 ]
+Key: VXORPDZrrk: [ 0.00 0.00 ]
+Key: VXORPDZrrkz: [ 0.00 0.00 ]
+Key: VXORPDrm: [ 0.00 0.00 ]
+Key: VXORPDrr: [ 0.00 0.00 ]
+Key: VXORPSYrm: [ 0.00 0.00 ]
+Key: VXORPSYrr: [ 0.00 0.00 ]
+Key: VXORPSZ: [ 0.00 0.00 ]
+Key: VXORPSZrm: [ 0.00 0.00 ]
+Key: VXORPSZrmb: [ 0.00 0.00 ]
+Key: VXORPSZrmbk: [ 0.00 0.00 ]
+Key: VXORPSZrmbkz: [ 0.00 0.00 ]
+Key: VXORPSZrmk: [ 0.00 0.00 ]
+Key: VXORPSZrmkz: [ 0.00 0.00 ]
+Key: VXORPSZrr: [ 0.00 0.00 ]
+Key: VXORPSZrrk: [ 0.00 0.00 ]
+Key: VXORPSZrrkz: [ 0.00 0.00 ]
+Key: VXORPSrm: [ 0.00 0.00 ]
+Key: VXORPSrr: [ 0.00 0.00 ]
+Key: VZEROALL: [ 0.00 0.00 ]
+Key: VZEROUPPER: [ 0.00 0.00 ]
+Key: V_SET: [ 0.00 0.00 ]
+Key: V_SETALLONES: [ 0.00 0.00 ]
+Key: WAIT: [ 0.00 0.00 ]
+Key: WBINVD: [ 0.00 0.00 ]
+Key: WBNOINVD: [ 0.00 0.00 ]
+Key: WRFLAGS: [ 0.00 0.00 ]
+Key: WRFSBASE: [ 0.00 0.00 ]
+Key: WRGSBASE: [ 0.00 0.00 ]
+Key: WRMSR: [ 0.00 0.00 ]
+Key: WRMSRLIST: [ 0.00 0.00 ]
+Key: WRMSRNS: [ 0.00 0.00 ]
+Key: WRMSRNSir: [ 0.00 0.00 ]
+Key: WRMSRNSir_EVEX: [ 0.00 0.00 ]
+Key: WRPKRUr: [ 0.00 0.00 ]
+Key: WRSSD: [ 0.00 0.00 ]
+Key: WRSSD_EVEX: [ 0.00 0.00 ]
+Key: WRSSQ: [ 0.00 0.00 ]
+Key: WRSSQ_EVEX: [ 0.00 0.00 ]
+Key: WRUSSD: [ 0.00 0.00 ]
+Key: WRUSSD_EVEX: [ 0.00 0.00 ]
+Key: WRUSSQ: [ 0.00 0.00 ]
+Key: WRUSSQ_EVEX: [ 0.00 0.00 ]
+Key: XABORT: [ 0.00 0.00 ]
+Key: XABORT_DEF: [ 0.00 0.00 ]
+Key: XACQUIRE_PREFIX: [ 0.00 0.00 ]
+Key: XADD: [ 0.00 0.00 ]
+Key: XAM_F: [ 0.00 0.00 ]
+Key: XAM_Fp: [ 0.00 0.00 ]
+Key: XBEGIN: [ 0.00 0.00 ]
+Key: XCHG: [ 0.00 0.00 ]
+Key: XCH_F: [ 0.00 0.00 ]
+Key: XCRYPTCBC: [ 0.00 0.00 ]
+Key: XCRYPTCFB: [ 0.00 0.00 ]
+Key: XCRYPTCTR: [ 0.00 0.00 ]
+Key: XCRYPTECB: [ 0.00 0.00 ]
+Key: XCRYPTOFB: [ 0.00 0.00 ]
+Key: XEND: [ 0.00 0.00 ]
+Key: XGETBV: [ 0.00 0.00 ]
+Key: XLAT: [ 0.00 0.00 ]
+Key: XOR: [ 0.00 0.00 ]
+Key: XORPDrm: [ 0.00 0.00 ]
+Key: XORPDrr: [ 0.00 0.00 ]
+Key: XORPSrm: [ 0.00 0.00 ]
+Key: XORPSrr: [ 0.00 0.00 ]
+Key: XRELEASE_PREFIX: [ 0.00 0.00 ]
+Key: XRESLDTRK: [ 0.00 0.00 ]
+Key: XRSTOR: [ 0.00 0.00 ]
+Key: XRSTORS: [ 0.00 0.00 ]
+Key: XSAVE: [ 0.00 0.00 ]
+Key: XSAVEC: [ 0.00 0.00 ]
+Key: XSAVEOPT: [ 0.00 0.00 ]
+Key: XSAVES: [ 0.00 0.00 ]
+Key: XSETBV: [ 0.00 0.00 ]
+Key: XSHA: [ 0.00 0.00 ]
+Key: XSTORE: [ 0.00 0.00 ]
+Key: XSUSLDTRK: [ 0.00 0.00 ]
+Key: XTEST: [ 0.00 0.00 ]
diff --git a/llvm/test/CodeGen/MIR2Vec/Inputs/reference_x86_vocab_wo=0.5_print.txt b/llvm/test/CodeGen/MIR2Vec/Inputs/reference_x86_vocab_wo=0.5_print.txt
new file mode 100644
index 0000000..4409e6d
--- /dev/null
+++ b/llvm/test/CodeGen/MIR2Vec/Inputs/reference_x86_vocab_wo=0.5_print.txt
@@ -0,0 +1,6882 @@
+Key: AAA: [ 0.00 0.00 ]
+Key: AAD: [ 0.00 0.00 ]
+Key: AADD: [ 0.00 0.00 ]
+Key: AAM: [ 0.00 0.00 ]
+Key: AAND: [ 0.00 0.00 ]
+Key: AAS: [ 0.00 0.00 ]
+Key: ABS_F: [ 0.00 0.00 ]
+Key: ABS_Fp: [ 0.50 1.00 ]
+Key: ADC: [ 1.50 2.00 ]
+Key: ADCX: [ 0.00 0.00 ]
+Key: ADD: [ 2.50 3.00 ]
+Key: ADDPDrm: [ 3.50 4.00 ]
+Key: ADDPDrr: [ 4.50 5.00 ]
+Key: ADDPSrm: [ 0.00 0.00 ]
+Key: ADDPSrr: [ 5.50 6.00 ]
+Key: ADDR: [ 0.00 0.00 ]
+Key: ADDSDrm: [ 6.50 7.00 ]
+Key: ADDSDrm_Int: [ 0.00 0.00 ]
+Key: ADDSDrr: [ 0.00 0.00 ]
+Key: ADDSDrr_Int: [ 0.00 0.00 ]
+Key: ADDSSrm: [ 0.00 0.00 ]
+Key: ADDSSrm_Int: [ 0.00 0.00 ]
+Key: ADDSSrr: [ 0.00 0.00 ]
+Key: ADDSSrr_Int: [ 0.00 0.00 ]
+Key: ADDSUBPDrm: [ 0.00 0.00 ]
+Key: ADDSUBPDrr: [ 0.00 0.00 ]
+Key: ADDSUBPSrm: [ 0.00 0.00 ]
+Key: ADDSUBPSrr: [ 0.00 0.00 ]
+Key: ADD_F: [ 0.00 0.00 ]
+Key: ADD_FI: [ 0.00 0.00 ]
+Key: ADD_FPrST: [ 0.00 0.00 ]
+Key: ADD_FST: [ 0.00 0.00 ]
+Key: ADD_Fp: [ 0.00 0.00 ]
+Key: ADD_FpI: [ 0.00 0.00 ]
+Key: ADD_FrST: [ 0.00 0.00 ]
+Key: ADJCALLSTACKDOWN: [ 0.00 0.00 ]
+Key: ADJCALLSTACKUP: [ 0.00 0.00 ]
+Key: ADOX: [ 0.00 0.00 ]
+Key: AESDEC: [ 0.00 0.00 ]
+Key: AESDECLASTrm: [ 0.00 0.00 ]
+Key: AESDECLASTrr: [ 0.00 0.00 ]
+Key: AESDECWIDE: [ 0.00 0.00 ]
+Key: AESDECrm: [ 0.00 0.00 ]
+Key: AESDECrr: [ 0.00 0.00 ]
+Key: AESENC: [ 0.00 0.00 ]
+Key: AESENCLASTrm: [ 0.00 0.00 ]
+Key: AESENCLASTrr: [ 0.00 0.00 ]
+Key: AESENCWIDE: [ 0.00 0.00 ]
+Key: AESENCrm: [ 0.00 0.00 ]
+Key: AESENCrr: [ 0.00 0.00 ]
+Key: AESIMCrm: [ 0.00 0.00 ]
+Key: AESIMCrr: [ 0.00 0.00 ]
+Key: AESKEYGENASSISTrmi: [ 0.00 0.00 ]
+Key: AESKEYGENASSISTrri: [ 0.00 0.00 ]
+Key: AND: [ 0.00 0.00 ]
+Key: ANDN: [ 0.00 0.00 ]
+Key: ANDNPDrm: [ 0.00 0.00 ]
+Key: ANDNPDrr: [ 0.00 0.00 ]
+Key: ANDNPSrm: [ 0.00 0.00 ]
+Key: ANDNPSrr: [ 0.00 0.00 ]
+Key: ANDPDrm: [ 0.00 0.00 ]
+Key: ANDPDrr: [ 0.00 0.00 ]
+Key: ANDPSrm: [ 0.00 0.00 ]
+Key: ANDPSrr: [ 0.00 0.00 ]
+Key: ANNOTATION_LABEL: [ 0.00 0.00 ]
+Key: AOR: [ 0.00 0.00 ]
+Key: ARITH_FENCE: [ 0.00 0.00 ]
+Key: ARPL: [ 0.00 0.00 ]
+Key: ASAN_CHECK_MEMACCESS: [ 0.00 0.00 ]
+Key: AVX: [ 0.00 0.00 ]
+Key: AVX_SET: [ 0.00 0.00 ]
+Key: AXOR: [ 0.00 0.00 ]
+Key: BEXTR: [ 0.00 0.00 ]
+Key: BEXTRI: [ 0.00 0.00 ]
+Key: BLCFILL: [ 0.00 0.00 ]
+Key: BLCI: [ 0.00 0.00 ]
+Key: BLCIC: [ 0.00 0.00 ]
+Key: BLCMSK: [ 0.00 0.00 ]
+Key: BLCS: [ 0.00 0.00 ]
+Key: BLENDPDrmi: [ 0.00 0.00 ]
+Key: BLENDPDrri: [ 0.00 0.00 ]
+Key: BLENDPSrmi: [ 0.00 0.00 ]
+Key: BLENDPSrri: [ 0.00 0.00 ]
+Key: BLENDVPDrm: [ 0.00 0.00 ]
+Key: BLENDVPDrr: [ 0.00 0.00 ]
+Key: BLENDVPSrm: [ 0.00 0.00 ]
+Key: BLENDVPSrr: [ 0.00 0.00 ]
+Key: BLSFILL: [ 0.00 0.00 ]
+Key: BLSI: [ 0.00 0.00 ]
+Key: BLSIC: [ 0.00 0.00 ]
+Key: BLSMSK: [ 0.00 0.00 ]
+Key: BLSR: [ 0.00 0.00 ]
+Key: BOUNDS: [ 0.00 0.00 ]
+Key: BSF: [ 0.00 0.00 ]
+Key: BSR: [ 0.00 0.00 ]
+Key: BSWAP: [ 0.00 0.00 ]
+Key: BT: [ 0.00 0.00 ]
+Key: BTC: [ 0.00 0.00 ]
+Key: BTR: [ 0.00 0.00 ]
+Key: BTS: [ 0.00 0.00 ]
+Key: BUNDLE: [ 0.00 0.00 ]
+Key: BZHI: [ 0.00 0.00 ]
+Key: CALL: [ 0.00 0.00 ]
+Key: CALLpcrel: [ 0.00 0.00 ]
+Key: CATCHRET: [ 0.00 0.00 ]
+Key: CBW: [ 0.00 0.00 ]
+Key: CCMP: [ 0.00 0.00 ]
+Key: CDQ: [ 0.00 0.00 ]
+Key: CDQE: [ 0.00 0.00 ]
+Key: CFCMOV: [ 0.00 0.00 ]
+Key: CFI_INSTRUCTION: [ 0.00 0.00 ]
+Key: CHS_F: [ 0.00 0.00 ]
+Key: CHS_Fp: [ 0.00 0.00 ]
+Key: CLAC: [ 0.00 0.00 ]
+Key: CLC: [ 0.00 0.00 ]
+Key: CLD: [ 0.00 0.00 ]
+Key: CLDEMOTE: [ 0.00 0.00 ]
+Key: CLEANUPRET: [ 0.00 0.00 ]
+Key: CLFLUSH: [ 0.00 0.00 ]
+Key: CLFLUSHOPT: [ 0.00 0.00 ]
+Key: CLGI: [ 0.00 0.00 ]
+Key: CLI: [ 0.00 0.00 ]
+Key: CLRSSBSY: [ 0.00 0.00 ]
+Key: CLTS: [ 0.00 0.00 ]
+Key: CLUI: [ 0.00 0.00 ]
+Key: CLWB: [ 0.00 0.00 ]
+Key: CLZERO: [ 0.00 0.00 ]
+Key: CMC: [ 0.00 0.00 ]
+Key: CMOV: [ 0.00 0.00 ]
+Key: CMOVBE_F: [ 0.00 0.00 ]
+Key: CMOVBE_Fp: [ 0.00 0.00 ]
+Key: CMOVB_F: [ 0.00 0.00 ]
+Key: CMOVB_Fp: [ 0.00 0.00 ]
+Key: CMOVE_F: [ 0.00 0.00 ]
+Key: CMOVE_Fp: [ 0.00 0.00 ]
+Key: CMOVNBE_F: [ 0.00 0.00 ]
+Key: CMOVNBE_Fp: [ 0.00 0.00 ]
+Key: CMOVNB_F: [ 0.00 0.00 ]
+Key: CMOVNB_Fp: [ 0.00 0.00 ]
+Key: CMOVNE_F: [ 0.00 0.00 ]
+Key: CMOVNE_Fp: [ 0.00 0.00 ]
+Key: CMOVNP_F: [ 0.00 0.00 ]
+Key: CMOVNP_Fp: [ 0.00 0.00 ]
+Key: CMOVP_F: [ 0.00 0.00 ]
+Key: CMOVP_Fp: [ 0.00 0.00 ]
+Key: CMOV_FR: [ 0.00 0.00 ]
+Key: CMOV_GR: [ 0.00 0.00 ]
+Key: CMOV_RFP: [ 0.00 0.00 ]
+Key: CMOV_VK: [ 0.00 0.00 ]
+Key: CMOV_VR: [ 0.00 0.00 ]
+Key: CMP: [ 0.00 0.00 ]
+Key: CMPCCXADDmr: [ 0.00 0.00 ]
+Key: CMPPDrmi: [ 0.00 0.00 ]
+Key: CMPPDrri: [ 0.00 0.00 ]
+Key: CMPPSrmi: [ 0.00 0.00 ]
+Key: CMPPSrri: [ 0.00 0.00 ]
+Key: CMPSB: [ 0.00 0.00 ]
+Key: CMPSDrmi: [ 0.00 0.00 ]
+Key: CMPSDrmi_Int: [ 0.00 0.00 ]
+Key: CMPSDrri: [ 0.00 0.00 ]
+Key: CMPSDrri_Int: [ 0.00 0.00 ]
+Key: CMPSL: [ 0.00 0.00 ]
+Key: CMPSQ: [ 0.00 0.00 ]
+Key: CMPSSrmi: [ 0.00 0.00 ]
+Key: CMPSSrmi_Int: [ 0.00 0.00 ]
+Key: CMPSSrri: [ 0.00 0.00 ]
+Key: CMPSSrri_Int: [ 0.00 0.00 ]
+Key: CMPSW: [ 0.00 0.00 ]
+Key: CMPXCHG: [ 0.00 0.00 ]
+Key: COMISDrm: [ 0.00 0.00 ]
+Key: COMISDrm_Int: [ 0.00 0.00 ]
+Key: COMISDrr: [ 0.00 0.00 ]
+Key: COMISDrr_Int: [ 0.00 0.00 ]
+Key: COMISSrm: [ 0.00 0.00 ]
+Key: COMISSrm_Int: [ 0.00 0.00 ]
+Key: COMISSrr: [ 0.00 0.00 ]
+Key: COMISSrr_Int: [ 0.00 0.00 ]
+Key: COMP_FST: [ 0.00 0.00 ]
+Key: COM_FIPr: [ 0.00 0.00 ]
+Key: COM_FIr: [ 0.00 0.00 ]
+Key: COM_FST: [ 0.00 0.00 ]
+Key: COM_FpIr: [ 0.00 0.00 ]
+Key: COM_Fpr: [ 0.00 0.00 ]
+Key: CONVERGENCECTRL_ANCHOR: [ 0.00 0.00 ]
+Key: CONVERGENCECTRL_ENTRY: [ 0.00 0.00 ]
+Key: CONVERGENCECTRL_GLUE: [ 0.00 0.00 ]
+Key: CONVERGENCECTRL_LOOP: [ 0.00 0.00 ]
+Key: COPY: [ 0.00 0.00 ]
+Key: COPY_TO_REGCLASS: [ 0.00 0.00 ]
+Key: CPUID: [ 0.00 0.00 ]
+Key: CQO: [ 0.00 0.00 ]
+Key: CRC: [ 0.00 0.00 ]
+Key: CS_PREFIX: [ 0.00 0.00 ]
+Key: CTEST: [ 0.00 0.00 ]
+Key: CVTDQ: [ 0.00 0.00 ]
+Key: CVTPD: [ 0.00 0.00 ]
+Key: CVTPS: [ 0.00 0.00 ]
+Key: CVTSD: [ 0.00 0.00 ]
+Key: CVTSI: [ 0.00 0.00 ]
+Key: CVTSS: [ 0.00 0.00 ]
+Key: CVTTPD: [ 0.00 0.00 ]
+Key: CVTTPS: [ 0.00 0.00 ]
+Key: CVTTSD: [ 0.00 0.00 ]
+Key: CVTTSS: [ 0.00 0.00 ]
+Key: CWD: [ 0.00 0.00 ]
+Key: CWDE: [ 0.00 0.00 ]
+Key: DAA: [ 0.00 0.00 ]
+Key: DAS: [ 0.00 0.00 ]
+Key: DATA: [ 0.00 0.00 ]
+Key: DBG_INSTR_REF: [ 0.00 0.00 ]
+Key: DBG_LABEL: [ 0.00 0.00 ]
+Key: DBG_PHI: [ 0.00 0.00 ]
+Key: DBG_VALUE: [ 0.00 0.00 ]
+Key: DBG_VALUE_LIST: [ 0.00 0.00 ]
+Key: DEC: [ 0.00 0.00 ]
+Key: DIV: [ 0.00 0.00 ]
+Key: DIVPDrm: [ 0.00 0.00 ]
+Key: DIVPDrr: [ 0.00 0.00 ]
+Key: DIVPSrm: [ 0.00 0.00 ]
+Key: DIVPSrr: [ 0.00 0.00 ]
+Key: DIVR_F: [ 0.00 0.00 ]
+Key: DIVR_FI: [ 0.00 0.00 ]
+Key: DIVR_FPrST: [ 0.00 0.00 ]
+Key: DIVR_FST: [ 0.00 0.00 ]
+Key: DIVR_Fp: [ 0.00 0.00 ]
+Key: DIVR_FpI: [ 0.00 0.00 ]
+Key: DIVR_FrST: [ 0.00 0.00 ]
+Key: DIVSDrm: [ 0.00 0.00 ]
+Key: DIVSDrm_Int: [ 0.00 0.00 ]
+Key: DIVSDrr: [ 0.00 0.00 ]
+Key: DIVSDrr_Int: [ 0.00 0.00 ]
+Key: DIVSSrm: [ 0.00 0.00 ]
+Key: DIVSSrm_Int: [ 0.00 0.00 ]
+Key: DIVSSrr: [ 0.00 0.00 ]
+Key: DIVSSrr_Int: [ 0.00 0.00 ]
+Key: DIV_F: [ 0.00 0.00 ]
+Key: DIV_FI: [ 0.00 0.00 ]
+Key: DIV_FPrST: [ 0.00 0.00 ]
+Key: DIV_FST: [ 0.00 0.00 ]
+Key: DIV_Fp: [ 0.00 0.00 ]
+Key: DIV_FpI: [ 0.00 0.00 ]
+Key: DIV_FrST: [ 0.00 0.00 ]
+Key: DPPDrmi: [ 0.00 0.00 ]
+Key: DPPDrri: [ 0.00 0.00 ]
+Key: DPPSrmi: [ 0.00 0.00 ]
+Key: DPPSrri: [ 0.00 0.00 ]
+Key: DS_PREFIX: [ 0.00 0.00 ]
+Key: DYN_ALLOCA: [ 0.00 0.00 ]
+Key: EH_LABEL: [ 0.00 0.00 ]
+Key: EH_RETURN: [ 0.00 0.00 ]
+Key: EH_SjLj_LongJmp: [ 0.00 0.00 ]
+Key: EH_SjLj_SetJmp: [ 0.00 0.00 ]
+Key: EH_SjLj_Setup: [ 0.00 0.00 ]
+Key: ENCLS: [ 0.00 0.00 ]
+Key: ENCLU: [ 0.00 0.00 ]
+Key: ENCLV: [ 0.00 0.00 ]
+Key: ENCODEKEY: [ 0.00 0.00 ]
+Key: ENDBR: [ 0.00 0.00 ]
+Key: ENQCMD: [ 0.00 0.00 ]
+Key: ENQCMDS: [ 0.00 0.00 ]
+Key: ENTER: [ 0.00 0.00 ]
+Key: ERETS: [ 0.00 0.00 ]
+Key: ERETU: [ 0.00 0.00 ]
+Key: ES_PREFIX: [ 0.00 0.00 ]
+Key: EXTRACTPSmri: [ 0.00 0.00 ]
+Key: EXTRACTPSrri: [ 0.00 0.00 ]
+Key: EXTRACT_SUBREG: [ 0.00 0.00 ]
+Key: EXTRQ: [ 0.00 0.00 ]
+Key: EXTRQI: [ 0.00 0.00 ]
+Key: F: [ 0.00 0.00 ]
+Key: FAKE_USE: [ 0.00 0.00 ]
+Key: FARCALL: [ 0.00 0.00 ]
+Key: FARJMP: [ 0.00 0.00 ]
+Key: FAULTING_OP: [ 0.00 0.00 ]
+Key: FBLDm: [ 0.00 0.00 ]
+Key: FBSTPm: [ 0.00 0.00 ]
+Key: FCOM: [ 0.00 0.00 ]
+Key: FCOMP: [ 0.00 0.00 ]
+Key: FCOMPP: [ 0.00 0.00 ]
+Key: FCOS: [ 0.00 0.00 ]
+Key: FDECSTP: [ 0.00 0.00 ]
+Key: FEMMS: [ 0.00 0.00 ]
+Key: FENTRY_CALL: [ 0.00 0.00 ]
+Key: FFREE: [ 0.00 0.00 ]
+Key: FFREEP: [ 0.00 0.00 ]
+Key: FICOM: [ 0.00 0.00 ]
+Key: FICOMP: [ 0.00 0.00 ]
+Key: FINCSTP: [ 0.00 0.00 ]
+Key: FLDCW: [ 0.00 0.00 ]
+Key: FLDENVm: [ 0.00 0.00 ]
+Key: FLDL: [ 0.00 0.00 ]
+Key: FLDLG: [ 0.00 0.00 ]
+Key: FLDLN: [ 0.00 0.00 ]
+Key: FLDPI: [ 0.00 0.00 ]
+Key: FNCLEX: [ 0.00 0.00 ]
+Key: FNINIT: [ 0.00 0.00 ]
+Key: FNOP: [ 0.00 0.00 ]
+Key: FNSTCW: [ 0.00 0.00 ]
+Key: FNSTSW: [ 0.00 0.00 ]
+Key: FNSTSWm: [ 0.00 0.00 ]
+Key: FP: [ 0.00 0.00 ]
+Key: FPATAN: [ 0.00 0.00 ]
+Key: FPREM: [ 0.00 0.00 ]
+Key: FPTAN: [ 0.00 0.00 ]
+Key: FRNDINT: [ 0.00 0.00 ]
+Key: FRSTORm: [ 0.00 0.00 ]
+Key: FSAVEm: [ 0.00 0.00 ]
+Key: FSCALE: [ 0.00 0.00 ]
+Key: FSIN: [ 0.00 0.00 ]
+Key: FSINCOS: [ 0.00 0.00 ]
+Key: FSTENVm: [ 0.00 0.00 ]
+Key: FS_PREFIX: [ 0.00 0.00 ]
+Key: FXRSTOR: [ 0.00 0.00 ]
+Key: FXSAVE: [ 0.00 0.00 ]
+Key: FXTRACT: [ 0.00 0.00 ]
+Key: FYL: [ 0.00 0.00 ]
+Key: FsFLD: [ 0.00 0.00 ]
+Key: GC_LABEL: [ 0.00 0.00 ]
+Key: GETSEC: [ 0.00 0.00 ]
+Key: GF: [ 0.00 0.00 ]
+Key: GS_PREFIX: [ 0.00 0.00 ]
+Key: G_ABDS: [ 0.00 0.00 ]
+Key: G_ABDU: [ 0.00 0.00 ]
+Key: G_ABS: [ 0.00 0.00 ]
+Key: G_ADD: [ 0.00 0.00 ]
+Key: G_ADDRSPACE_CAST: [ 0.00 0.00 ]
+Key: G_AND: [ 0.00 0.00 ]
+Key: G_ANYEXT: [ 0.00 0.00 ]
+Key: G_ASHR: [ 0.00 0.00 ]
+Key: G_ASSERT_ALIGN: [ 0.00 0.00 ]
+Key: G_ASSERT_SEXT: [ 0.00 0.00 ]
+Key: G_ASSERT_ZEXT: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_ADD: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_AND: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_FADD: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_FMAX: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_FMAXIMUM: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_FMIN: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_FMINIMUM: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_FSUB: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_MAX: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_MIN: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_NAND: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_OR: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_SUB: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_UDEC_WRAP: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_UINC_WRAP: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_UMAX: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_UMIN: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_USUB_COND: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_USUB_SAT: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_XCHG: [ 0.00 0.00 ]
+Key: G_ATOMICRMW_XOR: [ 0.00 0.00 ]
+Key: G_ATOMIC_CMPXCHG: [ 0.00 0.00 ]
+Key: G_ATOMIC_CMPXCHG_WITH_SUCCESS: [ 0.00 0.00 ]
+Key: G_BITCAST: [ 0.00 0.00 ]
+Key: G_BITREVERSE: [ 0.00 0.00 ]
+Key: G_BLOCK_ADDR: [ 0.00 0.00 ]
+Key: G_BR: [ 0.00 0.00 ]
+Key: G_BRCOND: [ 0.00 0.00 ]
+Key: G_BRINDIRECT: [ 0.00 0.00 ]
+Key: G_BRJT: [ 0.00 0.00 ]
+Key: G_BSWAP: [ 0.00 0.00 ]
+Key: G_BUILD_VECTOR: [ 0.00 0.00 ]
+Key: G_BUILD_VECTOR_TRUNC: [ 0.00 0.00 ]
+Key: G_BZERO: [ 0.00 0.00 ]
+Key: G_CONCAT_VECTORS: [ 0.00 0.00 ]
+Key: G_CONSTANT: [ 0.00 0.00 ]
+Key: G_CONSTANT_FOLD_BARRIER: [ 0.00 0.00 ]
+Key: G_CONSTANT_POOL: [ 0.00 0.00 ]
+Key: G_CTLZ: [ 0.00 0.00 ]
+Key: G_CTLZ_ZERO_UNDEF: [ 0.00 0.00 ]
+Key: G_CTPOP: [ 0.00 0.00 ]
+Key: G_CTTZ: [ 0.00 0.00 ]
+Key: G_CTTZ_ZERO_UNDEF: [ 0.00 0.00 ]
+Key: G_DEBUGTRAP: [ 0.00 0.00 ]
+Key: G_DYN_STACKALLOC: [ 0.00 0.00 ]
+Key: G_EXTRACT: [ 0.00 0.00 ]
+Key: G_EXTRACT_SUBVECTOR: [ 0.00 0.00 ]
+Key: G_EXTRACT_VECTOR_ELT: [ 0.00 0.00 ]
+Key: G_FABS: [ 0.00 0.00 ]
+Key: G_FACOS: [ 0.00 0.00 ]
+Key: G_FADD: [ 0.00 0.00 ]
+Key: G_FASIN: [ 0.00 0.00 ]
+Key: G_FATAN: [ 0.00 0.00 ]
+Key: G_FCANONICALIZE: [ 0.00 0.00 ]
+Key: G_FCEIL: [ 0.00 0.00 ]
+Key: G_FCMP: [ 0.00 0.00 ]
+Key: G_FCONSTANT: [ 0.00 0.00 ]
+Key: G_FCOPYSIGN: [ 0.00 0.00 ]
+Key: G_FCOS: [ 0.00 0.00 ]
+Key: G_FCOSH: [ 0.00 0.00 ]
+Key: G_FDIV: [ 0.00 0.00 ]
+Key: G_FENCE: [ 0.00 0.00 ]
+Key: G_FEXP: [ 0.00 0.00 ]
+Key: G_FFLOOR: [ 0.00 0.00 ]
+Key: G_FFREXP: [ 0.00 0.00 ]
+Key: G_FILD: [ 0.00 0.00 ]
+Key: G_FIST: [ 0.00 0.00 ]
+Key: G_FLDCW: [ 0.00 0.00 ]
+Key: G_FLDEXP: [ 0.00 0.00 ]
+Key: G_FLOG: [ 0.00 0.00 ]
+Key: G_FMA: [ 0.00 0.00 ]
+Key: G_FMAD: [ 0.00 0.00 ]
+Key: G_FMAXIMUM: [ 0.00 0.00 ]
+Key: G_FMAXIMUMNUM: [ 0.00 0.00 ]
+Key: G_FMAXNUM: [ 0.00 0.00 ]
+Key: G_FMAXNUM_IEEE: [ 0.00 0.00 ]
+Key: G_FMINIMUM: [ 0.00 0.00 ]
+Key: G_FMINIMUMNUM: [ 0.00 0.00 ]
+Key: G_FMINNUM: [ 0.00 0.00 ]
+Key: G_FMINNUM_IEEE: [ 0.00 0.00 ]
+Key: G_FMODF: [ 0.00 0.00 ]
+Key: G_FMUL: [ 0.00 0.00 ]
+Key: G_FNEARBYINT: [ 0.00 0.00 ]
+Key: G_FNEG: [ 0.00 0.00 ]
+Key: G_FNSTCW: [ 0.00 0.00 ]
+Key: G_FPEXT: [ 0.00 0.00 ]
+Key: G_FPOW: [ 0.00 0.00 ]
+Key: G_FPOWI: [ 0.00 0.00 ]
+Key: G_FPTOSI: [ 0.00 0.00 ]
+Key: G_FPTOSI_SAT: [ 0.00 0.00 ]
+Key: G_FPTOUI: [ 0.00 0.00 ]
+Key: G_FPTOUI_SAT: [ 0.00 0.00 ]
+Key: G_FPTRUNC: [ 0.00 0.00 ]
+Key: G_FRAME_INDEX: [ 0.00 0.00 ]
+Key: G_FREEZE: [ 0.00 0.00 ]
+Key: G_FREM: [ 0.00 0.00 ]
+Key: G_FRINT: [ 0.00 0.00 ]
+Key: G_FSHL: [ 0.00 0.00 ]
+Key: G_FSHR: [ 0.00 0.00 ]
+Key: G_FSIN: [ 0.00 0.00 ]
+Key: G_FSINCOS: [ 0.00 0.00 ]
+Key: G_FSINH: [ 0.00 0.00 ]
+Key: G_FSQRT: [ 0.00 0.00 ]
+Key: G_FSUB: [ 0.00 0.00 ]
+Key: G_FTAN: [ 0.00 0.00 ]
+Key: G_FTANH: [ 0.00 0.00 ]
+Key: G_GET_FPENV: [ 0.00 0.00 ]
+Key: G_GET_FPMODE: [ 0.00 0.00 ]
+Key: G_GET_ROUNDING: [ 0.00 0.00 ]
+Key: G_GLOBAL_VALUE: [ 0.00 0.00 ]
+Key: G_ICMP: [ 0.00 0.00 ]
+Key: G_IMPLICIT_DEF: [ 0.00 0.00 ]
+Key: G_INDEXED_LOAD: [ 0.00 0.00 ]
+Key: G_INDEXED_SEXTLOAD: [ 0.00 0.00 ]
+Key: G_INDEXED_STORE: [ 0.00 0.00 ]
+Key: G_INDEXED_ZEXTLOAD: [ 0.00 0.00 ]
+Key: G_INSERT: [ 0.00 0.00 ]
+Key: G_INSERT_SUBVECTOR: [ 0.00 0.00 ]
+Key: G_INSERT_VECTOR_ELT: [ 0.00 0.00 ]
+Key: G_INTRINSIC: [ 0.00 0.00 ]
+Key: G_INTRINSIC_CONVERGENT: [ 0.00 0.00 ]
+Key: G_INTRINSIC_CONVERGENT_W_SIDE_EFFECTS: [ 0.00 0.00 ]
+Key: G_INTRINSIC_FPTRUNC_ROUND: [ 0.00 0.00 ]
+Key: G_INTRINSIC_LLRINT: [ 0.00 0.00 ]
+Key: G_INTRINSIC_LRINT: [ 0.00 0.00 ]
+Key: G_INTRINSIC_ROUND: [ 0.00 0.00 ]
+Key: G_INTRINSIC_ROUNDEVEN: [ 0.00 0.00 ]
+Key: G_INTRINSIC_TRUNC: [ 0.00 0.00 ]
+Key: G_INTRINSIC_W_SIDE_EFFECTS: [ 0.00 0.00 ]
+Key: G_INTTOPTR: [ 0.00 0.00 ]
+Key: G_INVOKE_REGION_START: [ 0.00 0.00 ]
+Key: G_IS_FPCLASS: [ 0.00 0.00 ]
+Key: G_JUMP_TABLE: [ 0.00 0.00 ]
+Key: G_LLROUND: [ 0.00 0.00 ]
+Key: G_LOAD: [ 0.00 0.00 ]
+Key: G_LROUND: [ 0.00 0.00 ]
+Key: G_LSHR: [ 0.00 0.00 ]
+Key: G_MEMCPY: [ 0.00 0.00 ]
+Key: G_MEMCPY_INLINE: [ 0.00 0.00 ]
+Key: G_MEMMOVE: [ 0.00 0.00 ]
+Key: G_MEMSET: [ 0.00 0.00 ]
+Key: G_MERGE_VALUES: [ 0.00 0.00 ]
+Key: G_MUL: [ 0.00 0.00 ]
+Key: G_OR: [ 0.00 0.00 ]
+Key: G_PHI: [ 0.00 0.00 ]
+Key: G_PREFETCH: [ 0.00 0.00 ]
+Key: G_PTRAUTH_GLOBAL_VALUE: [ 0.00 0.00 ]
+Key: G_PTRMASK: [ 0.00 0.00 ]
+Key: G_PTRTOINT: [ 0.00 0.00 ]
+Key: G_PTR_ADD: [ 0.00 0.00 ]
+Key: G_READCYCLECOUNTER: [ 0.00 0.00 ]
+Key: G_READSTEADYCOUNTER: [ 0.00 0.00 ]
+Key: G_READ_REGISTER: [ 0.00 0.00 ]
+Key: G_RESET_FPENV: [ 0.00 0.00 ]
+Key: G_RESET_FPMODE: [ 0.00 0.00 ]
+Key: G_ROTL: [ 0.00 0.00 ]
+Key: G_ROTR: [ 0.00 0.00 ]
+Key: G_SADDE: [ 0.00 0.00 ]
+Key: G_SADDO: [ 0.00 0.00 ]
+Key: G_SADDSAT: [ 0.00 0.00 ]
+Key: G_SBFX: [ 0.00 0.00 ]
+Key: G_SCMP: [ 0.00 0.00 ]
+Key: G_SDIV: [ 0.00 0.00 ]
+Key: G_SDIVFIX: [ 0.00 0.00 ]
+Key: G_SDIVFIXSAT: [ 0.00 0.00 ]
+Key: G_SDIVREM: [ 0.00 0.00 ]
+Key: G_SELECT: [ 0.00 0.00 ]
+Key: G_SET_FPENV: [ 0.00 0.00 ]
+Key: G_SET_FPMODE: [ 0.00 0.00 ]
+Key: G_SET_ROUNDING: [ 0.00 0.00 ]
+Key: G_SEXT: [ 0.00 0.00 ]
+Key: G_SEXTLOAD: [ 0.00 0.00 ]
+Key: G_SEXT_INREG: [ 0.00 0.00 ]
+Key: G_SHL: [ 0.00 0.00 ]
+Key: G_SHUFFLE_VECTOR: [ 0.00 0.00 ]
+Key: G_SITOFP: [ 0.00 0.00 ]
+Key: G_SMAX: [ 0.00 0.00 ]
+Key: G_SMIN: [ 0.00 0.00 ]
+Key: G_SMULFIX: [ 0.00 0.00 ]
+Key: G_SMULFIXSAT: [ 0.00 0.00 ]
+Key: G_SMULH: [ 0.00 0.00 ]
+Key: G_SMULO: [ 0.00 0.00 ]
+Key: G_SPLAT_VECTOR: [ 0.00 0.00 ]
+Key: G_SREM: [ 0.00 0.00 ]
+Key: G_SSHLSAT: [ 0.00 0.00 ]
+Key: G_SSUBE: [ 0.00 0.00 ]
+Key: G_SSUBO: [ 0.00 0.00 ]
+Key: G_SSUBSAT: [ 0.00 0.00 ]
+Key: G_STACKRESTORE: [ 0.00 0.00 ]
+Key: G_STACKSAVE: [ 0.00 0.00 ]
+Key: G_STEP_VECTOR: [ 0.00 0.00 ]
+Key: G_STORE: [ 0.00 0.00 ]
+Key: G_STRICT_FADD: [ 0.00 0.00 ]
+Key: G_STRICT_FDIV: [ 0.00 0.00 ]
+Key: G_STRICT_FLDEXP: [ 0.00 0.00 ]
+Key: G_STRICT_FMA: [ 0.00 0.00 ]
+Key: G_STRICT_FMUL: [ 0.00 0.00 ]
+Key: G_STRICT_FREM: [ 0.00 0.00 ]
+Key: G_STRICT_FSQRT: [ 0.00 0.00 ]
+Key: G_STRICT_FSUB: [ 0.00 0.00 ]
+Key: G_SUB: [ 0.00 0.00 ]
+Key: G_TRAP: [ 0.00 0.00 ]
+Key: G_TRUNC: [ 0.00 0.00 ]
+Key: G_TRUNC_SSAT_S: [ 0.00 0.00 ]
+Key: G_TRUNC_SSAT_U: [ 0.00 0.00 ]
+Key: G_TRUNC_USAT_U: [ 0.00 0.00 ]
+Key: G_UADDE: [ 0.00 0.00 ]
+Key: G_UADDO: [ 0.00 0.00 ]
+Key: G_UADDSAT: [ 0.00 0.00 ]
+Key: G_UBFX: [ 0.00 0.00 ]
+Key: G_UBSANTRAP: [ 0.00 0.00 ]
+Key: G_UCMP: [ 0.00 0.00 ]
+Key: G_UDIV: [ 0.00 0.00 ]
+Key: G_UDIVFIX: [ 0.00 0.00 ]
+Key: G_UDIVFIXSAT: [ 0.00 0.00 ]
+Key: G_UDIVREM: [ 0.00 0.00 ]
+Key: G_UITOFP: [ 0.00 0.00 ]
+Key: G_UMAX: [ 0.00 0.00 ]
+Key: G_UMIN: [ 0.00 0.00 ]
+Key: G_UMULFIX: [ 0.00 0.00 ]
+Key: G_UMULFIXSAT: [ 0.00 0.00 ]
+Key: G_UMULH: [ 0.00 0.00 ]
+Key: G_UMULO: [ 0.00 0.00 ]
+Key: G_UNMERGE_VALUES: [ 0.00 0.00 ]
+Key: G_UREM: [ 0.00 0.00 ]
+Key: G_USHLSAT: [ 0.00 0.00 ]
+Key: G_USUBE: [ 0.00 0.00 ]
+Key: G_USUBO: [ 0.00 0.00 ]
+Key: G_USUBSAT: [ 0.00 0.00 ]
+Key: G_VAARG: [ 0.00 0.00 ]
+Key: G_VASTART: [ 0.00 0.00 ]
+Key: G_VECREDUCE_ADD: [ 0.00 0.00 ]
+Key: G_VECREDUCE_AND: [ 0.00 0.00 ]
+Key: G_VECREDUCE_FADD: [ 0.00 0.00 ]
+Key: G_VECREDUCE_FMAX: [ 0.00 0.00 ]
+Key: G_VECREDUCE_FMAXIMUM: [ 0.00 0.00 ]
+Key: G_VECREDUCE_FMIN: [ 0.00 0.00 ]
+Key: G_VECREDUCE_FMINIMUM: [ 0.00 0.00 ]
+Key: G_VECREDUCE_FMUL: [ 0.00 0.00 ]
+Key: G_VECREDUCE_MUL: [ 0.00 0.00 ]
+Key: G_VECREDUCE_OR: [ 0.00 0.00 ]
+Key: G_VECREDUCE_SEQ_FADD: [ 0.00 0.00 ]
+Key: G_VECREDUCE_SEQ_FMUL: [ 0.00 0.00 ]
+Key: G_VECREDUCE_SMAX: [ 0.00 0.00 ]
+Key: G_VECREDUCE_SMIN: [ 0.00 0.00 ]
+Key: G_VECREDUCE_UMAX: [ 0.00 0.00 ]
+Key: G_VECREDUCE_UMIN: [ 0.00 0.00 ]
+Key: G_VECREDUCE_XOR: [ 0.00 0.00 ]
+Key: G_VECTOR_COMPRESS: [ 0.00 0.00 ]
+Key: G_VSCALE: [ 0.00 0.00 ]
+Key: G_WRITE_REGISTER: [ 0.00 0.00 ]
+Key: G_XOR: [ 0.00 0.00 ]
+Key: G_ZEXT: [ 0.00 0.00 ]
+Key: G_ZEXTLOAD: [ 0.00 0.00 ]
+Key: HADDPDrm: [ 0.00 0.00 ]
+Key: HADDPDrr: [ 0.00 0.00 ]
+Key: HADDPSrm: [ 0.00 0.00 ]
+Key: HADDPSrr: [ 0.00 0.00 ]
+Key: HLT: [ 0.00 0.00 ]
+Key: HRESET: [ 0.00 0.00 ]
+Key: HSUBPDrm: [ 0.00 0.00 ]
+Key: HSUBPDrr: [ 0.00 0.00 ]
+Key: HSUBPSrm: [ 0.00 0.00 ]
+Key: HSUBPSrr: [ 0.00 0.00 ]
+Key: ICALL_BRANCH_FUNNEL: [ 0.00 0.00 ]
+Key: IDIV: [ 0.00 0.00 ]
+Key: ILD_F: [ 0.00 0.00 ]
+Key: ILD_Fp: [ 0.00 0.00 ]
+Key: IMPLICIT_DEF: [ 0.00 0.00 ]
+Key: IMUL: [ 0.00 0.00 ]
+Key: IMULZU: [ 0.00 0.00 ]
+Key: IN: [ 0.00 0.00 ]
+Key: INC: [ 0.00 0.00 ]
+Key: INCSSPD: [ 0.00 0.00 ]
+Key: INCSSPQ: [ 0.00 0.00 ]
+Key: INDIRECT_THUNK_CALL: [ 0.00 0.00 ]
+Key: INDIRECT_THUNK_TCRETURN: [ 0.00 0.00 ]
+Key: INIT_UNDEF: [ 0.00 0.00 ]
+Key: INLINEASM: [ 0.00 0.00 ]
+Key: INLINEASM_BR: [ 0.00 0.00 ]
+Key: INSB: [ 0.00 0.00 ]
+Key: INSERTPSrmi: [ 0.00 0.00 ]
+Key: INSERTPSrri: [ 0.00 0.00 ]
+Key: INSERTQ: [ 0.00 0.00 ]
+Key: INSERTQI: [ 0.00 0.00 ]
+Key: INSERT_SUBREG: [ 0.00 0.00 ]
+Key: INSL: [ 0.00 0.00 ]
+Key: INSW: [ 0.00 0.00 ]
+Key: INT: [ 0.00 0.00 ]
+Key: INTO: [ 0.00 0.00 ]
+Key: INVD: [ 0.00 0.00 ]
+Key: INVEPT: [ 0.00 0.00 ]
+Key: INVLPG: [ 0.00 0.00 ]
+Key: INVLPGA: [ 0.00 0.00 ]
+Key: INVLPGB: [ 0.00 0.00 ]
+Key: INVPCID: [ 0.00 0.00 ]
+Key: INVVPID: [ 0.00 0.00 ]
+Key: IRET: [ 0.00 0.00 ]
+Key: ISTT_FP: [ 0.00 0.00 ]
+Key: ISTT_Fp: [ 0.00 0.00 ]
+Key: IST_F: [ 0.00 0.00 ]
+Key: IST_FP: [ 0.00 0.00 ]
+Key: IST_Fp: [ 0.00 0.00 ]
+Key: Int_eh_sjlj_setup_dispatch: [ 0.00 0.00 ]
+Key: JCC: [ 0.00 0.00 ]
+Key: JCXZ: [ 0.00 0.00 ]
+Key: JECXZ: [ 0.00 0.00 ]
+Key: JMP: [ 0.00 0.00 ]
+Key: JMPABS: [ 0.00 0.00 ]
+Key: JRCXZ: [ 0.00 0.00 ]
+Key: JUMP_TABLE_DEBUG_INFO: [ 0.00 0.00 ]
+Key: KADDBkk: [ 0.00 0.00 ]
+Key: KADDDkk: [ 0.00 0.00 ]
+Key: KADDQkk: [ 0.00 0.00 ]
+Key: KADDWkk: [ 0.00 0.00 ]
+Key: KANDBkk: [ 0.00 0.00 ]
+Key: KANDDkk: [ 0.00 0.00 ]
+Key: KANDNBkk: [ 0.00 0.00 ]
+Key: KANDNDkk: [ 0.00 0.00 ]
+Key: KANDNQkk: [ 0.00 0.00 ]
+Key: KANDNWkk: [ 0.00 0.00 ]
+Key: KANDQkk: [ 0.00 0.00 ]
+Key: KANDWkk: [ 0.00 0.00 ]
+Key: KCFI_CHECK: [ 0.00 0.00 ]
+Key: KILL: [ 0.00 0.00 ]
+Key: KMOVBkk: [ 0.00 0.00 ]
+Key: KMOVBkk_EVEX: [ 0.00 0.00 ]
+Key: KMOVBkm: [ 0.00 0.00 ]
+Key: KMOVBkm_EVEX: [ 0.00 0.00 ]
+Key: KMOVBkr: [ 0.00 0.00 ]
+Key: KMOVBkr_EVEX: [ 0.00 0.00 ]
+Key: KMOVBmk: [ 0.00 0.00 ]
+Key: KMOVBmk_EVEX: [ 0.00 0.00 ]
+Key: KMOVBrk: [ 0.00 0.00 ]
+Key: KMOVBrk_EVEX: [ 0.00 0.00 ]
+Key: KMOVDkk: [ 0.00 0.00 ]
+Key: KMOVDkk_EVEX: [ 0.00 0.00 ]
+Key: KMOVDkm: [ 0.00 0.00 ]
+Key: KMOVDkm_EVEX: [ 0.00 0.00 ]
+Key: KMOVDkr: [ 0.00 0.00 ]
+Key: KMOVDkr_EVEX: [ 0.00 0.00 ]
+Key: KMOVDmk: [ 0.00 0.00 ]
+Key: KMOVDmk_EVEX: [ 0.00 0.00 ]
+Key: KMOVDrk: [ 0.00 0.00 ]
+Key: KMOVDrk_EVEX: [ 0.00 0.00 ]
+Key: KMOVQkk: [ 0.00 0.00 ]
+Key: KMOVQkk_EVEX: [ 0.00 0.00 ]
+Key: KMOVQkm: [ 0.00 0.00 ]
+Key: KMOVQkm_EVEX: [ 0.00 0.00 ]
+Key: KMOVQkr: [ 0.00 0.00 ]
+Key: KMOVQkr_EVEX: [ 0.00 0.00 ]
+Key: KMOVQmk: [ 0.00 0.00 ]
+Key: KMOVQmk_EVEX: [ 0.00 0.00 ]
+Key: KMOVQrk: [ 0.00 0.00 ]
+Key: KMOVQrk_EVEX: [ 0.00 0.00 ]
+Key: KMOVWkk: [ 0.00 0.00 ]
+Key: KMOVWkk_EVEX: [ 0.00 0.00 ]
+Key: KMOVWkm: [ 0.00 0.00 ]
+Key: KMOVWkm_EVEX: [ 0.00 0.00 ]
+Key: KMOVWkr: [ 0.00 0.00 ]
+Key: KMOVWkr_EVEX: [ 0.00 0.00 ]
+Key: KMOVWmk: [ 0.00 0.00 ]
+Key: KMOVWmk_EVEX: [ 0.00 0.00 ]
+Key: KMOVWrk: [ 0.00 0.00 ]
+Key: KMOVWrk_EVEX: [ 0.00 0.00 ]
+Key: KNOTBkk: [ 0.00 0.00 ]
+Key: KNOTDkk: [ 0.00 0.00 ]
+Key: KNOTQkk: [ 0.00 0.00 ]
+Key: KNOTWkk: [ 0.00 0.00 ]
+Key: KORBkk: [ 0.00 0.00 ]
+Key: KORDkk: [ 0.00 0.00 ]
+Key: KORQkk: [ 0.00 0.00 ]
+Key: KORTESTBkk: [ 0.00 0.00 ]
+Key: KORTESTDkk: [ 0.00 0.00 ]
+Key: KORTESTQkk: [ 0.00 0.00 ]
+Key: KORTESTWkk: [ 0.00 0.00 ]
+Key: KORWkk: [ 0.00 0.00 ]
+Key: KSET: [ 0.00 0.00 ]
+Key: KSHIFTLBki: [ 0.00 0.00 ]
+Key: KSHIFTLDki: [ 0.00 0.00 ]
+Key: KSHIFTLQki: [ 0.00 0.00 ]
+Key: KSHIFTLWki: [ 0.00 0.00 ]
+Key: KSHIFTRBki: [ 0.00 0.00 ]
+Key: KSHIFTRDki: [ 0.00 0.00 ]
+Key: KSHIFTRQki: [ 0.00 0.00 ]
+Key: KSHIFTRWki: [ 0.00 0.00 ]
+Key: KTESTBkk: [ 0.00 0.00 ]
+Key: KTESTDkk: [ 0.00 0.00 ]
+Key: KTESTQkk: [ 0.00 0.00 ]
+Key: KTESTWkk: [ 0.00 0.00 ]
+Key: KUNPCKBWkk: [ 0.00 0.00 ]
+Key: KUNPCKDQkk: [ 0.00 0.00 ]
+Key: KUNPCKWDkk: [ 0.00 0.00 ]
+Key: KXNORBkk: [ 0.00 0.00 ]
+Key: KXNORDkk: [ 0.00 0.00 ]
+Key: KXNORQkk: [ 0.00 0.00 ]
+Key: KXNORWkk: [ 0.00 0.00 ]
+Key: KXORBkk: [ 0.00 0.00 ]
+Key: KXORDkk: [ 0.00 0.00 ]
+Key: KXORQkk: [ 0.00 0.00 ]
+Key: KXORWkk: [ 0.00 0.00 ]
+Key: LAHF: [ 0.00 0.00 ]
+Key: LAR: [ 0.00 0.00 ]
+Key: LCMPXCHG: [ 0.00 0.00 ]
+Key: LDDQUrm: [ 0.00 0.00 ]
+Key: LDMXCSR: [ 0.00 0.00 ]
+Key: LDS: [ 0.00 0.00 ]
+Key: LDTILECFG: [ 0.00 0.00 ]
+Key: LDTILECFG_EVEX: [ 0.00 0.00 ]
+Key: LD_F: [ 0.00 0.00 ]
+Key: LD_Fp: [ 0.00 0.00 ]
+Key: LD_Frr: [ 0.00 0.00 ]
+Key: LEA: [ 0.00 0.00 ]
+Key: LEAVE: [ 0.00 0.00 ]
+Key: LES: [ 0.00 0.00 ]
+Key: LFENCE: [ 0.00 0.00 ]
+Key: LFS: [ 0.00 0.00 ]
+Key: LGDT: [ 0.00 0.00 ]
+Key: LGS: [ 0.00 0.00 ]
+Key: LIDT: [ 0.00 0.00 ]
+Key: LIFETIME_END: [ 0.00 0.00 ]
+Key: LIFETIME_START: [ 0.00 0.00 ]
+Key: LKGS: [ 0.00 0.00 ]
+Key: LLDT: [ 0.00 0.00 ]
+Key: LLWPCB: [ 0.00 0.00 ]
+Key: LMSW: [ 0.00 0.00 ]
+Key: LOADIWKEY: [ 0.00 0.00 ]
+Key: LOAD_STACK_GUARD: [ 0.00 0.00 ]
+Key: LOCAL_ESCAPE: [ 0.00 0.00 ]
+Key: LOCK_ADD: [ 0.00 0.00 ]
+Key: LOCK_AND: [ 0.00 0.00 ]
+Key: LOCK_BTC: [ 0.00 0.00 ]
+Key: LOCK_BTC_RM: [ 0.00 0.00 ]
+Key: LOCK_BTR: [ 0.00 0.00 ]
+Key: LOCK_BTR_RM: [ 0.00 0.00 ]
+Key: LOCK_BTS: [ 0.00 0.00 ]
+Key: LOCK_BTS_RM: [ 0.00 0.00 ]
+Key: LOCK_DEC: [ 0.00 0.00 ]
+Key: LOCK_INC: [ 0.00 0.00 ]
+Key: LOCK_OR: [ 0.00 0.00 ]
+Key: LOCK_PREFIX: [ 0.00 0.00 ]
+Key: LOCK_SUB: [ 0.00 0.00 ]
+Key: LOCK_XOR: [ 0.00 0.00 ]
+Key: LODSB: [ 0.00 0.00 ]
+Key: LODSL: [ 0.00 0.00 ]
+Key: LODSQ: [ 0.00 0.00 ]
+Key: LODSW: [ 0.00 0.00 ]
+Key: LOOP: [ 0.00 0.00 ]
+Key: LOOPE: [ 0.00 0.00 ]
+Key: LOOPNE: [ 0.00 0.00 ]
+Key: LRET: [ 0.00 0.00 ]
+Key: LRETI: [ 0.00 0.00 ]
+Key: LSL: [ 0.00 0.00 ]
+Key: LSS: [ 0.00 0.00 ]
+Key: LTRm: [ 0.00 0.00 ]
+Key: LTRr: [ 0.00 0.00 ]
+Key: LWPINS: [ 0.00 0.00 ]
+Key: LWPVAL: [ 0.00 0.00 ]
+Key: LXADD: [ 0.00 0.00 ]
+Key: LZCNT: [ 0.00 0.00 ]
+Key: MASKMOVDQU: [ 0.00 0.00 ]
+Key: MASKPAIR: [ 0.00 0.00 ]
+Key: MAXCPDrm: [ 0.00 0.00 ]
+Key: MAXCPDrr: [ 0.00 0.00 ]
+Key: MAXCPSrm: [ 0.00 0.00 ]
+Key: MAXCPSrr: [ 0.00 0.00 ]
+Key: MAXCSDrm: [ 0.00 0.00 ]
+Key: MAXCSDrr: [ 0.00 0.00 ]
+Key: MAXCSSrm: [ 0.00 0.00 ]
+Key: MAXCSSrr: [ 0.00 0.00 ]
+Key: MAXPDrm: [ 0.00 0.00 ]
+Key: MAXPDrr: [ 0.00 0.00 ]
+Key: MAXPSrm: [ 0.00 0.00 ]
+Key: MAXPSrr: [ 0.00 0.00 ]
+Key: MAXSDrm: [ 0.00 0.00 ]
+Key: MAXSDrm_Int: [ 0.00 0.00 ]
+Key: MAXSDrr: [ 0.00 0.00 ]
+Key: MAXSDrr_Int: [ 0.00 0.00 ]
+Key: MAXSSrm: [ 0.00 0.00 ]
+Key: MAXSSrm_Int: [ 0.00 0.00 ]
+Key: MAXSSrr: [ 0.00 0.00 ]
+Key: MAXSSrr_Int: [ 0.00 0.00 ]
+Key: MEMBARRIER: [ 0.00 0.00 ]
+Key: MFENCE: [ 0.00 0.00 ]
+Key: MINCPDrm: [ 0.00 0.00 ]
+Key: MINCPDrr: [ 0.00 0.00 ]
+Key: MINCPSrm: [ 0.00 0.00 ]
+Key: MINCPSrr: [ 0.00 0.00 ]
+Key: MINCSDrm: [ 0.00 0.00 ]
+Key: MINCSDrr: [ 0.00 0.00 ]
+Key: MINCSSrm: [ 0.00 0.00 ]
+Key: MINCSSrr: [ 0.00 0.00 ]
+Key: MINPDrm: [ 0.00 0.00 ]
+Key: MINPDrr: [ 0.00 0.00 ]
+Key: MINPSrm: [ 0.00 0.00 ]
+Key: MINPSrr: [ 0.00 0.00 ]
+Key: MINSDrm: [ 0.00 0.00 ]
+Key: MINSDrm_Int: [ 0.00 0.00 ]
+Key: MINSDrr: [ 0.00 0.00 ]
+Key: MINSDrr_Int: [ 0.00 0.00 ]
+Key: MINSSrm: [ 0.00 0.00 ]
+Key: MINSSrm_Int: [ 0.00 0.00 ]
+Key: MINSSrr: [ 0.00 0.00 ]
+Key: MINSSrr_Int: [ 0.00 0.00 ]
+Key: MMX_CVTPD: [ 0.00 0.00 ]
+Key: MMX_CVTPI: [ 0.00 0.00 ]
+Key: MMX_CVTPS: [ 0.00 0.00 ]
+Key: MMX_CVTTPD: [ 0.00 0.00 ]
+Key: MMX_CVTTPS: [ 0.00 0.00 ]
+Key: MMX_EMMS: [ 0.00 0.00 ]
+Key: MMX_MASKMOVQ: [ 0.00 0.00 ]
+Key: MMX_MOVD: [ 0.00 0.00 ]
+Key: MMX_MOVDQ: [ 0.00 0.00 ]
+Key: MMX_MOVFR: [ 0.00 0.00 ]
+Key: MMX_MOVNTQmr: [ 0.00 0.00 ]
+Key: MMX_MOVQ: [ 0.00 0.00 ]
+Key: MMX_PABSBrm: [ 0.00 0.00 ]
+Key: MMX_PABSBrr: [ 0.00 0.00 ]
+Key: MMX_PABSDrm: [ 0.00 0.00 ]
+Key: MMX_PABSDrr: [ 0.00 0.00 ]
+Key: MMX_PABSWrm: [ 0.00 0.00 ]
+Key: MMX_PABSWrr: [ 0.00 0.00 ]
+Key: MMX_PACKSSDWrm: [ 0.00 0.00 ]
+Key: MMX_PACKSSDWrr: [ 0.00 0.00 ]
+Key: MMX_PACKSSWBrm: [ 0.00 0.00 ]
+Key: MMX_PACKSSWBrr: [ 0.00 0.00 ]
+Key: MMX_PACKUSWBrm: [ 0.00 0.00 ]
+Key: MMX_PACKUSWBrr: [ 0.00 0.00 ]
+Key: MMX_PADDBrm: [ 0.00 0.00 ]
+Key: MMX_PADDBrr: [ 0.00 0.00 ]
+Key: MMX_PADDDrm: [ 0.00 0.00 ]
+Key: MMX_PADDDrr: [ 0.00 0.00 ]
+Key: MMX_PADDQrm: [ 0.00 0.00 ]
+Key: MMX_PADDQrr: [ 0.00 0.00 ]
+Key: MMX_PADDSBrm: [ 0.00 0.00 ]
+Key: MMX_PADDSBrr: [ 0.00 0.00 ]
+Key: MMX_PADDSWrm: [ 0.00 0.00 ]
+Key: MMX_PADDSWrr: [ 0.00 0.00 ]
+Key: MMX_PADDUSBrm: [ 0.00 0.00 ]
+Key: MMX_PADDUSBrr: [ 0.00 0.00 ]
+Key: MMX_PADDUSWrm: [ 0.00 0.00 ]
+Key: MMX_PADDUSWrr: [ 0.00 0.00 ]
+Key: MMX_PADDWrm: [ 0.00 0.00 ]
+Key: MMX_PADDWrr: [ 0.00 0.00 ]
+Key: MMX_PALIGNRrmi: [ 0.00 0.00 ]
+Key: MMX_PALIGNRrri: [ 0.00 0.00 ]
+Key: MMX_PANDNrm: [ 0.00 0.00 ]
+Key: MMX_PANDNrr: [ 0.00 0.00 ]
+Key: MMX_PANDrm: [ 0.00 0.00 ]
+Key: MMX_PANDrr: [ 0.00 0.00 ]
+Key: MMX_PAVGBrm: [ 0.00 0.00 ]
+Key: MMX_PAVGBrr: [ 0.00 0.00 ]
+Key: MMX_PAVGWrm: [ 0.00 0.00 ]
+Key: MMX_PAVGWrr: [ 0.00 0.00 ]
+Key: MMX_PCMPEQBrm: [ 0.00 0.00 ]
+Key: MMX_PCMPEQBrr: [ 0.00 0.00 ]
+Key: MMX_PCMPEQDrm: [ 0.00 0.00 ]
+Key: MMX_PCMPEQDrr: [ 0.00 0.00 ]
+Key: MMX_PCMPEQWrm: [ 0.00 0.00 ]
+Key: MMX_PCMPEQWrr: [ 0.00 0.00 ]
+Key: MMX_PCMPGTBrm: [ 0.00 0.00 ]
+Key: MMX_PCMPGTBrr: [ 0.00 0.00 ]
+Key: MMX_PCMPGTDrm: [ 0.00 0.00 ]
+Key: MMX_PCMPGTDrr: [ 0.00 0.00 ]
+Key: MMX_PCMPGTWrm: [ 0.00 0.00 ]
+Key: MMX_PCMPGTWrr: [ 0.00 0.00 ]
+Key: MMX_PEXTRWrri: [ 0.00 0.00 ]
+Key: MMX_PHADDDrm: [ 0.00 0.00 ]
+Key: MMX_PHADDDrr: [ 0.00 0.00 ]
+Key: MMX_PHADDSWrm: [ 0.00 0.00 ]
+Key: MMX_PHADDSWrr: [ 0.00 0.00 ]
+Key: MMX_PHADDWrm: [ 0.00 0.00 ]
+Key: MMX_PHADDWrr: [ 0.00 0.00 ]
+Key: MMX_PHSUBDrm: [ 0.00 0.00 ]
+Key: MMX_PHSUBDrr: [ 0.00 0.00 ]
+Key: MMX_PHSUBSWrm: [ 0.00 0.00 ]
+Key: MMX_PHSUBSWrr: [ 0.00 0.00 ]
+Key: MMX_PHSUBWrm: [ 0.00 0.00 ]
+Key: MMX_PHSUBWrr: [ 0.00 0.00 ]
+Key: MMX_PINSRWrmi: [ 0.00 0.00 ]
+Key: MMX_PINSRWrri: [ 0.00 0.00 ]
+Key: MMX_PMADDUBSWrm: [ 0.00 0.00 ]
+Key: MMX_PMADDUBSWrr: [ 0.00 0.00 ]
+Key: MMX_PMADDWDrm: [ 0.00 0.00 ]
+Key: MMX_PMADDWDrr: [ 0.00 0.00 ]
+Key: MMX_PMAXSWrm: [ 0.00 0.00 ]
+Key: MMX_PMAXSWrr: [ 0.00 0.00 ]
+Key: MMX_PMAXUBrm: [ 0.00 0.00 ]
+Key: MMX_PMAXUBrr: [ 0.00 0.00 ]
+Key: MMX_PMINSWrm: [ 0.00 0.00 ]
+Key: MMX_PMINSWrr: [ 0.00 0.00 ]
+Key: MMX_PMINUBrm: [ 0.00 0.00 ]
+Key: MMX_PMINUBrr: [ 0.00 0.00 ]
+Key: MMX_PMOVMSKBrr: [ 0.00 0.00 ]
+Key: MMX_PMULHRSWrm: [ 0.00 0.00 ]
+Key: MMX_PMULHRSWrr: [ 0.00 0.00 ]
+Key: MMX_PMULHUWrm: [ 0.00 0.00 ]
+Key: MMX_PMULHUWrr: [ 0.00 0.00 ]
+Key: MMX_PMULHWrm: [ 0.00 0.00 ]
+Key: MMX_PMULHWrr: [ 0.00 0.00 ]
+Key: MMX_PMULLWrm: [ 0.00 0.00 ]
+Key: MMX_PMULLWrr: [ 0.00 0.00 ]
+Key: MMX_PMULUDQrm: [ 0.00 0.00 ]
+Key: MMX_PMULUDQrr: [ 0.00 0.00 ]
+Key: MMX_PORrm: [ 0.00 0.00 ]
+Key: MMX_PORrr: [ 0.00 0.00 ]
+Key: MMX_PSADBWrm: [ 0.00 0.00 ]
+Key: MMX_PSADBWrr: [ 0.00 0.00 ]
+Key: MMX_PSHUFBrm: [ 0.00 0.00 ]
+Key: MMX_PSHUFBrr: [ 0.00 0.00 ]
+Key: MMX_PSHUFWmi: [ 0.00 0.00 ]
+Key: MMX_PSHUFWri: [ 0.00 0.00 ]
+Key: MMX_PSIGNBrm: [ 0.00 0.00 ]
+Key: MMX_PSIGNBrr: [ 0.00 0.00 ]
+Key: MMX_PSIGNDrm: [ 0.00 0.00 ]
+Key: MMX_PSIGNDrr: [ 0.00 0.00 ]
+Key: MMX_PSIGNWrm: [ 0.00 0.00 ]
+Key: MMX_PSIGNWrr: [ 0.00 0.00 ]
+Key: MMX_PSLLDri: [ 0.00 0.00 ]
+Key: MMX_PSLLDrm: [ 0.00 0.00 ]
+Key: MMX_PSLLDrr: [ 0.00 0.00 ]
+Key: MMX_PSLLQri: [ 0.00 0.00 ]
+Key: MMX_PSLLQrm: [ 0.00 0.00 ]
+Key: MMX_PSLLQrr: [ 0.00 0.00 ]
+Key: MMX_PSLLWri: [ 0.00 0.00 ]
+Key: MMX_PSLLWrm: [ 0.00 0.00 ]
+Key: MMX_PSLLWrr: [ 0.00 0.00 ]
+Key: MMX_PSRADri: [ 0.00 0.00 ]
+Key: MMX_PSRADrm: [ 0.00 0.00 ]
+Key: MMX_PSRADrr: [ 0.00 0.00 ]
+Key: MMX_PSRAWri: [ 0.00 0.00 ]
+Key: MMX_PSRAWrm: [ 0.00 0.00 ]
+Key: MMX_PSRAWrr: [ 0.00 0.00 ]
+Key: MMX_PSRLDri: [ 0.00 0.00 ]
+Key: MMX_PSRLDrm: [ 0.00 0.00 ]
+Key: MMX_PSRLDrr: [ 0.00 0.00 ]
+Key: MMX_PSRLQri: [ 0.00 0.00 ]
+Key: MMX_PSRLQrm: [ 0.00 0.00 ]
+Key: MMX_PSRLQrr: [ 0.00 0.00 ]
+Key: MMX_PSRLWri: [ 0.00 0.00 ]
+Key: MMX_PSRLWrm: [ 0.00 0.00 ]
+Key: MMX_PSRLWrr: [ 0.00 0.00 ]
+Key: MMX_PSUBBrm: [ 0.00 0.00 ]
+Key: MMX_PSUBBrr: [ 0.00 0.00 ]
+Key: MMX_PSUBDrm: [ 0.00 0.00 ]
+Key: MMX_PSUBDrr: [ 0.00 0.00 ]
+Key: MMX_PSUBQrm: [ 0.00 0.00 ]
+Key: MMX_PSUBQrr: [ 0.00 0.00 ]
+Key: MMX_PSUBSBrm: [ 0.00 0.00 ]
+Key: MMX_PSUBSBrr: [ 0.00 0.00 ]
+Key: MMX_PSUBSWrm: [ 0.00 0.00 ]
+Key: MMX_PSUBSWrr: [ 0.00 0.00 ]
+Key: MMX_PSUBUSBrm: [ 0.00 0.00 ]
+Key: MMX_PSUBUSBrr: [ 0.00 0.00 ]
+Key: MMX_PSUBUSWrm: [ 0.00 0.00 ]
+Key: MMX_PSUBUSWrr: [ 0.00 0.00 ]
+Key: MMX_PSUBWrm: [ 0.00 0.00 ]
+Key: MMX_PSUBWrr: [ 0.00 0.00 ]
+Key: MMX_PUNPCKHBWrm: [ 0.00 0.00 ]
+Key: MMX_PUNPCKHBWrr: [ 0.00 0.00 ]
+Key: MMX_PUNPCKHDQrm: [ 0.00 0.00 ]
+Key: MMX_PUNPCKHDQrr: [ 0.00 0.00 ]
+Key: MMX_PUNPCKHWDrm: [ 0.00 0.00 ]
+Key: MMX_PUNPCKHWDrr: [ 0.00 0.00 ]
+Key: MMX_PUNPCKLBWrm: [ 0.00 0.00 ]
+Key: MMX_PUNPCKLBWrr: [ 0.00 0.00 ]
+Key: MMX_PUNPCKLDQrm: [ 0.00 0.00 ]
+Key: MMX_PUNPCKLDQrr: [ 0.00 0.00 ]
+Key: MMX_PUNPCKLWDrm: [ 0.00 0.00 ]
+Key: MMX_PUNPCKLWDrr: [ 0.00 0.00 ]
+Key: MMX_PXORrm: [ 0.00 0.00 ]
+Key: MMX_PXORrr: [ 0.00 0.00 ]
+Key: MMX_SET: [ 0.00 0.00 ]
+Key: MONITOR: [ 0.00 0.00 ]
+Key: MONITORX: [ 0.00 0.00 ]
+Key: MONTMUL: [ 0.00 0.00 ]
+Key: MORESTACK_RET: [ 0.00 0.00 ]
+Key: MORESTACK_RET_RESTORE_R: [ 0.00 0.00 ]
+Key: MOV: [ 0.00 0.00 ]
+Key: MOVAPDmr: [ 0.00 0.00 ]
+Key: MOVAPDrm: [ 0.00 0.00 ]
+Key: MOVAPDrr: [ 0.00 0.00 ]
+Key: MOVAPDrr_REV: [ 0.00 0.00 ]
+Key: MOVAPSmr: [ 0.00 0.00 ]
+Key: MOVAPSrm: [ 0.00 0.00 ]
+Key: MOVAPSrr: [ 0.00 0.00 ]
+Key: MOVAPSrr_REV: [ 0.00 0.00 ]
+Key: MOVBE: [ 0.00 0.00 ]
+Key: MOVDDUPrm: [ 0.00 0.00 ]
+Key: MOVDDUPrr: [ 0.00 0.00 ]
+Key: MOVDI: [ 0.00 0.00 ]
+Key: MOVDIR: [ 0.00 0.00 ]
+Key: MOVDIRI: [ 0.00 0.00 ]
+Key: MOVDQAmr: [ 0.00 0.00 ]
+Key: MOVDQArm: [ 0.00 0.00 ]
+Key: MOVDQArr: [ 0.00 0.00 ]
+Key: MOVDQArr_REV: [ 0.00 0.00 ]
+Key: MOVDQUmr: [ 0.00 0.00 ]
+Key: MOVDQUrm: [ 0.00 0.00 ]
+Key: MOVDQUrr: [ 0.00 0.00 ]
+Key: MOVDQUrr_REV: [ 0.00 0.00 ]
+Key: MOVHLPSrr: [ 0.00 0.00 ]
+Key: MOVHPDmr: [ 0.00 0.00 ]
+Key: MOVHPDrm: [ 0.00 0.00 ]
+Key: MOVHPSmr: [ 0.00 0.00 ]
+Key: MOVHPSrm: [ 0.00 0.00 ]
+Key: MOVLHPSrr: [ 0.00 0.00 ]
+Key: MOVLPDmr: [ 0.00 0.00 ]
+Key: MOVLPDrm: [ 0.00 0.00 ]
+Key: MOVLPSmr: [ 0.00 0.00 ]
+Key: MOVLPSrm: [ 0.00 0.00 ]
+Key: MOVMSKPDrr: [ 0.00 0.00 ]
+Key: MOVMSKPSrr: [ 0.00 0.00 ]
+Key: MOVNTDQArm: [ 0.00 0.00 ]
+Key: MOVNTDQmr: [ 0.00 0.00 ]
+Key: MOVNTI: [ 0.00 0.00 ]
+Key: MOVNTImr: [ 0.00 0.00 ]
+Key: MOVNTPDmr: [ 0.00 0.00 ]
+Key: MOVNTPSmr: [ 0.00 0.00 ]
+Key: MOVNTSD: [ 0.00 0.00 ]
+Key: MOVNTSS: [ 0.00 0.00 ]
+Key: MOVPC: [ 0.00 0.00 ]
+Key: MOVPDI: [ 0.00 0.00 ]
+Key: MOVPQI: [ 0.00 0.00 ]
+Key: MOVPQIto: [ 0.00 0.00 ]
+Key: MOVQI: [ 0.00 0.00 ]
+Key: MOVRS: [ 0.00 0.00 ]
+Key: MOVSB: [ 0.00 0.00 ]
+Key: MOVSDmr: [ 0.00 0.00 ]
+Key: MOVSDrm: [ 0.00 0.00 ]
+Key: MOVSDrm_alt: [ 0.00 0.00 ]
+Key: MOVSDrr: [ 0.00 0.00 ]
+Key: MOVSDrr_REV: [ 0.00 0.00 ]
+Key: MOVSDto: [ 0.00 0.00 ]
+Key: MOVSHDUPrm: [ 0.00 0.00 ]
+Key: MOVSHDUPrr: [ 0.00 0.00 ]
+Key: MOVSHPmr: [ 0.00 0.00 ]
+Key: MOVSHPrm: [ 0.00 0.00 ]
+Key: MOVSL: [ 0.00 0.00 ]
+Key: MOVSLDUPrm: [ 0.00 0.00 ]
+Key: MOVSLDUPrr: [ 0.00 0.00 ]
+Key: MOVSQ: [ 0.00 0.00 ]
+Key: MOVSS: [ 0.00 0.00 ]
+Key: MOVSSmr: [ 0.00 0.00 ]
+Key: MOVSSrm: [ 0.00 0.00 ]
+Key: MOVSSrm_alt: [ 0.00 0.00 ]
+Key: MOVSSrr: [ 0.00 0.00 ]
+Key: MOVSSrr_REV: [ 0.00 0.00 ]
+Key: MOVSW: [ 0.00 0.00 ]
+Key: MOVSX: [ 0.00 0.00 ]
+Key: MOVUPDmr: [ 0.00 0.00 ]
+Key: MOVUPDrm: [ 0.00 0.00 ]
+Key: MOVUPDrr: [ 0.00 0.00 ]
+Key: MOVUPDrr_REV: [ 0.00 0.00 ]
+Key: MOVUPSmr: [ 0.00 0.00 ]
+Key: MOVUPSrm: [ 0.00 0.00 ]
+Key: MOVUPSrr: [ 0.00 0.00 ]
+Key: MOVUPSrr_REV: [ 0.00 0.00 ]
+Key: MOVZPQILo: [ 0.00 0.00 ]
+Key: MOVZX: [ 0.00 0.00 ]
+Key: MPSADBWrmi: [ 0.00 0.00 ]
+Key: MPSADBWrri: [ 0.00 0.00 ]
+Key: MUL: [ 0.00 0.00 ]
+Key: MULPDrm: [ 0.00 0.00 ]
+Key: MULPDrr: [ 0.00 0.00 ]
+Key: MULPSrm: [ 0.00 0.00 ]
+Key: MULPSrr: [ 0.00 0.00 ]
+Key: MULSDrm: [ 0.00 0.00 ]
+Key: MULSDrm_Int: [ 0.00 0.00 ]
+Key: MULSDrr: [ 0.00 0.00 ]
+Key: MULSDrr_Int: [ 0.00 0.00 ]
+Key: MULSSrm: [ 0.00 0.00 ]
+Key: MULSSrm_Int: [ 0.00 0.00 ]
+Key: MULSSrr: [ 0.00 0.00 ]
+Key: MULSSrr_Int: [ 0.00 0.00 ]
+Key: MULX: [ 0.00 0.00 ]
+Key: MUL_F: [ 0.00 0.00 ]
+Key: MUL_FI: [ 0.00 0.00 ]
+Key: MUL_FPrST: [ 0.00 0.00 ]
+Key: MUL_FST: [ 0.00 0.00 ]
+Key: MUL_Fp: [ 0.00 0.00 ]
+Key: MUL_FpI: [ 0.00 0.00 ]
+Key: MUL_FrST: [ 0.00 0.00 ]
+Key: MWAITX: [ 0.00 0.00 ]
+Key: MWAITX_SAVE_RBX: [ 0.00 0.00 ]
+Key: MWAITXrrr: [ 0.00 0.00 ]
+Key: MWAITrr: [ 0.00 0.00 ]
+Key: NEG: [ 0.00 0.00 ]
+Key: NOOP: [ 0.00 0.00 ]
+Key: NOOPL: [ 0.00 0.00 ]
+Key: NOOPLr: [ 0.00 0.00 ]
+Key: NOOPQ: [ 0.00 0.00 ]
+Key: NOOPQr: [ 0.00 0.00 ]
+Key: NOOPW: [ 0.00 0.00 ]
+Key: NOOPWr: [ 0.00 0.00 ]
+Key: NOT: [ 0.00 0.00 ]
+Key: OR: [ 0.00 0.00 ]
+Key: ORPDrm: [ 0.00 0.00 ]
+Key: ORPDrr: [ 0.00 0.00 ]
+Key: ORPSrm: [ 0.00 0.00 ]
+Key: ORPSrr: [ 0.00 0.00 ]
+Key: OUT: [ 0.00 0.00 ]
+Key: OUTSB: [ 0.00 0.00 ]
+Key: OUTSL: [ 0.00 0.00 ]
+Key: OUTSW: [ 0.00 0.00 ]
+Key: PABSBrm: [ 0.00 0.00 ]
+Key: PABSBrr: [ 0.00 0.00 ]
+Key: PABSDrm: [ 0.00 0.00 ]
+Key: PABSDrr: [ 0.00 0.00 ]
+Key: PABSWrm: [ 0.00 0.00 ]
+Key: PABSWrr: [ 0.00 0.00 ]
+Key: PACKSSDWrm: [ 0.00 0.00 ]
+Key: PACKSSDWrr: [ 0.00 0.00 ]
+Key: PACKSSWBrm: [ 0.00 0.00 ]
+Key: PACKSSWBrr: [ 0.00 0.00 ]
+Key: PACKUSDWrm: [ 0.00 0.00 ]
+Key: PACKUSDWrr: [ 0.00 0.00 ]
+Key: PACKUSWBrm: [ 0.00 0.00 ]
+Key: PACKUSWBrr: [ 0.00 0.00 ]
+Key: PADDBrm: [ 0.00 0.00 ]
+Key: PADDBrr: [ 0.00 0.00 ]
+Key: PADDDrm: [ 0.00 0.00 ]
+Key: PADDDrr: [ 0.00 0.00 ]
+Key: PADDQrm: [ 0.00 0.00 ]
+Key: PADDQrr: [ 0.00 0.00 ]
+Key: PADDSBrm: [ 0.00 0.00 ]
+Key: PADDSBrr: [ 0.00 0.00 ]
+Key: PADDSWrm: [ 0.00 0.00 ]
+Key: PADDSWrr: [ 0.00 0.00 ]
+Key: PADDUSBrm: [ 0.00 0.00 ]
+Key: PADDUSBrr: [ 0.00 0.00 ]
+Key: PADDUSWrm: [ 0.00 0.00 ]
+Key: PADDUSWrr: [ 0.00 0.00 ]
+Key: PADDWrm: [ 0.00 0.00 ]
+Key: PADDWrr: [ 0.00 0.00 ]
+Key: PALIGNRrmi: [ 0.00 0.00 ]
+Key: PALIGNRrri: [ 0.00 0.00 ]
+Key: PANDNrm: [ 0.00 0.00 ]
+Key: PANDNrr: [ 0.00 0.00 ]
+Key: PANDrm: [ 0.00 0.00 ]
+Key: PANDrr: [ 0.00 0.00 ]
+Key: PATCHABLE_EVENT_CALL: [ 0.00 0.00 ]
+Key: PATCHABLE_FUNCTION_ENTER: [ 0.00 0.00 ]
+Key: PATCHABLE_FUNCTION_EXIT: [ 0.00 0.00 ]
+Key: PATCHABLE_OP: [ 0.00 0.00 ]
+Key: PATCHABLE_RET: [ 0.00 0.00 ]
+Key: PATCHABLE_TAIL_CALL: [ 0.00 0.00 ]
+Key: PATCHABLE_TYPED_EVENT_CALL: [ 0.00 0.00 ]
+Key: PATCHPOINT: [ 0.00 0.00 ]
+Key: PAUSE: [ 0.00 0.00 ]
+Key: PAVGBrm: [ 0.00 0.00 ]
+Key: PAVGBrr: [ 0.00 0.00 ]
+Key: PAVGUSBrm: [ 0.00 0.00 ]
+Key: PAVGUSBrr: [ 0.00 0.00 ]
+Key: PAVGWrm: [ 0.00 0.00 ]
+Key: PAVGWrr: [ 0.00 0.00 ]
+Key: PBLENDVBrm: [ 0.00 0.00 ]
+Key: PBLENDVBrr: [ 0.00 0.00 ]
+Key: PBLENDWrmi: [ 0.00 0.00 ]
+Key: PBLENDWrri: [ 0.00 0.00 ]
+Key: PBNDKB: [ 0.00 0.00 ]
+Key: PCLMULQDQrmi: [ 0.00 0.00 ]
+Key: PCLMULQDQrri: [ 0.00 0.00 ]
+Key: PCMPEQBrm: [ 0.00 0.00 ]
+Key: PCMPEQBrr: [ 0.00 0.00 ]
+Key: PCMPEQDrm: [ 0.00 0.00 ]
+Key: PCMPEQDrr: [ 0.00 0.00 ]
+Key: PCMPEQQrm: [ 0.00 0.00 ]
+Key: PCMPEQQrr: [ 0.00 0.00 ]
+Key: PCMPEQWrm: [ 0.00 0.00 ]
+Key: PCMPEQWrr: [ 0.00 0.00 ]
+Key: PCMPESTRIrmi: [ 0.00 0.00 ]
+Key: PCMPESTRIrri: [ 0.00 0.00 ]
+Key: PCMPESTRMrmi: [ 0.00 0.00 ]
+Key: PCMPESTRMrri: [ 0.00 0.00 ]
+Key: PCMPGTBrm: [ 0.00 0.00 ]
+Key: PCMPGTBrr: [ 0.00 0.00 ]
+Key: PCMPGTDrm: [ 0.00 0.00 ]
+Key: PCMPGTDrr: [ 0.00 0.00 ]
+Key: PCMPGTQrm: [ 0.00 0.00 ]
+Key: PCMPGTQrr: [ 0.00 0.00 ]
+Key: PCMPGTWrm: [ 0.00 0.00 ]
+Key: PCMPGTWrr: [ 0.00 0.00 ]
+Key: PCMPISTRIrmi: [ 0.00 0.00 ]
+Key: PCMPISTRIrri: [ 0.00 0.00 ]
+Key: PCMPISTRMrmi: [ 0.00 0.00 ]
+Key: PCMPISTRMrri: [ 0.00 0.00 ]
+Key: PCONFIG: [ 0.00 0.00 ]
+Key: PDEP: [ 0.00 0.00 ]
+Key: PEXT: [ 0.00 0.00 ]
+Key: PEXTRBmri: [ 0.00 0.00 ]
+Key: PEXTRBrri: [ 0.00 0.00 ]
+Key: PEXTRDmri: [ 0.00 0.00 ]
+Key: PEXTRDrri: [ 0.00 0.00 ]
+Key: PEXTRQmri: [ 0.00 0.00 ]
+Key: PEXTRQrri: [ 0.00 0.00 ]
+Key: PEXTRWmri: [ 0.00 0.00 ]
+Key: PEXTRWrri: [ 0.00 0.00 ]
+Key: PEXTRWrri_REV: [ 0.00 0.00 ]
+Key: PF: [ 0.00 0.00 ]
+Key: PFACCrm: [ 0.00 0.00 ]
+Key: PFACCrr: [ 0.00 0.00 ]
+Key: PFADDrm: [ 0.00 0.00 ]
+Key: PFADDrr: [ 0.00 0.00 ]
+Key: PFCMPEQrm: [ 0.00 0.00 ]
+Key: PFCMPEQrr: [ 0.00 0.00 ]
+Key: PFCMPGErm: [ 0.00 0.00 ]
+Key: PFCMPGErr: [ 0.00 0.00 ]
+Key: PFCMPGTrm: [ 0.00 0.00 ]
+Key: PFCMPGTrr: [ 0.00 0.00 ]
+Key: PFMAXrm: [ 0.00 0.00 ]
+Key: PFMAXrr: [ 0.00 0.00 ]
+Key: PFMINrm: [ 0.00 0.00 ]
+Key: PFMINrr: [ 0.00 0.00 ]
+Key: PFMULrm: [ 0.00 0.00 ]
+Key: PFMULrr: [ 0.00 0.00 ]
+Key: PFNACCrm: [ 0.00 0.00 ]
+Key: PFNACCrr: [ 0.00 0.00 ]
+Key: PFPNACCrm: [ 0.00 0.00 ]
+Key: PFPNACCrr: [ 0.00 0.00 ]
+Key: PFRCPIT: [ 0.00 0.00 ]
+Key: PFRCPrm: [ 0.00 0.00 ]
+Key: PFRCPrr: [ 0.00 0.00 ]
+Key: PFRSQIT: [ 0.00 0.00 ]
+Key: PFRSQRTrm: [ 0.00 0.00 ]
+Key: PFRSQRTrr: [ 0.00 0.00 ]
+Key: PFSUBRrm: [ 0.00 0.00 ]
+Key: PFSUBRrr: [ 0.00 0.00 ]
+Key: PFSUBrm: [ 0.00 0.00 ]
+Key: PFSUBrr: [ 0.00 0.00 ]
+Key: PHADDDrm: [ 0.00 0.00 ]
+Key: PHADDDrr: [ 0.00 0.00 ]
+Key: PHADDSWrm: [ 0.00 0.00 ]
+Key: PHADDSWrr: [ 0.00 0.00 ]
+Key: PHADDWrm: [ 0.00 0.00 ]
+Key: PHADDWrr: [ 0.00 0.00 ]
+Key: PHI: [ 0.00 0.00 ]
+Key: PHMINPOSUWrm: [ 0.00 0.00 ]
+Key: PHMINPOSUWrr: [ 0.00 0.00 ]
+Key: PHSUBDrm: [ 0.00 0.00 ]
+Key: PHSUBDrr: [ 0.00 0.00 ]
+Key: PHSUBSWrm: [ 0.00 0.00 ]
+Key: PHSUBSWrr: [ 0.00 0.00 ]
+Key: PHSUBWrm: [ 0.00 0.00 ]
+Key: PHSUBWrr: [ 0.00 0.00 ]
+Key: PI: [ 0.00 0.00 ]
+Key: PINSRBrmi: [ 0.00 0.00 ]
+Key: PINSRBrri: [ 0.00 0.00 ]
+Key: PINSRDrmi: [ 0.00 0.00 ]
+Key: PINSRDrri: [ 0.00 0.00 ]
+Key: PINSRQrmi: [ 0.00 0.00 ]
+Key: PINSRQrri: [ 0.00 0.00 ]
+Key: PINSRWrmi: [ 0.00 0.00 ]
+Key: PINSRWrri: [ 0.00 0.00 ]
+Key: PLDTILECFGV: [ 0.00 0.00 ]
+Key: PLEA: [ 0.00 0.00 ]
+Key: PMADDUBSWrm: [ 0.00 0.00 ]
+Key: PMADDUBSWrr: [ 0.00 0.00 ]
+Key: PMADDWDrm: [ 0.00 0.00 ]
+Key: PMADDWDrr: [ 0.00 0.00 ]
+Key: PMAXSBrm: [ 0.00 0.00 ]
+Key: PMAXSBrr: [ 0.00 0.00 ]
+Key: PMAXSDrm: [ 0.00 0.00 ]
+Key: PMAXSDrr: [ 0.00 0.00 ]
+Key: PMAXSWrm: [ 0.00 0.00 ]
+Key: PMAXSWrr: [ 0.00 0.00 ]
+Key: PMAXUBrm: [ 0.00 0.00 ]
+Key: PMAXUBrr: [ 0.00 0.00 ]
+Key: PMAXUDrm: [ 0.00 0.00 ]
+Key: PMAXUDrr: [ 0.00 0.00 ]
+Key: PMAXUWrm: [ 0.00 0.00 ]
+Key: PMAXUWrr: [ 0.00 0.00 ]
+Key: PMINSBrm: [ 0.00 0.00 ]
+Key: PMINSBrr: [ 0.00 0.00 ]
+Key: PMINSDrm: [ 0.00 0.00 ]
+Key: PMINSDrr: [ 0.00 0.00 ]
+Key: PMINSWrm: [ 0.00 0.00 ]
+Key: PMINSWrr: [ 0.00 0.00 ]
+Key: PMINUBrm: [ 0.00 0.00 ]
+Key: PMINUBrr: [ 0.00 0.00 ]
+Key: PMINUDrm: [ 0.00 0.00 ]
+Key: PMINUDrr: [ 0.00 0.00 ]
+Key: PMINUWrm: [ 0.00 0.00 ]
+Key: PMINUWrr: [ 0.00 0.00 ]
+Key: PMOVMSKBrr: [ 0.00 0.00 ]
+Key: PMOVSXBDrm: [ 0.00 0.00 ]
+Key: PMOVSXBDrr: [ 0.00 0.00 ]
+Key: PMOVSXBQrm: [ 0.00 0.00 ]
+Key: PMOVSXBQrr: [ 0.00 0.00 ]
+Key: PMOVSXBWrm: [ 0.00 0.00 ]
+Key: PMOVSXBWrr: [ 0.00 0.00 ]
+Key: PMOVSXDQrm: [ 0.00 0.00 ]
+Key: PMOVSXDQrr: [ 0.00 0.00 ]
+Key: PMOVSXWDrm: [ 0.00 0.00 ]
+Key: PMOVSXWDrr: [ 0.00 0.00 ]
+Key: PMOVSXWQrm: [ 0.00 0.00 ]
+Key: PMOVSXWQrr: [ 0.00 0.00 ]
+Key: PMOVZXBDrm: [ 0.00 0.00 ]
+Key: PMOVZXBDrr: [ 0.00 0.00 ]
+Key: PMOVZXBQrm: [ 0.00 0.00 ]
+Key: PMOVZXBQrr: [ 0.00 0.00 ]
+Key: PMOVZXBWrm: [ 0.00 0.00 ]
+Key: PMOVZXBWrr: [ 0.00 0.00 ]
+Key: PMOVZXDQrm: [ 0.00 0.00 ]
+Key: PMOVZXDQrr: [ 0.00 0.00 ]
+Key: PMOVZXWDrm: [ 0.00 0.00 ]
+Key: PMOVZXWDrr: [ 0.00 0.00 ]
+Key: PMOVZXWQrm: [ 0.00 0.00 ]
+Key: PMOVZXWQrr: [ 0.00 0.00 ]
+Key: PMULDQrm: [ 0.00 0.00 ]
+Key: PMULDQrr: [ 0.00 0.00 ]
+Key: PMULHRSWrm: [ 0.00 0.00 ]
+Key: PMULHRSWrr: [ 0.00 0.00 ]
+Key: PMULHRWrm: [ 0.00 0.00 ]
+Key: PMULHRWrr: [ 0.00 0.00 ]
+Key: PMULHUWrm: [ 0.00 0.00 ]
+Key: PMULHUWrr: [ 0.00 0.00 ]
+Key: PMULHWrm: [ 0.00 0.00 ]
+Key: PMULHWrr: [ 0.00 0.00 ]
+Key: PMULLDrm: [ 0.00 0.00 ]
+Key: PMULLDrr: [ 0.00 0.00 ]
+Key: PMULLWrm: [ 0.00 0.00 ]
+Key: PMULLWrr: [ 0.00 0.00 ]
+Key: PMULUDQrm: [ 0.00 0.00 ]
+Key: PMULUDQrr: [ 0.00 0.00 ]
+Key: POP: [ 0.00 0.00 ]
+Key: POPA: [ 0.00 0.00 ]
+Key: POPCNT: [ 0.00 0.00 ]
+Key: POPDS: [ 0.00 0.00 ]
+Key: POPES: [ 0.00 0.00 ]
+Key: POPF: [ 0.00 0.00 ]
+Key: POPFS: [ 0.00 0.00 ]
+Key: POPGS: [ 0.00 0.00 ]
+Key: POPP: [ 0.00 0.00 ]
+Key: POPSS: [ 0.00 0.00 ]
+Key: PORrm: [ 0.00 0.00 ]
+Key: PORrr: [ 0.00 0.00 ]
+Key: PREALLOCATED_ARG: [ 0.00 0.00 ]
+Key: PREALLOCATED_SETUP: [ 0.00 0.00 ]
+Key: PREFETCH: [ 0.00 0.00 ]
+Key: PREFETCHIT: [ 0.00 0.00 ]
+Key: PREFETCHNTA: [ 0.00 0.00 ]
+Key: PREFETCHRST: [ 0.00 0.00 ]
+Key: PREFETCHT: [ 0.00 0.00 ]
+Key: PREFETCHW: [ 0.00 0.00 ]
+Key: PREFETCHWT: [ 0.00 0.00 ]
+Key: PROBED_ALLOCA: [ 0.00 0.00 ]
+Key: PSADBWrm: [ 0.00 0.00 ]
+Key: PSADBWrr: [ 0.00 0.00 ]
+Key: PSEUDO_PROBE: [ 0.00 0.00 ]
+Key: PSHUFBrm: [ 0.00 0.00 ]
+Key: PSHUFBrr: [ 0.00 0.00 ]
+Key: PSHUFDmi: [ 0.00 0.00 ]
+Key: PSHUFDri: [ 0.00 0.00 ]
+Key: PSHUFHWmi: [ 0.00 0.00 ]
+Key: PSHUFHWri: [ 0.00 0.00 ]
+Key: PSHUFLWmi: [ 0.00 0.00 ]
+Key: PSHUFLWri: [ 0.00 0.00 ]
+Key: PSIGNBrm: [ 0.00 0.00 ]
+Key: PSIGNBrr: [ 0.00 0.00 ]
+Key: PSIGNDrm: [ 0.00 0.00 ]
+Key: PSIGNDrr: [ 0.00 0.00 ]
+Key: PSIGNWrm: [ 0.00 0.00 ]
+Key: PSIGNWrr: [ 0.00 0.00 ]
+Key: PSLLDQri: [ 0.00 0.00 ]
+Key: PSLLDri: [ 0.00 0.00 ]
+Key: PSLLDrm: [ 0.00 0.00 ]
+Key: PSLLDrr: [ 0.00 0.00 ]
+Key: PSLLQri: [ 0.00 0.00 ]
+Key: PSLLQrm: [ 0.00 0.00 ]
+Key: PSLLQrr: [ 0.00 0.00 ]
+Key: PSLLWri: [ 0.00 0.00 ]
+Key: PSLLWrm: [ 0.00 0.00 ]
+Key: PSLLWrr: [ 0.00 0.00 ]
+Key: PSMASH: [ 0.00 0.00 ]
+Key: PSRADri: [ 0.00 0.00 ]
+Key: PSRADrm: [ 0.00 0.00 ]
+Key: PSRADrr: [ 0.00 0.00 ]
+Key: PSRAWri: [ 0.00 0.00 ]
+Key: PSRAWrm: [ 0.00 0.00 ]
+Key: PSRAWrr: [ 0.00 0.00 ]
+Key: PSRLDQri: [ 0.00 0.00 ]
+Key: PSRLDri: [ 0.00 0.00 ]
+Key: PSRLDrm: [ 0.00 0.00 ]
+Key: PSRLDrr: [ 0.00 0.00 ]
+Key: PSRLQri: [ 0.00 0.00 ]
+Key: PSRLQrm: [ 0.00 0.00 ]
+Key: PSRLQrr: [ 0.00 0.00 ]
+Key: PSRLWri: [ 0.00 0.00 ]
+Key: PSRLWrm: [ 0.00 0.00 ]
+Key: PSRLWrr: [ 0.00 0.00 ]
+Key: PSUBBrm: [ 0.00 0.00 ]
+Key: PSUBBrr: [ 0.00 0.00 ]
+Key: PSUBDrm: [ 0.00 0.00 ]
+Key: PSUBDrr: [ 0.00 0.00 ]
+Key: PSUBQrm: [ 0.00 0.00 ]
+Key: PSUBQrr: [ 0.00 0.00 ]
+Key: PSUBSBrm: [ 0.00 0.00 ]
+Key: PSUBSBrr: [ 0.00 0.00 ]
+Key: PSUBSWrm: [ 0.00 0.00 ]
+Key: PSUBSWrr: [ 0.00 0.00 ]
+Key: PSUBUSBrm: [ 0.00 0.00 ]
+Key: PSUBUSBrr: [ 0.00 0.00 ]
+Key: PSUBUSWrm: [ 0.00 0.00 ]
+Key: PSUBUSWrr: [ 0.00 0.00 ]
+Key: PSUBWrm: [ 0.00 0.00 ]
+Key: PSUBWrr: [ 0.00 0.00 ]
+Key: PSWAPDrm: [ 0.00 0.00 ]
+Key: PSWAPDrr: [ 0.00 0.00 ]
+Key: PT: [ 0.00 0.00 ]
+Key: PTCMMIMFP: [ 0.00 0.00 ]
+Key: PTCMMRLFP: [ 0.00 0.00 ]
+Key: PTCONJTCMMIMFP: [ 0.00 0.00 ]
+Key: PTCONJTFP: [ 0.00 0.00 ]
+Key: PTCVTROWD: [ 0.00 0.00 ]
+Key: PTCVTROWPS: [ 0.00 0.00 ]
+Key: PTDPBF: [ 0.00 0.00 ]
+Key: PTDPBHF: [ 0.00 0.00 ]
+Key: PTDPBSSD: [ 0.00 0.00 ]
+Key: PTDPBSSDV: [ 0.00 0.00 ]
+Key: PTDPBSUD: [ 0.00 0.00 ]
+Key: PTDPBSUDV: [ 0.00 0.00 ]
+Key: PTDPBUSD: [ 0.00 0.00 ]
+Key: PTDPBUSDV: [ 0.00 0.00 ]
+Key: PTDPBUUD: [ 0.00 0.00 ]
+Key: PTDPBUUDV: [ 0.00 0.00 ]
+Key: PTDPFP: [ 0.00 0.00 ]
+Key: PTDPHBF: [ 0.00 0.00 ]
+Key: PTDPHF: [ 0.00 0.00 ]
+Key: PTESTrm: [ 0.00 0.00 ]
+Key: PTESTrr: [ 0.00 0.00 ]
+Key: PTILELOADD: [ 0.00 0.00 ]
+Key: PTILELOADDRS: [ 0.00 0.00 ]
+Key: PTILELOADDRST: [ 0.00 0.00 ]
+Key: PTILELOADDRSV: [ 0.00 0.00 ]
+Key: PTILELOADDT: [ 0.00 0.00 ]
+Key: PTILELOADDV: [ 0.00 0.00 ]
+Key: PTILEMOVROWrre: [ 0.00 0.00 ]
+Key: PTILEMOVROWrreV: [ 0.00 0.00 ]
+Key: PTILEMOVROWrri: [ 0.00 0.00 ]
+Key: PTILEMOVROWrriV: [ 0.00 0.00 ]
+Key: PTILEPAIRLOAD: [ 0.00 0.00 ]
+Key: PTILEPAIRSTORE: [ 0.00 0.00 ]
+Key: PTILESTORED: [ 0.00 0.00 ]
+Key: PTILESTOREDV: [ 0.00 0.00 ]
+Key: PTILEZERO: [ 0.00 0.00 ]
+Key: PTILEZEROV: [ 0.00 0.00 ]
+Key: PTMMULTF: [ 0.00 0.00 ]
+Key: PTTCMMIMFP: [ 0.00 0.00 ]
+Key: PTTCMMRLFP: [ 0.00 0.00 ]
+Key: PTTDPBF: [ 0.00 0.00 ]
+Key: PTTDPFP: [ 0.00 0.00 ]
+Key: PTTMMULTF: [ 0.00 0.00 ]
+Key: PTTRANSPOSED: [ 0.00 0.00 ]
+Key: PTTRANSPOSEDV: [ 0.00 0.00 ]
+Key: PTWRITE: [ 0.00 0.00 ]
+Key: PTWRITEm: [ 0.00 0.00 ]
+Key: PTWRITEr: [ 0.00 0.00 ]
+Key: PUNPCKHBWrm: [ 0.00 0.00 ]
+Key: PUNPCKHBWrr: [ 0.00 0.00 ]
+Key: PUNPCKHDQrm: [ 0.00 0.00 ]
+Key: PUNPCKHDQrr: [ 0.00 0.00 ]
+Key: PUNPCKHQDQrm: [ 0.00 0.00 ]
+Key: PUNPCKHQDQrr: [ 0.00 0.00 ]
+Key: PUNPCKHWDrm: [ 0.00 0.00 ]
+Key: PUNPCKHWDrr: [ 0.00 0.00 ]
+Key: PUNPCKLBWrm: [ 0.00 0.00 ]
+Key: PUNPCKLBWrr: [ 0.00 0.00 ]
+Key: PUNPCKLDQrm: [ 0.00 0.00 ]
+Key: PUNPCKLDQrr: [ 0.00 0.00 ]
+Key: PUNPCKLQDQrm: [ 0.00 0.00 ]
+Key: PUNPCKLQDQrr: [ 0.00 0.00 ]
+Key: PUNPCKLWDrm: [ 0.00 0.00 ]
+Key: PUNPCKLWDrr: [ 0.00 0.00 ]
+Key: PUSH: [ 0.00 0.00 ]
+Key: PUSHA: [ 0.00 0.00 ]
+Key: PUSHCS: [ 0.00 0.00 ]
+Key: PUSHDS: [ 0.00 0.00 ]
+Key: PUSHES: [ 0.00 0.00 ]
+Key: PUSHF: [ 0.00 0.00 ]
+Key: PUSHFS: [ 0.00 0.00 ]
+Key: PUSHGS: [ 0.00 0.00 ]
+Key: PUSHP: [ 0.00 0.00 ]
+Key: PUSHSS: [ 0.00 0.00 ]
+Key: PVALIDATE: [ 0.00 0.00 ]
+Key: PXORrm: [ 0.00 0.00 ]
+Key: PXORrr: [ 0.00 0.00 ]
+Key: RCL: [ 0.00 0.00 ]
+Key: RCPPSm: [ 0.00 0.00 ]
+Key: RCPPSr: [ 0.00 0.00 ]
+Key: RCPSSm: [ 0.00 0.00 ]
+Key: RCPSSm_Int: [ 0.00 0.00 ]
+Key: RCPSSr: [ 0.00 0.00 ]
+Key: RCPSSr_Int: [ 0.00 0.00 ]
+Key: RCR: [ 0.00 0.00 ]
+Key: RDFLAGS: [ 0.00 0.00 ]
+Key: RDFSBASE: [ 0.00 0.00 ]
+Key: RDGSBASE: [ 0.00 0.00 ]
+Key: RDMSR: [ 0.00 0.00 ]
+Key: RDMSRLIST: [ 0.00 0.00 ]
+Key: RDMSRri: [ 0.00 0.00 ]
+Key: RDMSRri_EVEX: [ 0.00 0.00 ]
+Key: RDPID: [ 0.00 0.00 ]
+Key: RDPKRUr: [ 0.00 0.00 ]
+Key: RDPMC: [ 0.00 0.00 ]
+Key: RDPRU: [ 0.00 0.00 ]
+Key: RDRAND: [ 0.00 0.00 ]
+Key: RDSEED: [ 0.00 0.00 ]
+Key: RDSSPD: [ 0.00 0.00 ]
+Key: RDSSPQ: [ 0.00 0.00 ]
+Key: RDTSC: [ 0.00 0.00 ]
+Key: RDTSCP: [ 0.00 0.00 ]
+Key: REG_SEQUENCE: [ 0.00 0.00 ]
+Key: REPNE_PREFIX: [ 0.00 0.00 ]
+Key: REP_MOVSB: [ 0.00 0.00 ]
+Key: REP_MOVSD: [ 0.00 0.00 ]
+Key: REP_MOVSQ: [ 0.00 0.00 ]
+Key: REP_MOVSW: [ 0.00 0.00 ]
+Key: REP_PREFIX: [ 0.00 0.00 ]
+Key: REP_STOSB: [ 0.00 0.00 ]
+Key: REP_STOSD: [ 0.00 0.00 ]
+Key: REP_STOSQ: [ 0.00 0.00 ]
+Key: REP_STOSW: [ 0.00 0.00 ]
+Key: RET: [ 0.00 0.00 ]
+Key: RETI: [ 0.00 0.00 ]
+Key: REX: [ 0.00 0.00 ]
+Key: RMPADJUST: [ 0.00 0.00 ]
+Key: RMPQUERY: [ 0.00 0.00 ]
+Key: RMPUPDATE: [ 0.00 0.00 ]
+Key: ROL: [ 0.00 0.00 ]
+Key: ROR: [ 0.00 0.00 ]
+Key: RORX: [ 0.00 0.00 ]
+Key: ROUNDPDmi: [ 0.00 0.00 ]
+Key: ROUNDPDri: [ 0.00 0.00 ]
+Key: ROUNDPSmi: [ 0.00 0.00 ]
+Key: ROUNDPSri: [ 0.00 0.00 ]
+Key: ROUNDSDmi: [ 0.00 0.00 ]
+Key: ROUNDSDmi_Int: [ 0.00 0.00 ]
+Key: ROUNDSDri: [ 0.00 0.00 ]
+Key: ROUNDSDri_Int: [ 0.00 0.00 ]
+Key: ROUNDSSmi: [ 0.00 0.00 ]
+Key: ROUNDSSmi_Int: [ 0.00 0.00 ]
+Key: ROUNDSSri: [ 0.00 0.00 ]
+Key: ROUNDSSri_Int: [ 0.00 0.00 ]
+Key: RSM: [ 0.00 0.00 ]
+Key: RSQRTPSm: [ 0.00 0.00 ]
+Key: RSQRTPSr: [ 0.00 0.00 ]
+Key: RSQRTSSm: [ 0.00 0.00 ]
+Key: RSQRTSSm_Int: [ 0.00 0.00 ]
+Key: RSQRTSSr: [ 0.00 0.00 ]
+Key: RSQRTSSr_Int: [ 0.00 0.00 ]
+Key: RSTORSSP: [ 0.00 0.00 ]
+Key: SAHF: [ 0.00 0.00 ]
+Key: SALC: [ 0.00 0.00 ]
+Key: SAR: [ 0.00 0.00 ]
+Key: SARX: [ 0.00 0.00 ]
+Key: SAVEPREVSSP: [ 0.00 0.00 ]
+Key: SBB: [ 0.00 0.00 ]
+Key: SCASB: [ 0.00 0.00 ]
+Key: SCASL: [ 0.00 0.00 ]
+Key: SCASQ: [ 0.00 0.00 ]
+Key: SCASW: [ 0.00 0.00 ]
+Key: SEAMCALL: [ 0.00 0.00 ]
+Key: SEAMOPS: [ 0.00 0.00 ]
+Key: SEAMRET: [ 0.00 0.00 ]
+Key: SEG_ALLOCA: [ 0.00 0.00 ]
+Key: SEH_BeginEpilogue: [ 0.00 0.00 ]
+Key: SEH_EndEpilogue: [ 0.00 0.00 ]
+Key: SEH_EndPrologue: [ 0.00 0.00 ]
+Key: SEH_PushFrame: [ 0.00 0.00 ]
+Key: SEH_PushReg: [ 0.00 0.00 ]
+Key: SEH_SaveReg: [ 0.00 0.00 ]
+Key: SEH_SaveXMM: [ 0.00 0.00 ]
+Key: SEH_SetFrame: [ 0.00 0.00 ]
+Key: SEH_StackAlign: [ 0.00 0.00 ]
+Key: SEH_StackAlloc: [ 0.00 0.00 ]
+Key: SEH_UnwindV: [ 0.00 0.00 ]
+Key: SEH_UnwindVersion: [ 0.00 0.00 ]
+Key: SENDUIPI: [ 0.00 0.00 ]
+Key: SERIALIZE: [ 0.00 0.00 ]
+Key: SETB_C: [ 0.00 0.00 ]
+Key: SETCCm: [ 0.00 0.00 ]
+Key: SETCCm_EVEX: [ 0.00 0.00 ]
+Key: SETCCr: [ 0.00 0.00 ]
+Key: SETCCr_EVEX: [ 0.00 0.00 ]
+Key: SETSSBSY: [ 0.00 0.00 ]
+Key: SETZUCCm: [ 0.00 0.00 ]
+Key: SETZUCCr: [ 0.00 0.00 ]
+Key: SFENCE: [ 0.00 0.00 ]
+Key: SGDT: [ 0.00 0.00 ]
+Key: SHA: [ 0.00 0.00 ]
+Key: SHL: [ 0.00 0.00 ]
+Key: SHLD: [ 0.00 0.00 ]
+Key: SHLDROT: [ 0.00 0.00 ]
+Key: SHLX: [ 0.00 0.00 ]
+Key: SHR: [ 0.00 0.00 ]
+Key: SHRD: [ 0.00 0.00 ]
+Key: SHRDROT: [ 0.00 0.00 ]
+Key: SHRX: [ 0.00 0.00 ]
+Key: SHUFPDrmi: [ 0.00 0.00 ]
+Key: SHUFPDrri: [ 0.00 0.00 ]
+Key: SHUFPSrmi: [ 0.00 0.00 ]
+Key: SHUFPSrri: [ 0.00 0.00 ]
+Key: SIDT: [ 0.00 0.00 ]
+Key: SKINIT: [ 0.00 0.00 ]
+Key: SLDT: [ 0.00 0.00 ]
+Key: SLWPCB: [ 0.00 0.00 ]
+Key: SMSW: [ 0.00 0.00 ]
+Key: SQRTPDm: [ 0.00 0.00 ]
+Key: SQRTPDr: [ 0.00 0.00 ]
+Key: SQRTPSm: [ 0.00 0.00 ]
+Key: SQRTPSr: [ 0.00 0.00 ]
+Key: SQRTSDm: [ 0.00 0.00 ]
+Key: SQRTSDm_Int: [ 0.00 0.00 ]
+Key: SQRTSDr: [ 0.00 0.00 ]
+Key: SQRTSDr_Int: [ 0.00 0.00 ]
+Key: SQRTSSm: [ 0.00 0.00 ]
+Key: SQRTSSm_Int: [ 0.00 0.00 ]
+Key: SQRTSSr: [ 0.00 0.00 ]
+Key: SQRTSSr_Int: [ 0.00 0.00 ]
+Key: SQRT_F: [ 0.00 0.00 ]
+Key: SQRT_Fp: [ 0.00 0.00 ]
+Key: SS_PREFIX: [ 0.00 0.00 ]
+Key: STAC: [ 0.00 0.00 ]
+Key: STACKALLOC_W_PROBING: [ 0.00 0.00 ]
+Key: STACKMAP: [ 0.00 0.00 ]
+Key: STATEPOINT: [ 0.00 0.00 ]
+Key: STC: [ 0.00 0.00 ]
+Key: STD: [ 0.00 0.00 ]
+Key: STGI: [ 0.00 0.00 ]
+Key: STI: [ 0.00 0.00 ]
+Key: STMXCSR: [ 0.00 0.00 ]
+Key: STOSB: [ 0.00 0.00 ]
+Key: STOSL: [ 0.00 0.00 ]
+Key: STOSQ: [ 0.00 0.00 ]
+Key: STOSW: [ 0.00 0.00 ]
+Key: STR: [ 0.00 0.00 ]
+Key: STRm: [ 0.00 0.00 ]
+Key: STTILECFG: [ 0.00 0.00 ]
+Key: STTILECFG_EVEX: [ 0.00 0.00 ]
+Key: STUI: [ 0.00 0.00 ]
+Key: ST_F: [ 0.00 0.00 ]
+Key: ST_FP: [ 0.00 0.00 ]
+Key: ST_FPrr: [ 0.00 0.00 ]
+Key: ST_Fp: [ 0.00 0.00 ]
+Key: ST_FpP: [ 0.00 0.00 ]
+Key: ST_Frr: [ 0.00 0.00 ]
+Key: SUB: [ 0.00 0.00 ]
+Key: SUBPDrm: [ 0.00 0.00 ]
+Key: SUBPDrr: [ 0.00 0.00 ]
+Key: SUBPSrm: [ 0.00 0.00 ]
+Key: SUBPSrr: [ 0.00 0.00 ]
+Key: SUBREG_TO_REG: [ 0.00 0.00 ]
+Key: SUBR_F: [ 0.00 0.00 ]
+Key: SUBR_FI: [ 0.00 0.00 ]
+Key: SUBR_FPrST: [ 0.00 0.00 ]
+Key: SUBR_FST: [ 0.00 0.00 ]
+Key: SUBR_Fp: [ 0.00 0.00 ]
+Key: SUBR_FpI: [ 0.00 0.00 ]
+Key: SUBR_FrST: [ 0.00 0.00 ]
+Key: SUBSDrm: [ 0.00 0.00 ]
+Key: SUBSDrm_Int: [ 0.00 0.00 ]
+Key: SUBSDrr: [ 0.00 0.00 ]
+Key: SUBSDrr_Int: [ 0.00 0.00 ]
+Key: SUBSSrm: [ 0.00 0.00 ]
+Key: SUBSSrm_Int: [ 0.00 0.00 ]
+Key: SUBSSrr: [ 0.00 0.00 ]
+Key: SUBSSrr_Int: [ 0.00 0.00 ]
+Key: SUB_F: [ 0.00 0.00 ]
+Key: SUB_FI: [ 0.00 0.00 ]
+Key: SUB_FPrST: [ 0.00 0.00 ]
+Key: SUB_FST: [ 0.00 0.00 ]
+Key: SUB_Fp: [ 0.00 0.00 ]
+Key: SUB_FpI: [ 0.00 0.00 ]
+Key: SUB_FrST: [ 0.00 0.00 ]
+Key: SWAPGS: [ 0.00 0.00 ]
+Key: SYSCALL: [ 0.00 0.00 ]
+Key: SYSENTER: [ 0.00 0.00 ]
+Key: SYSEXIT: [ 0.00 0.00 ]
+Key: SYSRET: [ 0.00 0.00 ]
+Key: T: [ 0.00 0.00 ]
+Key: TAILJMPd: [ 0.00 0.00 ]
+Key: TAILJMPd_CC: [ 0.00 0.00 ]
+Key: TAILJMPm: [ 0.00 0.00 ]
+Key: TAILJMPr: [ 0.00 0.00 ]
+Key: TCMMIMFP: [ 0.00 0.00 ]
+Key: TCMMRLFP: [ 0.00 0.00 ]
+Key: TCONJTCMMIMFP: [ 0.00 0.00 ]
+Key: TCONJTFP: [ 0.00 0.00 ]
+Key: TCRETURN_HIPE: [ 0.00 0.00 ]
+Key: TCRETURN_WIN: [ 0.00 0.00 ]
+Key: TCRETURN_WINmi: [ 0.00 0.00 ]
+Key: TCRETURNdi: [ 0.00 0.00 ]
+Key: TCRETURNdicc: [ 0.00 0.00 ]
+Key: TCRETURNmi: [ 0.00 0.00 ]
+Key: TCRETURNri: [ 0.00 0.00 ]
+Key: TCVTROWD: [ 0.00 0.00 ]
+Key: TCVTROWPS: [ 0.00 0.00 ]
+Key: TDCALL: [ 0.00 0.00 ]
+Key: TDPBF: [ 0.00 0.00 ]
+Key: TDPBHF: [ 0.00 0.00 ]
+Key: TDPBSSD: [ 0.00 0.00 ]
+Key: TDPBSUD: [ 0.00 0.00 ]
+Key: TDPBUSD: [ 0.00 0.00 ]
+Key: TDPBUUD: [ 0.00 0.00 ]
+Key: TDPFP: [ 0.00 0.00 ]
+Key: TDPHBF: [ 0.00 0.00 ]
+Key: TDPHF: [ 0.00 0.00 ]
+Key: TEST: [ 0.00 0.00 ]
+Key: TESTUI: [ 0.00 0.00 ]
+Key: TILELOADD: [ 0.00 0.00 ]
+Key: TILELOADDRS: [ 0.00 0.00 ]
+Key: TILELOADDRST: [ 0.00 0.00 ]
+Key: TILELOADDRS_EVEX: [ 0.00 0.00 ]
+Key: TILELOADDT: [ 0.00 0.00 ]
+Key: TILELOADD_EVEX: [ 0.00 0.00 ]
+Key: TILEMOVROWrre: [ 0.00 0.00 ]
+Key: TILEMOVROWrri: [ 0.00 0.00 ]
+Key: TILERELEASE: [ 0.00 0.00 ]
+Key: TILESTORED: [ 0.00 0.00 ]
+Key: TILESTORED_EVEX: [ 0.00 0.00 ]
+Key: TILEZERO: [ 0.00 0.00 ]
+Key: TLBSYNC: [ 0.00 0.00 ]
+Key: TLSCall: [ 0.00 0.00 ]
+Key: TLS_addr: [ 0.00 0.00 ]
+Key: TLS_addrX: [ 0.00 0.00 ]
+Key: TLS_base_addr: [ 0.00 0.00 ]
+Key: TLS_base_addrX: [ 0.00 0.00 ]
+Key: TLS_desc: [ 0.00 0.00 ]
+Key: TMMULTF: [ 0.00 0.00 ]
+Key: TPAUSE: [ 0.00 0.00 ]
+Key: TRAP: [ 0.00 0.00 ]
+Key: TST_F: [ 0.00 0.00 ]
+Key: TST_Fp: [ 0.00 0.00 ]
+Key: TTCMMIMFP: [ 0.00 0.00 ]
+Key: TTCMMRLFP: [ 0.00 0.00 ]
+Key: TTDPBF: [ 0.00 0.00 ]
+Key: TTDPFP: [ 0.00 0.00 ]
+Key: TTMMULTF: [ 0.00 0.00 ]
+Key: TTRANSPOSED: [ 0.00 0.00 ]
+Key: TZCNT: [ 0.00 0.00 ]
+Key: TZMSK: [ 0.00 0.00 ]
+Key: UBSAN_UD: [ 0.00 0.00 ]
+Key: UCOMISDrm: [ 0.00 0.00 ]
+Key: UCOMISDrm_Int: [ 0.00 0.00 ]
+Key: UCOMISDrr: [ 0.00 0.00 ]
+Key: UCOMISDrr_Int: [ 0.00 0.00 ]
+Key: UCOMISSrm: [ 0.00 0.00 ]
+Key: UCOMISSrm_Int: [ 0.00 0.00 ]
+Key: UCOMISSrr: [ 0.00 0.00 ]
+Key: UCOMISSrr_Int: [ 0.00 0.00 ]
+Key: UCOM_FIPr: [ 0.00 0.00 ]
+Key: UCOM_FIr: [ 0.00 0.00 ]
+Key: UCOM_FPPr: [ 0.00 0.00 ]
+Key: UCOM_FPr: [ 0.00 0.00 ]
+Key: UCOM_FpIr: [ 0.00 0.00 ]
+Key: UCOM_Fpr: [ 0.00 0.00 ]
+Key: UCOM_Fr: [ 0.00 0.00 ]
+Key: UD: [ 0.00 0.00 ]
+Key: UIRET: [ 0.00 0.00 ]
+Key: UMONITOR: [ 0.00 0.00 ]
+Key: UMWAIT: [ 0.00 0.00 ]
+Key: UNPCKHPDrm: [ 0.00 0.00 ]
+Key: UNPCKHPDrr: [ 0.00 0.00 ]
+Key: UNPCKHPSrm: [ 0.00 0.00 ]
+Key: UNPCKHPSrr: [ 0.00 0.00 ]
+Key: UNPCKLPDrm: [ 0.00 0.00 ]
+Key: UNPCKLPDrr: [ 0.00 0.00 ]
+Key: UNPCKLPSrm: [ 0.00 0.00 ]
+Key: UNPCKLPSrr: [ 0.00 0.00 ]
+Key: URDMSRri: [ 0.00 0.00 ]
+Key: URDMSRri_EVEX: [ 0.00 0.00 ]
+Key: URDMSRrr: [ 0.00 0.00 ]
+Key: URDMSRrr_EVEX: [ 0.00 0.00 ]
+Key: UWRMSRir: [ 0.00 0.00 ]
+Key: UWRMSRir_EVEX: [ 0.00 0.00 ]
+Key: UWRMSRrr: [ 0.00 0.00 ]
+Key: UWRMSRrr_EVEX: [ 0.00 0.00 ]
+Key: V: [ 0.00 0.00 ]
+Key: VAARG: [ 0.00 0.00 ]
+Key: VAARG_X: [ 0.00 0.00 ]
+Key: VADDBF: [ 0.00 0.00 ]
+Key: VADDPDYrm: [ 0.00 0.00 ]
+Key: VADDPDYrr: [ 0.00 0.00 ]
+Key: VADDPDZ: [ 0.00 0.00 ]
+Key: VADDPDZrm: [ 0.00 0.00 ]
+Key: VADDPDZrmb: [ 0.00 0.00 ]
+Key: VADDPDZrmbk: [ 0.00 0.00 ]
+Key: VADDPDZrmbkz: [ 0.00 0.00 ]
+Key: VADDPDZrmk: [ 0.00 0.00 ]
+Key: VADDPDZrmkz: [ 0.00 0.00 ]
+Key: VADDPDZrr: [ 0.00 0.00 ]
+Key: VADDPDZrrb: [ 0.00 0.00 ]
+Key: VADDPDZrrbk: [ 0.00 0.00 ]
+Key: VADDPDZrrbkz: [ 0.00 0.00 ]
+Key: VADDPDZrrk: [ 0.00 0.00 ]
+Key: VADDPDZrrkz: [ 0.00 0.00 ]
+Key: VADDPDrm: [ 0.00 0.00 ]
+Key: VADDPDrr: [ 0.00 0.00 ]
+Key: VADDPHZ: [ 0.00 0.00 ]
+Key: VADDPHZrm: [ 0.00 0.00 ]
+Key: VADDPHZrmb: [ 0.00 0.00 ]
+Key: VADDPHZrmbk: [ 0.00 0.00 ]
+Key: VADDPHZrmbkz: [ 0.00 0.00 ]
+Key: VADDPHZrmk: [ 0.00 0.00 ]
+Key: VADDPHZrmkz: [ 0.00 0.00 ]
+Key: VADDPHZrr: [ 0.00 0.00 ]
+Key: VADDPHZrrb: [ 0.00 0.00 ]
+Key: VADDPHZrrbk: [ 0.00 0.00 ]
+Key: VADDPHZrrbkz: [ 0.00 0.00 ]
+Key: VADDPHZrrk: [ 0.00 0.00 ]
+Key: VADDPHZrrkz: [ 0.00 0.00 ]
+Key: VADDPSYrm: [ 0.00 0.00 ]
+Key: VADDPSYrr: [ 0.00 0.00 ]
+Key: VADDPSZ: [ 0.00 0.00 ]
+Key: VADDPSZrm: [ 0.00 0.00 ]
+Key: VADDPSZrmb: [ 0.00 0.00 ]
+Key: VADDPSZrmbk: [ 0.00 0.00 ]
+Key: VADDPSZrmbkz: [ 0.00 0.00 ]
+Key: VADDPSZrmk: [ 0.00 0.00 ]
+Key: VADDPSZrmkz: [ 0.00 0.00 ]
+Key: VADDPSZrr: [ 0.00 0.00 ]
+Key: VADDPSZrrb: [ 0.00 0.00 ]
+Key: VADDPSZrrbk: [ 0.00 0.00 ]
+Key: VADDPSZrrbkz: [ 0.00 0.00 ]
+Key: VADDPSZrrk: [ 0.00 0.00 ]
+Key: VADDPSZrrkz: [ 0.00 0.00 ]
+Key: VADDPSrm: [ 0.00 0.00 ]
+Key: VADDPSrr: [ 0.00 0.00 ]
+Key: VADDSDZrm: [ 0.00 0.00 ]
+Key: VADDSDZrm_Int: [ 0.00 0.00 ]
+Key: VADDSDZrmk_Int: [ 0.00 0.00 ]
+Key: VADDSDZrmkz_Int: [ 0.00 0.00 ]
+Key: VADDSDZrr: [ 0.00 0.00 ]
+Key: VADDSDZrr_Int: [ 0.00 0.00 ]
+Key: VADDSDZrrb_Int: [ 0.00 0.00 ]
+Key: VADDSDZrrbk_Int: [ 0.00 0.00 ]
+Key: VADDSDZrrbkz_Int: [ 0.00 0.00 ]
+Key: VADDSDZrrk_Int: [ 0.00 0.00 ]
+Key: VADDSDZrrkz_Int: [ 0.00 0.00 ]
+Key: VADDSDrm: [ 0.00 0.00 ]
+Key: VADDSDrm_Int: [ 0.00 0.00 ]
+Key: VADDSDrr: [ 0.00 0.00 ]
+Key: VADDSDrr_Int: [ 0.00 0.00 ]
+Key: VADDSHZrm: [ 0.00 0.00 ]
+Key: VADDSHZrm_Int: [ 0.00 0.00 ]
+Key: VADDSHZrmk_Int: [ 0.00 0.00 ]
+Key: VADDSHZrmkz_Int: [ 0.00 0.00 ]
+Key: VADDSHZrr: [ 0.00 0.00 ]
+Key: VADDSHZrr_Int: [ 0.00 0.00 ]
+Key: VADDSHZrrb_Int: [ 0.00 0.00 ]
+Key: VADDSHZrrbk_Int: [ 0.00 0.00 ]
+Key: VADDSHZrrbkz_Int: [ 0.00 0.00 ]
+Key: VADDSHZrrk_Int: [ 0.00 0.00 ]
+Key: VADDSHZrrkz_Int: [ 0.00 0.00 ]
+Key: VADDSSZrm: [ 0.00 0.00 ]
+Key: VADDSSZrm_Int: [ 0.00 0.00 ]
+Key: VADDSSZrmk_Int: [ 0.00 0.00 ]
+Key: VADDSSZrmkz_Int: [ 0.00 0.00 ]
+Key: VADDSSZrr: [ 0.00 0.00 ]
+Key: VADDSSZrr_Int: [ 0.00 0.00 ]
+Key: VADDSSZrrb_Int: [ 0.00 0.00 ]
+Key: VADDSSZrrbk_Int: [ 0.00 0.00 ]
+Key: VADDSSZrrbkz_Int: [ 0.00 0.00 ]
+Key: VADDSSZrrk_Int: [ 0.00 0.00 ]
+Key: VADDSSZrrkz_Int: [ 0.00 0.00 ]
+Key: VADDSSrm: [ 0.00 0.00 ]
+Key: VADDSSrm_Int: [ 0.00 0.00 ]
+Key: VADDSSrr: [ 0.00 0.00 ]
+Key: VADDSSrr_Int: [ 0.00 0.00 ]
+Key: VADDSUBPDYrm: [ 0.00 0.00 ]
+Key: VADDSUBPDYrr: [ 0.00 0.00 ]
+Key: VADDSUBPDrm: [ 0.00 0.00 ]
+Key: VADDSUBPDrr: [ 0.00 0.00 ]
+Key: VADDSUBPSYrm: [ 0.00 0.00 ]
+Key: VADDSUBPSYrr: [ 0.00 0.00 ]
+Key: VADDSUBPSrm: [ 0.00 0.00 ]
+Key: VADDSUBPSrr: [ 0.00 0.00 ]
+Key: VAESDECLASTYrm: [ 0.00 0.00 ]
+Key: VAESDECLASTYrr: [ 0.00 0.00 ]
+Key: VAESDECLASTZ: [ 0.00 0.00 ]
+Key: VAESDECLASTZrm: [ 0.00 0.00 ]
+Key: VAESDECLASTZrr: [ 0.00 0.00 ]
+Key: VAESDECLASTrm: [ 0.00 0.00 ]
+Key: VAESDECLASTrr: [ 0.00 0.00 ]
+Key: VAESDECYrm: [ 0.00 0.00 ]
+Key: VAESDECYrr: [ 0.00 0.00 ]
+Key: VAESDECZ: [ 0.00 0.00 ]
+Key: VAESDECZrm: [ 0.00 0.00 ]
+Key: VAESDECZrr: [ 0.00 0.00 ]
+Key: VAESDECrm: [ 0.00 0.00 ]
+Key: VAESDECrr: [ 0.00 0.00 ]
+Key: VAESENCLASTYrm: [ 0.00 0.00 ]
+Key: VAESENCLASTYrr: [ 0.00 0.00 ]
+Key: VAESENCLASTZ: [ 0.00 0.00 ]
+Key: VAESENCLASTZrm: [ 0.00 0.00 ]
+Key: VAESENCLASTZrr: [ 0.00 0.00 ]
+Key: VAESENCLASTrm: [ 0.00 0.00 ]
+Key: VAESENCLASTrr: [ 0.00 0.00 ]
+Key: VAESENCYrm: [ 0.00 0.00 ]
+Key: VAESENCYrr: [ 0.00 0.00 ]
+Key: VAESENCZ: [ 0.00 0.00 ]
+Key: VAESENCZrm: [ 0.00 0.00 ]
+Key: VAESENCZrr: [ 0.00 0.00 ]
+Key: VAESENCrm: [ 0.00 0.00 ]
+Key: VAESENCrr: [ 0.00 0.00 ]
+Key: VAESIMCrm: [ 0.00 0.00 ]
+Key: VAESIMCrr: [ 0.00 0.00 ]
+Key: VAESKEYGENASSISTrmi: [ 0.00 0.00 ]
+Key: VAESKEYGENASSISTrri: [ 0.00 0.00 ]
+Key: VALIGNDZ: [ 0.00 0.00 ]
+Key: VALIGNDZrmbi: [ 0.00 0.00 ]
+Key: VALIGNDZrmbik: [ 0.00 0.00 ]
+Key: VALIGNDZrmbikz: [ 0.00 0.00 ]
+Key: VALIGNDZrmi: [ 0.00 0.00 ]
+Key: VALIGNDZrmik: [ 0.00 0.00 ]
+Key: VALIGNDZrmikz: [ 0.00 0.00 ]
+Key: VALIGNDZrri: [ 0.00 0.00 ]
+Key: VALIGNDZrrik: [ 0.00 0.00 ]
+Key: VALIGNDZrrikz: [ 0.00 0.00 ]
+Key: VALIGNQZ: [ 0.00 0.00 ]
+Key: VALIGNQZrmbi: [ 0.00 0.00 ]
+Key: VALIGNQZrmbik: [ 0.00 0.00 ]
+Key: VALIGNQZrmbikz: [ 0.00 0.00 ]
+Key: VALIGNQZrmi: [ 0.00 0.00 ]
+Key: VALIGNQZrmik: [ 0.00 0.00 ]
+Key: VALIGNQZrmikz: [ 0.00 0.00 ]
+Key: VALIGNQZrri: [ 0.00 0.00 ]
+Key: VALIGNQZrrik: [ 0.00 0.00 ]
+Key: VALIGNQZrrikz: [ 0.00 0.00 ]
+Key: VANDNPDYrm: [ 0.00 0.00 ]
+Key: VANDNPDYrr: [ 0.00 0.00 ]
+Key: VANDNPDZ: [ 0.00 0.00 ]
+Key: VANDNPDZrm: [ 0.00 0.00 ]
+Key: VANDNPDZrmb: [ 0.00 0.00 ]
+Key: VANDNPDZrmbk: [ 0.00 0.00 ]
+Key: VANDNPDZrmbkz: [ 0.00 0.00 ]
+Key: VANDNPDZrmk: [ 0.00 0.00 ]
+Key: VANDNPDZrmkz: [ 0.00 0.00 ]
+Key: VANDNPDZrr: [ 0.00 0.00 ]
+Key: VANDNPDZrrk: [ 0.00 0.00 ]
+Key: VANDNPDZrrkz: [ 0.00 0.00 ]
+Key: VANDNPDrm: [ 0.00 0.00 ]
+Key: VANDNPDrr: [ 0.00 0.00 ]
+Key: VANDNPSYrm: [ 0.00 0.00 ]
+Key: VANDNPSYrr: [ 0.00 0.00 ]
+Key: VANDNPSZ: [ 0.00 0.00 ]
+Key: VANDNPSZrm: [ 0.00 0.00 ]
+Key: VANDNPSZrmb: [ 0.00 0.00 ]
+Key: VANDNPSZrmbk: [ 0.00 0.00 ]
+Key: VANDNPSZrmbkz: [ 0.00 0.00 ]
+Key: VANDNPSZrmk: [ 0.00 0.00 ]
+Key: VANDNPSZrmkz: [ 0.00 0.00 ]
+Key: VANDNPSZrr: [ 0.00 0.00 ]
+Key: VANDNPSZrrk: [ 0.00 0.00 ]
+Key: VANDNPSZrrkz: [ 0.00 0.00 ]
+Key: VANDNPSrm: [ 0.00 0.00 ]
+Key: VANDNPSrr: [ 0.00 0.00 ]
+Key: VANDPDYrm: [ 0.00 0.00 ]
+Key: VANDPDYrr: [ 0.00 0.00 ]
+Key: VANDPDZ: [ 0.00 0.00 ]
+Key: VANDPDZrm: [ 0.00 0.00 ]
+Key: VANDPDZrmb: [ 0.00 0.00 ]
+Key: VANDPDZrmbk: [ 0.00 0.00 ]
+Key: VANDPDZrmbkz: [ 0.00 0.00 ]
+Key: VANDPDZrmk: [ 0.00 0.00 ]
+Key: VANDPDZrmkz: [ 0.00 0.00 ]
+Key: VANDPDZrr: [ 0.00 0.00 ]
+Key: VANDPDZrrk: [ 0.00 0.00 ]
+Key: VANDPDZrrkz: [ 0.00 0.00 ]
+Key: VANDPDrm: [ 0.00 0.00 ]
+Key: VANDPDrr: [ 0.00 0.00 ]
+Key: VANDPSYrm: [ 0.00 0.00 ]
+Key: VANDPSYrr: [ 0.00 0.00 ]
+Key: VANDPSZ: [ 0.00 0.00 ]
+Key: VANDPSZrm: [ 0.00 0.00 ]
+Key: VANDPSZrmb: [ 0.00 0.00 ]
+Key: VANDPSZrmbk: [ 0.00 0.00 ]
+Key: VANDPSZrmbkz: [ 0.00 0.00 ]
+Key: VANDPSZrmk: [ 0.00 0.00 ]
+Key: VANDPSZrmkz: [ 0.00 0.00 ]
+Key: VANDPSZrr: [ 0.00 0.00 ]
+Key: VANDPSZrrk: [ 0.00 0.00 ]
+Key: VANDPSZrrkz: [ 0.00 0.00 ]
+Key: VANDPSrm: [ 0.00 0.00 ]
+Key: VANDPSrr: [ 0.00 0.00 ]
+Key: VASTART_SAVE_XMM_REGS: [ 0.00 0.00 ]
+Key: VBCSTNEBF: [ 0.00 0.00 ]
+Key: VBCSTNESH: [ 0.00 0.00 ]
+Key: VBLENDMPDZ: [ 0.00 0.00 ]
+Key: VBLENDMPDZrm: [ 0.00 0.00 ]
+Key: VBLENDMPDZrmb: [ 0.00 0.00 ]
+Key: VBLENDMPDZrmbk: [ 0.00 0.00 ]
+Key: VBLENDMPDZrmbkz: [ 0.00 0.00 ]
+Key: VBLENDMPDZrmk: [ 0.00 0.00 ]
+Key: VBLENDMPDZrmkz: [ 0.00 0.00 ]
+Key: VBLENDMPDZrr: [ 0.00 0.00 ]
+Key: VBLENDMPDZrrk: [ 0.00 0.00 ]
+Key: VBLENDMPDZrrkz: [ 0.00 0.00 ]
+Key: VBLENDMPSZ: [ 0.00 0.00 ]
+Key: VBLENDMPSZrm: [ 0.00 0.00 ]
+Key: VBLENDMPSZrmb: [ 0.00 0.00 ]
+Key: VBLENDMPSZrmbk: [ 0.00 0.00 ]
+Key: VBLENDMPSZrmbkz: [ 0.00 0.00 ]
+Key: VBLENDMPSZrmk: [ 0.00 0.00 ]
+Key: VBLENDMPSZrmkz: [ 0.00 0.00 ]
+Key: VBLENDMPSZrr: [ 0.00 0.00 ]
+Key: VBLENDMPSZrrk: [ 0.00 0.00 ]
+Key: VBLENDMPSZrrkz: [ 0.00 0.00 ]
+Key: VBLENDPDYrmi: [ 0.00 0.00 ]
+Key: VBLENDPDYrri: [ 0.00 0.00 ]
+Key: VBLENDPDrmi: [ 0.00 0.00 ]
+Key: VBLENDPDrri: [ 0.00 0.00 ]
+Key: VBLENDPSYrmi: [ 0.00 0.00 ]
+Key: VBLENDPSYrri: [ 0.00 0.00 ]
+Key: VBLENDPSrmi: [ 0.00 0.00 ]
+Key: VBLENDPSrri: [ 0.00 0.00 ]
+Key: VBLENDVPDYrmr: [ 0.00 0.00 ]
+Key: VBLENDVPDYrrr: [ 0.00 0.00 ]
+Key: VBLENDVPDrmr: [ 0.00 0.00 ]
+Key: VBLENDVPDrrr: [ 0.00 0.00 ]
+Key: VBLENDVPSYrmr: [ 0.00 0.00 ]
+Key: VBLENDVPSYrrr: [ 0.00 0.00 ]
+Key: VBLENDVPSrmr: [ 0.00 0.00 ]
+Key: VBLENDVPSrrr: [ 0.00 0.00 ]
+Key: VBROADCASTF: [ 0.00 0.00 ]
+Key: VBROADCASTI: [ 0.00 0.00 ]
+Key: VBROADCASTSDYrm: [ 0.00 0.00 ]
+Key: VBROADCASTSDYrr: [ 0.00 0.00 ]
+Key: VBROADCASTSDZ: [ 0.00 0.00 ]
+Key: VBROADCASTSDZrm: [ 0.00 0.00 ]
+Key: VBROADCASTSDZrmk: [ 0.00 0.00 ]
+Key: VBROADCASTSDZrmkz: [ 0.00 0.00 ]
+Key: VBROADCASTSDZrr: [ 0.00 0.00 ]
+Key: VBROADCASTSDZrrk: [ 0.00 0.00 ]
+Key: VBROADCASTSDZrrkz: [ 0.00 0.00 ]
+Key: VBROADCASTSSYrm: [ 0.00 0.00 ]
+Key: VBROADCASTSSYrr: [ 0.00 0.00 ]
+Key: VBROADCASTSSZ: [ 0.00 0.00 ]
+Key: VBROADCASTSSZrm: [ 0.00 0.00 ]
+Key: VBROADCASTSSZrmk: [ 0.00 0.00 ]
+Key: VBROADCASTSSZrmkz: [ 0.00 0.00 ]
+Key: VBROADCASTSSZrr: [ 0.00 0.00 ]
+Key: VBROADCASTSSZrrk: [ 0.00 0.00 ]
+Key: VBROADCASTSSZrrkz: [ 0.00 0.00 ]
+Key: VBROADCASTSSrm: [ 0.00 0.00 ]
+Key: VBROADCASTSSrr: [ 0.00 0.00 ]
+Key: VCMPBF: [ 0.00 0.00 ]
+Key: VCMPPDYrmi: [ 0.00 0.00 ]
+Key: VCMPPDYrri: [ 0.00 0.00 ]
+Key: VCMPPDZ: [ 0.00 0.00 ]
+Key: VCMPPDZrmbi: [ 0.00 0.00 ]
+Key: VCMPPDZrmbik: [ 0.00 0.00 ]
+Key: VCMPPDZrmi: [ 0.00 0.00 ]
+Key: VCMPPDZrmik: [ 0.00 0.00 ]
+Key: VCMPPDZrri: [ 0.00 0.00 ]
+Key: VCMPPDZrrib: [ 0.00 0.00 ]
+Key: VCMPPDZrribk: [ 0.00 0.00 ]
+Key: VCMPPDZrrik: [ 0.00 0.00 ]
+Key: VCMPPDrmi: [ 0.00 0.00 ]
+Key: VCMPPDrri: [ 0.00 0.00 ]
+Key: VCMPPHZ: [ 0.00 0.00 ]
+Key: VCMPPHZrmbi: [ 0.00 0.00 ]
+Key: VCMPPHZrmbik: [ 0.00 0.00 ]
+Key: VCMPPHZrmi: [ 0.00 0.00 ]
+Key: VCMPPHZrmik: [ 0.00 0.00 ]
+Key: VCMPPHZrri: [ 0.00 0.00 ]
+Key: VCMPPHZrrib: [ 0.00 0.00 ]
+Key: VCMPPHZrribk: [ 0.00 0.00 ]
+Key: VCMPPHZrrik: [ 0.00 0.00 ]
+Key: VCMPPSYrmi: [ 0.00 0.00 ]
+Key: VCMPPSYrri: [ 0.00 0.00 ]
+Key: VCMPPSZ: [ 0.00 0.00 ]
+Key: VCMPPSZrmbi: [ 0.00 0.00 ]
+Key: VCMPPSZrmbik: [ 0.00 0.00 ]
+Key: VCMPPSZrmi: [ 0.00 0.00 ]
+Key: VCMPPSZrmik: [ 0.00 0.00 ]
+Key: VCMPPSZrri: [ 0.00 0.00 ]
+Key: VCMPPSZrrib: [ 0.00 0.00 ]
+Key: VCMPPSZrribk: [ 0.00 0.00 ]
+Key: VCMPPSZrrik: [ 0.00 0.00 ]
+Key: VCMPPSrmi: [ 0.00 0.00 ]
+Key: VCMPPSrri: [ 0.00 0.00 ]
+Key: VCMPSDZrmi: [ 0.00 0.00 ]
+Key: VCMPSDZrmi_Int: [ 0.00 0.00 ]
+Key: VCMPSDZrmik_Int: [ 0.00 0.00 ]
+Key: VCMPSDZrri: [ 0.00 0.00 ]
+Key: VCMPSDZrri_Int: [ 0.00 0.00 ]
+Key: VCMPSDZrrib_Int: [ 0.00 0.00 ]
+Key: VCMPSDZrribk_Int: [ 0.00 0.00 ]
+Key: VCMPSDZrrik_Int: [ 0.00 0.00 ]
+Key: VCMPSDrmi: [ 0.00 0.00 ]
+Key: VCMPSDrmi_Int: [ 0.00 0.00 ]
+Key: VCMPSDrri: [ 0.00 0.00 ]
+Key: VCMPSDrri_Int: [ 0.00 0.00 ]
+Key: VCMPSHZrmi: [ 0.00 0.00 ]
+Key: VCMPSHZrmi_Int: [ 0.00 0.00 ]
+Key: VCMPSHZrmik_Int: [ 0.00 0.00 ]
+Key: VCMPSHZrri: [ 0.00 0.00 ]
+Key: VCMPSHZrri_Int: [ 0.00 0.00 ]
+Key: VCMPSHZrrib_Int: [ 0.00 0.00 ]
+Key: VCMPSHZrribk_Int: [ 0.00 0.00 ]
+Key: VCMPSHZrrik_Int: [ 0.00 0.00 ]
+Key: VCMPSSZrmi: [ 0.00 0.00 ]
+Key: VCMPSSZrmi_Int: [ 0.00 0.00 ]
+Key: VCMPSSZrmik_Int: [ 0.00 0.00 ]
+Key: VCMPSSZrri: [ 0.00 0.00 ]
+Key: VCMPSSZrri_Int: [ 0.00 0.00 ]
+Key: VCMPSSZrrib_Int: [ 0.00 0.00 ]
+Key: VCMPSSZrribk_Int: [ 0.00 0.00 ]
+Key: VCMPSSZrrik_Int: [ 0.00 0.00 ]
+Key: VCMPSSrmi: [ 0.00 0.00 ]
+Key: VCMPSSrmi_Int: [ 0.00 0.00 ]
+Key: VCMPSSrri: [ 0.00 0.00 ]
+Key: VCMPSSrri_Int: [ 0.00 0.00 ]
+Key: VCOMISBF: [ 0.00 0.00 ]
+Key: VCOMISDZrm: [ 0.00 0.00 ]
+Key: VCOMISDZrm_Int: [ 0.00 0.00 ]
+Key: VCOMISDZrr: [ 0.00 0.00 ]
+Key: VCOMISDZrr_Int: [ 0.00 0.00 ]
+Key: VCOMISDZrrb: [ 0.00 0.00 ]
+Key: VCOMISDrm: [ 0.00 0.00 ]
+Key: VCOMISDrm_Int: [ 0.00 0.00 ]
+Key: VCOMISDrr: [ 0.00 0.00 ]
+Key: VCOMISDrr_Int: [ 0.00 0.00 ]
+Key: VCOMISHZrm: [ 0.00 0.00 ]
+Key: VCOMISHZrm_Int: [ 0.00 0.00 ]
+Key: VCOMISHZrr: [ 0.00 0.00 ]
+Key: VCOMISHZrr_Int: [ 0.00 0.00 ]
+Key: VCOMISHZrrb: [ 0.00 0.00 ]
+Key: VCOMISSZrm: [ 0.00 0.00 ]
+Key: VCOMISSZrm_Int: [ 0.00 0.00 ]
+Key: VCOMISSZrr: [ 0.00 0.00 ]
+Key: VCOMISSZrr_Int: [ 0.00 0.00 ]
+Key: VCOMISSZrrb: [ 0.00 0.00 ]
+Key: VCOMISSrm: [ 0.00 0.00 ]
+Key: VCOMISSrm_Int: [ 0.00 0.00 ]
+Key: VCOMISSrr: [ 0.00 0.00 ]
+Key: VCOMISSrr_Int: [ 0.00 0.00 ]
+Key: VCOMPRESSPDZ: [ 0.00 0.00 ]
+Key: VCOMPRESSPDZmr: [ 0.00 0.00 ]
+Key: VCOMPRESSPDZmrk: [ 0.00 0.00 ]
+Key: VCOMPRESSPDZrr: [ 0.00 0.00 ]
+Key: VCOMPRESSPDZrrk: [ 0.00 0.00 ]
+Key: VCOMPRESSPDZrrkz: [ 0.00 0.00 ]
+Key: VCOMPRESSPSZ: [ 0.00 0.00 ]
+Key: VCOMPRESSPSZmr: [ 0.00 0.00 ]
+Key: VCOMPRESSPSZmrk: [ 0.00 0.00 ]
+Key: VCOMPRESSPSZrr: [ 0.00 0.00 ]
+Key: VCOMPRESSPSZrrk: [ 0.00 0.00 ]
+Key: VCOMPRESSPSZrrkz: [ 0.00 0.00 ]
+Key: VCOMXSDZrm_Int: [ 0.00 0.00 ]
+Key: VCOMXSDZrr_Int: [ 0.00 0.00 ]
+Key: VCOMXSDZrrb_Int: [ 0.00 0.00 ]
+Key: VCOMXSHZrm_Int: [ 0.00 0.00 ]
+Key: VCOMXSHZrr_Int: [ 0.00 0.00 ]
+Key: VCOMXSHZrrb_Int: [ 0.00 0.00 ]
+Key: VCOMXSSZrm_Int: [ 0.00 0.00 ]
+Key: VCOMXSSZrr_Int: [ 0.00 0.00 ]
+Key: VCOMXSSZrrb_Int: [ 0.00 0.00 ]
+Key: VCVT: [ 0.00 0.00 ]
+Key: VCVTBF: [ 0.00 0.00 ]
+Key: VCVTBIASPH: [ 0.00 0.00 ]
+Key: VCVTDQ: [ 0.00 0.00 ]
+Key: VCVTHF: [ 0.00 0.00 ]
+Key: VCVTNE: [ 0.00 0.00 ]
+Key: VCVTNEEBF: [ 0.00 0.00 ]
+Key: VCVTNEEPH: [ 0.00 0.00 ]
+Key: VCVTNEOBF: [ 0.00 0.00 ]
+Key: VCVTNEOPH: [ 0.00 0.00 ]
+Key: VCVTNEPS: [ 0.00 0.00 ]
+Key: VCVTPD: [ 0.00 0.00 ]
+Key: VCVTPH: [ 0.00 0.00 ]
+Key: VCVTPS: [ 0.00 0.00 ]
+Key: VCVTQQ: [ 0.00 0.00 ]
+Key: VCVTSD: [ 0.00 0.00 ]
+Key: VCVTSH: [ 0.00 0.00 ]
+Key: VCVTSI: [ 0.00 0.00 ]
+Key: VCVTSS: [ 0.00 0.00 ]
+Key: VCVTTBF: [ 0.00 0.00 ]
+Key: VCVTTPD: [ 0.00 0.00 ]
+Key: VCVTTPH: [ 0.00 0.00 ]
+Key: VCVTTPS: [ 0.00 0.00 ]
+Key: VCVTTSD: [ 0.00 0.00 ]
+Key: VCVTTSH: [ 0.00 0.00 ]
+Key: VCVTTSS: [ 0.00 0.00 ]
+Key: VCVTUDQ: [ 0.00 0.00 ]
+Key: VCVTUQQ: [ 0.00 0.00 ]
+Key: VCVTUSI: [ 0.00 0.00 ]
+Key: VCVTUW: [ 0.00 0.00 ]
+Key: VCVTW: [ 0.00 0.00 ]
+Key: VDBPSADBWZ: [ 0.00 0.00 ]
+Key: VDBPSADBWZrmi: [ 0.00 0.00 ]
+Key: VDBPSADBWZrmik: [ 0.00 0.00 ]
+Key: VDBPSADBWZrmikz: [ 0.00 0.00 ]
+Key: VDBPSADBWZrri: [ 0.00 0.00 ]
+Key: VDBPSADBWZrrik: [ 0.00 0.00 ]
+Key: VDBPSADBWZrrikz: [ 0.00 0.00 ]
+Key: VDIVBF: [ 0.00 0.00 ]
+Key: VDIVPDYrm: [ 0.00 0.00 ]
+Key: VDIVPDYrr: [ 0.00 0.00 ]
+Key: VDIVPDZ: [ 0.00 0.00 ]
+Key: VDIVPDZrm: [ 0.00 0.00 ]
+Key: VDIVPDZrmb: [ 0.00 0.00 ]
+Key: VDIVPDZrmbk: [ 0.00 0.00 ]
+Key: VDIVPDZrmbkz: [ 0.00 0.00 ]
+Key: VDIVPDZrmk: [ 0.00 0.00 ]
+Key: VDIVPDZrmkz: [ 0.00 0.00 ]
+Key: VDIVPDZrr: [ 0.00 0.00 ]
+Key: VDIVPDZrrb: [ 0.00 0.00 ]
+Key: VDIVPDZrrbk: [ 0.00 0.00 ]
+Key: VDIVPDZrrbkz: [ 0.00 0.00 ]
+Key: VDIVPDZrrk: [ 0.00 0.00 ]
+Key: VDIVPDZrrkz: [ 0.00 0.00 ]
+Key: VDIVPDrm: [ 0.00 0.00 ]
+Key: VDIVPDrr: [ 0.00 0.00 ]
+Key: VDIVPHZ: [ 0.00 0.00 ]
+Key: VDIVPHZrm: [ 0.00 0.00 ]
+Key: VDIVPHZrmb: [ 0.00 0.00 ]
+Key: VDIVPHZrmbk: [ 0.00 0.00 ]
+Key: VDIVPHZrmbkz: [ 0.00 0.00 ]
+Key: VDIVPHZrmk: [ 0.00 0.00 ]
+Key: VDIVPHZrmkz: [ 0.00 0.00 ]
+Key: VDIVPHZrr: [ 0.00 0.00 ]
+Key: VDIVPHZrrb: [ 0.00 0.00 ]
+Key: VDIVPHZrrbk: [ 0.00 0.00 ]
+Key: VDIVPHZrrbkz: [ 0.00 0.00 ]
+Key: VDIVPHZrrk: [ 0.00 0.00 ]
+Key: VDIVPHZrrkz: [ 0.00 0.00 ]
+Key: VDIVPSYrm: [ 0.00 0.00 ]
+Key: VDIVPSYrr: [ 0.00 0.00 ]
+Key: VDIVPSZ: [ 0.00 0.00 ]
+Key: VDIVPSZrm: [ 0.00 0.00 ]
+Key: VDIVPSZrmb: [ 0.00 0.00 ]
+Key: VDIVPSZrmbk: [ 0.00 0.00 ]
+Key: VDIVPSZrmbkz: [ 0.00 0.00 ]
+Key: VDIVPSZrmk: [ 0.00 0.00 ]
+Key: VDIVPSZrmkz: [ 0.00 0.00 ]
+Key: VDIVPSZrr: [ 0.00 0.00 ]
+Key: VDIVPSZrrb: [ 0.00 0.00 ]
+Key: VDIVPSZrrbk: [ 0.00 0.00 ]
+Key: VDIVPSZrrbkz: [ 0.00 0.00 ]
+Key: VDIVPSZrrk: [ 0.00 0.00 ]
+Key: VDIVPSZrrkz: [ 0.00 0.00 ]
+Key: VDIVPSrm: [ 0.00 0.00 ]
+Key: VDIVPSrr: [ 0.00 0.00 ]
+Key: VDIVSDZrm: [ 0.00 0.00 ]
+Key: VDIVSDZrm_Int: [ 0.00 0.00 ]
+Key: VDIVSDZrmk_Int: [ 0.00 0.00 ]
+Key: VDIVSDZrmkz_Int: [ 0.00 0.00 ]
+Key: VDIVSDZrr: [ 0.00 0.00 ]
+Key: VDIVSDZrr_Int: [ 0.00 0.00 ]
+Key: VDIVSDZrrb_Int: [ 0.00 0.00 ]
+Key: VDIVSDZrrbk_Int: [ 0.00 0.00 ]
+Key: VDIVSDZrrbkz_Int: [ 0.00 0.00 ]
+Key: VDIVSDZrrk_Int: [ 0.00 0.00 ]
+Key: VDIVSDZrrkz_Int: [ 0.00 0.00 ]
+Key: VDIVSDrm: [ 0.00 0.00 ]
+Key: VDIVSDrm_Int: [ 0.00 0.00 ]
+Key: VDIVSDrr: [ 0.00 0.00 ]
+Key: VDIVSDrr_Int: [ 0.00 0.00 ]
+Key: VDIVSHZrm: [ 0.00 0.00 ]
+Key: VDIVSHZrm_Int: [ 0.00 0.00 ]
+Key: VDIVSHZrmk_Int: [ 0.00 0.00 ]
+Key: VDIVSHZrmkz_Int: [ 0.00 0.00 ]
+Key: VDIVSHZrr: [ 0.00 0.00 ]
+Key: VDIVSHZrr_Int: [ 0.00 0.00 ]
+Key: VDIVSHZrrb_Int: [ 0.00 0.00 ]
+Key: VDIVSHZrrbk_Int: [ 0.00 0.00 ]
+Key: VDIVSHZrrbkz_Int: [ 0.00 0.00 ]
+Key: VDIVSHZrrk_Int: [ 0.00 0.00 ]
+Key: VDIVSHZrrkz_Int: [ 0.00 0.00 ]
+Key: VDIVSSZrm: [ 0.00 0.00 ]
+Key: VDIVSSZrm_Int: [ 0.00 0.00 ]
+Key: VDIVSSZrmk_Int: [ 0.00 0.00 ]
+Key: VDIVSSZrmkz_Int: [ 0.00 0.00 ]
+Key: VDIVSSZrr: [ 0.00 0.00 ]
+Key: VDIVSSZrr_Int: [ 0.00 0.00 ]
+Key: VDIVSSZrrb_Int: [ 0.00 0.00 ]
+Key: VDIVSSZrrbk_Int: [ 0.00 0.00 ]
+Key: VDIVSSZrrbkz_Int: [ 0.00 0.00 ]
+Key: VDIVSSZrrk_Int: [ 0.00 0.00 ]
+Key: VDIVSSZrrkz_Int: [ 0.00 0.00 ]
+Key: VDIVSSrm: [ 0.00 0.00 ]
+Key: VDIVSSrm_Int: [ 0.00 0.00 ]
+Key: VDIVSSrr: [ 0.00 0.00 ]
+Key: VDIVSSrr_Int: [ 0.00 0.00 ]
+Key: VDPBF: [ 0.00 0.00 ]
+Key: VDPPDrmi: [ 0.00 0.00 ]
+Key: VDPPDrri: [ 0.00 0.00 ]
+Key: VDPPHPSZ: [ 0.00 0.00 ]
+Key: VDPPHPSZm: [ 0.00 0.00 ]
+Key: VDPPHPSZmb: [ 0.00 0.00 ]
+Key: VDPPHPSZmbk: [ 0.00 0.00 ]
+Key: VDPPHPSZmbkz: [ 0.00 0.00 ]
+Key: VDPPHPSZmk: [ 0.00 0.00 ]
+Key: VDPPHPSZmkz: [ 0.00 0.00 ]
+Key: VDPPHPSZr: [ 0.00 0.00 ]
+Key: VDPPHPSZrk: [ 0.00 0.00 ]
+Key: VDPPHPSZrkz: [ 0.00 0.00 ]
+Key: VDPPSYrmi: [ 0.00 0.00 ]
+Key: VDPPSYrri: [ 0.00 0.00 ]
+Key: VDPPSrmi: [ 0.00 0.00 ]
+Key: VDPPSrri: [ 0.00 0.00 ]
+Key: VERRm: [ 0.00 0.00 ]
+Key: VERRr: [ 0.00 0.00 ]
+Key: VERWm: [ 0.00 0.00 ]
+Key: VERWr: [ 0.00 0.00 ]
+Key: VEXP: [ 0.00 0.00 ]
+Key: VEXPANDPDZ: [ 0.00 0.00 ]
+Key: VEXPANDPDZrm: [ 0.00 0.00 ]
+Key: VEXPANDPDZrmk: [ 0.00 0.00 ]
+Key: VEXPANDPDZrmkz: [ 0.00 0.00 ]
+Key: VEXPANDPDZrr: [ 0.00 0.00 ]
+Key: VEXPANDPDZrrk: [ 0.00 0.00 ]
+Key: VEXPANDPDZrrkz: [ 0.00 0.00 ]
+Key: VEXPANDPSZ: [ 0.00 0.00 ]
+Key: VEXPANDPSZrm: [ 0.00 0.00 ]
+Key: VEXPANDPSZrmk: [ 0.00 0.00 ]
+Key: VEXPANDPSZrmkz: [ 0.00 0.00 ]
+Key: VEXPANDPSZrr: [ 0.00 0.00 ]
+Key: VEXPANDPSZrrk: [ 0.00 0.00 ]
+Key: VEXPANDPSZrrkz: [ 0.00 0.00 ]
+Key: VEXTRACTF: [ 0.00 0.00 ]
+Key: VEXTRACTI: [ 0.00 0.00 ]
+Key: VEXTRACTPSZmri: [ 0.00 0.00 ]
+Key: VEXTRACTPSZrri: [ 0.00 0.00 ]
+Key: VEXTRACTPSmri: [ 0.00 0.00 ]
+Key: VEXTRACTPSrri: [ 0.00 0.00 ]
+Key: VFCMADDCPHZ: [ 0.00 0.00 ]
+Key: VFCMADDCPHZm: [ 0.00 0.00 ]
+Key: VFCMADDCPHZmb: [ 0.00 0.00 ]
+Key: VFCMADDCPHZmbk: [ 0.00 0.00 ]
+Key: VFCMADDCPHZmbkz: [ 0.00 0.00 ]
+Key: VFCMADDCPHZmk: [ 0.00 0.00 ]
+Key: VFCMADDCPHZmkz: [ 0.00 0.00 ]
+Key: VFCMADDCPHZr: [ 0.00 0.00 ]
+Key: VFCMADDCPHZrb: [ 0.00 0.00 ]
+Key: VFCMADDCPHZrbk: [ 0.00 0.00 ]
+Key: VFCMADDCPHZrbkz: [ 0.00 0.00 ]
+Key: VFCMADDCPHZrk: [ 0.00 0.00 ]
+Key: VFCMADDCPHZrkz: [ 0.00 0.00 ]
+Key: VFCMADDCSHZm: [ 0.00 0.00 ]
+Key: VFCMADDCSHZmk: [ 0.00 0.00 ]
+Key: VFCMADDCSHZmkz: [ 0.00 0.00 ]
+Key: VFCMADDCSHZr: [ 0.00 0.00 ]
+Key: VFCMADDCSHZrb: [ 0.00 0.00 ]
+Key: VFCMADDCSHZrbk: [ 0.00 0.00 ]
+Key: VFCMADDCSHZrbkz: [ 0.00 0.00 ]
+Key: VFCMADDCSHZrk: [ 0.00 0.00 ]
+Key: VFCMADDCSHZrkz: [ 0.00 0.00 ]
+Key: VFCMULCPHZ: [ 0.00 0.00 ]
+Key: VFCMULCPHZrm: [ 0.00 0.00 ]
+Key: VFCMULCPHZrmb: [ 0.00 0.00 ]
+Key: VFCMULCPHZrmbk: [ 0.00 0.00 ]
+Key: VFCMULCPHZrmbkz: [ 0.00 0.00 ]
+Key: VFCMULCPHZrmk: [ 0.00 0.00 ]
+Key: VFCMULCPHZrmkz: [ 0.00 0.00 ]
+Key: VFCMULCPHZrr: [ 0.00 0.00 ]
+Key: VFCMULCPHZrrb: [ 0.00 0.00 ]
+Key: VFCMULCPHZrrbk: [ 0.00 0.00 ]
+Key: VFCMULCPHZrrbkz: [ 0.00 0.00 ]
+Key: VFCMULCPHZrrk: [ 0.00 0.00 ]
+Key: VFCMULCPHZrrkz: [ 0.00 0.00 ]
+Key: VFCMULCSHZrm: [ 0.00 0.00 ]
+Key: VFCMULCSHZrmk: [ 0.00 0.00 ]
+Key: VFCMULCSHZrmkz: [ 0.00 0.00 ]
+Key: VFCMULCSHZrr: [ 0.00 0.00 ]
+Key: VFCMULCSHZrrb: [ 0.00 0.00 ]
+Key: VFCMULCSHZrrbk: [ 0.00 0.00 ]
+Key: VFCMULCSHZrrbkz: [ 0.00 0.00 ]
+Key: VFCMULCSHZrrk: [ 0.00 0.00 ]
+Key: VFCMULCSHZrrkz: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZ: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrmbi: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrmbik: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrmbikz: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrmi: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrmik: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrmikz: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrri: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrrib: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrribk: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrribkz: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrrik: [ 0.00 0.00 ]
+Key: VFIXUPIMMPDZrrikz: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZ: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrmbi: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrmbik: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrmbikz: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrmi: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrmik: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrmikz: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrri: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrrib: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrribk: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrribkz: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrrik: [ 0.00 0.00 ]
+Key: VFIXUPIMMPSZrrikz: [ 0.00 0.00 ]
+Key: VFIXUPIMMSDZrmi: [ 0.00 0.00 ]
+Key: VFIXUPIMMSDZrmik: [ 0.00 0.00 ]
+Key: VFIXUPIMMSDZrmikz: [ 0.00 0.00 ]
+Key: VFIXUPIMMSDZrri: [ 0.00 0.00 ]
+Key: VFIXUPIMMSDZrrib: [ 0.00 0.00 ]
+Key: VFIXUPIMMSDZrribk: [ 0.00 0.00 ]
+Key: VFIXUPIMMSDZrribkz: [ 0.00 0.00 ]
+Key: VFIXUPIMMSDZrrik: [ 0.00 0.00 ]
+Key: VFIXUPIMMSDZrrikz: [ 0.00 0.00 ]
+Key: VFIXUPIMMSSZrmi: [ 0.00 0.00 ]
+Key: VFIXUPIMMSSZrmik: [ 0.00 0.00 ]
+Key: VFIXUPIMMSSZrmikz: [ 0.00 0.00 ]
+Key: VFIXUPIMMSSZrri: [ 0.00 0.00 ]
+Key: VFIXUPIMMSSZrrib: [ 0.00 0.00 ]
+Key: VFIXUPIMMSSZrribk: [ 0.00 0.00 ]
+Key: VFIXUPIMMSSZrribkz: [ 0.00 0.00 ]
+Key: VFIXUPIMMSSZrrik: [ 0.00 0.00 ]
+Key: VFIXUPIMMSSZrrikz: [ 0.00 0.00 ]
+Key: VFMADD: [ 0.00 0.00 ]
+Key: VFMADDCPHZ: [ 0.00 0.00 ]
+Key: VFMADDCPHZm: [ 0.00 0.00 ]
+Key: VFMADDCPHZmb: [ 0.00 0.00 ]
+Key: VFMADDCPHZmbk: [ 0.00 0.00 ]
+Key: VFMADDCPHZmbkz: [ 0.00 0.00 ]
+Key: VFMADDCPHZmk: [ 0.00 0.00 ]
+Key: VFMADDCPHZmkz: [ 0.00 0.00 ]
+Key: VFMADDCPHZr: [ 0.00 0.00 ]
+Key: VFMADDCPHZrb: [ 0.00 0.00 ]
+Key: VFMADDCPHZrbk: [ 0.00 0.00 ]
+Key: VFMADDCPHZrbkz: [ 0.00 0.00 ]
+Key: VFMADDCPHZrk: [ 0.00 0.00 ]
+Key: VFMADDCPHZrkz: [ 0.00 0.00 ]
+Key: VFMADDCSHZm: [ 0.00 0.00 ]
+Key: VFMADDCSHZmk: [ 0.00 0.00 ]
+Key: VFMADDCSHZmkz: [ 0.00 0.00 ]
+Key: VFMADDCSHZr: [ 0.00 0.00 ]
+Key: VFMADDCSHZrb: [ 0.00 0.00 ]
+Key: VFMADDCSHZrbk: [ 0.00 0.00 ]
+Key: VFMADDCSHZrbkz: [ 0.00 0.00 ]
+Key: VFMADDCSHZrk: [ 0.00 0.00 ]
+Key: VFMADDCSHZrkz: [ 0.00 0.00 ]
+Key: VFMADDPD: [ 0.00 0.00 ]
+Key: VFMADDPS: [ 0.00 0.00 ]
+Key: VFMADDSD: [ 0.00 0.00 ]
+Key: VFMADDSS: [ 0.00 0.00 ]
+Key: VFMADDSUB: [ 0.00 0.00 ]
+Key: VFMADDSUBPD: [ 0.00 0.00 ]
+Key: VFMADDSUBPS: [ 0.00 0.00 ]
+Key: VFMSUB: [ 0.00 0.00 ]
+Key: VFMSUBADD: [ 0.00 0.00 ]
+Key: VFMSUBADDPD: [ 0.00 0.00 ]
+Key: VFMSUBADDPS: [ 0.00 0.00 ]
+Key: VFMSUBPD: [ 0.00 0.00 ]
+Key: VFMSUBPS: [ 0.00 0.00 ]
+Key: VFMSUBSD: [ 0.00 0.00 ]
+Key: VFMSUBSS: [ 0.00 0.00 ]
+Key: VFMULCPHZ: [ 0.00 0.00 ]
+Key: VFMULCPHZrm: [ 0.00 0.00 ]
+Key: VFMULCPHZrmb: [ 0.00 0.00 ]
+Key: VFMULCPHZrmbk: [ 0.00 0.00 ]
+Key: VFMULCPHZrmbkz: [ 0.00 0.00 ]
+Key: VFMULCPHZrmk: [ 0.00 0.00 ]
+Key: VFMULCPHZrmkz: [ 0.00 0.00 ]
+Key: VFMULCPHZrr: [ 0.00 0.00 ]
+Key: VFMULCPHZrrb: [ 0.00 0.00 ]
+Key: VFMULCPHZrrbk: [ 0.00 0.00 ]
+Key: VFMULCPHZrrbkz: [ 0.00 0.00 ]
+Key: VFMULCPHZrrk: [ 0.00 0.00 ]
+Key: VFMULCPHZrrkz: [ 0.00 0.00 ]
+Key: VFMULCSHZrm: [ 0.00 0.00 ]
+Key: VFMULCSHZrmk: [ 0.00 0.00 ]
+Key: VFMULCSHZrmkz: [ 0.00 0.00 ]
+Key: VFMULCSHZrr: [ 0.00 0.00 ]
+Key: VFMULCSHZrrb: [ 0.00 0.00 ]
+Key: VFMULCSHZrrbk: [ 0.00 0.00 ]
+Key: VFMULCSHZrrbkz: [ 0.00 0.00 ]
+Key: VFMULCSHZrrk: [ 0.00 0.00 ]
+Key: VFMULCSHZrrkz: [ 0.00 0.00 ]
+Key: VFNMADD: [ 0.00 0.00 ]
+Key: VFNMADDPD: [ 0.00 0.00 ]
+Key: VFNMADDPS: [ 0.00 0.00 ]
+Key: VFNMADDSD: [ 0.00 0.00 ]
+Key: VFNMADDSS: [ 0.00 0.00 ]
+Key: VFNMSUB: [ 0.00 0.00 ]
+Key: VFNMSUBPD: [ 0.00 0.00 ]
+Key: VFNMSUBPS: [ 0.00 0.00 ]
+Key: VFNMSUBSD: [ 0.00 0.00 ]
+Key: VFNMSUBSS: [ 0.00 0.00 ]
+Key: VFPCLASSBF: [ 0.00 0.00 ]
+Key: VFPCLASSPDZ: [ 0.00 0.00 ]
+Key: VFPCLASSPDZmbi: [ 0.00 0.00 ]
+Key: VFPCLASSPDZmbik: [ 0.00 0.00 ]
+Key: VFPCLASSPDZmi: [ 0.00 0.00 ]
+Key: VFPCLASSPDZmik: [ 0.00 0.00 ]
+Key: VFPCLASSPDZri: [ 0.00 0.00 ]
+Key: VFPCLASSPDZrik: [ 0.00 0.00 ]
+Key: VFPCLASSPHZ: [ 0.00 0.00 ]
+Key: VFPCLASSPHZmbi: [ 0.00 0.00 ]
+Key: VFPCLASSPHZmbik: [ 0.00 0.00 ]
+Key: VFPCLASSPHZmi: [ 0.00 0.00 ]
+Key: VFPCLASSPHZmik: [ 0.00 0.00 ]
+Key: VFPCLASSPHZri: [ 0.00 0.00 ]
+Key: VFPCLASSPHZrik: [ 0.00 0.00 ]
+Key: VFPCLASSPSZ: [ 0.00 0.00 ]
+Key: VFPCLASSPSZmbi: [ 0.00 0.00 ]
+Key: VFPCLASSPSZmbik: [ 0.00 0.00 ]
+Key: VFPCLASSPSZmi: [ 0.00 0.00 ]
+Key: VFPCLASSPSZmik: [ 0.00 0.00 ]
+Key: VFPCLASSPSZri: [ 0.00 0.00 ]
+Key: VFPCLASSPSZrik: [ 0.00 0.00 ]
+Key: VFPCLASSSDZmi: [ 0.00 0.00 ]
+Key: VFPCLASSSDZmik: [ 0.00 0.00 ]
+Key: VFPCLASSSDZri: [ 0.00 0.00 ]
+Key: VFPCLASSSDZrik: [ 0.00 0.00 ]
+Key: VFPCLASSSHZmi: [ 0.00 0.00 ]
+Key: VFPCLASSSHZmik: [ 0.00 0.00 ]
+Key: VFPCLASSSHZri: [ 0.00 0.00 ]
+Key: VFPCLASSSHZrik: [ 0.00 0.00 ]
+Key: VFPCLASSSSZmi: [ 0.00 0.00 ]
+Key: VFPCLASSSSZmik: [ 0.00 0.00 ]
+Key: VFPCLASSSSZri: [ 0.00 0.00 ]
+Key: VFPCLASSSSZrik: [ 0.00 0.00 ]
+Key: VFRCZPDYrm: [ 0.00 0.00 ]
+Key: VFRCZPDYrr: [ 0.00 0.00 ]
+Key: VFRCZPDrm: [ 0.00 0.00 ]
+Key: VFRCZPDrr: [ 0.00 0.00 ]
+Key: VFRCZPSYrm: [ 0.00 0.00 ]
+Key: VFRCZPSYrr: [ 0.00 0.00 ]
+Key: VFRCZPSrm: [ 0.00 0.00 ]
+Key: VFRCZPSrr: [ 0.00 0.00 ]
+Key: VFRCZSDrm: [ 0.00 0.00 ]
+Key: VFRCZSDrr: [ 0.00 0.00 ]
+Key: VFRCZSSrm: [ 0.00 0.00 ]
+Key: VFRCZSSrr: [ 0.00 0.00 ]
+Key: VGATHERDPDYrm: [ 0.00 0.00 ]
+Key: VGATHERDPDZ: [ 0.00 0.00 ]
+Key: VGATHERDPDZrm: [ 0.00 0.00 ]
+Key: VGATHERDPDrm: [ 0.00 0.00 ]
+Key: VGATHERDPSYrm: [ 0.00 0.00 ]
+Key: VGATHERDPSZ: [ 0.00 0.00 ]
+Key: VGATHERDPSZrm: [ 0.00 0.00 ]
+Key: VGATHERDPSrm: [ 0.00 0.00 ]
+Key: VGATHERPF: [ 0.00 0.00 ]
+Key: VGATHERQPDYrm: [ 0.00 0.00 ]
+Key: VGATHERQPDZ: [ 0.00 0.00 ]
+Key: VGATHERQPDZrm: [ 0.00 0.00 ]
+Key: VGATHERQPDrm: [ 0.00 0.00 ]
+Key: VGATHERQPSYrm: [ 0.00 0.00 ]
+Key: VGATHERQPSZ: [ 0.00 0.00 ]
+Key: VGATHERQPSZrm: [ 0.00 0.00 ]
+Key: VGATHERQPSrm: [ 0.00 0.00 ]
+Key: VGETEXPBF: [ 0.00 0.00 ]
+Key: VGETEXPPDZ: [ 0.00 0.00 ]
+Key: VGETEXPPDZm: [ 0.00 0.00 ]
+Key: VGETEXPPDZmb: [ 0.00 0.00 ]
+Key: VGETEXPPDZmbk: [ 0.00 0.00 ]
+Key: VGETEXPPDZmbkz: [ 0.00 0.00 ]
+Key: VGETEXPPDZmk: [ 0.00 0.00 ]
+Key: VGETEXPPDZmkz: [ 0.00 0.00 ]
+Key: VGETEXPPDZr: [ 0.00 0.00 ]
+Key: VGETEXPPDZrb: [ 0.00 0.00 ]
+Key: VGETEXPPDZrbk: [ 0.00 0.00 ]
+Key: VGETEXPPDZrbkz: [ 0.00 0.00 ]
+Key: VGETEXPPDZrk: [ 0.00 0.00 ]
+Key: VGETEXPPDZrkz: [ 0.00 0.00 ]
+Key: VGETEXPPHZ: [ 0.00 0.00 ]
+Key: VGETEXPPHZm: [ 0.00 0.00 ]
+Key: VGETEXPPHZmb: [ 0.00 0.00 ]
+Key: VGETEXPPHZmbk: [ 0.00 0.00 ]
+Key: VGETEXPPHZmbkz: [ 0.00 0.00 ]
+Key: VGETEXPPHZmk: [ 0.00 0.00 ]
+Key: VGETEXPPHZmkz: [ 0.00 0.00 ]
+Key: VGETEXPPHZr: [ 0.00 0.00 ]
+Key: VGETEXPPHZrb: [ 0.00 0.00 ]
+Key: VGETEXPPHZrbk: [ 0.00 0.00 ]
+Key: VGETEXPPHZrbkz: [ 0.00 0.00 ]
+Key: VGETEXPPHZrk: [ 0.00 0.00 ]
+Key: VGETEXPPHZrkz: [ 0.00 0.00 ]
+Key: VGETEXPPSZ: [ 0.00 0.00 ]
+Key: VGETEXPPSZm: [ 0.00 0.00 ]
+Key: VGETEXPPSZmb: [ 0.00 0.00 ]
+Key: VGETEXPPSZmbk: [ 0.00 0.00 ]
+Key: VGETEXPPSZmbkz: [ 0.00 0.00 ]
+Key: VGETEXPPSZmk: [ 0.00 0.00 ]
+Key: VGETEXPPSZmkz: [ 0.00 0.00 ]
+Key: VGETEXPPSZr: [ 0.00 0.00 ]
+Key: VGETEXPPSZrb: [ 0.00 0.00 ]
+Key: VGETEXPPSZrbk: [ 0.00 0.00 ]
+Key: VGETEXPPSZrbkz: [ 0.00 0.00 ]
+Key: VGETEXPPSZrk: [ 0.00 0.00 ]
+Key: VGETEXPPSZrkz: [ 0.00 0.00 ]
+Key: VGETEXPSDZm: [ 0.00 0.00 ]
+Key: VGETEXPSDZmk: [ 0.00 0.00 ]
+Key: VGETEXPSDZmkz: [ 0.00 0.00 ]
+Key: VGETEXPSDZr: [ 0.00 0.00 ]
+Key: VGETEXPSDZrb: [ 0.00 0.00 ]
+Key: VGETEXPSDZrbk: [ 0.00 0.00 ]
+Key: VGETEXPSDZrbkz: [ 0.00 0.00 ]
+Key: VGETEXPSDZrk: [ 0.00 0.00 ]
+Key: VGETEXPSDZrkz: [ 0.00 0.00 ]
+Key: VGETEXPSHZm: [ 0.00 0.00 ]
+Key: VGETEXPSHZmk: [ 0.00 0.00 ]
+Key: VGETEXPSHZmkz: [ 0.00 0.00 ]
+Key: VGETEXPSHZr: [ 0.00 0.00 ]
+Key: VGETEXPSHZrb: [ 0.00 0.00 ]
+Key: VGETEXPSHZrbk: [ 0.00 0.00 ]
+Key: VGETEXPSHZrbkz: [ 0.00 0.00 ]
+Key: VGETEXPSHZrk: [ 0.00 0.00 ]
+Key: VGETEXPSHZrkz: [ 0.00 0.00 ]
+Key: VGETEXPSSZm: [ 0.00 0.00 ]
+Key: VGETEXPSSZmk: [ 0.00 0.00 ]
+Key: VGETEXPSSZmkz: [ 0.00 0.00 ]
+Key: VGETEXPSSZr: [ 0.00 0.00 ]
+Key: VGETEXPSSZrb: [ 0.00 0.00 ]
+Key: VGETEXPSSZrbk: [ 0.00 0.00 ]
+Key: VGETEXPSSZrbkz: [ 0.00 0.00 ]
+Key: VGETEXPSSZrk: [ 0.00 0.00 ]
+Key: VGETEXPSSZrkz: [ 0.00 0.00 ]
+Key: VGETMANTBF: [ 0.00 0.00 ]
+Key: VGETMANTPDZ: [ 0.00 0.00 ]
+Key: VGETMANTPDZrmbi: [ 0.00 0.00 ]
+Key: VGETMANTPDZrmbik: [ 0.00 0.00 ]
+Key: VGETMANTPDZrmbikz: [ 0.00 0.00 ]
+Key: VGETMANTPDZrmi: [ 0.00 0.00 ]
+Key: VGETMANTPDZrmik: [ 0.00 0.00 ]
+Key: VGETMANTPDZrmikz: [ 0.00 0.00 ]
+Key: VGETMANTPDZrri: [ 0.00 0.00 ]
+Key: VGETMANTPDZrrib: [ 0.00 0.00 ]
+Key: VGETMANTPDZrribk: [ 0.00 0.00 ]
+Key: VGETMANTPDZrribkz: [ 0.00 0.00 ]
+Key: VGETMANTPDZrrik: [ 0.00 0.00 ]
+Key: VGETMANTPDZrrikz: [ 0.00 0.00 ]
+Key: VGETMANTPHZ: [ 0.00 0.00 ]
+Key: VGETMANTPHZrmbi: [ 0.00 0.00 ]
+Key: VGETMANTPHZrmbik: [ 0.00 0.00 ]
+Key: VGETMANTPHZrmbikz: [ 0.00 0.00 ]
+Key: VGETMANTPHZrmi: [ 0.00 0.00 ]
+Key: VGETMANTPHZrmik: [ 0.00 0.00 ]
+Key: VGETMANTPHZrmikz: [ 0.00 0.00 ]
+Key: VGETMANTPHZrri: [ 0.00 0.00 ]
+Key: VGETMANTPHZrrib: [ 0.00 0.00 ]
+Key: VGETMANTPHZrribk: [ 0.00 0.00 ]
+Key: VGETMANTPHZrribkz: [ 0.00 0.00 ]
+Key: VGETMANTPHZrrik: [ 0.00 0.00 ]
+Key: VGETMANTPHZrrikz: [ 0.00 0.00 ]
+Key: VGETMANTPSZ: [ 0.00 0.00 ]
+Key: VGETMANTPSZrmbi: [ 0.00 0.00 ]
+Key: VGETMANTPSZrmbik: [ 0.00 0.00 ]
+Key: VGETMANTPSZrmbikz: [ 0.00 0.00 ]
+Key: VGETMANTPSZrmi: [ 0.00 0.00 ]
+Key: VGETMANTPSZrmik: [ 0.00 0.00 ]
+Key: VGETMANTPSZrmikz: [ 0.00 0.00 ]
+Key: VGETMANTPSZrri: [ 0.00 0.00 ]
+Key: VGETMANTPSZrrib: [ 0.00 0.00 ]
+Key: VGETMANTPSZrribk: [ 0.00 0.00 ]
+Key: VGETMANTPSZrribkz: [ 0.00 0.00 ]
+Key: VGETMANTPSZrrik: [ 0.00 0.00 ]
+Key: VGETMANTPSZrrikz: [ 0.00 0.00 ]
+Key: VGETMANTSDZrmi: [ 0.00 0.00 ]
+Key: VGETMANTSDZrmik: [ 0.00 0.00 ]
+Key: VGETMANTSDZrmikz: [ 0.00 0.00 ]
+Key: VGETMANTSDZrri: [ 0.00 0.00 ]
+Key: VGETMANTSDZrrib: [ 0.00 0.00 ]
+Key: VGETMANTSDZrribk: [ 0.00 0.00 ]
+Key: VGETMANTSDZrribkz: [ 0.00 0.00 ]
+Key: VGETMANTSDZrrik: [ 0.00 0.00 ]
+Key: VGETMANTSDZrrikz: [ 0.00 0.00 ]
+Key: VGETMANTSHZrmi: [ 0.00 0.00 ]
+Key: VGETMANTSHZrmik: [ 0.00 0.00 ]
+Key: VGETMANTSHZrmikz: [ 0.00 0.00 ]
+Key: VGETMANTSHZrri: [ 0.00 0.00 ]
+Key: VGETMANTSHZrrib: [ 0.00 0.00 ]
+Key: VGETMANTSHZrribk: [ 0.00 0.00 ]
+Key: VGETMANTSHZrribkz: [ 0.00 0.00 ]
+Key: VGETMANTSHZrrik: [ 0.00 0.00 ]
+Key: VGETMANTSHZrrikz: [ 0.00 0.00 ]
+Key: VGETMANTSSZrmi: [ 0.00 0.00 ]
+Key: VGETMANTSSZrmik: [ 0.00 0.00 ]
+Key: VGETMANTSSZrmikz: [ 0.00 0.00 ]
+Key: VGETMANTSSZrri: [ 0.00 0.00 ]
+Key: VGETMANTSSZrrib: [ 0.00 0.00 ]
+Key: VGETMANTSSZrribk: [ 0.00 0.00 ]
+Key: VGETMANTSSZrribkz: [ 0.00 0.00 ]
+Key: VGETMANTSSZrrik: [ 0.00 0.00 ]
+Key: VGETMANTSSZrrikz: [ 0.00 0.00 ]
+Key: VGF: [ 0.00 0.00 ]
+Key: VHADDPDYrm: [ 0.00 0.00 ]
+Key: VHADDPDYrr: [ 0.00 0.00 ]
+Key: VHADDPDrm: [ 0.00 0.00 ]
+Key: VHADDPDrr: [ 0.00 0.00 ]
+Key: VHADDPSYrm: [ 0.00 0.00 ]
+Key: VHADDPSYrr: [ 0.00 0.00 ]
+Key: VHADDPSrm: [ 0.00 0.00 ]
+Key: VHADDPSrr: [ 0.00 0.00 ]
+Key: VHSUBPDYrm: [ 0.00 0.00 ]
+Key: VHSUBPDYrr: [ 0.00 0.00 ]
+Key: VHSUBPDrm: [ 0.00 0.00 ]
+Key: VHSUBPDrr: [ 0.00 0.00 ]
+Key: VHSUBPSYrm: [ 0.00 0.00 ]
+Key: VHSUBPSYrr: [ 0.00 0.00 ]
+Key: VHSUBPSrm: [ 0.00 0.00 ]
+Key: VHSUBPSrr: [ 0.00 0.00 ]
+Key: VINSERTF: [ 0.00 0.00 ]
+Key: VINSERTI: [ 0.00 0.00 ]
+Key: VINSERTPSZrmi: [ 0.00 0.00 ]
+Key: VINSERTPSZrri: [ 0.00 0.00 ]
+Key: VINSERTPSrmi: [ 0.00 0.00 ]
+Key: VINSERTPSrri: [ 0.00 0.00 ]
+Key: VLDDQUYrm: [ 0.00 0.00 ]
+Key: VLDDQUrm: [ 0.00 0.00 ]
+Key: VLDMXCSR: [ 0.00 0.00 ]
+Key: VMASKMOVDQU: [ 0.00 0.00 ]
+Key: VMASKMOVPDYmr: [ 0.00 0.00 ]
+Key: VMASKMOVPDYrm: [ 0.00 0.00 ]
+Key: VMASKMOVPDmr: [ 0.00 0.00 ]
+Key: VMASKMOVPDrm: [ 0.00 0.00 ]
+Key: VMASKMOVPSYmr: [ 0.00 0.00 ]
+Key: VMASKMOVPSYrm: [ 0.00 0.00 ]
+Key: VMASKMOVPSmr: [ 0.00 0.00 ]
+Key: VMASKMOVPSrm: [ 0.00 0.00 ]
+Key: VMAXBF: [ 0.00 0.00 ]
+Key: VMAXCPDYrm: [ 0.00 0.00 ]
+Key: VMAXCPDYrr: [ 0.00 0.00 ]
+Key: VMAXCPDZ: [ 0.00 0.00 ]
+Key: VMAXCPDZrm: [ 0.00 0.00 ]
+Key: VMAXCPDZrmb: [ 0.00 0.00 ]
+Key: VMAXCPDZrmbk: [ 0.00 0.00 ]
+Key: VMAXCPDZrmbkz: [ 0.00 0.00 ]
+Key: VMAXCPDZrmk: [ 0.00 0.00 ]
+Key: VMAXCPDZrmkz: [ 0.00 0.00 ]
+Key: VMAXCPDZrr: [ 0.00 0.00 ]
+Key: VMAXCPDZrrk: [ 0.00 0.00 ]
+Key: VMAXCPDZrrkz: [ 0.00 0.00 ]
+Key: VMAXCPDrm: [ 0.00 0.00 ]
+Key: VMAXCPDrr: [ 0.00 0.00 ]
+Key: VMAXCPHZ: [ 0.00 0.00 ]
+Key: VMAXCPHZrm: [ 0.00 0.00 ]
+Key: VMAXCPHZrmb: [ 0.00 0.00 ]
+Key: VMAXCPHZrmbk: [ 0.00 0.00 ]
+Key: VMAXCPHZrmbkz: [ 0.00 0.00 ]
+Key: VMAXCPHZrmk: [ 0.00 0.00 ]
+Key: VMAXCPHZrmkz: [ 0.00 0.00 ]
+Key: VMAXCPHZrr: [ 0.00 0.00 ]
+Key: VMAXCPHZrrk: [ 0.00 0.00 ]
+Key: VMAXCPHZrrkz: [ 0.00 0.00 ]
+Key: VMAXCPSYrm: [ 0.00 0.00 ]
+Key: VMAXCPSYrr: [ 0.00 0.00 ]
+Key: VMAXCPSZ: [ 0.00 0.00 ]
+Key: VMAXCPSZrm: [ 0.00 0.00 ]
+Key: VMAXCPSZrmb: [ 0.00 0.00 ]
+Key: VMAXCPSZrmbk: [ 0.00 0.00 ]
+Key: VMAXCPSZrmbkz: [ 0.00 0.00 ]
+Key: VMAXCPSZrmk: [ 0.00 0.00 ]
+Key: VMAXCPSZrmkz: [ 0.00 0.00 ]
+Key: VMAXCPSZrr: [ 0.00 0.00 ]
+Key: VMAXCPSZrrk: [ 0.00 0.00 ]
+Key: VMAXCPSZrrkz: [ 0.00 0.00 ]
+Key: VMAXCPSrm: [ 0.00 0.00 ]
+Key: VMAXCPSrr: [ 0.00 0.00 ]
+Key: VMAXCSDZrm: [ 0.00 0.00 ]
+Key: VMAXCSDZrr: [ 0.00 0.00 ]
+Key: VMAXCSDrm: [ 0.00 0.00 ]
+Key: VMAXCSDrr: [ 0.00 0.00 ]
+Key: VMAXCSHZrm: [ 0.00 0.00 ]
+Key: VMAXCSHZrr: [ 0.00 0.00 ]
+Key: VMAXCSSZrm: [ 0.00 0.00 ]
+Key: VMAXCSSZrr: [ 0.00 0.00 ]
+Key: VMAXCSSrm: [ 0.00 0.00 ]
+Key: VMAXCSSrr: [ 0.00 0.00 ]
+Key: VMAXPDYrm: [ 0.00 0.00 ]
+Key: VMAXPDYrr: [ 0.00 0.00 ]
+Key: VMAXPDZ: [ 0.00 0.00 ]
+Key: VMAXPDZrm: [ 0.00 0.00 ]
+Key: VMAXPDZrmb: [ 0.00 0.00 ]
+Key: VMAXPDZrmbk: [ 0.00 0.00 ]
+Key: VMAXPDZrmbkz: [ 0.00 0.00 ]
+Key: VMAXPDZrmk: [ 0.00 0.00 ]
+Key: VMAXPDZrmkz: [ 0.00 0.00 ]
+Key: VMAXPDZrr: [ 0.00 0.00 ]
+Key: VMAXPDZrrb: [ 0.00 0.00 ]
+Key: VMAXPDZrrbk: [ 0.00 0.00 ]
+Key: VMAXPDZrrbkz: [ 0.00 0.00 ]
+Key: VMAXPDZrrk: [ 0.00 0.00 ]
+Key: VMAXPDZrrkz: [ 0.00 0.00 ]
+Key: VMAXPDrm: [ 0.00 0.00 ]
+Key: VMAXPDrr: [ 0.00 0.00 ]
+Key: VMAXPHZ: [ 0.00 0.00 ]
+Key: VMAXPHZrm: [ 0.00 0.00 ]
+Key: VMAXPHZrmb: [ 0.00 0.00 ]
+Key: VMAXPHZrmbk: [ 0.00 0.00 ]
+Key: VMAXPHZrmbkz: [ 0.00 0.00 ]
+Key: VMAXPHZrmk: [ 0.00 0.00 ]
+Key: VMAXPHZrmkz: [ 0.00 0.00 ]
+Key: VMAXPHZrr: [ 0.00 0.00 ]
+Key: VMAXPHZrrb: [ 0.00 0.00 ]
+Key: VMAXPHZrrbk: [ 0.00 0.00 ]
+Key: VMAXPHZrrbkz: [ 0.00 0.00 ]
+Key: VMAXPHZrrk: [ 0.00 0.00 ]
+Key: VMAXPHZrrkz: [ 0.00 0.00 ]
+Key: VMAXPSYrm: [ 0.00 0.00 ]
+Key: VMAXPSYrr: [ 0.00 0.00 ]
+Key: VMAXPSZ: [ 0.00 0.00 ]
+Key: VMAXPSZrm: [ 0.00 0.00 ]
+Key: VMAXPSZrmb: [ 0.00 0.00 ]
+Key: VMAXPSZrmbk: [ 0.00 0.00 ]
+Key: VMAXPSZrmbkz: [ 0.00 0.00 ]
+Key: VMAXPSZrmk: [ 0.00 0.00 ]
+Key: VMAXPSZrmkz: [ 0.00 0.00 ]
+Key: VMAXPSZrr: [ 0.00 0.00 ]
+Key: VMAXPSZrrb: [ 0.00 0.00 ]
+Key: VMAXPSZrrbk: [ 0.00 0.00 ]
+Key: VMAXPSZrrbkz: [ 0.00 0.00 ]
+Key: VMAXPSZrrk: [ 0.00 0.00 ]
+Key: VMAXPSZrrkz: [ 0.00 0.00 ]
+Key: VMAXPSrm: [ 0.00 0.00 ]
+Key: VMAXPSrr: [ 0.00 0.00 ]
+Key: VMAXSDZrm: [ 0.00 0.00 ]
+Key: VMAXSDZrm_Int: [ 0.00 0.00 ]
+Key: VMAXSDZrmk_Int: [ 0.00 0.00 ]
+Key: VMAXSDZrmkz_Int: [ 0.00 0.00 ]
+Key: VMAXSDZrr: [ 0.00 0.00 ]
+Key: VMAXSDZrr_Int: [ 0.00 0.00 ]
+Key: VMAXSDZrrb_Int: [ 0.00 0.00 ]
+Key: VMAXSDZrrbk_Int: [ 0.00 0.00 ]
+Key: VMAXSDZrrbkz_Int: [ 0.00 0.00 ]
+Key: VMAXSDZrrk_Int: [ 0.00 0.00 ]
+Key: VMAXSDZrrkz_Int: [ 0.00 0.00 ]
+Key: VMAXSDrm: [ 0.00 0.00 ]
+Key: VMAXSDrm_Int: [ 0.00 0.00 ]
+Key: VMAXSDrr: [ 0.00 0.00 ]
+Key: VMAXSDrr_Int: [ 0.00 0.00 ]
+Key: VMAXSHZrm: [ 0.00 0.00 ]
+Key: VMAXSHZrm_Int: [ 0.00 0.00 ]
+Key: VMAXSHZrmk_Int: [ 0.00 0.00 ]
+Key: VMAXSHZrmkz_Int: [ 0.00 0.00 ]
+Key: VMAXSHZrr: [ 0.00 0.00 ]
+Key: VMAXSHZrr_Int: [ 0.00 0.00 ]
+Key: VMAXSHZrrb_Int: [ 0.00 0.00 ]
+Key: VMAXSHZrrbk_Int: [ 0.00 0.00 ]
+Key: VMAXSHZrrbkz_Int: [ 0.00 0.00 ]
+Key: VMAXSHZrrk_Int: [ 0.00 0.00 ]
+Key: VMAXSHZrrkz_Int: [ 0.00 0.00 ]
+Key: VMAXSSZrm: [ 0.00 0.00 ]
+Key: VMAXSSZrm_Int: [ 0.00 0.00 ]
+Key: VMAXSSZrmk_Int: [ 0.00 0.00 ]
+Key: VMAXSSZrmkz_Int: [ 0.00 0.00 ]
+Key: VMAXSSZrr: [ 0.00 0.00 ]
+Key: VMAXSSZrr_Int: [ 0.00 0.00 ]
+Key: VMAXSSZrrb_Int: [ 0.00 0.00 ]
+Key: VMAXSSZrrbk_Int: [ 0.00 0.00 ]
+Key: VMAXSSZrrbkz_Int: [ 0.00 0.00 ]
+Key: VMAXSSZrrk_Int: [ 0.00 0.00 ]
+Key: VMAXSSZrrkz_Int: [ 0.00 0.00 ]
+Key: VMAXSSrm: [ 0.00 0.00 ]
+Key: VMAXSSrm_Int: [ 0.00 0.00 ]
+Key: VMAXSSrr: [ 0.00 0.00 ]
+Key: VMAXSSrr_Int: [ 0.00 0.00 ]
+Key: VMCALL: [ 0.00 0.00 ]
+Key: VMCLEARm: [ 0.00 0.00 ]
+Key: VMFUNC: [ 0.00 0.00 ]
+Key: VMINBF: [ 0.00 0.00 ]
+Key: VMINCPDYrm: [ 0.00 0.00 ]
+Key: VMINCPDYrr: [ 0.00 0.00 ]
+Key: VMINCPDZ: [ 0.00 0.00 ]
+Key: VMINCPDZrm: [ 0.00 0.00 ]
+Key: VMINCPDZrmb: [ 0.00 0.00 ]
+Key: VMINCPDZrmbk: [ 0.00 0.00 ]
+Key: VMINCPDZrmbkz: [ 0.00 0.00 ]
+Key: VMINCPDZrmk: [ 0.00 0.00 ]
+Key: VMINCPDZrmkz: [ 0.00 0.00 ]
+Key: VMINCPDZrr: [ 0.00 0.00 ]
+Key: VMINCPDZrrk: [ 0.00 0.00 ]
+Key: VMINCPDZrrkz: [ 0.00 0.00 ]
+Key: VMINCPDrm: [ 0.00 0.00 ]
+Key: VMINCPDrr: [ 0.00 0.00 ]
+Key: VMINCPHZ: [ 0.00 0.00 ]
+Key: VMINCPHZrm: [ 0.00 0.00 ]
+Key: VMINCPHZrmb: [ 0.00 0.00 ]
+Key: VMINCPHZrmbk: [ 0.00 0.00 ]
+Key: VMINCPHZrmbkz: [ 0.00 0.00 ]
+Key: VMINCPHZrmk: [ 0.00 0.00 ]
+Key: VMINCPHZrmkz: [ 0.00 0.00 ]
+Key: VMINCPHZrr: [ 0.00 0.00 ]
+Key: VMINCPHZrrk: [ 0.00 0.00 ]
+Key: VMINCPHZrrkz: [ 0.00 0.00 ]
+Key: VMINCPSYrm: [ 0.00 0.00 ]
+Key: VMINCPSYrr: [ 0.00 0.00 ]
+Key: VMINCPSZ: [ 0.00 0.00 ]
+Key: VMINCPSZrm: [ 0.00 0.00 ]
+Key: VMINCPSZrmb: [ 0.00 0.00 ]
+Key: VMINCPSZrmbk: [ 0.00 0.00 ]
+Key: VMINCPSZrmbkz: [ 0.00 0.00 ]
+Key: VMINCPSZrmk: [ 0.00 0.00 ]
+Key: VMINCPSZrmkz: [ 0.00 0.00 ]
+Key: VMINCPSZrr: [ 0.00 0.00 ]
+Key: VMINCPSZrrk: [ 0.00 0.00 ]
+Key: VMINCPSZrrkz: [ 0.00 0.00 ]
+Key: VMINCPSrm: [ 0.00 0.00 ]
+Key: VMINCPSrr: [ 0.00 0.00 ]
+Key: VMINCSDZrm: [ 0.00 0.00 ]
+Key: VMINCSDZrr: [ 0.00 0.00 ]
+Key: VMINCSDrm: [ 0.00 0.00 ]
+Key: VMINCSDrr: [ 0.00 0.00 ]
+Key: VMINCSHZrm: [ 0.00 0.00 ]
+Key: VMINCSHZrr: [ 0.00 0.00 ]
+Key: VMINCSSZrm: [ 0.00 0.00 ]
+Key: VMINCSSZrr: [ 0.00 0.00 ]
+Key: VMINCSSrm: [ 0.00 0.00 ]
+Key: VMINCSSrr: [ 0.00 0.00 ]
+Key: VMINMAXBF: [ 0.00 0.00 ]
+Key: VMINMAXPDZ: [ 0.00 0.00 ]
+Key: VMINMAXPDZrmbi: [ 0.00 0.00 ]
+Key: VMINMAXPDZrmbik: [ 0.00 0.00 ]
+Key: VMINMAXPDZrmbikz: [ 0.00 0.00 ]
+Key: VMINMAXPDZrmi: [ 0.00 0.00 ]
+Key: VMINMAXPDZrmik: [ 0.00 0.00 ]
+Key: VMINMAXPDZrmikz: [ 0.00 0.00 ]
+Key: VMINMAXPDZrri: [ 0.00 0.00 ]
+Key: VMINMAXPDZrrib: [ 0.00 0.00 ]
+Key: VMINMAXPDZrribk: [ 0.00 0.00 ]
+Key: VMINMAXPDZrribkz: [ 0.00 0.00 ]
+Key: VMINMAXPDZrrik: [ 0.00 0.00 ]
+Key: VMINMAXPDZrrikz: [ 0.00 0.00 ]
+Key: VMINMAXPHZ: [ 0.00 0.00 ]
+Key: VMINMAXPHZrmbi: [ 0.00 0.00 ]
+Key: VMINMAXPHZrmbik: [ 0.00 0.00 ]
+Key: VMINMAXPHZrmbikz: [ 0.00 0.00 ]
+Key: VMINMAXPHZrmi: [ 0.00 0.00 ]
+Key: VMINMAXPHZrmik: [ 0.00 0.00 ]
+Key: VMINMAXPHZrmikz: [ 0.00 0.00 ]
+Key: VMINMAXPHZrri: [ 0.00 0.00 ]
+Key: VMINMAXPHZrrib: [ 0.00 0.00 ]
+Key: VMINMAXPHZrribk: [ 0.00 0.00 ]
+Key: VMINMAXPHZrribkz: [ 0.00 0.00 ]
+Key: VMINMAXPHZrrik: [ 0.00 0.00 ]
+Key: VMINMAXPHZrrikz: [ 0.00 0.00 ]
+Key: VMINMAXPSZ: [ 0.00 0.00 ]
+Key: VMINMAXPSZrmbi: [ 0.00 0.00 ]
+Key: VMINMAXPSZrmbik: [ 0.00 0.00 ]
+Key: VMINMAXPSZrmbikz: [ 0.00 0.00 ]
+Key: VMINMAXPSZrmi: [ 0.00 0.00 ]
+Key: VMINMAXPSZrmik: [ 0.00 0.00 ]
+Key: VMINMAXPSZrmikz: [ 0.00 0.00 ]
+Key: VMINMAXPSZrri: [ 0.00 0.00 ]
+Key: VMINMAXPSZrrib: [ 0.00 0.00 ]
+Key: VMINMAXPSZrribk: [ 0.00 0.00 ]
+Key: VMINMAXPSZrribkz: [ 0.00 0.00 ]
+Key: VMINMAXPSZrrik: [ 0.00 0.00 ]
+Key: VMINMAXPSZrrikz: [ 0.00 0.00 ]
+Key: VMINMAXSDrmi: [ 0.00 0.00 ]
+Key: VMINMAXSDrmi_Int: [ 0.00 0.00 ]
+Key: VMINMAXSDrmik_Int: [ 0.00 0.00 ]
+Key: VMINMAXSDrmikz_Int: [ 0.00 0.00 ]
+Key: VMINMAXSDrri: [ 0.00 0.00 ]
+Key: VMINMAXSDrri_Int: [ 0.00 0.00 ]
+Key: VMINMAXSDrrib_Int: [ 0.00 0.00 ]
+Key: VMINMAXSDrribk_Int: [ 0.00 0.00 ]
+Key: VMINMAXSDrribkz_Int: [ 0.00 0.00 ]
+Key: VMINMAXSDrrik_Int: [ 0.00 0.00 ]
+Key: VMINMAXSDrrikz_Int: [ 0.00 0.00 ]
+Key: VMINMAXSHrmi: [ 0.00 0.00 ]
+Key: VMINMAXSHrmi_Int: [ 0.00 0.00 ]
+Key: VMINMAXSHrmik_Int: [ 0.00 0.00 ]
+Key: VMINMAXSHrmikz_Int: [ 0.00 0.00 ]
+Key: VMINMAXSHrri: [ 0.00 0.00 ]
+Key: VMINMAXSHrri_Int: [ 0.00 0.00 ]
+Key: VMINMAXSHrrib_Int: [ 0.00 0.00 ]
+Key: VMINMAXSHrribk_Int: [ 0.00 0.00 ]
+Key: VMINMAXSHrribkz_Int: [ 0.00 0.00 ]
+Key: VMINMAXSHrrik_Int: [ 0.00 0.00 ]
+Key: VMINMAXSHrrikz_Int: [ 0.00 0.00 ]
+Key: VMINMAXSSrmi: [ 0.00 0.00 ]
+Key: VMINMAXSSrmi_Int: [ 0.00 0.00 ]
+Key: VMINMAXSSrmik_Int: [ 0.00 0.00 ]
+Key: VMINMAXSSrmikz_Int: [ 0.00 0.00 ]
+Key: VMINMAXSSrri: [ 0.00 0.00 ]
+Key: VMINMAXSSrri_Int: [ 0.00 0.00 ]
+Key: VMINMAXSSrrib_Int: [ 0.00 0.00 ]
+Key: VMINMAXSSrribk_Int: [ 0.00 0.00 ]
+Key: VMINMAXSSrribkz_Int: [ 0.00 0.00 ]
+Key: VMINMAXSSrrik_Int: [ 0.00 0.00 ]
+Key: VMINMAXSSrrikz_Int: [ 0.00 0.00 ]
+Key: VMINPDYrm: [ 0.00 0.00 ]
+Key: VMINPDYrr: [ 0.00 0.00 ]
+Key: VMINPDZ: [ 0.00 0.00 ]
+Key: VMINPDZrm: [ 0.00 0.00 ]
+Key: VMINPDZrmb: [ 0.00 0.00 ]
+Key: VMINPDZrmbk: [ 0.00 0.00 ]
+Key: VMINPDZrmbkz: [ 0.00 0.00 ]
+Key: VMINPDZrmk: [ 0.00 0.00 ]
+Key: VMINPDZrmkz: [ 0.00 0.00 ]
+Key: VMINPDZrr: [ 0.00 0.00 ]
+Key: VMINPDZrrb: [ 0.00 0.00 ]
+Key: VMINPDZrrbk: [ 0.00 0.00 ]
+Key: VMINPDZrrbkz: [ 0.00 0.00 ]
+Key: VMINPDZrrk: [ 0.00 0.00 ]
+Key: VMINPDZrrkz: [ 0.00 0.00 ]
+Key: VMINPDrm: [ 0.00 0.00 ]
+Key: VMINPDrr: [ 0.00 0.00 ]
+Key: VMINPHZ: [ 0.00 0.00 ]
+Key: VMINPHZrm: [ 0.00 0.00 ]
+Key: VMINPHZrmb: [ 0.00 0.00 ]
+Key: VMINPHZrmbk: [ 0.00 0.00 ]
+Key: VMINPHZrmbkz: [ 0.00 0.00 ]
+Key: VMINPHZrmk: [ 0.00 0.00 ]
+Key: VMINPHZrmkz: [ 0.00 0.00 ]
+Key: VMINPHZrr: [ 0.00 0.00 ]
+Key: VMINPHZrrb: [ 0.00 0.00 ]
+Key: VMINPHZrrbk: [ 0.00 0.00 ]
+Key: VMINPHZrrbkz: [ 0.00 0.00 ]
+Key: VMINPHZrrk: [ 0.00 0.00 ]
+Key: VMINPHZrrkz: [ 0.00 0.00 ]
+Key: VMINPSYrm: [ 0.00 0.00 ]
+Key: VMINPSYrr: [ 0.00 0.00 ]
+Key: VMINPSZ: [ 0.00 0.00 ]
+Key: VMINPSZrm: [ 0.00 0.00 ]
+Key: VMINPSZrmb: [ 0.00 0.00 ]
+Key: VMINPSZrmbk: [ 0.00 0.00 ]
+Key: VMINPSZrmbkz: [ 0.00 0.00 ]
+Key: VMINPSZrmk: [ 0.00 0.00 ]
+Key: VMINPSZrmkz: [ 0.00 0.00 ]
+Key: VMINPSZrr: [ 0.00 0.00 ]
+Key: VMINPSZrrb: [ 0.00 0.00 ]
+Key: VMINPSZrrbk: [ 0.00 0.00 ]
+Key: VMINPSZrrbkz: [ 0.00 0.00 ]
+Key: VMINPSZrrk: [ 0.00 0.00 ]
+Key: VMINPSZrrkz: [ 0.00 0.00 ]
+Key: VMINPSrm: [ 0.00 0.00 ]
+Key: VMINPSrr: [ 0.00 0.00 ]
+Key: VMINSDZrm: [ 0.00 0.00 ]
+Key: VMINSDZrm_Int: [ 0.00 0.00 ]
+Key: VMINSDZrmk_Int: [ 0.00 0.00 ]
+Key: VMINSDZrmkz_Int: [ 0.00 0.00 ]
+Key: VMINSDZrr: [ 0.00 0.00 ]
+Key: VMINSDZrr_Int: [ 0.00 0.00 ]
+Key: VMINSDZrrb_Int: [ 0.00 0.00 ]
+Key: VMINSDZrrbk_Int: [ 0.00 0.00 ]
+Key: VMINSDZrrbkz_Int: [ 0.00 0.00 ]
+Key: VMINSDZrrk_Int: [ 0.00 0.00 ]
+Key: VMINSDZrrkz_Int: [ 0.00 0.00 ]
+Key: VMINSDrm: [ 0.00 0.00 ]
+Key: VMINSDrm_Int: [ 0.00 0.00 ]
+Key: VMINSDrr: [ 0.00 0.00 ]
+Key: VMINSDrr_Int: [ 0.00 0.00 ]
+Key: VMINSHZrm: [ 0.00 0.00 ]
+Key: VMINSHZrm_Int: [ 0.00 0.00 ]
+Key: VMINSHZrmk_Int: [ 0.00 0.00 ]
+Key: VMINSHZrmkz_Int: [ 0.00 0.00 ]
+Key: VMINSHZrr: [ 0.00 0.00 ]
+Key: VMINSHZrr_Int: [ 0.00 0.00 ]
+Key: VMINSHZrrb_Int: [ 0.00 0.00 ]
+Key: VMINSHZrrbk_Int: [ 0.00 0.00 ]
+Key: VMINSHZrrbkz_Int: [ 0.00 0.00 ]
+Key: VMINSHZrrk_Int: [ 0.00 0.00 ]
+Key: VMINSHZrrkz_Int: [ 0.00 0.00 ]
+Key: VMINSSZrm: [ 0.00 0.00 ]
+Key: VMINSSZrm_Int: [ 0.00 0.00 ]
+Key: VMINSSZrmk_Int: [ 0.00 0.00 ]
+Key: VMINSSZrmkz_Int: [ 0.00 0.00 ]
+Key: VMINSSZrr: [ 0.00 0.00 ]
+Key: VMINSSZrr_Int: [ 0.00 0.00 ]
+Key: VMINSSZrrb_Int: [ 0.00 0.00 ]
+Key: VMINSSZrrbk_Int: [ 0.00 0.00 ]
+Key: VMINSSZrrbkz_Int: [ 0.00 0.00 ]
+Key: VMINSSZrrk_Int: [ 0.00 0.00 ]
+Key: VMINSSZrrkz_Int: [ 0.00 0.00 ]
+Key: VMINSSrm: [ 0.00 0.00 ]
+Key: VMINSSrm_Int: [ 0.00 0.00 ]
+Key: VMINSSrr: [ 0.00 0.00 ]
+Key: VMINSSrr_Int: [ 0.00 0.00 ]
+Key: VMLAUNCH: [ 0.00 0.00 ]
+Key: VMLOAD: [ 0.00 0.00 ]
+Key: VMMCALL: [ 0.00 0.00 ]
+Key: VMOV: [ 0.00 0.00 ]
+Key: VMOVAPDYmr: [ 0.00 0.00 ]
+Key: VMOVAPDYrm: [ 0.00 0.00 ]
+Key: VMOVAPDYrr: [ 0.00 0.00 ]
+Key: VMOVAPDYrr_REV: [ 0.00 0.00 ]
+Key: VMOVAPDZ: [ 0.00 0.00 ]
+Key: VMOVAPDZmr: [ 0.00 0.00 ]
+Key: VMOVAPDZmrk: [ 0.00 0.00 ]
+Key: VMOVAPDZrm: [ 0.00 0.00 ]
+Key: VMOVAPDZrmk: [ 0.00 0.00 ]
+Key: VMOVAPDZrmkz: [ 0.00 0.00 ]
+Key: VMOVAPDZrr: [ 0.00 0.00 ]
+Key: VMOVAPDZrr_REV: [ 0.00 0.00 ]
+Key: VMOVAPDZrrk: [ 0.00 0.00 ]
+Key: VMOVAPDZrrk_REV: [ 0.00 0.00 ]
+Key: VMOVAPDZrrkz: [ 0.00 0.00 ]
+Key: VMOVAPDZrrkz_REV: [ 0.00 0.00 ]
+Key: VMOVAPDmr: [ 0.00 0.00 ]
+Key: VMOVAPDrm: [ 0.00 0.00 ]
+Key: VMOVAPDrr: [ 0.00 0.00 ]
+Key: VMOVAPDrr_REV: [ 0.00 0.00 ]
+Key: VMOVAPSYmr: [ 0.00 0.00 ]
+Key: VMOVAPSYrm: [ 0.00 0.00 ]
+Key: VMOVAPSYrr: [ 0.00 0.00 ]
+Key: VMOVAPSYrr_REV: [ 0.00 0.00 ]
+Key: VMOVAPSZ: [ 0.00 0.00 ]
+Key: VMOVAPSZmr: [ 0.00 0.00 ]
+Key: VMOVAPSZmrk: [ 0.00 0.00 ]
+Key: VMOVAPSZrm: [ 0.00 0.00 ]
+Key: VMOVAPSZrmk: [ 0.00 0.00 ]
+Key: VMOVAPSZrmkz: [ 0.00 0.00 ]
+Key: VMOVAPSZrr: [ 0.00 0.00 ]
+Key: VMOVAPSZrr_REV: [ 0.00 0.00 ]
+Key: VMOVAPSZrrk: [ 0.00 0.00 ]
+Key: VMOVAPSZrrk_REV: [ 0.00 0.00 ]
+Key: VMOVAPSZrrkz: [ 0.00 0.00 ]
+Key: VMOVAPSZrrkz_REV: [ 0.00 0.00 ]
+Key: VMOVAPSmr: [ 0.00 0.00 ]
+Key: VMOVAPSrm: [ 0.00 0.00 ]
+Key: VMOVAPSrr: [ 0.00 0.00 ]
+Key: VMOVAPSrr_REV: [ 0.00 0.00 ]
+Key: VMOVDDUPYrm: [ 0.00 0.00 ]
+Key: VMOVDDUPYrr: [ 0.00 0.00 ]
+Key: VMOVDDUPZ: [ 0.00 0.00 ]
+Key: VMOVDDUPZrm: [ 0.00 0.00 ]
+Key: VMOVDDUPZrmk: [ 0.00 0.00 ]
+Key: VMOVDDUPZrmkz: [ 0.00 0.00 ]
+Key: VMOVDDUPZrr: [ 0.00 0.00 ]
+Key: VMOVDDUPZrrk: [ 0.00 0.00 ]
+Key: VMOVDDUPZrrkz: [ 0.00 0.00 ]
+Key: VMOVDDUPrm: [ 0.00 0.00 ]
+Key: VMOVDDUPrr: [ 0.00 0.00 ]
+Key: VMOVDI: [ 0.00 0.00 ]
+Key: VMOVDQA: [ 0.00 0.00 ]
+Key: VMOVDQAYmr: [ 0.00 0.00 ]
+Key: VMOVDQAYrm: [ 0.00 0.00 ]
+Key: VMOVDQAYrr: [ 0.00 0.00 ]
+Key: VMOVDQAYrr_REV: [ 0.00 0.00 ]
+Key: VMOVDQAmr: [ 0.00 0.00 ]
+Key: VMOVDQArm: [ 0.00 0.00 ]
+Key: VMOVDQArr: [ 0.00 0.00 ]
+Key: VMOVDQArr_REV: [ 0.00 0.00 ]
+Key: VMOVDQU: [ 0.00 0.00 ]
+Key: VMOVDQUYmr: [ 0.00 0.00 ]
+Key: VMOVDQUYrm: [ 0.00 0.00 ]
+Key: VMOVDQUYrr: [ 0.00 0.00 ]
+Key: VMOVDQUYrr_REV: [ 0.00 0.00 ]
+Key: VMOVDQUmr: [ 0.00 0.00 ]
+Key: VMOVDQUrm: [ 0.00 0.00 ]
+Key: VMOVDQUrr: [ 0.00 0.00 ]
+Key: VMOVDQUrr_REV: [ 0.00 0.00 ]
+Key: VMOVHLPSZrr: [ 0.00 0.00 ]
+Key: VMOVHLPSrr: [ 0.00 0.00 ]
+Key: VMOVHPDZ: [ 0.00 0.00 ]
+Key: VMOVHPDmr: [ 0.00 0.00 ]
+Key: VMOVHPDrm: [ 0.00 0.00 ]
+Key: VMOVHPSZ: [ 0.00 0.00 ]
+Key: VMOVHPSmr: [ 0.00 0.00 ]
+Key: VMOVHPSrm: [ 0.00 0.00 ]
+Key: VMOVLHPSZrr: [ 0.00 0.00 ]
+Key: VMOVLHPSrr: [ 0.00 0.00 ]
+Key: VMOVLPDZ: [ 0.00 0.00 ]
+Key: VMOVLPDmr: [ 0.00 0.00 ]
+Key: VMOVLPDrm: [ 0.00 0.00 ]
+Key: VMOVLPSZ: [ 0.00 0.00 ]
+Key: VMOVLPSmr: [ 0.00 0.00 ]
+Key: VMOVLPSrm: [ 0.00 0.00 ]
+Key: VMOVMSKPDYrr: [ 0.00 0.00 ]
+Key: VMOVMSKPDrr: [ 0.00 0.00 ]
+Key: VMOVMSKPSYrr: [ 0.00 0.00 ]
+Key: VMOVMSKPSrr: [ 0.00 0.00 ]
+Key: VMOVNTDQAYrm: [ 0.00 0.00 ]
+Key: VMOVNTDQAZ: [ 0.00 0.00 ]
+Key: VMOVNTDQAZrm: [ 0.00 0.00 ]
+Key: VMOVNTDQArm: [ 0.00 0.00 ]
+Key: VMOVNTDQYmr: [ 0.00 0.00 ]
+Key: VMOVNTDQZ: [ 0.00 0.00 ]
+Key: VMOVNTDQZmr: [ 0.00 0.00 ]
+Key: VMOVNTDQmr: [ 0.00 0.00 ]
+Key: VMOVNTPDYmr: [ 0.00 0.00 ]
+Key: VMOVNTPDZ: [ 0.00 0.00 ]
+Key: VMOVNTPDZmr: [ 0.00 0.00 ]
+Key: VMOVNTPDmr: [ 0.00 0.00 ]
+Key: VMOVNTPSYmr: [ 0.00 0.00 ]
+Key: VMOVNTPSZ: [ 0.00 0.00 ]
+Key: VMOVNTPSZmr: [ 0.00 0.00 ]
+Key: VMOVNTPSmr: [ 0.00 0.00 ]
+Key: VMOVPDI: [ 0.00 0.00 ]
+Key: VMOVPQI: [ 0.00 0.00 ]
+Key: VMOVPQIto: [ 0.00 0.00 ]
+Key: VMOVQI: [ 0.00 0.00 ]
+Key: VMOVRSBZ: [ 0.00 0.00 ]
+Key: VMOVRSBZm: [ 0.00 0.00 ]
+Key: VMOVRSBZmk: [ 0.00 0.00 ]
+Key: VMOVRSBZmkz: [ 0.00 0.00 ]
+Key: VMOVRSDZ: [ 0.00 0.00 ]
+Key: VMOVRSDZm: [ 0.00 0.00 ]
+Key: VMOVRSDZmk: [ 0.00 0.00 ]
+Key: VMOVRSDZmkz: [ 0.00 0.00 ]
+Key: VMOVRSQZ: [ 0.00 0.00 ]
+Key: VMOVRSQZm: [ 0.00 0.00 ]
+Key: VMOVRSQZmk: [ 0.00 0.00 ]
+Key: VMOVRSQZmkz: [ 0.00 0.00 ]
+Key: VMOVRSWZ: [ 0.00 0.00 ]
+Key: VMOVRSWZm: [ 0.00 0.00 ]
+Key: VMOVRSWZmk: [ 0.00 0.00 ]
+Key: VMOVRSWZmkz: [ 0.00 0.00 ]
+Key: VMOVSDZmr: [ 0.00 0.00 ]
+Key: VMOVSDZmrk: [ 0.00 0.00 ]
+Key: VMOVSDZrm: [ 0.00 0.00 ]
+Key: VMOVSDZrm_alt: [ 0.00 0.00 ]
+Key: VMOVSDZrmk: [ 0.00 0.00 ]
+Key: VMOVSDZrmkz: [ 0.00 0.00 ]
+Key: VMOVSDZrr: [ 0.00 0.00 ]
+Key: VMOVSDZrr_REV: [ 0.00 0.00 ]
+Key: VMOVSDZrrk: [ 0.00 0.00 ]
+Key: VMOVSDZrrk_REV: [ 0.00 0.00 ]
+Key: VMOVSDZrrkz: [ 0.00 0.00 ]
+Key: VMOVSDZrrkz_REV: [ 0.00 0.00 ]
+Key: VMOVSDmr: [ 0.00 0.00 ]
+Key: VMOVSDrm: [ 0.00 0.00 ]
+Key: VMOVSDrm_alt: [ 0.00 0.00 ]
+Key: VMOVSDrr: [ 0.00 0.00 ]
+Key: VMOVSDrr_REV: [ 0.00 0.00 ]
+Key: VMOVSDto: [ 0.00 0.00 ]
+Key: VMOVSH: [ 0.00 0.00 ]
+Key: VMOVSHDUPYrm: [ 0.00 0.00 ]
+Key: VMOVSHDUPYrr: [ 0.00 0.00 ]
+Key: VMOVSHDUPZ: [ 0.00 0.00 ]
+Key: VMOVSHDUPZrm: [ 0.00 0.00 ]
+Key: VMOVSHDUPZrmk: [ 0.00 0.00 ]
+Key: VMOVSHDUPZrmkz: [ 0.00 0.00 ]
+Key: VMOVSHDUPZrr: [ 0.00 0.00 ]
+Key: VMOVSHDUPZrrk: [ 0.00 0.00 ]
+Key: VMOVSHDUPZrrkz: [ 0.00 0.00 ]
+Key: VMOVSHDUPrm: [ 0.00 0.00 ]
+Key: VMOVSHDUPrr: [ 0.00 0.00 ]
+Key: VMOVSHZmr: [ 0.00 0.00 ]
+Key: VMOVSHZmrk: [ 0.00 0.00 ]
+Key: VMOVSHZrm: [ 0.00 0.00 ]
+Key: VMOVSHZrm_alt: [ 0.00 0.00 ]
+Key: VMOVSHZrmk: [ 0.00 0.00 ]
+Key: VMOVSHZrmkz: [ 0.00 0.00 ]
+Key: VMOVSHZrr: [ 0.00 0.00 ]
+Key: VMOVSHZrr_REV: [ 0.00 0.00 ]
+Key: VMOVSHZrrk: [ 0.00 0.00 ]
+Key: VMOVSHZrrk_REV: [ 0.00 0.00 ]
+Key: VMOVSHZrrkz: [ 0.00 0.00 ]
+Key: VMOVSHZrrkz_REV: [ 0.00 0.00 ]
+Key: VMOVSHtoW: [ 0.00 0.00 ]
+Key: VMOVSLDUPYrm: [ 0.00 0.00 ]
+Key: VMOVSLDUPYrr: [ 0.00 0.00 ]
+Key: VMOVSLDUPZ: [ 0.00 0.00 ]
+Key: VMOVSLDUPZrm: [ 0.00 0.00 ]
+Key: VMOVSLDUPZrmk: [ 0.00 0.00 ]
+Key: VMOVSLDUPZrmkz: [ 0.00 0.00 ]
+Key: VMOVSLDUPZrr: [ 0.00 0.00 ]
+Key: VMOVSLDUPZrrk: [ 0.00 0.00 ]
+Key: VMOVSLDUPZrrkz: [ 0.00 0.00 ]
+Key: VMOVSLDUPrm: [ 0.00 0.00 ]
+Key: VMOVSLDUPrr: [ 0.00 0.00 ]
+Key: VMOVSS: [ 0.00 0.00 ]
+Key: VMOVSSZmr: [ 0.00 0.00 ]
+Key: VMOVSSZmrk: [ 0.00 0.00 ]
+Key: VMOVSSZrm: [ 0.00 0.00 ]
+Key: VMOVSSZrm_alt: [ 0.00 0.00 ]
+Key: VMOVSSZrmk: [ 0.00 0.00 ]
+Key: VMOVSSZrmkz: [ 0.00 0.00 ]
+Key: VMOVSSZrr: [ 0.00 0.00 ]
+Key: VMOVSSZrr_REV: [ 0.00 0.00 ]
+Key: VMOVSSZrrk: [ 0.00 0.00 ]
+Key: VMOVSSZrrk_REV: [ 0.00 0.00 ]
+Key: VMOVSSZrrkz: [ 0.00 0.00 ]
+Key: VMOVSSZrrkz_REV: [ 0.00 0.00 ]
+Key: VMOVSSmr: [ 0.00 0.00 ]
+Key: VMOVSSrm: [ 0.00 0.00 ]
+Key: VMOVSSrm_alt: [ 0.00 0.00 ]
+Key: VMOVSSrr: [ 0.00 0.00 ]
+Key: VMOVSSrr_REV: [ 0.00 0.00 ]
+Key: VMOVUPDYmr: [ 0.00 0.00 ]
+Key: VMOVUPDYrm: [ 0.00 0.00 ]
+Key: VMOVUPDYrr: [ 0.00 0.00 ]
+Key: VMOVUPDYrr_REV: [ 0.00 0.00 ]
+Key: VMOVUPDZ: [ 0.00 0.00 ]
+Key: VMOVUPDZmr: [ 0.00 0.00 ]
+Key: VMOVUPDZmrk: [ 0.00 0.00 ]
+Key: VMOVUPDZrm: [ 0.00 0.00 ]
+Key: VMOVUPDZrmk: [ 0.00 0.00 ]
+Key: VMOVUPDZrmkz: [ 0.00 0.00 ]
+Key: VMOVUPDZrr: [ 0.00 0.00 ]
+Key: VMOVUPDZrr_REV: [ 0.00 0.00 ]
+Key: VMOVUPDZrrk: [ 0.00 0.00 ]
+Key: VMOVUPDZrrk_REV: [ 0.00 0.00 ]
+Key: VMOVUPDZrrkz: [ 0.00 0.00 ]
+Key: VMOVUPDZrrkz_REV: [ 0.00 0.00 ]
+Key: VMOVUPDmr: [ 0.00 0.00 ]
+Key: VMOVUPDrm: [ 0.00 0.00 ]
+Key: VMOVUPDrr: [ 0.00 0.00 ]
+Key: VMOVUPDrr_REV: [ 0.00 0.00 ]
+Key: VMOVUPSYmr: [ 0.00 0.00 ]
+Key: VMOVUPSYrm: [ 0.00 0.00 ]
+Key: VMOVUPSYrr: [ 0.00 0.00 ]
+Key: VMOVUPSYrr_REV: [ 0.00 0.00 ]
+Key: VMOVUPSZ: [ 0.00 0.00 ]
+Key: VMOVUPSZmr: [ 0.00 0.00 ]
+Key: VMOVUPSZmrk: [ 0.00 0.00 ]
+Key: VMOVUPSZrm: [ 0.00 0.00 ]
+Key: VMOVUPSZrmk: [ 0.00 0.00 ]
+Key: VMOVUPSZrmkz: [ 0.00 0.00 ]
+Key: VMOVUPSZrr: [ 0.00 0.00 ]
+Key: VMOVUPSZrr_REV: [ 0.00 0.00 ]
+Key: VMOVUPSZrrk: [ 0.00 0.00 ]
+Key: VMOVUPSZrrk_REV: [ 0.00 0.00 ]
+Key: VMOVUPSZrrkz: [ 0.00 0.00 ]
+Key: VMOVUPSZrrkz_REV: [ 0.00 0.00 ]
+Key: VMOVUPSmr: [ 0.00 0.00 ]
+Key: VMOVUPSrm: [ 0.00 0.00 ]
+Key: VMOVUPSrr: [ 0.00 0.00 ]
+Key: VMOVUPSrr_REV: [ 0.00 0.00 ]
+Key: VMOVW: [ 0.00 0.00 ]
+Key: VMOVWmr: [ 0.00 0.00 ]
+Key: VMOVWrm: [ 0.00 0.00 ]
+Key: VMOVZPDILo: [ 0.00 0.00 ]
+Key: VMOVZPQILo: [ 0.00 0.00 ]
+Key: VMOVZPWILo: [ 0.00 0.00 ]
+Key: VMPSADBWYrmi: [ 0.00 0.00 ]
+Key: VMPSADBWYrri: [ 0.00 0.00 ]
+Key: VMPSADBWZ: [ 0.00 0.00 ]
+Key: VMPSADBWZrmi: [ 0.00 0.00 ]
+Key: VMPSADBWZrmik: [ 0.00 0.00 ]
+Key: VMPSADBWZrmikz: [ 0.00 0.00 ]
+Key: VMPSADBWZrri: [ 0.00 0.00 ]
+Key: VMPSADBWZrrik: [ 0.00 0.00 ]
+Key: VMPSADBWZrrikz: [ 0.00 0.00 ]
+Key: VMPSADBWrmi: [ 0.00 0.00 ]
+Key: VMPSADBWrri: [ 0.00 0.00 ]
+Key: VMPTRLDm: [ 0.00 0.00 ]
+Key: VMPTRSTm: [ 0.00 0.00 ]
+Key: VMREAD: [ 0.00 0.00 ]
+Key: VMRESUME: [ 0.00 0.00 ]
+Key: VMRUN: [ 0.00 0.00 ]
+Key: VMSAVE: [ 0.00 0.00 ]
+Key: VMULBF: [ 0.00 0.00 ]
+Key: VMULPDYrm: [ 0.00 0.00 ]
+Key: VMULPDYrr: [ 0.00 0.00 ]
+Key: VMULPDZ: [ 0.00 0.00 ]
+Key: VMULPDZrm: [ 0.00 0.00 ]
+Key: VMULPDZrmb: [ 0.00 0.00 ]
+Key: VMULPDZrmbk: [ 0.00 0.00 ]
+Key: VMULPDZrmbkz: [ 0.00 0.00 ]
+Key: VMULPDZrmk: [ 0.00 0.00 ]
+Key: VMULPDZrmkz: [ 0.00 0.00 ]
+Key: VMULPDZrr: [ 0.00 0.00 ]
+Key: VMULPDZrrb: [ 0.00 0.00 ]
+Key: VMULPDZrrbk: [ 0.00 0.00 ]
+Key: VMULPDZrrbkz: [ 0.00 0.00 ]
+Key: VMULPDZrrk: [ 0.00 0.00 ]
+Key: VMULPDZrrkz: [ 0.00 0.00 ]
+Key: VMULPDrm: [ 0.00 0.00 ]
+Key: VMULPDrr: [ 0.00 0.00 ]
+Key: VMULPHZ: [ 0.00 0.00 ]
+Key: VMULPHZrm: [ 0.00 0.00 ]
+Key: VMULPHZrmb: [ 0.00 0.00 ]
+Key: VMULPHZrmbk: [ 0.00 0.00 ]
+Key: VMULPHZrmbkz: [ 0.00 0.00 ]
+Key: VMULPHZrmk: [ 0.00 0.00 ]
+Key: VMULPHZrmkz: [ 0.00 0.00 ]
+Key: VMULPHZrr: [ 0.00 0.00 ]
+Key: VMULPHZrrb: [ 0.00 0.00 ]
+Key: VMULPHZrrbk: [ 0.00 0.00 ]
+Key: VMULPHZrrbkz: [ 0.00 0.00 ]
+Key: VMULPHZrrk: [ 0.00 0.00 ]
+Key: VMULPHZrrkz: [ 0.00 0.00 ]
+Key: VMULPSYrm: [ 0.00 0.00 ]
+Key: VMULPSYrr: [ 0.00 0.00 ]
+Key: VMULPSZ: [ 0.00 0.00 ]
+Key: VMULPSZrm: [ 0.00 0.00 ]
+Key: VMULPSZrmb: [ 0.00 0.00 ]
+Key: VMULPSZrmbk: [ 0.00 0.00 ]
+Key: VMULPSZrmbkz: [ 0.00 0.00 ]
+Key: VMULPSZrmk: [ 0.00 0.00 ]
+Key: VMULPSZrmkz: [ 0.00 0.00 ]
+Key: VMULPSZrr: [ 0.00 0.00 ]
+Key: VMULPSZrrb: [ 0.00 0.00 ]
+Key: VMULPSZrrbk: [ 0.00 0.00 ]
+Key: VMULPSZrrbkz: [ 0.00 0.00 ]
+Key: VMULPSZrrk: [ 0.00 0.00 ]
+Key: VMULPSZrrkz: [ 0.00 0.00 ]
+Key: VMULPSrm: [ 0.00 0.00 ]
+Key: VMULPSrr: [ 0.00 0.00 ]
+Key: VMULSDZrm: [ 0.00 0.00 ]
+Key: VMULSDZrm_Int: [ 0.00 0.00 ]
+Key: VMULSDZrmk_Int: [ 0.00 0.00 ]
+Key: VMULSDZrmkz_Int: [ 0.00 0.00 ]
+Key: VMULSDZrr: [ 0.00 0.00 ]
+Key: VMULSDZrr_Int: [ 0.00 0.00 ]
+Key: VMULSDZrrb_Int: [ 0.00 0.00 ]
+Key: VMULSDZrrbk_Int: [ 0.00 0.00 ]
+Key: VMULSDZrrbkz_Int: [ 0.00 0.00 ]
+Key: VMULSDZrrk_Int: [ 0.00 0.00 ]
+Key: VMULSDZrrkz_Int: [ 0.00 0.00 ]
+Key: VMULSDrm: [ 0.00 0.00 ]
+Key: VMULSDrm_Int: [ 0.00 0.00 ]
+Key: VMULSDrr: [ 0.00 0.00 ]
+Key: VMULSDrr_Int: [ 0.00 0.00 ]
+Key: VMULSHZrm: [ 0.00 0.00 ]
+Key: VMULSHZrm_Int: [ 0.00 0.00 ]
+Key: VMULSHZrmk_Int: [ 0.00 0.00 ]
+Key: VMULSHZrmkz_Int: [ 0.00 0.00 ]
+Key: VMULSHZrr: [ 0.00 0.00 ]
+Key: VMULSHZrr_Int: [ 0.00 0.00 ]
+Key: VMULSHZrrb_Int: [ 0.00 0.00 ]
+Key: VMULSHZrrbk_Int: [ 0.00 0.00 ]
+Key: VMULSHZrrbkz_Int: [ 0.00 0.00 ]
+Key: VMULSHZrrk_Int: [ 0.00 0.00 ]
+Key: VMULSHZrrkz_Int: [ 0.00 0.00 ]
+Key: VMULSSZrm: [ 0.00 0.00 ]
+Key: VMULSSZrm_Int: [ 0.00 0.00 ]
+Key: VMULSSZrmk_Int: [ 0.00 0.00 ]
+Key: VMULSSZrmkz_Int: [ 0.00 0.00 ]
+Key: VMULSSZrr: [ 0.00 0.00 ]
+Key: VMULSSZrr_Int: [ 0.00 0.00 ]
+Key: VMULSSZrrb_Int: [ 0.00 0.00 ]
+Key: VMULSSZrrbk_Int: [ 0.00 0.00 ]
+Key: VMULSSZrrbkz_Int: [ 0.00 0.00 ]
+Key: VMULSSZrrk_Int: [ 0.00 0.00 ]
+Key: VMULSSZrrkz_Int: [ 0.00 0.00 ]
+Key: VMULSSrm: [ 0.00 0.00 ]
+Key: VMULSSrm_Int: [ 0.00 0.00 ]
+Key: VMULSSrr: [ 0.00 0.00 ]
+Key: VMULSSrr_Int: [ 0.00 0.00 ]
+Key: VMWRITE: [ 0.00 0.00 ]
+Key: VMXOFF: [ 0.00 0.00 ]
+Key: VMXON: [ 0.00 0.00 ]
+Key: VORPDYrm: [ 0.00 0.00 ]
+Key: VORPDYrr: [ 0.00 0.00 ]
+Key: VORPDZ: [ 0.00 0.00 ]
+Key: VORPDZrm: [ 0.00 0.00 ]
+Key: VORPDZrmb: [ 0.00 0.00 ]
+Key: VORPDZrmbk: [ 0.00 0.00 ]
+Key: VORPDZrmbkz: [ 0.00 0.00 ]
+Key: VORPDZrmk: [ 0.00 0.00 ]
+Key: VORPDZrmkz: [ 0.00 0.00 ]
+Key: VORPDZrr: [ 0.00 0.00 ]
+Key: VORPDZrrk: [ 0.00 0.00 ]
+Key: VORPDZrrkz: [ 0.00 0.00 ]
+Key: VORPDrm: [ 0.00 0.00 ]
+Key: VORPDrr: [ 0.00 0.00 ]
+Key: VORPSYrm: [ 0.00 0.00 ]
+Key: VORPSYrr: [ 0.00 0.00 ]
+Key: VORPSZ: [ 0.00 0.00 ]
+Key: VORPSZrm: [ 0.00 0.00 ]
+Key: VORPSZrmb: [ 0.00 0.00 ]
+Key: VORPSZrmbk: [ 0.00 0.00 ]
+Key: VORPSZrmbkz: [ 0.00 0.00 ]
+Key: VORPSZrmk: [ 0.00 0.00 ]
+Key: VORPSZrmkz: [ 0.00 0.00 ]
+Key: VORPSZrr: [ 0.00 0.00 ]
+Key: VORPSZrrk: [ 0.00 0.00 ]
+Key: VORPSZrrkz: [ 0.00 0.00 ]
+Key: VORPSrm: [ 0.00 0.00 ]
+Key: VORPSrr: [ 0.00 0.00 ]
+Key: VP: [ 0.00 0.00 ]
+Key: VPABSBYrm: [ 0.00 0.00 ]
+Key: VPABSBYrr: [ 0.00 0.00 ]
+Key: VPABSBZ: [ 0.00 0.00 ]
+Key: VPABSBZrm: [ 0.00 0.00 ]
+Key: VPABSBZrmk: [ 0.00 0.00 ]
+Key: VPABSBZrmkz: [ 0.00 0.00 ]
+Key: VPABSBZrr: [ 0.00 0.00 ]
+Key: VPABSBZrrk: [ 0.00 0.00 ]
+Key: VPABSBZrrkz: [ 0.00 0.00 ]
+Key: VPABSBrm: [ 0.00 0.00 ]
+Key: VPABSBrr: [ 0.00 0.00 ]
+Key: VPABSDYrm: [ 0.00 0.00 ]
+Key: VPABSDYrr: [ 0.00 0.00 ]
+Key: VPABSDZ: [ 0.00 0.00 ]
+Key: VPABSDZrm: [ 0.00 0.00 ]
+Key: VPABSDZrmb: [ 0.00 0.00 ]
+Key: VPABSDZrmbk: [ 0.00 0.00 ]
+Key: VPABSDZrmbkz: [ 0.00 0.00 ]
+Key: VPABSDZrmk: [ 0.00 0.00 ]
+Key: VPABSDZrmkz: [ 0.00 0.00 ]
+Key: VPABSDZrr: [ 0.00 0.00 ]
+Key: VPABSDZrrk: [ 0.00 0.00 ]
+Key: VPABSDZrrkz: [ 0.00 0.00 ]
+Key: VPABSDrm: [ 0.00 0.00 ]
+Key: VPABSDrr: [ 0.00 0.00 ]
+Key: VPABSQZ: [ 0.00 0.00 ]
+Key: VPABSQZrm: [ 0.00 0.00 ]
+Key: VPABSQZrmb: [ 0.00 0.00 ]
+Key: VPABSQZrmbk: [ 0.00 0.00 ]
+Key: VPABSQZrmbkz: [ 0.00 0.00 ]
+Key: VPABSQZrmk: [ 0.00 0.00 ]
+Key: VPABSQZrmkz: [ 0.00 0.00 ]
+Key: VPABSQZrr: [ 0.00 0.00 ]
+Key: VPABSQZrrk: [ 0.00 0.00 ]
+Key: VPABSQZrrkz: [ 0.00 0.00 ]
+Key: VPABSWYrm: [ 0.00 0.00 ]
+Key: VPABSWYrr: [ 0.00 0.00 ]
+Key: VPABSWZ: [ 0.00 0.00 ]
+Key: VPABSWZrm: [ 0.00 0.00 ]
+Key: VPABSWZrmk: [ 0.00 0.00 ]
+Key: VPABSWZrmkz: [ 0.00 0.00 ]
+Key: VPABSWZrr: [ 0.00 0.00 ]
+Key: VPABSWZrrk: [ 0.00 0.00 ]
+Key: VPABSWZrrkz: [ 0.00 0.00 ]
+Key: VPABSWrm: [ 0.00 0.00 ]
+Key: VPABSWrr: [ 0.00 0.00 ]
+Key: VPACKSSDWYrm: [ 0.00 0.00 ]
+Key: VPACKSSDWYrr: [ 0.00 0.00 ]
+Key: VPACKSSDWZ: [ 0.00 0.00 ]
+Key: VPACKSSDWZrm: [ 0.00 0.00 ]
+Key: VPACKSSDWZrmb: [ 0.00 0.00 ]
+Key: VPACKSSDWZrmbk: [ 0.00 0.00 ]
+Key: VPACKSSDWZrmbkz: [ 0.00 0.00 ]
+Key: VPACKSSDWZrmk: [ 0.00 0.00 ]
+Key: VPACKSSDWZrmkz: [ 0.00 0.00 ]
+Key: VPACKSSDWZrr: [ 0.00 0.00 ]
+Key: VPACKSSDWZrrk: [ 0.00 0.00 ]
+Key: VPACKSSDWZrrkz: [ 0.00 0.00 ]
+Key: VPACKSSDWrm: [ 0.00 0.00 ]
+Key: VPACKSSDWrr: [ 0.00 0.00 ]
+Key: VPACKSSWBYrm: [ 0.00 0.00 ]
+Key: VPACKSSWBYrr: [ 0.00 0.00 ]
+Key: VPACKSSWBZ: [ 0.00 0.00 ]
+Key: VPACKSSWBZrm: [ 0.00 0.00 ]
+Key: VPACKSSWBZrmk: [ 0.00 0.00 ]
+Key: VPACKSSWBZrmkz: [ 0.00 0.00 ]
+Key: VPACKSSWBZrr: [ 0.00 0.00 ]
+Key: VPACKSSWBZrrk: [ 0.00 0.00 ]
+Key: VPACKSSWBZrrkz: [ 0.00 0.00 ]
+Key: VPACKSSWBrm: [ 0.00 0.00 ]
+Key: VPACKSSWBrr: [ 0.00 0.00 ]
+Key: VPACKUSDWYrm: [ 0.00 0.00 ]
+Key: VPACKUSDWYrr: [ 0.00 0.00 ]
+Key: VPACKUSDWZ: [ 0.00 0.00 ]
+Key: VPACKUSDWZrm: [ 0.00 0.00 ]
+Key: VPACKUSDWZrmb: [ 0.00 0.00 ]
+Key: VPACKUSDWZrmbk: [ 0.00 0.00 ]
+Key: VPACKUSDWZrmbkz: [ 0.00 0.00 ]
+Key: VPACKUSDWZrmk: [ 0.00 0.00 ]
+Key: VPACKUSDWZrmkz: [ 0.00 0.00 ]
+Key: VPACKUSDWZrr: [ 0.00 0.00 ]
+Key: VPACKUSDWZrrk: [ 0.00 0.00 ]
+Key: VPACKUSDWZrrkz: [ 0.00 0.00 ]
+Key: VPACKUSDWrm: [ 0.00 0.00 ]
+Key: VPACKUSDWrr: [ 0.00 0.00 ]
+Key: VPACKUSWBYrm: [ 0.00 0.00 ]
+Key: VPACKUSWBYrr: [ 0.00 0.00 ]
+Key: VPACKUSWBZ: [ 0.00 0.00 ]
+Key: VPACKUSWBZrm: [ 0.00 0.00 ]
+Key: VPACKUSWBZrmk: [ 0.00 0.00 ]
+Key: VPACKUSWBZrmkz: [ 0.00 0.00 ]
+Key: VPACKUSWBZrr: [ 0.00 0.00 ]
+Key: VPACKUSWBZrrk: [ 0.00 0.00 ]
+Key: VPACKUSWBZrrkz: [ 0.00 0.00 ]
+Key: VPACKUSWBrm: [ 0.00 0.00 ]
+Key: VPACKUSWBrr: [ 0.00 0.00 ]
+Key: VPADDBYrm: [ 0.00 0.00 ]
+Key: VPADDBYrr: [ 0.00 0.00 ]
+Key: VPADDBZ: [ 0.00 0.00 ]
+Key: VPADDBZrm: [ 0.00 0.00 ]
+Key: VPADDBZrmk: [ 0.00 0.00 ]
+Key: VPADDBZrmkz: [ 0.00 0.00 ]
+Key: VPADDBZrr: [ 0.00 0.00 ]
+Key: VPADDBZrrk: [ 0.00 0.00 ]
+Key: VPADDBZrrkz: [ 0.00 0.00 ]
+Key: VPADDBrm: [ 0.00 0.00 ]
+Key: VPADDBrr: [ 0.00 0.00 ]
+Key: VPADDDYrm: [ 0.00 0.00 ]
+Key: VPADDDYrr: [ 0.00 0.00 ]
+Key: VPADDDZ: [ 0.00 0.00 ]
+Key: VPADDDZrm: [ 0.00 0.00 ]
+Key: VPADDDZrmb: [ 0.00 0.00 ]
+Key: VPADDDZrmbk: [ 0.00 0.00 ]
+Key: VPADDDZrmbkz: [ 0.00 0.00 ]
+Key: VPADDDZrmk: [ 0.00 0.00 ]
+Key: VPADDDZrmkz: [ 0.00 0.00 ]
+Key: VPADDDZrr: [ 0.00 0.00 ]
+Key: VPADDDZrrk: [ 0.00 0.00 ]
+Key: VPADDDZrrkz: [ 0.00 0.00 ]
+Key: VPADDDrm: [ 0.00 0.00 ]
+Key: VPADDDrr: [ 0.00 0.00 ]
+Key: VPADDQYrm: [ 0.00 0.00 ]
+Key: VPADDQYrr: [ 0.00 0.00 ]
+Key: VPADDQZ: [ 0.00 0.00 ]
+Key: VPADDQZrm: [ 0.00 0.00 ]
+Key: VPADDQZrmb: [ 0.00 0.00 ]
+Key: VPADDQZrmbk: [ 0.00 0.00 ]
+Key: VPADDQZrmbkz: [ 0.00 0.00 ]
+Key: VPADDQZrmk: [ 0.00 0.00 ]
+Key: VPADDQZrmkz: [ 0.00 0.00 ]
+Key: VPADDQZrr: [ 0.00 0.00 ]
+Key: VPADDQZrrk: [ 0.00 0.00 ]
+Key: VPADDQZrrkz: [ 0.00 0.00 ]
+Key: VPADDQrm: [ 0.00 0.00 ]
+Key: VPADDQrr: [ 0.00 0.00 ]
+Key: VPADDSBYrm: [ 0.00 0.00 ]
+Key: VPADDSBYrr: [ 0.00 0.00 ]
+Key: VPADDSBZ: [ 0.00 0.00 ]
+Key: VPADDSBZrm: [ 0.00 0.00 ]
+Key: VPADDSBZrmk: [ 0.00 0.00 ]
+Key: VPADDSBZrmkz: [ 0.00 0.00 ]
+Key: VPADDSBZrr: [ 0.00 0.00 ]
+Key: VPADDSBZrrk: [ 0.00 0.00 ]
+Key: VPADDSBZrrkz: [ 0.00 0.00 ]
+Key: VPADDSBrm: [ 0.00 0.00 ]
+Key: VPADDSBrr: [ 0.00 0.00 ]
+Key: VPADDSWYrm: [ 0.00 0.00 ]
+Key: VPADDSWYrr: [ 0.00 0.00 ]
+Key: VPADDSWZ: [ 0.00 0.00 ]
+Key: VPADDSWZrm: [ 0.00 0.00 ]
+Key: VPADDSWZrmk: [ 0.00 0.00 ]
+Key: VPADDSWZrmkz: [ 0.00 0.00 ]
+Key: VPADDSWZrr: [ 0.00 0.00 ]
+Key: VPADDSWZrrk: [ 0.00 0.00 ]
+Key: VPADDSWZrrkz: [ 0.00 0.00 ]
+Key: VPADDSWrm: [ 0.00 0.00 ]
+Key: VPADDSWrr: [ 0.00 0.00 ]
+Key: VPADDUSBYrm: [ 0.00 0.00 ]
+Key: VPADDUSBYrr: [ 0.00 0.00 ]
+Key: VPADDUSBZ: [ 0.00 0.00 ]
+Key: VPADDUSBZrm: [ 0.00 0.00 ]
+Key: VPADDUSBZrmk: [ 0.00 0.00 ]
+Key: VPADDUSBZrmkz: [ 0.00 0.00 ]
+Key: VPADDUSBZrr: [ 0.00 0.00 ]
+Key: VPADDUSBZrrk: [ 0.00 0.00 ]
+Key: VPADDUSBZrrkz: [ 0.00 0.00 ]
+Key: VPADDUSBrm: [ 0.00 0.00 ]
+Key: VPADDUSBrr: [ 0.00 0.00 ]
+Key: VPADDUSWYrm: [ 0.00 0.00 ]
+Key: VPADDUSWYrr: [ 0.00 0.00 ]
+Key: VPADDUSWZ: [ 0.00 0.00 ]
+Key: VPADDUSWZrm: [ 0.00 0.00 ]
+Key: VPADDUSWZrmk: [ 0.00 0.00 ]
+Key: VPADDUSWZrmkz: [ 0.00 0.00 ]
+Key: VPADDUSWZrr: [ 0.00 0.00 ]
+Key: VPADDUSWZrrk: [ 0.00 0.00 ]
+Key: VPADDUSWZrrkz: [ 0.00 0.00 ]
+Key: VPADDUSWrm: [ 0.00 0.00 ]
+Key: VPADDUSWrr: [ 0.00 0.00 ]
+Key: VPADDWYrm: [ 0.00 0.00 ]
+Key: VPADDWYrr: [ 0.00 0.00 ]
+Key: VPADDWZ: [ 0.00 0.00 ]
+Key: VPADDWZrm: [ 0.00 0.00 ]
+Key: VPADDWZrmk: [ 0.00 0.00 ]
+Key: VPADDWZrmkz: [ 0.00 0.00 ]
+Key: VPADDWZrr: [ 0.00 0.00 ]
+Key: VPADDWZrrk: [ 0.00 0.00 ]
+Key: VPADDWZrrkz: [ 0.00 0.00 ]
+Key: VPADDWrm: [ 0.00 0.00 ]
+Key: VPADDWrr: [ 0.00 0.00 ]
+Key: VPALIGNRYrmi: [ 0.00 0.00 ]
+Key: VPALIGNRYrri: [ 0.00 0.00 ]
+Key: VPALIGNRZ: [ 0.00 0.00 ]
+Key: VPALIGNRZrmi: [ 0.00 0.00 ]
+Key: VPALIGNRZrmik: [ 0.00 0.00 ]
+Key: VPALIGNRZrmikz: [ 0.00 0.00 ]
+Key: VPALIGNRZrri: [ 0.00 0.00 ]
+Key: VPALIGNRZrrik: [ 0.00 0.00 ]
+Key: VPALIGNRZrrikz: [ 0.00 0.00 ]
+Key: VPALIGNRrmi: [ 0.00 0.00 ]
+Key: VPALIGNRrri: [ 0.00 0.00 ]
+Key: VPANDDZ: [ 0.00 0.00 ]
+Key: VPANDDZrm: [ 0.00 0.00 ]
+Key: VPANDDZrmb: [ 0.00 0.00 ]
+Key: VPANDDZrmbk: [ 0.00 0.00 ]
+Key: VPANDDZrmbkz: [ 0.00 0.00 ]
+Key: VPANDDZrmk: [ 0.00 0.00 ]
+Key: VPANDDZrmkz: [ 0.00 0.00 ]
+Key: VPANDDZrr: [ 0.00 0.00 ]
+Key: VPANDDZrrk: [ 0.00 0.00 ]
+Key: VPANDDZrrkz: [ 0.00 0.00 ]
+Key: VPANDNDZ: [ 0.00 0.00 ]
+Key: VPANDNDZrm: [ 0.00 0.00 ]
+Key: VPANDNDZrmb: [ 0.00 0.00 ]
+Key: VPANDNDZrmbk: [ 0.00 0.00 ]
+Key: VPANDNDZrmbkz: [ 0.00 0.00 ]
+Key: VPANDNDZrmk: [ 0.00 0.00 ]
+Key: VPANDNDZrmkz: [ 0.00 0.00 ]
+Key: VPANDNDZrr: [ 0.00 0.00 ]
+Key: VPANDNDZrrk: [ 0.00 0.00 ]
+Key: VPANDNDZrrkz: [ 0.00 0.00 ]
+Key: VPANDNQZ: [ 0.00 0.00 ]
+Key: VPANDNQZrm: [ 0.00 0.00 ]
+Key: VPANDNQZrmb: [ 0.00 0.00 ]
+Key: VPANDNQZrmbk: [ 0.00 0.00 ]
+Key: VPANDNQZrmbkz: [ 0.00 0.00 ]
+Key: VPANDNQZrmk: [ 0.00 0.00 ]
+Key: VPANDNQZrmkz: [ 0.00 0.00 ]
+Key: VPANDNQZrr: [ 0.00 0.00 ]
+Key: VPANDNQZrrk: [ 0.00 0.00 ]
+Key: VPANDNQZrrkz: [ 0.00 0.00 ]
+Key: VPANDNYrm: [ 0.00 0.00 ]
+Key: VPANDNYrr: [ 0.00 0.00 ]
+Key: VPANDNrm: [ 0.00 0.00 ]
+Key: VPANDNrr: [ 0.00 0.00 ]
+Key: VPANDQZ: [ 0.00 0.00 ]
+Key: VPANDQZrm: [ 0.00 0.00 ]
+Key: VPANDQZrmb: [ 0.00 0.00 ]
+Key: VPANDQZrmbk: [ 0.00 0.00 ]
+Key: VPANDQZrmbkz: [ 0.00 0.00 ]
+Key: VPANDQZrmk: [ 0.00 0.00 ]
+Key: VPANDQZrmkz: [ 0.00 0.00 ]
+Key: VPANDQZrr: [ 0.00 0.00 ]
+Key: VPANDQZrrk: [ 0.00 0.00 ]
+Key: VPANDQZrrkz: [ 0.00 0.00 ]
+Key: VPANDYrm: [ 0.00 0.00 ]
+Key: VPANDYrr: [ 0.00 0.00 ]
+Key: VPANDrm: [ 0.00 0.00 ]
+Key: VPANDrr: [ 0.00 0.00 ]
+Key: VPAVGBYrm: [ 0.00 0.00 ]
+Key: VPAVGBYrr: [ 0.00 0.00 ]
+Key: VPAVGBZ: [ 0.00 0.00 ]
+Key: VPAVGBZrm: [ 0.00 0.00 ]
+Key: VPAVGBZrmk: [ 0.00 0.00 ]
+Key: VPAVGBZrmkz: [ 0.00 0.00 ]
+Key: VPAVGBZrr: [ 0.00 0.00 ]
+Key: VPAVGBZrrk: [ 0.00 0.00 ]
+Key: VPAVGBZrrkz: [ 0.00 0.00 ]
+Key: VPAVGBrm: [ 0.00 0.00 ]
+Key: VPAVGBrr: [ 0.00 0.00 ]
+Key: VPAVGWYrm: [ 0.00 0.00 ]
+Key: VPAVGWYrr: [ 0.00 0.00 ]
+Key: VPAVGWZ: [ 0.00 0.00 ]
+Key: VPAVGWZrm: [ 0.00 0.00 ]
+Key: VPAVGWZrmk: [ 0.00 0.00 ]
+Key: VPAVGWZrmkz: [ 0.00 0.00 ]
+Key: VPAVGWZrr: [ 0.00 0.00 ]
+Key: VPAVGWZrrk: [ 0.00 0.00 ]
+Key: VPAVGWZrrkz: [ 0.00 0.00 ]
+Key: VPAVGWrm: [ 0.00 0.00 ]
+Key: VPAVGWrr: [ 0.00 0.00 ]
+Key: VPBLENDDYrmi: [ 0.00 0.00 ]
+Key: VPBLENDDYrri: [ 0.00 0.00 ]
+Key: VPBLENDDrmi: [ 0.00 0.00 ]
+Key: VPBLENDDrri: [ 0.00 0.00 ]
+Key: VPBLENDMBZ: [ 0.00 0.00 ]
+Key: VPBLENDMBZrm: [ 0.00 0.00 ]
+Key: VPBLENDMBZrmk: [ 0.00 0.00 ]
+Key: VPBLENDMBZrmkz: [ 0.00 0.00 ]
+Key: VPBLENDMBZrr: [ 0.00 0.00 ]
+Key: VPBLENDMBZrrk: [ 0.00 0.00 ]
+Key: VPBLENDMBZrrkz: [ 0.00 0.00 ]
+Key: VPBLENDMDZ: [ 0.00 0.00 ]
+Key: VPBLENDMDZrm: [ 0.00 0.00 ]
+Key: VPBLENDMDZrmb: [ 0.00 0.00 ]
+Key: VPBLENDMDZrmbk: [ 0.00 0.00 ]
+Key: VPBLENDMDZrmbkz: [ 0.00 0.00 ]
+Key: VPBLENDMDZrmk: [ 0.00 0.00 ]
+Key: VPBLENDMDZrmkz: [ 0.00 0.00 ]
+Key: VPBLENDMDZrr: [ 0.00 0.00 ]
+Key: VPBLENDMDZrrk: [ 0.00 0.00 ]
+Key: VPBLENDMDZrrkz: [ 0.00 0.00 ]
+Key: VPBLENDMQZ: [ 0.00 0.00 ]
+Key: VPBLENDMQZrm: [ 0.00 0.00 ]
+Key: VPBLENDMQZrmb: [ 0.00 0.00 ]
+Key: VPBLENDMQZrmbk: [ 0.00 0.00 ]
+Key: VPBLENDMQZrmbkz: [ 0.00 0.00 ]
+Key: VPBLENDMQZrmk: [ 0.00 0.00 ]
+Key: VPBLENDMQZrmkz: [ 0.00 0.00 ]
+Key: VPBLENDMQZrr: [ 0.00 0.00 ]
+Key: VPBLENDMQZrrk: [ 0.00 0.00 ]
+Key: VPBLENDMQZrrkz: [ 0.00 0.00 ]
+Key: VPBLENDMWZ: [ 0.00 0.00 ]
+Key: VPBLENDMWZrm: [ 0.00 0.00 ]
+Key: VPBLENDMWZrmk: [ 0.00 0.00 ]
+Key: VPBLENDMWZrmkz: [ 0.00 0.00 ]
+Key: VPBLENDMWZrr: [ 0.00 0.00 ]
+Key: VPBLENDMWZrrk: [ 0.00 0.00 ]
+Key: VPBLENDMWZrrkz: [ 0.00 0.00 ]
+Key: VPBLENDVBYrmr: [ 0.00 0.00 ]
+Key: VPBLENDVBYrrr: [ 0.00 0.00 ]
+Key: VPBLENDVBrmr: [ 0.00 0.00 ]
+Key: VPBLENDVBrrr: [ 0.00 0.00 ]
+Key: VPBLENDWYrmi: [ 0.00 0.00 ]
+Key: VPBLENDWYrri: [ 0.00 0.00 ]
+Key: VPBLENDWrmi: [ 0.00 0.00 ]
+Key: VPBLENDWrri: [ 0.00 0.00 ]
+Key: VPBROADCASTBYrm: [ 0.00 0.00 ]
+Key: VPBROADCASTBYrr: [ 0.00 0.00 ]
+Key: VPBROADCASTBZ: [ 0.00 0.00 ]
+Key: VPBROADCASTBZrm: [ 0.00 0.00 ]
+Key: VPBROADCASTBZrmk: [ 0.00 0.00 ]
+Key: VPBROADCASTBZrmkz: [ 0.00 0.00 ]
+Key: VPBROADCASTBZrr: [ 0.00 0.00 ]
+Key: VPBROADCASTBZrrk: [ 0.00 0.00 ]
+Key: VPBROADCASTBZrrkz: [ 0.00 0.00 ]
+Key: VPBROADCASTBrZ: [ 0.00 0.00 ]
+Key: VPBROADCASTBrZrr: [ 0.00 0.00 ]
+Key: VPBROADCASTBrZrrk: [ 0.00 0.00 ]
+Key: VPBROADCASTBrZrrkz: [ 0.00 0.00 ]
+Key: VPBROADCASTBrm: [ 0.00 0.00 ]
+Key: VPBROADCASTBrr: [ 0.00 0.00 ]
+Key: VPBROADCASTDYrm: [ 0.00 0.00 ]
+Key: VPBROADCASTDYrr: [ 0.00 0.00 ]
+Key: VPBROADCASTDZ: [ 0.00 0.00 ]
+Key: VPBROADCASTDZrm: [ 0.00 0.00 ]
+Key: VPBROADCASTDZrmk: [ 0.00 0.00 ]
+Key: VPBROADCASTDZrmkz: [ 0.00 0.00 ]
+Key: VPBROADCASTDZrr: [ 0.00 0.00 ]
+Key: VPBROADCASTDZrrk: [ 0.00 0.00 ]
+Key: VPBROADCASTDZrrkz: [ 0.00 0.00 ]
+Key: VPBROADCASTDrZ: [ 0.00 0.00 ]
+Key: VPBROADCASTDrZrr: [ 0.00 0.00 ]
+Key: VPBROADCASTDrZrrk: [ 0.00 0.00 ]
+Key: VPBROADCASTDrZrrkz: [ 0.00 0.00 ]
+Key: VPBROADCASTDrm: [ 0.00 0.00 ]
+Key: VPBROADCASTDrr: [ 0.00 0.00 ]
+Key: VPBROADCASTMB: [ 0.00 0.00 ]
+Key: VPBROADCASTMW: [ 0.00 0.00 ]
+Key: VPBROADCASTQYrm: [ 0.00 0.00 ]
+Key: VPBROADCASTQYrr: [ 0.00 0.00 ]
+Key: VPBROADCASTQZ: [ 0.00 0.00 ]
+Key: VPBROADCASTQZrm: [ 0.00 0.00 ]
+Key: VPBROADCASTQZrmk: [ 0.00 0.00 ]
+Key: VPBROADCASTQZrmkz: [ 0.00 0.00 ]
+Key: VPBROADCASTQZrr: [ 0.00 0.00 ]
+Key: VPBROADCASTQZrrk: [ 0.00 0.00 ]
+Key: VPBROADCASTQZrrkz: [ 0.00 0.00 ]
+Key: VPBROADCASTQrZ: [ 0.00 0.00 ]
+Key: VPBROADCASTQrZrr: [ 0.00 0.00 ]
+Key: VPBROADCASTQrZrrk: [ 0.00 0.00 ]
+Key: VPBROADCASTQrZrrkz: [ 0.00 0.00 ]
+Key: VPBROADCASTQrm: [ 0.00 0.00 ]
+Key: VPBROADCASTQrr: [ 0.00 0.00 ]
+Key: VPBROADCASTWYrm: [ 0.00 0.00 ]
+Key: VPBROADCASTWYrr: [ 0.00 0.00 ]
+Key: VPBROADCASTWZ: [ 0.00 0.00 ]
+Key: VPBROADCASTWZrm: [ 0.00 0.00 ]
+Key: VPBROADCASTWZrmk: [ 0.00 0.00 ]
+Key: VPBROADCASTWZrmkz: [ 0.00 0.00 ]
+Key: VPBROADCASTWZrr: [ 0.00 0.00 ]
+Key: VPBROADCASTWZrrk: [ 0.00 0.00 ]
+Key: VPBROADCASTWZrrkz: [ 0.00 0.00 ]
+Key: VPBROADCASTWrZ: [ 0.00 0.00 ]
+Key: VPBROADCASTWrZrr: [ 0.00 0.00 ]
+Key: VPBROADCASTWrZrrk: [ 0.00 0.00 ]
+Key: VPBROADCASTWrZrrkz: [ 0.00 0.00 ]
+Key: VPBROADCASTWrm: [ 0.00 0.00 ]
+Key: VPBROADCASTWrr: [ 0.00 0.00 ]
+Key: VPCLMULQDQYrmi: [ 0.00 0.00 ]
+Key: VPCLMULQDQYrri: [ 0.00 0.00 ]
+Key: VPCLMULQDQZ: [ 0.00 0.00 ]
+Key: VPCLMULQDQZrmi: [ 0.00 0.00 ]
+Key: VPCLMULQDQZrri: [ 0.00 0.00 ]
+Key: VPCLMULQDQrmi: [ 0.00 0.00 ]
+Key: VPCLMULQDQrri: [ 0.00 0.00 ]
+Key: VPCMOVYrmr: [ 0.00 0.00 ]
+Key: VPCMOVYrrm: [ 0.00 0.00 ]
+Key: VPCMOVYrrr: [ 0.00 0.00 ]
+Key: VPCMOVYrrr_REV: [ 0.00 0.00 ]
+Key: VPCMOVrmr: [ 0.00 0.00 ]
+Key: VPCMOVrrm: [ 0.00 0.00 ]
+Key: VPCMOVrrr: [ 0.00 0.00 ]
+Key: VPCMOVrrr_REV: [ 0.00 0.00 ]
+Key: VPCMPBZ: [ 0.00 0.00 ]
+Key: VPCMPBZrmi: [ 0.00 0.00 ]
+Key: VPCMPBZrmik: [ 0.00 0.00 ]
+Key: VPCMPBZrri: [ 0.00 0.00 ]
+Key: VPCMPBZrrik: [ 0.00 0.00 ]
+Key: VPCMPDZ: [ 0.00 0.00 ]
+Key: VPCMPDZrmbi: [ 0.00 0.00 ]
+Key: VPCMPDZrmbik: [ 0.00 0.00 ]
+Key: VPCMPDZrmi: [ 0.00 0.00 ]
+Key: VPCMPDZrmik: [ 0.00 0.00 ]
+Key: VPCMPDZrri: [ 0.00 0.00 ]
+Key: VPCMPDZrrik: [ 0.00 0.00 ]
+Key: VPCMPEQBYrm: [ 0.00 0.00 ]
+Key: VPCMPEQBYrr: [ 0.00 0.00 ]
+Key: VPCMPEQBZ: [ 0.00 0.00 ]
+Key: VPCMPEQBZrm: [ 0.00 0.00 ]
+Key: VPCMPEQBZrmk: [ 0.00 0.00 ]
+Key: VPCMPEQBZrr: [ 0.00 0.00 ]
+Key: VPCMPEQBZrrk: [ 0.00 0.00 ]
+Key: VPCMPEQBrm: [ 0.00 0.00 ]
+Key: VPCMPEQBrr: [ 0.00 0.00 ]
+Key: VPCMPEQDYrm: [ 0.00 0.00 ]
+Key: VPCMPEQDYrr: [ 0.00 0.00 ]
+Key: VPCMPEQDZ: [ 0.00 0.00 ]
+Key: VPCMPEQDZrm: [ 0.00 0.00 ]
+Key: VPCMPEQDZrmb: [ 0.00 0.00 ]
+Key: VPCMPEQDZrmbk: [ 0.00 0.00 ]
+Key: VPCMPEQDZrmk: [ 0.00 0.00 ]
+Key: VPCMPEQDZrr: [ 0.00 0.00 ]
+Key: VPCMPEQDZrrk: [ 0.00 0.00 ]
+Key: VPCMPEQDrm: [ 0.00 0.00 ]
+Key: VPCMPEQDrr: [ 0.00 0.00 ]
+Key: VPCMPEQQYrm: [ 0.00 0.00 ]
+Key: VPCMPEQQYrr: [ 0.00 0.00 ]
+Key: VPCMPEQQZ: [ 0.00 0.00 ]
+Key: VPCMPEQQZrm: [ 0.00 0.00 ]
+Key: VPCMPEQQZrmb: [ 0.00 0.00 ]
+Key: VPCMPEQQZrmbk: [ 0.00 0.00 ]
+Key: VPCMPEQQZrmk: [ 0.00 0.00 ]
+Key: VPCMPEQQZrr: [ 0.00 0.00 ]
+Key: VPCMPEQQZrrk: [ 0.00 0.00 ]
+Key: VPCMPEQQrm: [ 0.00 0.00 ]
+Key: VPCMPEQQrr: [ 0.00 0.00 ]
+Key: VPCMPEQWYrm: [ 0.00 0.00 ]
+Key: VPCMPEQWYrr: [ 0.00 0.00 ]
+Key: VPCMPEQWZ: [ 0.00 0.00 ]
+Key: VPCMPEQWZrm: [ 0.00 0.00 ]
+Key: VPCMPEQWZrmk: [ 0.00 0.00 ]
+Key: VPCMPEQWZrr: [ 0.00 0.00 ]
+Key: VPCMPEQWZrrk: [ 0.00 0.00 ]
+Key: VPCMPEQWrm: [ 0.00 0.00 ]
+Key: VPCMPEQWrr: [ 0.00 0.00 ]
+Key: VPCMPESTRIrmi: [ 0.00 0.00 ]
+Key: VPCMPESTRIrri: [ 0.00 0.00 ]
+Key: VPCMPESTRMrmi: [ 0.00 0.00 ]
+Key: VPCMPESTRMrri: [ 0.00 0.00 ]
+Key: VPCMPGTBYrm: [ 0.00 0.00 ]
+Key: VPCMPGTBYrr: [ 0.00 0.00 ]
+Key: VPCMPGTBZ: [ 0.00 0.00 ]
+Key: VPCMPGTBZrm: [ 0.00 0.00 ]
+Key: VPCMPGTBZrmk: [ 0.00 0.00 ]
+Key: VPCMPGTBZrr: [ 0.00 0.00 ]
+Key: VPCMPGTBZrrk: [ 0.00 0.00 ]
+Key: VPCMPGTBrm: [ 0.00 0.00 ]
+Key: VPCMPGTBrr: [ 0.00 0.00 ]
+Key: VPCMPGTDYrm: [ 0.00 0.00 ]
+Key: VPCMPGTDYrr: [ 0.00 0.00 ]
+Key: VPCMPGTDZ: [ 0.00 0.00 ]
+Key: VPCMPGTDZrm: [ 0.00 0.00 ]
+Key: VPCMPGTDZrmb: [ 0.00 0.00 ]
+Key: VPCMPGTDZrmbk: [ 0.00 0.00 ]
+Key: VPCMPGTDZrmk: [ 0.00 0.00 ]
+Key: VPCMPGTDZrr: [ 0.00 0.00 ]
+Key: VPCMPGTDZrrk: [ 0.00 0.00 ]
+Key: VPCMPGTDrm: [ 0.00 0.00 ]
+Key: VPCMPGTDrr: [ 0.00 0.00 ]
+Key: VPCMPGTQYrm: [ 0.00 0.00 ]
+Key: VPCMPGTQYrr: [ 0.00 0.00 ]
+Key: VPCMPGTQZ: [ 0.00 0.00 ]
+Key: VPCMPGTQZrm: [ 0.00 0.00 ]
+Key: VPCMPGTQZrmb: [ 0.00 0.00 ]
+Key: VPCMPGTQZrmbk: [ 0.00 0.00 ]
+Key: VPCMPGTQZrmk: [ 0.00 0.00 ]
+Key: VPCMPGTQZrr: [ 0.00 0.00 ]
+Key: VPCMPGTQZrrk: [ 0.00 0.00 ]
+Key: VPCMPGTQrm: [ 0.00 0.00 ]
+Key: VPCMPGTQrr: [ 0.00 0.00 ]
+Key: VPCMPGTWYrm: [ 0.00 0.00 ]
+Key: VPCMPGTWYrr: [ 0.00 0.00 ]
+Key: VPCMPGTWZ: [ 0.00 0.00 ]
+Key: VPCMPGTWZrm: [ 0.00 0.00 ]
+Key: VPCMPGTWZrmk: [ 0.00 0.00 ]
+Key: VPCMPGTWZrr: [ 0.00 0.00 ]
+Key: VPCMPGTWZrrk: [ 0.00 0.00 ]
+Key: VPCMPGTWrm: [ 0.00 0.00 ]
+Key: VPCMPGTWrr: [ 0.00 0.00 ]
+Key: VPCMPISTRIrmi: [ 0.00 0.00 ]
+Key: VPCMPISTRIrri: [ 0.00 0.00 ]
+Key: VPCMPISTRMrmi: [ 0.00 0.00 ]
+Key: VPCMPISTRMrri: [ 0.00 0.00 ]
+Key: VPCMPQZ: [ 0.00 0.00 ]
+Key: VPCMPQZrmbi: [ 0.00 0.00 ]
+Key: VPCMPQZrmbik: [ 0.00 0.00 ]
+Key: VPCMPQZrmi: [ 0.00 0.00 ]
+Key: VPCMPQZrmik: [ 0.00 0.00 ]
+Key: VPCMPQZrri: [ 0.00 0.00 ]
+Key: VPCMPQZrrik: [ 0.00 0.00 ]
+Key: VPCMPUBZ: [ 0.00 0.00 ]
+Key: VPCMPUBZrmi: [ 0.00 0.00 ]
+Key: VPCMPUBZrmik: [ 0.00 0.00 ]
+Key: VPCMPUBZrri: [ 0.00 0.00 ]
+Key: VPCMPUBZrrik: [ 0.00 0.00 ]
+Key: VPCMPUDZ: [ 0.00 0.00 ]
+Key: VPCMPUDZrmbi: [ 0.00 0.00 ]
+Key: VPCMPUDZrmbik: [ 0.00 0.00 ]
+Key: VPCMPUDZrmi: [ 0.00 0.00 ]
+Key: VPCMPUDZrmik: [ 0.00 0.00 ]
+Key: VPCMPUDZrri: [ 0.00 0.00 ]
+Key: VPCMPUDZrrik: [ 0.00 0.00 ]
+Key: VPCMPUQZ: [ 0.00 0.00 ]
+Key: VPCMPUQZrmbi: [ 0.00 0.00 ]
+Key: VPCMPUQZrmbik: [ 0.00 0.00 ]
+Key: VPCMPUQZrmi: [ 0.00 0.00 ]
+Key: VPCMPUQZrmik: [ 0.00 0.00 ]
+Key: VPCMPUQZrri: [ 0.00 0.00 ]
+Key: VPCMPUQZrrik: [ 0.00 0.00 ]
+Key: VPCMPUWZ: [ 0.00 0.00 ]
+Key: VPCMPUWZrmi: [ 0.00 0.00 ]
+Key: VPCMPUWZrmik: [ 0.00 0.00 ]
+Key: VPCMPUWZrri: [ 0.00 0.00 ]
+Key: VPCMPUWZrrik: [ 0.00 0.00 ]
+Key: VPCMPWZ: [ 0.00 0.00 ]
+Key: VPCMPWZrmi: [ 0.00 0.00 ]
+Key: VPCMPWZrmik: [ 0.00 0.00 ]
+Key: VPCMPWZrri: [ 0.00 0.00 ]
+Key: VPCMPWZrrik: [ 0.00 0.00 ]
+Key: VPCOMBmi: [ 0.00 0.00 ]
+Key: VPCOMBri: [ 0.00 0.00 ]
+Key: VPCOMDmi: [ 0.00 0.00 ]
+Key: VPCOMDri: [ 0.00 0.00 ]
+Key: VPCOMPRESSBZ: [ 0.00 0.00 ]
+Key: VPCOMPRESSBZmr: [ 0.00 0.00 ]
+Key: VPCOMPRESSBZmrk: [ 0.00 0.00 ]
+Key: VPCOMPRESSBZrr: [ 0.00 0.00 ]
+Key: VPCOMPRESSBZrrk: [ 0.00 0.00 ]
+Key: VPCOMPRESSBZrrkz: [ 0.00 0.00 ]
+Key: VPCOMPRESSDZ: [ 0.00 0.00 ]
+Key: VPCOMPRESSDZmr: [ 0.00 0.00 ]
+Key: VPCOMPRESSDZmrk: [ 0.00 0.00 ]
+Key: VPCOMPRESSDZrr: [ 0.00 0.00 ]
+Key: VPCOMPRESSDZrrk: [ 0.00 0.00 ]
+Key: VPCOMPRESSDZrrkz: [ 0.00 0.00 ]
+Key: VPCOMPRESSQZ: [ 0.00 0.00 ]
+Key: VPCOMPRESSQZmr: [ 0.00 0.00 ]
+Key: VPCOMPRESSQZmrk: [ 0.00 0.00 ]
+Key: VPCOMPRESSQZrr: [ 0.00 0.00 ]
+Key: VPCOMPRESSQZrrk: [ 0.00 0.00 ]
+Key: VPCOMPRESSQZrrkz: [ 0.00 0.00 ]
+Key: VPCOMPRESSWZ: [ 0.00 0.00 ]
+Key: VPCOMPRESSWZmr: [ 0.00 0.00 ]
+Key: VPCOMPRESSWZmrk: [ 0.00 0.00 ]
+Key: VPCOMPRESSWZrr: [ 0.00 0.00 ]
+Key: VPCOMPRESSWZrrk: [ 0.00 0.00 ]
+Key: VPCOMPRESSWZrrkz: [ 0.00 0.00 ]
+Key: VPCOMQmi: [ 0.00 0.00 ]
+Key: VPCOMQri: [ 0.00 0.00 ]
+Key: VPCOMUBmi: [ 0.00 0.00 ]
+Key: VPCOMUBri: [ 0.00 0.00 ]
+Key: VPCOMUDmi: [ 0.00 0.00 ]
+Key: VPCOMUDri: [ 0.00 0.00 ]
+Key: VPCOMUQmi: [ 0.00 0.00 ]
+Key: VPCOMUQri: [ 0.00 0.00 ]
+Key: VPCOMUWmi: [ 0.00 0.00 ]
+Key: VPCOMUWri: [ 0.00 0.00 ]
+Key: VPCOMWmi: [ 0.00 0.00 ]
+Key: VPCOMWri: [ 0.00 0.00 ]
+Key: VPCONFLICTDZ: [ 0.00 0.00 ]
+Key: VPCONFLICTDZrm: [ 0.00 0.00 ]
+Key: VPCONFLICTDZrmb: [ 0.00 0.00 ]
+Key: VPCONFLICTDZrmbk: [ 0.00 0.00 ]
+Key: VPCONFLICTDZrmbkz: [ 0.00 0.00 ]
+Key: VPCONFLICTDZrmk: [ 0.00 0.00 ]
+Key: VPCONFLICTDZrmkz: [ 0.00 0.00 ]
+Key: VPCONFLICTDZrr: [ 0.00 0.00 ]
+Key: VPCONFLICTDZrrk: [ 0.00 0.00 ]
+Key: VPCONFLICTDZrrkz: [ 0.00 0.00 ]
+Key: VPCONFLICTQZ: [ 0.00 0.00 ]
+Key: VPCONFLICTQZrm: [ 0.00 0.00 ]
+Key: VPCONFLICTQZrmb: [ 0.00 0.00 ]
+Key: VPCONFLICTQZrmbk: [ 0.00 0.00 ]
+Key: VPCONFLICTQZrmbkz: [ 0.00 0.00 ]
+Key: VPCONFLICTQZrmk: [ 0.00 0.00 ]
+Key: VPCONFLICTQZrmkz: [ 0.00 0.00 ]
+Key: VPCONFLICTQZrr: [ 0.00 0.00 ]
+Key: VPCONFLICTQZrrk: [ 0.00 0.00 ]
+Key: VPCONFLICTQZrrkz: [ 0.00 0.00 ]
+Key: VPDPBSSDSYrm: [ 0.00 0.00 ]
+Key: VPDPBSSDSYrr: [ 0.00 0.00 ]
+Key: VPDPBSSDSZ: [ 0.00 0.00 ]
+Key: VPDPBSSDSZrm: [ 0.00 0.00 ]
+Key: VPDPBSSDSZrmb: [ 0.00 0.00 ]
+Key: VPDPBSSDSZrmbk: [ 0.00 0.00 ]
+Key: VPDPBSSDSZrmbkz: [ 0.00 0.00 ]
+Key: VPDPBSSDSZrmk: [ 0.00 0.00 ]
+Key: VPDPBSSDSZrmkz: [ 0.00 0.00 ]
+Key: VPDPBSSDSZrr: [ 0.00 0.00 ]
+Key: VPDPBSSDSZrrk: [ 0.00 0.00 ]
+Key: VPDPBSSDSZrrkz: [ 0.00 0.00 ]
+Key: VPDPBSSDSrm: [ 0.00 0.00 ]
+Key: VPDPBSSDSrr: [ 0.00 0.00 ]
+Key: VPDPBSSDYrm: [ 0.00 0.00 ]
+Key: VPDPBSSDYrr: [ 0.00 0.00 ]
+Key: VPDPBSSDZ: [ 0.00 0.00 ]
+Key: VPDPBSSDZrm: [ 0.00 0.00 ]
+Key: VPDPBSSDZrmb: [ 0.00 0.00 ]
+Key: VPDPBSSDZrmbk: [ 0.00 0.00 ]
+Key: VPDPBSSDZrmbkz: [ 0.00 0.00 ]
+Key: VPDPBSSDZrmk: [ 0.00 0.00 ]
+Key: VPDPBSSDZrmkz: [ 0.00 0.00 ]
+Key: VPDPBSSDZrr: [ 0.00 0.00 ]
+Key: VPDPBSSDZrrk: [ 0.00 0.00 ]
+Key: VPDPBSSDZrrkz: [ 0.00 0.00 ]
+Key: VPDPBSSDrm: [ 0.00 0.00 ]
+Key: VPDPBSSDrr: [ 0.00 0.00 ]
+Key: VPDPBSUDSYrm: [ 0.00 0.00 ]
+Key: VPDPBSUDSYrr: [ 0.00 0.00 ]
+Key: VPDPBSUDSZ: [ 0.00 0.00 ]
+Key: VPDPBSUDSZrm: [ 0.00 0.00 ]
+Key: VPDPBSUDSZrmb: [ 0.00 0.00 ]
+Key: VPDPBSUDSZrmbk: [ 0.00 0.00 ]
+Key: VPDPBSUDSZrmbkz: [ 0.00 0.00 ]
+Key: VPDPBSUDSZrmk: [ 0.00 0.00 ]
+Key: VPDPBSUDSZrmkz: [ 0.00 0.00 ]
+Key: VPDPBSUDSZrr: [ 0.00 0.00 ]
+Key: VPDPBSUDSZrrk: [ 0.00 0.00 ]
+Key: VPDPBSUDSZrrkz: [ 0.00 0.00 ]
+Key: VPDPBSUDSrm: [ 0.00 0.00 ]
+Key: VPDPBSUDSrr: [ 0.00 0.00 ]
+Key: VPDPBSUDYrm: [ 0.00 0.00 ]
+Key: VPDPBSUDYrr: [ 0.00 0.00 ]
+Key: VPDPBSUDZ: [ 0.00 0.00 ]
+Key: VPDPBSUDZrm: [ 0.00 0.00 ]
+Key: VPDPBSUDZrmb: [ 0.00 0.00 ]
+Key: VPDPBSUDZrmbk: [ 0.00 0.00 ]
+Key: VPDPBSUDZrmbkz: [ 0.00 0.00 ]
+Key: VPDPBSUDZrmk: [ 0.00 0.00 ]
+Key: VPDPBSUDZrmkz: [ 0.00 0.00 ]
+Key: VPDPBSUDZrr: [ 0.00 0.00 ]
+Key: VPDPBSUDZrrk: [ 0.00 0.00 ]
+Key: VPDPBSUDZrrkz: [ 0.00 0.00 ]
+Key: VPDPBSUDrm: [ 0.00 0.00 ]
+Key: VPDPBSUDrr: [ 0.00 0.00 ]
+Key: VPDPBUSDSYrm: [ 0.00 0.00 ]
+Key: VPDPBUSDSYrr: [ 0.00 0.00 ]
+Key: VPDPBUSDSZ: [ 0.00 0.00 ]
+Key: VPDPBUSDSZrm: [ 0.00 0.00 ]
+Key: VPDPBUSDSZrmb: [ 0.00 0.00 ]
+Key: VPDPBUSDSZrmbk: [ 0.00 0.00 ]
+Key: VPDPBUSDSZrmbkz: [ 0.00 0.00 ]
+Key: VPDPBUSDSZrmk: [ 0.00 0.00 ]
+Key: VPDPBUSDSZrmkz: [ 0.00 0.00 ]
+Key: VPDPBUSDSZrr: [ 0.00 0.00 ]
+Key: VPDPBUSDSZrrk: [ 0.00 0.00 ]
+Key: VPDPBUSDSZrrkz: [ 0.00 0.00 ]
+Key: VPDPBUSDSrm: [ 0.00 0.00 ]
+Key: VPDPBUSDSrr: [ 0.00 0.00 ]
+Key: VPDPBUSDYrm: [ 0.00 0.00 ]
+Key: VPDPBUSDYrr: [ 0.00 0.00 ]
+Key: VPDPBUSDZ: [ 0.00 0.00 ]
+Key: VPDPBUSDZrm: [ 0.00 0.00 ]
+Key: VPDPBUSDZrmb: [ 0.00 0.00 ]
+Key: VPDPBUSDZrmbk: [ 0.00 0.00 ]
+Key: VPDPBUSDZrmbkz: [ 0.00 0.00 ]
+Key: VPDPBUSDZrmk: [ 0.00 0.00 ]
+Key: VPDPBUSDZrmkz: [ 0.00 0.00 ]
+Key: VPDPBUSDZrr: [ 0.00 0.00 ]
+Key: VPDPBUSDZrrk: [ 0.00 0.00 ]
+Key: VPDPBUSDZrrkz: [ 0.00 0.00 ]
+Key: VPDPBUSDrm: [ 0.00 0.00 ]
+Key: VPDPBUSDrr: [ 0.00 0.00 ]
+Key: VPDPBUUDSYrm: [ 0.00 0.00 ]
+Key: VPDPBUUDSYrr: [ 0.00 0.00 ]
+Key: VPDPBUUDSZ: [ 0.00 0.00 ]
+Key: VPDPBUUDSZrm: [ 0.00 0.00 ]
+Key: VPDPBUUDSZrmb: [ 0.00 0.00 ]
+Key: VPDPBUUDSZrmbk: [ 0.00 0.00 ]
+Key: VPDPBUUDSZrmbkz: [ 0.00 0.00 ]
+Key: VPDPBUUDSZrmk: [ 0.00 0.00 ]
+Key: VPDPBUUDSZrmkz: [ 0.00 0.00 ]
+Key: VPDPBUUDSZrr: [ 0.00 0.00 ]
+Key: VPDPBUUDSZrrk: [ 0.00 0.00 ]
+Key: VPDPBUUDSZrrkz: [ 0.00 0.00 ]
+Key: VPDPBUUDSrm: [ 0.00 0.00 ]
+Key: VPDPBUUDSrr: [ 0.00 0.00 ]
+Key: VPDPBUUDYrm: [ 0.00 0.00 ]
+Key: VPDPBUUDYrr: [ 0.00 0.00 ]
+Key: VPDPBUUDZ: [ 0.00 0.00 ]
+Key: VPDPBUUDZrm: [ 0.00 0.00 ]
+Key: VPDPBUUDZrmb: [ 0.00 0.00 ]
+Key: VPDPBUUDZrmbk: [ 0.00 0.00 ]
+Key: VPDPBUUDZrmbkz: [ 0.00 0.00 ]
+Key: VPDPBUUDZrmk: [ 0.00 0.00 ]
+Key: VPDPBUUDZrmkz: [ 0.00 0.00 ]
+Key: VPDPBUUDZrr: [ 0.00 0.00 ]
+Key: VPDPBUUDZrrk: [ 0.00 0.00 ]
+Key: VPDPBUUDZrrkz: [ 0.00 0.00 ]
+Key: VPDPBUUDrm: [ 0.00 0.00 ]
+Key: VPDPBUUDrr: [ 0.00 0.00 ]
+Key: VPDPWSSDSYrm: [ 0.00 0.00 ]
+Key: VPDPWSSDSYrr: [ 0.00 0.00 ]
+Key: VPDPWSSDSZ: [ 0.00 0.00 ]
+Key: VPDPWSSDSZrm: [ 0.00 0.00 ]
+Key: VPDPWSSDSZrmb: [ 0.00 0.00 ]
+Key: VPDPWSSDSZrmbk: [ 0.00 0.00 ]
+Key: VPDPWSSDSZrmbkz: [ 0.00 0.00 ]
+Key: VPDPWSSDSZrmk: [ 0.00 0.00 ]
+Key: VPDPWSSDSZrmkz: [ 0.00 0.00 ]
+Key: VPDPWSSDSZrr: [ 0.00 0.00 ]
+Key: VPDPWSSDSZrrk: [ 0.00 0.00 ]
+Key: VPDPWSSDSZrrkz: [ 0.00 0.00 ]
+Key: VPDPWSSDSrm: [ 0.00 0.00 ]
+Key: VPDPWSSDSrr: [ 0.00 0.00 ]
+Key: VPDPWSSDYrm: [ 0.00 0.00 ]
+Key: VPDPWSSDYrr: [ 0.00 0.00 ]
+Key: VPDPWSSDZ: [ 0.00 0.00 ]
+Key: VPDPWSSDZrm: [ 0.00 0.00 ]
+Key: VPDPWSSDZrmb: [ 0.00 0.00 ]
+Key: VPDPWSSDZrmbk: [ 0.00 0.00 ]
+Key: VPDPWSSDZrmbkz: [ 0.00 0.00 ]
+Key: VPDPWSSDZrmk: [ 0.00 0.00 ]
+Key: VPDPWSSDZrmkz: [ 0.00 0.00 ]
+Key: VPDPWSSDZrr: [ 0.00 0.00 ]
+Key: VPDPWSSDZrrk: [ 0.00 0.00 ]
+Key: VPDPWSSDZrrkz: [ 0.00 0.00 ]
+Key: VPDPWSSDrm: [ 0.00 0.00 ]
+Key: VPDPWSSDrr: [ 0.00 0.00 ]
+Key: VPDPWSUDSYrm: [ 0.00 0.00 ]
+Key: VPDPWSUDSYrr: [ 0.00 0.00 ]
+Key: VPDPWSUDSZ: [ 0.00 0.00 ]
+Key: VPDPWSUDSZrm: [ 0.00 0.00 ]
+Key: VPDPWSUDSZrmb: [ 0.00 0.00 ]
+Key: VPDPWSUDSZrmbk: [ 0.00 0.00 ]
+Key: VPDPWSUDSZrmbkz: [ 0.00 0.00 ]
+Key: VPDPWSUDSZrmk: [ 0.00 0.00 ]
+Key: VPDPWSUDSZrmkz: [ 0.00 0.00 ]
+Key: VPDPWSUDSZrr: [ 0.00 0.00 ]
+Key: VPDPWSUDSZrrk: [ 0.00 0.00 ]
+Key: VPDPWSUDSZrrkz: [ 0.00 0.00 ]
+Key: VPDPWSUDSrm: [ 0.00 0.00 ]
+Key: VPDPWSUDSrr: [ 0.00 0.00 ]
+Key: VPDPWSUDYrm: [ 0.00 0.00 ]
+Key: VPDPWSUDYrr: [ 0.00 0.00 ]
+Key: VPDPWSUDZ: [ 0.00 0.00 ]
+Key: VPDPWSUDZrm: [ 0.00 0.00 ]
+Key: VPDPWSUDZrmb: [ 0.00 0.00 ]
+Key: VPDPWSUDZrmbk: [ 0.00 0.00 ]
+Key: VPDPWSUDZrmbkz: [ 0.00 0.00 ]
+Key: VPDPWSUDZrmk: [ 0.00 0.00 ]
+Key: VPDPWSUDZrmkz: [ 0.00 0.00 ]
+Key: VPDPWSUDZrr: [ 0.00 0.00 ]
+Key: VPDPWSUDZrrk: [ 0.00 0.00 ]
+Key: VPDPWSUDZrrkz: [ 0.00 0.00 ]
+Key: VPDPWSUDrm: [ 0.00 0.00 ]
+Key: VPDPWSUDrr: [ 0.00 0.00 ]
+Key: VPDPWUSDSYrm: [ 0.00 0.00 ]
+Key: VPDPWUSDSYrr: [ 0.00 0.00 ]
+Key: VPDPWUSDSZ: [ 0.00 0.00 ]
+Key: VPDPWUSDSZrm: [ 0.00 0.00 ]
+Key: VPDPWUSDSZrmb: [ 0.00 0.00 ]
+Key: VPDPWUSDSZrmbk: [ 0.00 0.00 ]
+Key: VPDPWUSDSZrmbkz: [ 0.00 0.00 ]
+Key: VPDPWUSDSZrmk: [ 0.00 0.00 ]
+Key: VPDPWUSDSZrmkz: [ 0.00 0.00 ]
+Key: VPDPWUSDSZrr: [ 0.00 0.00 ]
+Key: VPDPWUSDSZrrk: [ 0.00 0.00 ]
+Key: VPDPWUSDSZrrkz: [ 0.00 0.00 ]
+Key: VPDPWUSDSrm: [ 0.00 0.00 ]
+Key: VPDPWUSDSrr: [ 0.00 0.00 ]
+Key: VPDPWUSDYrm: [ 0.00 0.00 ]
+Key: VPDPWUSDYrr: [ 0.00 0.00 ]
+Key: VPDPWUSDZ: [ 0.00 0.00 ]
+Key: VPDPWUSDZrm: [ 0.00 0.00 ]
+Key: VPDPWUSDZrmb: [ 0.00 0.00 ]
+Key: VPDPWUSDZrmbk: [ 0.00 0.00 ]
+Key: VPDPWUSDZrmbkz: [ 0.00 0.00 ]
+Key: VPDPWUSDZrmk: [ 0.00 0.00 ]
+Key: VPDPWUSDZrmkz: [ 0.00 0.00 ]
+Key: VPDPWUSDZrr: [ 0.00 0.00 ]
+Key: VPDPWUSDZrrk: [ 0.00 0.00 ]
+Key: VPDPWUSDZrrkz: [ 0.00 0.00 ]
+Key: VPDPWUSDrm: [ 0.00 0.00 ]
+Key: VPDPWUSDrr: [ 0.00 0.00 ]
+Key: VPDPWUUDSYrm: [ 0.00 0.00 ]
+Key: VPDPWUUDSYrr: [ 0.00 0.00 ]
+Key: VPDPWUUDSZ: [ 0.00 0.00 ]
+Key: VPDPWUUDSZrm: [ 0.00 0.00 ]
+Key: VPDPWUUDSZrmb: [ 0.00 0.00 ]
+Key: VPDPWUUDSZrmbk: [ 0.00 0.00 ]
+Key: VPDPWUUDSZrmbkz: [ 0.00 0.00 ]
+Key: VPDPWUUDSZrmk: [ 0.00 0.00 ]
+Key: VPDPWUUDSZrmkz: [ 0.00 0.00 ]
+Key: VPDPWUUDSZrr: [ 0.00 0.00 ]
+Key: VPDPWUUDSZrrk: [ 0.00 0.00 ]
+Key: VPDPWUUDSZrrkz: [ 0.00 0.00 ]
+Key: VPDPWUUDSrm: [ 0.00 0.00 ]
+Key: VPDPWUUDSrr: [ 0.00 0.00 ]
+Key: VPDPWUUDYrm: [ 0.00 0.00 ]
+Key: VPDPWUUDYrr: [ 0.00 0.00 ]
+Key: VPDPWUUDZ: [ 0.00 0.00 ]
+Key: VPDPWUUDZrm: [ 0.00 0.00 ]
+Key: VPDPWUUDZrmb: [ 0.00 0.00 ]
+Key: VPDPWUUDZrmbk: [ 0.00 0.00 ]
+Key: VPDPWUUDZrmbkz: [ 0.00 0.00 ]
+Key: VPDPWUUDZrmk: [ 0.00 0.00 ]
+Key: VPDPWUUDZrmkz: [ 0.00 0.00 ]
+Key: VPDPWUUDZrr: [ 0.00 0.00 ]
+Key: VPDPWUUDZrrk: [ 0.00 0.00 ]
+Key: VPDPWUUDZrrkz: [ 0.00 0.00 ]
+Key: VPDPWUUDrm: [ 0.00 0.00 ]
+Key: VPDPWUUDrr: [ 0.00 0.00 ]
+Key: VPERM: [ 0.00 0.00 ]
+Key: VPERMBZ: [ 0.00 0.00 ]
+Key: VPERMBZrm: [ 0.00 0.00 ]
+Key: VPERMBZrmk: [ 0.00 0.00 ]
+Key: VPERMBZrmkz: [ 0.00 0.00 ]
+Key: VPERMBZrr: [ 0.00 0.00 ]
+Key: VPERMBZrrk: [ 0.00 0.00 ]
+Key: VPERMBZrrkz: [ 0.00 0.00 ]
+Key: VPERMDYrm: [ 0.00 0.00 ]
+Key: VPERMDYrr: [ 0.00 0.00 ]
+Key: VPERMDZ: [ 0.00 0.00 ]
+Key: VPERMDZrm: [ 0.00 0.00 ]
+Key: VPERMDZrmb: [ 0.00 0.00 ]
+Key: VPERMDZrmbk: [ 0.00 0.00 ]
+Key: VPERMDZrmbkz: [ 0.00 0.00 ]
+Key: VPERMDZrmk: [ 0.00 0.00 ]
+Key: VPERMDZrmkz: [ 0.00 0.00 ]
+Key: VPERMDZrr: [ 0.00 0.00 ]
+Key: VPERMDZrrk: [ 0.00 0.00 ]
+Key: VPERMDZrrkz: [ 0.00 0.00 ]
+Key: VPERMI: [ 0.00 0.00 ]
+Key: VPERMIL: [ 0.00 0.00 ]
+Key: VPERMILPDYmi: [ 0.00 0.00 ]
+Key: VPERMILPDYri: [ 0.00 0.00 ]
+Key: VPERMILPDYrm: [ 0.00 0.00 ]
+Key: VPERMILPDYrr: [ 0.00 0.00 ]
+Key: VPERMILPDZ: [ 0.00 0.00 ]
+Key: VPERMILPDZmbi: [ 0.00 0.00 ]
+Key: VPERMILPDZmbik: [ 0.00 0.00 ]
+Key: VPERMILPDZmbikz: [ 0.00 0.00 ]
+Key: VPERMILPDZmi: [ 0.00 0.00 ]
+Key: VPERMILPDZmik: [ 0.00 0.00 ]
+Key: VPERMILPDZmikz: [ 0.00 0.00 ]
+Key: VPERMILPDZri: [ 0.00 0.00 ]
+Key: VPERMILPDZrik: [ 0.00 0.00 ]
+Key: VPERMILPDZrikz: [ 0.00 0.00 ]
+Key: VPERMILPDZrm: [ 0.00 0.00 ]
+Key: VPERMILPDZrmb: [ 0.00 0.00 ]
+Key: VPERMILPDZrmbk: [ 0.00 0.00 ]
+Key: VPERMILPDZrmbkz: [ 0.00 0.00 ]
+Key: VPERMILPDZrmk: [ 0.00 0.00 ]
+Key: VPERMILPDZrmkz: [ 0.00 0.00 ]
+Key: VPERMILPDZrr: [ 0.00 0.00 ]
+Key: VPERMILPDZrrk: [ 0.00 0.00 ]
+Key: VPERMILPDZrrkz: [ 0.00 0.00 ]
+Key: VPERMILPDmi: [ 0.00 0.00 ]
+Key: VPERMILPDri: [ 0.00 0.00 ]
+Key: VPERMILPDrm: [ 0.00 0.00 ]
+Key: VPERMILPDrr: [ 0.00 0.00 ]
+Key: VPERMILPSYmi: [ 0.00 0.00 ]
+Key: VPERMILPSYri: [ 0.00 0.00 ]
+Key: VPERMILPSYrm: [ 0.00 0.00 ]
+Key: VPERMILPSYrr: [ 0.00 0.00 ]
+Key: VPERMILPSZ: [ 0.00 0.00 ]
+Key: VPERMILPSZmbi: [ 0.00 0.00 ]
+Key: VPERMILPSZmbik: [ 0.00 0.00 ]
+Key: VPERMILPSZmbikz: [ 0.00 0.00 ]
+Key: VPERMILPSZmi: [ 0.00 0.00 ]
+Key: VPERMILPSZmik: [ 0.00 0.00 ]
+Key: VPERMILPSZmikz: [ 0.00 0.00 ]
+Key: VPERMILPSZri: [ 0.00 0.00 ]
+Key: VPERMILPSZrik: [ 0.00 0.00 ]
+Key: VPERMILPSZrikz: [ 0.00 0.00 ]
+Key: VPERMILPSZrm: [ 0.00 0.00 ]
+Key: VPERMILPSZrmb: [ 0.00 0.00 ]
+Key: VPERMILPSZrmbk: [ 0.00 0.00 ]
+Key: VPERMILPSZrmbkz: [ 0.00 0.00 ]
+Key: VPERMILPSZrmk: [ 0.00 0.00 ]
+Key: VPERMILPSZrmkz: [ 0.00 0.00 ]
+Key: VPERMILPSZrr: [ 0.00 0.00 ]
+Key: VPERMILPSZrrk: [ 0.00 0.00 ]
+Key: VPERMILPSZrrkz: [ 0.00 0.00 ]
+Key: VPERMILPSmi: [ 0.00 0.00 ]
+Key: VPERMILPSri: [ 0.00 0.00 ]
+Key: VPERMILPSrm: [ 0.00 0.00 ]
+Key: VPERMILPSrr: [ 0.00 0.00 ]
+Key: VPERMPDYmi: [ 0.00 0.00 ]
+Key: VPERMPDYri: [ 0.00 0.00 ]
+Key: VPERMPDZ: [ 0.00 0.00 ]
+Key: VPERMPDZmbi: [ 0.00 0.00 ]
+Key: VPERMPDZmbik: [ 0.00 0.00 ]
+Key: VPERMPDZmbikz: [ 0.00 0.00 ]
+Key: VPERMPDZmi: [ 0.00 0.00 ]
+Key: VPERMPDZmik: [ 0.00 0.00 ]
+Key: VPERMPDZmikz: [ 0.00 0.00 ]
+Key: VPERMPDZri: [ 0.00 0.00 ]
+Key: VPERMPDZrik: [ 0.00 0.00 ]
+Key: VPERMPDZrikz: [ 0.00 0.00 ]
+Key: VPERMPDZrm: [ 0.00 0.00 ]
+Key: VPERMPDZrmb: [ 0.00 0.00 ]
+Key: VPERMPDZrmbk: [ 0.00 0.00 ]
+Key: VPERMPDZrmbkz: [ 0.00 0.00 ]
+Key: VPERMPDZrmk: [ 0.00 0.00 ]
+Key: VPERMPDZrmkz: [ 0.00 0.00 ]
+Key: VPERMPDZrr: [ 0.00 0.00 ]
+Key: VPERMPDZrrk: [ 0.00 0.00 ]
+Key: VPERMPDZrrkz: [ 0.00 0.00 ]
+Key: VPERMPSYrm: [ 0.00 0.00 ]
+Key: VPERMPSYrr: [ 0.00 0.00 ]
+Key: VPERMPSZ: [ 0.00 0.00 ]
+Key: VPERMPSZrm: [ 0.00 0.00 ]
+Key: VPERMPSZrmb: [ 0.00 0.00 ]
+Key: VPERMPSZrmbk: [ 0.00 0.00 ]
+Key: VPERMPSZrmbkz: [ 0.00 0.00 ]
+Key: VPERMPSZrmk: [ 0.00 0.00 ]
+Key: VPERMPSZrmkz: [ 0.00 0.00 ]
+Key: VPERMPSZrr: [ 0.00 0.00 ]
+Key: VPERMPSZrrk: [ 0.00 0.00 ]
+Key: VPERMPSZrrkz: [ 0.00 0.00 ]
+Key: VPERMQYmi: [ 0.00 0.00 ]
+Key: VPERMQYri: [ 0.00 0.00 ]
+Key: VPERMQZ: [ 0.00 0.00 ]
+Key: VPERMQZmbi: [ 0.00 0.00 ]
+Key: VPERMQZmbik: [ 0.00 0.00 ]
+Key: VPERMQZmbikz: [ 0.00 0.00 ]
+Key: VPERMQZmi: [ 0.00 0.00 ]
+Key: VPERMQZmik: [ 0.00 0.00 ]
+Key: VPERMQZmikz: [ 0.00 0.00 ]
+Key: VPERMQZri: [ 0.00 0.00 ]
+Key: VPERMQZrik: [ 0.00 0.00 ]
+Key: VPERMQZrikz: [ 0.00 0.00 ]
+Key: VPERMQZrm: [ 0.00 0.00 ]
+Key: VPERMQZrmb: [ 0.00 0.00 ]
+Key: VPERMQZrmbk: [ 0.00 0.00 ]
+Key: VPERMQZrmbkz: [ 0.00 0.00 ]
+Key: VPERMQZrmk: [ 0.00 0.00 ]
+Key: VPERMQZrmkz: [ 0.00 0.00 ]
+Key: VPERMQZrr: [ 0.00 0.00 ]
+Key: VPERMQZrrk: [ 0.00 0.00 ]
+Key: VPERMQZrrkz: [ 0.00 0.00 ]
+Key: VPERMT: [ 0.00 0.00 ]
+Key: VPERMWZ: [ 0.00 0.00 ]
+Key: VPERMWZrm: [ 0.00 0.00 ]
+Key: VPERMWZrmk: [ 0.00 0.00 ]
+Key: VPERMWZrmkz: [ 0.00 0.00 ]
+Key: VPERMWZrr: [ 0.00 0.00 ]
+Key: VPERMWZrrk: [ 0.00 0.00 ]
+Key: VPERMWZrrkz: [ 0.00 0.00 ]
+Key: VPEXPANDBZ: [ 0.00 0.00 ]
+Key: VPEXPANDBZrm: [ 0.00 0.00 ]
+Key: VPEXPANDBZrmk: [ 0.00 0.00 ]
+Key: VPEXPANDBZrmkz: [ 0.00 0.00 ]
+Key: VPEXPANDBZrr: [ 0.00 0.00 ]
+Key: VPEXPANDBZrrk: [ 0.00 0.00 ]
+Key: VPEXPANDBZrrkz: [ 0.00 0.00 ]
+Key: VPEXPANDDZ: [ 0.00 0.00 ]
+Key: VPEXPANDDZrm: [ 0.00 0.00 ]
+Key: VPEXPANDDZrmk: [ 0.00 0.00 ]
+Key: VPEXPANDDZrmkz: [ 0.00 0.00 ]
+Key: VPEXPANDDZrr: [ 0.00 0.00 ]
+Key: VPEXPANDDZrrk: [ 0.00 0.00 ]
+Key: VPEXPANDDZrrkz: [ 0.00 0.00 ]
+Key: VPEXPANDQZ: [ 0.00 0.00 ]
+Key: VPEXPANDQZrm: [ 0.00 0.00 ]
+Key: VPEXPANDQZrmk: [ 0.00 0.00 ]
+Key: VPEXPANDQZrmkz: [ 0.00 0.00 ]
+Key: VPEXPANDQZrr: [ 0.00 0.00 ]
+Key: VPEXPANDQZrrk: [ 0.00 0.00 ]
+Key: VPEXPANDQZrrkz: [ 0.00 0.00 ]
+Key: VPEXPANDWZ: [ 0.00 0.00 ]
+Key: VPEXPANDWZrm: [ 0.00 0.00 ]
+Key: VPEXPANDWZrmk: [ 0.00 0.00 ]
+Key: VPEXPANDWZrmkz: [ 0.00 0.00 ]
+Key: VPEXPANDWZrr: [ 0.00 0.00 ]
+Key: VPEXPANDWZrrk: [ 0.00 0.00 ]
+Key: VPEXPANDWZrrkz: [ 0.00 0.00 ]
+Key: VPEXTRBZmri: [ 0.00 0.00 ]
+Key: VPEXTRBZrri: [ 0.00 0.00 ]
+Key: VPEXTRBmri: [ 0.00 0.00 ]
+Key: VPEXTRBrri: [ 0.00 0.00 ]
+Key: VPEXTRDZmri: [ 0.00 0.00 ]
+Key: VPEXTRDZrri: [ 0.00 0.00 ]
+Key: VPEXTRDmri: [ 0.00 0.00 ]
+Key: VPEXTRDrri: [ 0.00 0.00 ]
+Key: VPEXTRQZmri: [ 0.00 0.00 ]
+Key: VPEXTRQZrri: [ 0.00 0.00 ]
+Key: VPEXTRQmri: [ 0.00 0.00 ]
+Key: VPEXTRQrri: [ 0.00 0.00 ]
+Key: VPEXTRWZmri: [ 0.00 0.00 ]
+Key: VPEXTRWZrri: [ 0.00 0.00 ]
+Key: VPEXTRWZrri_REV: [ 0.00 0.00 ]
+Key: VPEXTRWmri: [ 0.00 0.00 ]
+Key: VPEXTRWrri: [ 0.00 0.00 ]
+Key: VPEXTRWrri_REV: [ 0.00 0.00 ]
+Key: VPGATHERDDYrm: [ 0.00 0.00 ]
+Key: VPGATHERDDZ: [ 0.00 0.00 ]
+Key: VPGATHERDDZrm: [ 0.00 0.00 ]
+Key: VPGATHERDDrm: [ 0.00 0.00 ]
+Key: VPGATHERDQYrm: [ 0.00 0.00 ]
+Key: VPGATHERDQZ: [ 0.00 0.00 ]
+Key: VPGATHERDQZrm: [ 0.00 0.00 ]
+Key: VPGATHERDQrm: [ 0.00 0.00 ]
+Key: VPGATHERQDYrm: [ 0.00 0.00 ]
+Key: VPGATHERQDZ: [ 0.00 0.00 ]
+Key: VPGATHERQDZrm: [ 0.00 0.00 ]
+Key: VPGATHERQDrm: [ 0.00 0.00 ]
+Key: VPGATHERQQYrm: [ 0.00 0.00 ]
+Key: VPGATHERQQZ: [ 0.00 0.00 ]
+Key: VPGATHERQQZrm: [ 0.00 0.00 ]
+Key: VPGATHERQQrm: [ 0.00 0.00 ]
+Key: VPHADDBDrm: [ 0.00 0.00 ]
+Key: VPHADDBDrr: [ 0.00 0.00 ]
+Key: VPHADDBQrm: [ 0.00 0.00 ]
+Key: VPHADDBQrr: [ 0.00 0.00 ]
+Key: VPHADDBWrm: [ 0.00 0.00 ]
+Key: VPHADDBWrr: [ 0.00 0.00 ]
+Key: VPHADDDQrm: [ 0.00 0.00 ]
+Key: VPHADDDQrr: [ 0.00 0.00 ]
+Key: VPHADDDYrm: [ 0.00 0.00 ]
+Key: VPHADDDYrr: [ 0.00 0.00 ]
+Key: VPHADDDrm: [ 0.00 0.00 ]
+Key: VPHADDDrr: [ 0.00 0.00 ]
+Key: VPHADDSWYrm: [ 0.00 0.00 ]
+Key: VPHADDSWYrr: [ 0.00 0.00 ]
+Key: VPHADDSWrm: [ 0.00 0.00 ]
+Key: VPHADDSWrr: [ 0.00 0.00 ]
+Key: VPHADDUBDrm: [ 0.00 0.00 ]
+Key: VPHADDUBDrr: [ 0.00 0.00 ]
+Key: VPHADDUBQrm: [ 0.00 0.00 ]
+Key: VPHADDUBQrr: [ 0.00 0.00 ]
+Key: VPHADDUBWrm: [ 0.00 0.00 ]
+Key: VPHADDUBWrr: [ 0.00 0.00 ]
+Key: VPHADDUDQrm: [ 0.00 0.00 ]
+Key: VPHADDUDQrr: [ 0.00 0.00 ]
+Key: VPHADDUWDrm: [ 0.00 0.00 ]
+Key: VPHADDUWDrr: [ 0.00 0.00 ]
+Key: VPHADDUWQrm: [ 0.00 0.00 ]
+Key: VPHADDUWQrr: [ 0.00 0.00 ]
+Key: VPHADDWDrm: [ 0.00 0.00 ]
+Key: VPHADDWDrr: [ 0.00 0.00 ]
+Key: VPHADDWQrm: [ 0.00 0.00 ]
+Key: VPHADDWQrr: [ 0.00 0.00 ]
+Key: VPHADDWYrm: [ 0.00 0.00 ]
+Key: VPHADDWYrr: [ 0.00 0.00 ]
+Key: VPHADDWrm: [ 0.00 0.00 ]
+Key: VPHADDWrr: [ 0.00 0.00 ]
+Key: VPHMINPOSUWrm: [ 0.00 0.00 ]
+Key: VPHMINPOSUWrr: [ 0.00 0.00 ]
+Key: VPHSUBBWrm: [ 0.00 0.00 ]
+Key: VPHSUBBWrr: [ 0.00 0.00 ]
+Key: VPHSUBDQrm: [ 0.00 0.00 ]
+Key: VPHSUBDQrr: [ 0.00 0.00 ]
+Key: VPHSUBDYrm: [ 0.00 0.00 ]
+Key: VPHSUBDYrr: [ 0.00 0.00 ]
+Key: VPHSUBDrm: [ 0.00 0.00 ]
+Key: VPHSUBDrr: [ 0.00 0.00 ]
+Key: VPHSUBSWYrm: [ 0.00 0.00 ]
+Key: VPHSUBSWYrr: [ 0.00 0.00 ]
+Key: VPHSUBSWrm: [ 0.00 0.00 ]
+Key: VPHSUBSWrr: [ 0.00 0.00 ]
+Key: VPHSUBWDrm: [ 0.00 0.00 ]
+Key: VPHSUBWDrr: [ 0.00 0.00 ]
+Key: VPHSUBWYrm: [ 0.00 0.00 ]
+Key: VPHSUBWYrr: [ 0.00 0.00 ]
+Key: VPHSUBWrm: [ 0.00 0.00 ]
+Key: VPHSUBWrr: [ 0.00 0.00 ]
+Key: VPINSRBZrmi: [ 0.00 0.00 ]
+Key: VPINSRBZrri: [ 0.00 0.00 ]
+Key: VPINSRBrmi: [ 0.00 0.00 ]
+Key: VPINSRBrri: [ 0.00 0.00 ]
+Key: VPINSRDZrmi: [ 0.00 0.00 ]
+Key: VPINSRDZrri: [ 0.00 0.00 ]
+Key: VPINSRDrmi: [ 0.00 0.00 ]
+Key: VPINSRDrri: [ 0.00 0.00 ]
+Key: VPINSRQZrmi: [ 0.00 0.00 ]
+Key: VPINSRQZrri: [ 0.00 0.00 ]
+Key: VPINSRQrmi: [ 0.00 0.00 ]
+Key: VPINSRQrri: [ 0.00 0.00 ]
+Key: VPINSRWZrmi: [ 0.00 0.00 ]
+Key: VPINSRWZrri: [ 0.00 0.00 ]
+Key: VPINSRWrmi: [ 0.00 0.00 ]
+Key: VPINSRWrri: [ 0.00 0.00 ]
+Key: VPLZCNTDZ: [ 0.00 0.00 ]
+Key: VPLZCNTDZrm: [ 0.00 0.00 ]
+Key: VPLZCNTDZrmb: [ 0.00 0.00 ]
+Key: VPLZCNTDZrmbk: [ 0.00 0.00 ]
+Key: VPLZCNTDZrmbkz: [ 0.00 0.00 ]
+Key: VPLZCNTDZrmk: [ 0.00 0.00 ]
+Key: VPLZCNTDZrmkz: [ 0.00 0.00 ]
+Key: VPLZCNTDZrr: [ 0.00 0.00 ]
+Key: VPLZCNTDZrrk: [ 0.00 0.00 ]
+Key: VPLZCNTDZrrkz: [ 0.00 0.00 ]
+Key: VPLZCNTQZ: [ 0.00 0.00 ]
+Key: VPLZCNTQZrm: [ 0.00 0.00 ]
+Key: VPLZCNTQZrmb: [ 0.00 0.00 ]
+Key: VPLZCNTQZrmbk: [ 0.00 0.00 ]
+Key: VPLZCNTQZrmbkz: [ 0.00 0.00 ]
+Key: VPLZCNTQZrmk: [ 0.00 0.00 ]
+Key: VPLZCNTQZrmkz: [ 0.00 0.00 ]
+Key: VPLZCNTQZrr: [ 0.00 0.00 ]
+Key: VPLZCNTQZrrk: [ 0.00 0.00 ]
+Key: VPLZCNTQZrrkz: [ 0.00 0.00 ]
+Key: VPMACSDDrm: [ 0.00 0.00 ]
+Key: VPMACSDDrr: [ 0.00 0.00 ]
+Key: VPMACSDQHrm: [ 0.00 0.00 ]
+Key: VPMACSDQHrr: [ 0.00 0.00 ]
+Key: VPMACSDQLrm: [ 0.00 0.00 ]
+Key: VPMACSDQLrr: [ 0.00 0.00 ]
+Key: VPMACSSDDrm: [ 0.00 0.00 ]
+Key: VPMACSSDDrr: [ 0.00 0.00 ]
+Key: VPMACSSDQHrm: [ 0.00 0.00 ]
+Key: VPMACSSDQHrr: [ 0.00 0.00 ]
+Key: VPMACSSDQLrm: [ 0.00 0.00 ]
+Key: VPMACSSDQLrr: [ 0.00 0.00 ]
+Key: VPMACSSWDrm: [ 0.00 0.00 ]
+Key: VPMACSSWDrr: [ 0.00 0.00 ]
+Key: VPMACSSWWrm: [ 0.00 0.00 ]
+Key: VPMACSSWWrr: [ 0.00 0.00 ]
+Key: VPMACSWDrm: [ 0.00 0.00 ]
+Key: VPMACSWDrr: [ 0.00 0.00 ]
+Key: VPMACSWWrm: [ 0.00 0.00 ]
+Key: VPMACSWWrr: [ 0.00 0.00 ]
+Key: VPMADCSSWDrm: [ 0.00 0.00 ]
+Key: VPMADCSSWDrr: [ 0.00 0.00 ]
+Key: VPMADCSWDrm: [ 0.00 0.00 ]
+Key: VPMADCSWDrr: [ 0.00 0.00 ]
+Key: VPMADD: [ 0.00 0.00 ]
+Key: VPMADDUBSWYrm: [ 0.00 0.00 ]
+Key: VPMADDUBSWYrr: [ 0.00 0.00 ]
+Key: VPMADDUBSWZ: [ 0.00 0.00 ]
+Key: VPMADDUBSWZrm: [ 0.00 0.00 ]
+Key: VPMADDUBSWZrmk: [ 0.00 0.00 ]
+Key: VPMADDUBSWZrmkz: [ 0.00 0.00 ]
+Key: VPMADDUBSWZrr: [ 0.00 0.00 ]
+Key: VPMADDUBSWZrrk: [ 0.00 0.00 ]
+Key: VPMADDUBSWZrrkz: [ 0.00 0.00 ]
+Key: VPMADDUBSWrm: [ 0.00 0.00 ]
+Key: VPMADDUBSWrr: [ 0.00 0.00 ]
+Key: VPMADDWDYrm: [ 0.00 0.00 ]
+Key: VPMADDWDYrr: [ 0.00 0.00 ]
+Key: VPMADDWDZ: [ 0.00 0.00 ]
+Key: VPMADDWDZrm: [ 0.00 0.00 ]
+Key: VPMADDWDZrmk: [ 0.00 0.00 ]
+Key: VPMADDWDZrmkz: [ 0.00 0.00 ]
+Key: VPMADDWDZrr: [ 0.00 0.00 ]
+Key: VPMADDWDZrrk: [ 0.00 0.00 ]
+Key: VPMADDWDZrrkz: [ 0.00 0.00 ]
+Key: VPMADDWDrm: [ 0.00 0.00 ]
+Key: VPMADDWDrr: [ 0.00 0.00 ]
+Key: VPMASKMOVDYmr: [ 0.00 0.00 ]
+Key: VPMASKMOVDYrm: [ 0.00 0.00 ]
+Key: VPMASKMOVDmr: [ 0.00 0.00 ]
+Key: VPMASKMOVDrm: [ 0.00 0.00 ]
+Key: VPMASKMOVQYmr: [ 0.00 0.00 ]
+Key: VPMASKMOVQYrm: [ 0.00 0.00 ]
+Key: VPMASKMOVQmr: [ 0.00 0.00 ]
+Key: VPMASKMOVQrm: [ 0.00 0.00 ]
+Key: VPMAXSBYrm: [ 0.00 0.00 ]
+Key: VPMAXSBYrr: [ 0.00 0.00 ]
+Key: VPMAXSBZ: [ 0.00 0.00 ]
+Key: VPMAXSBZrm: [ 0.00 0.00 ]
+Key: VPMAXSBZrmk: [ 0.00 0.00 ]
+Key: VPMAXSBZrmkz: [ 0.00 0.00 ]
+Key: VPMAXSBZrr: [ 0.00 0.00 ]
+Key: VPMAXSBZrrk: [ 0.00 0.00 ]
+Key: VPMAXSBZrrkz: [ 0.00 0.00 ]
+Key: VPMAXSBrm: [ 0.00 0.00 ]
+Key: VPMAXSBrr: [ 0.00 0.00 ]
+Key: VPMAXSDYrm: [ 0.00 0.00 ]
+Key: VPMAXSDYrr: [ 0.00 0.00 ]
+Key: VPMAXSDZ: [ 0.00 0.00 ]
+Key: VPMAXSDZrm: [ 0.00 0.00 ]
+Key: VPMAXSDZrmb: [ 0.00 0.00 ]
+Key: VPMAXSDZrmbk: [ 0.00 0.00 ]
+Key: VPMAXSDZrmbkz: [ 0.00 0.00 ]
+Key: VPMAXSDZrmk: [ 0.00 0.00 ]
+Key: VPMAXSDZrmkz: [ 0.00 0.00 ]
+Key: VPMAXSDZrr: [ 0.00 0.00 ]
+Key: VPMAXSDZrrk: [ 0.00 0.00 ]
+Key: VPMAXSDZrrkz: [ 0.00 0.00 ]
+Key: VPMAXSDrm: [ 0.00 0.00 ]
+Key: VPMAXSDrr: [ 0.00 0.00 ]
+Key: VPMAXSQZ: [ 0.00 0.00 ]
+Key: VPMAXSQZrm: [ 0.00 0.00 ]
+Key: VPMAXSQZrmb: [ 0.00 0.00 ]
+Key: VPMAXSQZrmbk: [ 0.00 0.00 ]
+Key: VPMAXSQZrmbkz: [ 0.00 0.00 ]
+Key: VPMAXSQZrmk: [ 0.00 0.00 ]
+Key: VPMAXSQZrmkz: [ 0.00 0.00 ]
+Key: VPMAXSQZrr: [ 0.00 0.00 ]
+Key: VPMAXSQZrrk: [ 0.00 0.00 ]
+Key: VPMAXSQZrrkz: [ 0.00 0.00 ]
+Key: VPMAXSWYrm: [ 0.00 0.00 ]
+Key: VPMAXSWYrr: [ 0.00 0.00 ]
+Key: VPMAXSWZ: [ 0.00 0.00 ]
+Key: VPMAXSWZrm: [ 0.00 0.00 ]
+Key: VPMAXSWZrmk: [ 0.00 0.00 ]
+Key: VPMAXSWZrmkz: [ 0.00 0.00 ]
+Key: VPMAXSWZrr: [ 0.00 0.00 ]
+Key: VPMAXSWZrrk: [ 0.00 0.00 ]
+Key: VPMAXSWZrrkz: [ 0.00 0.00 ]
+Key: VPMAXSWrm: [ 0.00 0.00 ]
+Key: VPMAXSWrr: [ 0.00 0.00 ]
+Key: VPMAXUBYrm: [ 0.00 0.00 ]
+Key: VPMAXUBYrr: [ 0.00 0.00 ]
+Key: VPMAXUBZ: [ 0.00 0.00 ]
+Key: VPMAXUBZrm: [ 0.00 0.00 ]
+Key: VPMAXUBZrmk: [ 0.00 0.00 ]
+Key: VPMAXUBZrmkz: [ 0.00 0.00 ]
+Key: VPMAXUBZrr: [ 0.00 0.00 ]
+Key: VPMAXUBZrrk: [ 0.00 0.00 ]
+Key: VPMAXUBZrrkz: [ 0.00 0.00 ]
+Key: VPMAXUBrm: [ 0.00 0.00 ]
+Key: VPMAXUBrr: [ 0.00 0.00 ]
+Key: VPMAXUDYrm: [ 0.00 0.00 ]
+Key: VPMAXUDYrr: [ 0.00 0.00 ]
+Key: VPMAXUDZ: [ 0.00 0.00 ]
+Key: VPMAXUDZrm: [ 0.00 0.00 ]
+Key: VPMAXUDZrmb: [ 0.00 0.00 ]
+Key: VPMAXUDZrmbk: [ 0.00 0.00 ]
+Key: VPMAXUDZrmbkz: [ 0.00 0.00 ]
+Key: VPMAXUDZrmk: [ 0.00 0.00 ]
+Key: VPMAXUDZrmkz: [ 0.00 0.00 ]
+Key: VPMAXUDZrr: [ 0.00 0.00 ]
+Key: VPMAXUDZrrk: [ 0.00 0.00 ]
+Key: VPMAXUDZrrkz: [ 0.00 0.00 ]
+Key: VPMAXUDrm: [ 0.00 0.00 ]
+Key: VPMAXUDrr: [ 0.00 0.00 ]
+Key: VPMAXUQZ: [ 0.00 0.00 ]
+Key: VPMAXUQZrm: [ 0.00 0.00 ]
+Key: VPMAXUQZrmb: [ 0.00 0.00 ]
+Key: VPMAXUQZrmbk: [ 0.00 0.00 ]
+Key: VPMAXUQZrmbkz: [ 0.00 0.00 ]
+Key: VPMAXUQZrmk: [ 0.00 0.00 ]
+Key: VPMAXUQZrmkz: [ 0.00 0.00 ]
+Key: VPMAXUQZrr: [ 0.00 0.00 ]
+Key: VPMAXUQZrrk: [ 0.00 0.00 ]
+Key: VPMAXUQZrrkz: [ 0.00 0.00 ]
+Key: VPMAXUWYrm: [ 0.00 0.00 ]
+Key: VPMAXUWYrr: [ 0.00 0.00 ]
+Key: VPMAXUWZ: [ 0.00 0.00 ]
+Key: VPMAXUWZrm: [ 0.00 0.00 ]
+Key: VPMAXUWZrmk: [ 0.00 0.00 ]
+Key: VPMAXUWZrmkz: [ 0.00 0.00 ]
+Key: VPMAXUWZrr: [ 0.00 0.00 ]
+Key: VPMAXUWZrrk: [ 0.00 0.00 ]
+Key: VPMAXUWZrrkz: [ 0.00 0.00 ]
+Key: VPMAXUWrm: [ 0.00 0.00 ]
+Key: VPMAXUWrr: [ 0.00 0.00 ]
+Key: VPMINSBYrm: [ 0.00 0.00 ]
+Key: VPMINSBYrr: [ 0.00 0.00 ]
+Key: VPMINSBZ: [ 0.00 0.00 ]
+Key: VPMINSBZrm: [ 0.00 0.00 ]
+Key: VPMINSBZrmk: [ 0.00 0.00 ]
+Key: VPMINSBZrmkz: [ 0.00 0.00 ]
+Key: VPMINSBZrr: [ 0.00 0.00 ]
+Key: VPMINSBZrrk: [ 0.00 0.00 ]
+Key: VPMINSBZrrkz: [ 0.00 0.00 ]
+Key: VPMINSBrm: [ 0.00 0.00 ]
+Key: VPMINSBrr: [ 0.00 0.00 ]
+Key: VPMINSDYrm: [ 0.00 0.00 ]
+Key: VPMINSDYrr: [ 0.00 0.00 ]
+Key: VPMINSDZ: [ 0.00 0.00 ]
+Key: VPMINSDZrm: [ 0.00 0.00 ]
+Key: VPMINSDZrmb: [ 0.00 0.00 ]
+Key: VPMINSDZrmbk: [ 0.00 0.00 ]
+Key: VPMINSDZrmbkz: [ 0.00 0.00 ]
+Key: VPMINSDZrmk: [ 0.00 0.00 ]
+Key: VPMINSDZrmkz: [ 0.00 0.00 ]
+Key: VPMINSDZrr: [ 0.00 0.00 ]
+Key: VPMINSDZrrk: [ 0.00 0.00 ]
+Key: VPMINSDZrrkz: [ 0.00 0.00 ]
+Key: VPMINSDrm: [ 0.00 0.00 ]
+Key: VPMINSDrr: [ 0.00 0.00 ]
+Key: VPMINSQZ: [ 0.00 0.00 ]
+Key: VPMINSQZrm: [ 0.00 0.00 ]
+Key: VPMINSQZrmb: [ 0.00 0.00 ]
+Key: VPMINSQZrmbk: [ 0.00 0.00 ]
+Key: VPMINSQZrmbkz: [ 0.00 0.00 ]
+Key: VPMINSQZrmk: [ 0.00 0.00 ]
+Key: VPMINSQZrmkz: [ 0.00 0.00 ]
+Key: VPMINSQZrr: [ 0.00 0.00 ]
+Key: VPMINSQZrrk: [ 0.00 0.00 ]
+Key: VPMINSQZrrkz: [ 0.00 0.00 ]
+Key: VPMINSWYrm: [ 0.00 0.00 ]
+Key: VPMINSWYrr: [ 0.00 0.00 ]
+Key: VPMINSWZ: [ 0.00 0.00 ]
+Key: VPMINSWZrm: [ 0.00 0.00 ]
+Key: VPMINSWZrmk: [ 0.00 0.00 ]
+Key: VPMINSWZrmkz: [ 0.00 0.00 ]
+Key: VPMINSWZrr: [ 0.00 0.00 ]
+Key: VPMINSWZrrk: [ 0.00 0.00 ]
+Key: VPMINSWZrrkz: [ 0.00 0.00 ]
+Key: VPMINSWrm: [ 0.00 0.00 ]
+Key: VPMINSWrr: [ 0.00 0.00 ]
+Key: VPMINUBYrm: [ 0.00 0.00 ]
+Key: VPMINUBYrr: [ 0.00 0.00 ]
+Key: VPMINUBZ: [ 0.00 0.00 ]
+Key: VPMINUBZrm: [ 0.00 0.00 ]
+Key: VPMINUBZrmk: [ 0.00 0.00 ]
+Key: VPMINUBZrmkz: [ 0.00 0.00 ]
+Key: VPMINUBZrr: [ 0.00 0.00 ]
+Key: VPMINUBZrrk: [ 0.00 0.00 ]
+Key: VPMINUBZrrkz: [ 0.00 0.00 ]
+Key: VPMINUBrm: [ 0.00 0.00 ]
+Key: VPMINUBrr: [ 0.00 0.00 ]
+Key: VPMINUDYrm: [ 0.00 0.00 ]
+Key: VPMINUDYrr: [ 0.00 0.00 ]
+Key: VPMINUDZ: [ 0.00 0.00 ]
+Key: VPMINUDZrm: [ 0.00 0.00 ]
+Key: VPMINUDZrmb: [ 0.00 0.00 ]
+Key: VPMINUDZrmbk: [ 0.00 0.00 ]
+Key: VPMINUDZrmbkz: [ 0.00 0.00 ]
+Key: VPMINUDZrmk: [ 0.00 0.00 ]
+Key: VPMINUDZrmkz: [ 0.00 0.00 ]
+Key: VPMINUDZrr: [ 0.00 0.00 ]
+Key: VPMINUDZrrk: [ 0.00 0.00 ]
+Key: VPMINUDZrrkz: [ 0.00 0.00 ]
+Key: VPMINUDrm: [ 0.00 0.00 ]
+Key: VPMINUDrr: [ 0.00 0.00 ]
+Key: VPMINUQZ: [ 0.00 0.00 ]
+Key: VPMINUQZrm: [ 0.00 0.00 ]
+Key: VPMINUQZrmb: [ 0.00 0.00 ]
+Key: VPMINUQZrmbk: [ 0.00 0.00 ]
+Key: VPMINUQZrmbkz: [ 0.00 0.00 ]
+Key: VPMINUQZrmk: [ 0.00 0.00 ]
+Key: VPMINUQZrmkz: [ 0.00 0.00 ]
+Key: VPMINUQZrr: [ 0.00 0.00 ]
+Key: VPMINUQZrrk: [ 0.00 0.00 ]
+Key: VPMINUQZrrkz: [ 0.00 0.00 ]
+Key: VPMINUWYrm: [ 0.00 0.00 ]
+Key: VPMINUWYrr: [ 0.00 0.00 ]
+Key: VPMINUWZ: [ 0.00 0.00 ]
+Key: VPMINUWZrm: [ 0.00 0.00 ]
+Key: VPMINUWZrmk: [ 0.00 0.00 ]
+Key: VPMINUWZrmkz: [ 0.00 0.00 ]
+Key: VPMINUWZrr: [ 0.00 0.00 ]
+Key: VPMINUWZrrk: [ 0.00 0.00 ]
+Key: VPMINUWZrrkz: [ 0.00 0.00 ]
+Key: VPMINUWrm: [ 0.00 0.00 ]
+Key: VPMINUWrr: [ 0.00 0.00 ]
+Key: VPMOVB: [ 0.00 0.00 ]
+Key: VPMOVD: [ 0.00 0.00 ]
+Key: VPMOVDBZ: [ 0.00 0.00 ]
+Key: VPMOVDBZmr: [ 0.00 0.00 ]
+Key: VPMOVDBZmrk: [ 0.00 0.00 ]
+Key: VPMOVDBZrr: [ 0.00 0.00 ]
+Key: VPMOVDBZrrk: [ 0.00 0.00 ]
+Key: VPMOVDBZrrkz: [ 0.00 0.00 ]
+Key: VPMOVDWZ: [ 0.00 0.00 ]
+Key: VPMOVDWZmr: [ 0.00 0.00 ]
+Key: VPMOVDWZmrk: [ 0.00 0.00 ]
+Key: VPMOVDWZrr: [ 0.00 0.00 ]
+Key: VPMOVDWZrrk: [ 0.00 0.00 ]
+Key: VPMOVDWZrrkz: [ 0.00 0.00 ]
+Key: VPMOVM: [ 0.00 0.00 ]
+Key: VPMOVMSKBYrr: [ 0.00 0.00 ]
+Key: VPMOVMSKBrr: [ 0.00 0.00 ]
+Key: VPMOVQ: [ 0.00 0.00 ]
+Key: VPMOVQBZ: [ 0.00 0.00 ]
+Key: VPMOVQBZmr: [ 0.00 0.00 ]
+Key: VPMOVQBZmrk: [ 0.00 0.00 ]
+Key: VPMOVQBZrr: [ 0.00 0.00 ]
+Key: VPMOVQBZrrk: [ 0.00 0.00 ]
+Key: VPMOVQBZrrkz: [ 0.00 0.00 ]
+Key: VPMOVQDZ: [ 0.00 0.00 ]
+Key: VPMOVQDZmr: [ 0.00 0.00 ]
+Key: VPMOVQDZmrk: [ 0.00 0.00 ]
+Key: VPMOVQDZrr: [ 0.00 0.00 ]
+Key: VPMOVQDZrrk: [ 0.00 0.00 ]
+Key: VPMOVQDZrrkz: [ 0.00 0.00 ]
+Key: VPMOVQWZ: [ 0.00 0.00 ]
+Key: VPMOVQWZmr: [ 0.00 0.00 ]
+Key: VPMOVQWZmrk: [ 0.00 0.00 ]
+Key: VPMOVQWZrr: [ 0.00 0.00 ]
+Key: VPMOVQWZrrk: [ 0.00 0.00 ]
+Key: VPMOVQWZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSDBZ: [ 0.00 0.00 ]
+Key: VPMOVSDBZmr: [ 0.00 0.00 ]
+Key: VPMOVSDBZmrk: [ 0.00 0.00 ]
+Key: VPMOVSDBZrr: [ 0.00 0.00 ]
+Key: VPMOVSDBZrrk: [ 0.00 0.00 ]
+Key: VPMOVSDBZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSDWZ: [ 0.00 0.00 ]
+Key: VPMOVSDWZmr: [ 0.00 0.00 ]
+Key: VPMOVSDWZmrk: [ 0.00 0.00 ]
+Key: VPMOVSDWZrr: [ 0.00 0.00 ]
+Key: VPMOVSDWZrrk: [ 0.00 0.00 ]
+Key: VPMOVSDWZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSQBZ: [ 0.00 0.00 ]
+Key: VPMOVSQBZmr: [ 0.00 0.00 ]
+Key: VPMOVSQBZmrk: [ 0.00 0.00 ]
+Key: VPMOVSQBZrr: [ 0.00 0.00 ]
+Key: VPMOVSQBZrrk: [ 0.00 0.00 ]
+Key: VPMOVSQBZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSQDZ: [ 0.00 0.00 ]
+Key: VPMOVSQDZmr: [ 0.00 0.00 ]
+Key: VPMOVSQDZmrk: [ 0.00 0.00 ]
+Key: VPMOVSQDZrr: [ 0.00 0.00 ]
+Key: VPMOVSQDZrrk: [ 0.00 0.00 ]
+Key: VPMOVSQDZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSQWZ: [ 0.00 0.00 ]
+Key: VPMOVSQWZmr: [ 0.00 0.00 ]
+Key: VPMOVSQWZmrk: [ 0.00 0.00 ]
+Key: VPMOVSQWZrr: [ 0.00 0.00 ]
+Key: VPMOVSQWZrrk: [ 0.00 0.00 ]
+Key: VPMOVSQWZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSWBZ: [ 0.00 0.00 ]
+Key: VPMOVSWBZmr: [ 0.00 0.00 ]
+Key: VPMOVSWBZmrk: [ 0.00 0.00 ]
+Key: VPMOVSWBZrr: [ 0.00 0.00 ]
+Key: VPMOVSWBZrrk: [ 0.00 0.00 ]
+Key: VPMOVSWBZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSXBDYrm: [ 0.00 0.00 ]
+Key: VPMOVSXBDYrr: [ 0.00 0.00 ]
+Key: VPMOVSXBDZ: [ 0.00 0.00 ]
+Key: VPMOVSXBDZrm: [ 0.00 0.00 ]
+Key: VPMOVSXBDZrmk: [ 0.00 0.00 ]
+Key: VPMOVSXBDZrmkz: [ 0.00 0.00 ]
+Key: VPMOVSXBDZrr: [ 0.00 0.00 ]
+Key: VPMOVSXBDZrrk: [ 0.00 0.00 ]
+Key: VPMOVSXBDZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSXBDrm: [ 0.00 0.00 ]
+Key: VPMOVSXBDrr: [ 0.00 0.00 ]
+Key: VPMOVSXBQYrm: [ 0.00 0.00 ]
+Key: VPMOVSXBQYrr: [ 0.00 0.00 ]
+Key: VPMOVSXBQZ: [ 0.00 0.00 ]
+Key: VPMOVSXBQZrm: [ 0.00 0.00 ]
+Key: VPMOVSXBQZrmk: [ 0.00 0.00 ]
+Key: VPMOVSXBQZrmkz: [ 0.00 0.00 ]
+Key: VPMOVSXBQZrr: [ 0.00 0.00 ]
+Key: VPMOVSXBQZrrk: [ 0.00 0.00 ]
+Key: VPMOVSXBQZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSXBQrm: [ 0.00 0.00 ]
+Key: VPMOVSXBQrr: [ 0.00 0.00 ]
+Key: VPMOVSXBWYrm: [ 0.00 0.00 ]
+Key: VPMOVSXBWYrr: [ 0.00 0.00 ]
+Key: VPMOVSXBWZ: [ 0.00 0.00 ]
+Key: VPMOVSXBWZrm: [ 0.00 0.00 ]
+Key: VPMOVSXBWZrmk: [ 0.00 0.00 ]
+Key: VPMOVSXBWZrmkz: [ 0.00 0.00 ]
+Key: VPMOVSXBWZrr: [ 0.00 0.00 ]
+Key: VPMOVSXBWZrrk: [ 0.00 0.00 ]
+Key: VPMOVSXBWZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSXBWrm: [ 0.00 0.00 ]
+Key: VPMOVSXBWrr: [ 0.00 0.00 ]
+Key: VPMOVSXDQYrm: [ 0.00 0.00 ]
+Key: VPMOVSXDQYrr: [ 0.00 0.00 ]
+Key: VPMOVSXDQZ: [ 0.00 0.00 ]
+Key: VPMOVSXDQZrm: [ 0.00 0.00 ]
+Key: VPMOVSXDQZrmk: [ 0.00 0.00 ]
+Key: VPMOVSXDQZrmkz: [ 0.00 0.00 ]
+Key: VPMOVSXDQZrr: [ 0.00 0.00 ]
+Key: VPMOVSXDQZrrk: [ 0.00 0.00 ]
+Key: VPMOVSXDQZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSXDQrm: [ 0.00 0.00 ]
+Key: VPMOVSXDQrr: [ 0.00 0.00 ]
+Key: VPMOVSXWDYrm: [ 0.00 0.00 ]
+Key: VPMOVSXWDYrr: [ 0.00 0.00 ]
+Key: VPMOVSXWDZ: [ 0.00 0.00 ]
+Key: VPMOVSXWDZrm: [ 0.00 0.00 ]
+Key: VPMOVSXWDZrmk: [ 0.00 0.00 ]
+Key: VPMOVSXWDZrmkz: [ 0.00 0.00 ]
+Key: VPMOVSXWDZrr: [ 0.00 0.00 ]
+Key: VPMOVSXWDZrrk: [ 0.00 0.00 ]
+Key: VPMOVSXWDZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSXWDrm: [ 0.00 0.00 ]
+Key: VPMOVSXWDrr: [ 0.00 0.00 ]
+Key: VPMOVSXWQYrm: [ 0.00 0.00 ]
+Key: VPMOVSXWQYrr: [ 0.00 0.00 ]
+Key: VPMOVSXWQZ: [ 0.00 0.00 ]
+Key: VPMOVSXWQZrm: [ 0.00 0.00 ]
+Key: VPMOVSXWQZrmk: [ 0.00 0.00 ]
+Key: VPMOVSXWQZrmkz: [ 0.00 0.00 ]
+Key: VPMOVSXWQZrr: [ 0.00 0.00 ]
+Key: VPMOVSXWQZrrk: [ 0.00 0.00 ]
+Key: VPMOVSXWQZrrkz: [ 0.00 0.00 ]
+Key: VPMOVSXWQrm: [ 0.00 0.00 ]
+Key: VPMOVSXWQrr: [ 0.00 0.00 ]
+Key: VPMOVUSDBZ: [ 0.00 0.00 ]
+Key: VPMOVUSDBZmr: [ 0.00 0.00 ]
+Key: VPMOVUSDBZmrk: [ 0.00 0.00 ]
+Key: VPMOVUSDBZrr: [ 0.00 0.00 ]
+Key: VPMOVUSDBZrrk: [ 0.00 0.00 ]
+Key: VPMOVUSDBZrrkz: [ 0.00 0.00 ]
+Key: VPMOVUSDWZ: [ 0.00 0.00 ]
+Key: VPMOVUSDWZmr: [ 0.00 0.00 ]
+Key: VPMOVUSDWZmrk: [ 0.00 0.00 ]
+Key: VPMOVUSDWZrr: [ 0.00 0.00 ]
+Key: VPMOVUSDWZrrk: [ 0.00 0.00 ]
+Key: VPMOVUSDWZrrkz: [ 0.00 0.00 ]
+Key: VPMOVUSQBZ: [ 0.00 0.00 ]
+Key: VPMOVUSQBZmr: [ 0.00 0.00 ]
+Key: VPMOVUSQBZmrk: [ 0.00 0.00 ]
+Key: VPMOVUSQBZrr: [ 0.00 0.00 ]
+Key: VPMOVUSQBZrrk: [ 0.00 0.00 ]
+Key: VPMOVUSQBZrrkz: [ 0.00 0.00 ]
+Key: VPMOVUSQDZ: [ 0.00 0.00 ]
+Key: VPMOVUSQDZmr: [ 0.00 0.00 ]
+Key: VPMOVUSQDZmrk: [ 0.00 0.00 ]
+Key: VPMOVUSQDZrr: [ 0.00 0.00 ]
+Key: VPMOVUSQDZrrk: [ 0.00 0.00 ]
+Key: VPMOVUSQDZrrkz: [ 0.00 0.00 ]
+Key: VPMOVUSQWZ: [ 0.00 0.00 ]
+Key: VPMOVUSQWZmr: [ 0.00 0.00 ]
+Key: VPMOVUSQWZmrk: [ 0.00 0.00 ]
+Key: VPMOVUSQWZrr: [ 0.00 0.00 ]
+Key: VPMOVUSQWZrrk: [ 0.00 0.00 ]
+Key: VPMOVUSQWZrrkz: [ 0.00 0.00 ]
+Key: VPMOVUSWBZ: [ 0.00 0.00 ]
+Key: VPMOVUSWBZmr: [ 0.00 0.00 ]
+Key: VPMOVUSWBZmrk: [ 0.00 0.00 ]
+Key: VPMOVUSWBZrr: [ 0.00 0.00 ]
+Key: VPMOVUSWBZrrk: [ 0.00 0.00 ]
+Key: VPMOVUSWBZrrkz: [ 0.00 0.00 ]
+Key: VPMOVW: [ 0.00 0.00 ]
+Key: VPMOVWBZ: [ 0.00 0.00 ]
+Key: VPMOVWBZmr: [ 0.00 0.00 ]
+Key: VPMOVWBZmrk: [ 0.00 0.00 ]
+Key: VPMOVWBZrr: [ 0.00 0.00 ]
+Key: VPMOVWBZrrk: [ 0.00 0.00 ]
+Key: VPMOVWBZrrkz: [ 0.00 0.00 ]
+Key: VPMOVZXBDYrm: [ 0.00 0.00 ]
+Key: VPMOVZXBDYrr: [ 0.00 0.00 ]
+Key: VPMOVZXBDZ: [ 0.00 0.00 ]
+Key: VPMOVZXBDZrm: [ 0.00 0.00 ]
+Key: VPMOVZXBDZrmk: [ 0.00 0.00 ]
+Key: VPMOVZXBDZrmkz: [ 0.00 0.00 ]
+Key: VPMOVZXBDZrr: [ 0.00 0.00 ]
+Key: VPMOVZXBDZrrk: [ 0.00 0.00 ]
+Key: VPMOVZXBDZrrkz: [ 0.00 0.00 ]
+Key: VPMOVZXBDrm: [ 0.00 0.00 ]
+Key: VPMOVZXBDrr: [ 0.00 0.00 ]
+Key: VPMOVZXBQYrm: [ 0.00 0.00 ]
+Key: VPMOVZXBQYrr: [ 0.00 0.00 ]
+Key: VPMOVZXBQZ: [ 0.00 0.00 ]
+Key: VPMOVZXBQZrm: [ 0.00 0.00 ]
+Key: VPMOVZXBQZrmk: [ 0.00 0.00 ]
+Key: VPMOVZXBQZrmkz: [ 0.00 0.00 ]
+Key: VPMOVZXBQZrr: [ 0.00 0.00 ]
+Key: VPMOVZXBQZrrk: [ 0.00 0.00 ]
+Key: VPMOVZXBQZrrkz: [ 0.00 0.00 ]
+Key: VPMOVZXBQrm: [ 0.00 0.00 ]
+Key: VPMOVZXBQrr: [ 0.00 0.00 ]
+Key: VPMOVZXBWYrm: [ 0.00 0.00 ]
+Key: VPMOVZXBWYrr: [ 0.00 0.00 ]
+Key: VPMOVZXBWZ: [ 0.00 0.00 ]
+Key: VPMOVZXBWZrm: [ 0.00 0.00 ]
+Key: VPMOVZXBWZrmk: [ 0.00 0.00 ]
+Key: VPMOVZXBWZrmkz: [ 0.00 0.00 ]
+Key: VPMOVZXBWZrr: [ 0.00 0.00 ]
+Key: VPMOVZXBWZrrk: [ 0.00 0.00 ]
+Key: VPMOVZXBWZrrkz: [ 0.00 0.00 ]
+Key: VPMOVZXBWrm: [ 0.00 0.00 ]
+Key: VPMOVZXBWrr: [ 0.00 0.00 ]
+Key: VPMOVZXDQYrm: [ 0.00 0.00 ]
+Key: VPMOVZXDQYrr: [ 0.00 0.00 ]
+Key: VPMOVZXDQZ: [ 0.00 0.00 ]
+Key: VPMOVZXDQZrm: [ 0.00 0.00 ]
+Key: VPMOVZXDQZrmk: [ 0.00 0.00 ]
+Key: VPMOVZXDQZrmkz: [ 0.00 0.00 ]
+Key: VPMOVZXDQZrr: [ 0.00 0.00 ]
+Key: VPMOVZXDQZrrk: [ 0.00 0.00 ]
+Key: VPMOVZXDQZrrkz: [ 0.00 0.00 ]
+Key: VPMOVZXDQrm: [ 0.00 0.00 ]
+Key: VPMOVZXDQrr: [ 0.00 0.00 ]
+Key: VPMOVZXWDYrm: [ 0.00 0.00 ]
+Key: VPMOVZXWDYrr: [ 0.00 0.00 ]
+Key: VPMOVZXWDZ: [ 0.00 0.00 ]
+Key: VPMOVZXWDZrm: [ 0.00 0.00 ]
+Key: VPMOVZXWDZrmk: [ 0.00 0.00 ]
+Key: VPMOVZXWDZrmkz: [ 0.00 0.00 ]
+Key: VPMOVZXWDZrr: [ 0.00 0.00 ]
+Key: VPMOVZXWDZrrk: [ 0.00 0.00 ]
+Key: VPMOVZXWDZrrkz: [ 0.00 0.00 ]
+Key: VPMOVZXWDrm: [ 0.00 0.00 ]
+Key: VPMOVZXWDrr: [ 0.00 0.00 ]
+Key: VPMOVZXWQYrm: [ 0.00 0.00 ]
+Key: VPMOVZXWQYrr: [ 0.00 0.00 ]
+Key: VPMOVZXWQZ: [ 0.00 0.00 ]
+Key: VPMOVZXWQZrm: [ 0.00 0.00 ]
+Key: VPMOVZXWQZrmk: [ 0.00 0.00 ]
+Key: VPMOVZXWQZrmkz: [ 0.00 0.00 ]
+Key: VPMOVZXWQZrr: [ 0.00 0.00 ]
+Key: VPMOVZXWQZrrk: [ 0.00 0.00 ]
+Key: VPMOVZXWQZrrkz: [ 0.00 0.00 ]
+Key: VPMOVZXWQrm: [ 0.00 0.00 ]
+Key: VPMOVZXWQrr: [ 0.00 0.00 ]
+Key: VPMULDQYrm: [ 0.00 0.00 ]
+Key: VPMULDQYrr: [ 0.00 0.00 ]
+Key: VPMULDQZ: [ 0.00 0.00 ]
+Key: VPMULDQZrm: [ 0.00 0.00 ]
+Key: VPMULDQZrmb: [ 0.00 0.00 ]
+Key: VPMULDQZrmbk: [ 0.00 0.00 ]
+Key: VPMULDQZrmbkz: [ 0.00 0.00 ]
+Key: VPMULDQZrmk: [ 0.00 0.00 ]
+Key: VPMULDQZrmkz: [ 0.00 0.00 ]
+Key: VPMULDQZrr: [ 0.00 0.00 ]
+Key: VPMULDQZrrk: [ 0.00 0.00 ]
+Key: VPMULDQZrrkz: [ 0.00 0.00 ]
+Key: VPMULDQrm: [ 0.00 0.00 ]
+Key: VPMULDQrr: [ 0.00 0.00 ]
+Key: VPMULHRSWYrm: [ 0.00 0.00 ]
+Key: VPMULHRSWYrr: [ 0.00 0.00 ]
+Key: VPMULHRSWZ: [ 0.00 0.00 ]
+Key: VPMULHRSWZrm: [ 0.00 0.00 ]
+Key: VPMULHRSWZrmk: [ 0.00 0.00 ]
+Key: VPMULHRSWZrmkz: [ 0.00 0.00 ]
+Key: VPMULHRSWZrr: [ 0.00 0.00 ]
+Key: VPMULHRSWZrrk: [ 0.00 0.00 ]
+Key: VPMULHRSWZrrkz: [ 0.00 0.00 ]
+Key: VPMULHRSWrm: [ 0.00 0.00 ]
+Key: VPMULHRSWrr: [ 0.00 0.00 ]
+Key: VPMULHUWYrm: [ 0.00 0.00 ]
+Key: VPMULHUWYrr: [ 0.00 0.00 ]
+Key: VPMULHUWZ: [ 0.00 0.00 ]
+Key: VPMULHUWZrm: [ 0.00 0.00 ]
+Key: VPMULHUWZrmk: [ 0.00 0.00 ]
+Key: VPMULHUWZrmkz: [ 0.00 0.00 ]
+Key: VPMULHUWZrr: [ 0.00 0.00 ]
+Key: VPMULHUWZrrk: [ 0.00 0.00 ]
+Key: VPMULHUWZrrkz: [ 0.00 0.00 ]
+Key: VPMULHUWrm: [ 0.00 0.00 ]
+Key: VPMULHUWrr: [ 0.00 0.00 ]
+Key: VPMULHWYrm: [ 0.00 0.00 ]
+Key: VPMULHWYrr: [ 0.00 0.00 ]
+Key: VPMULHWZ: [ 0.00 0.00 ]
+Key: VPMULHWZrm: [ 0.00 0.00 ]
+Key: VPMULHWZrmk: [ 0.00 0.00 ]
+Key: VPMULHWZrmkz: [ 0.00 0.00 ]
+Key: VPMULHWZrr: [ 0.00 0.00 ]
+Key: VPMULHWZrrk: [ 0.00 0.00 ]
+Key: VPMULHWZrrkz: [ 0.00 0.00 ]
+Key: VPMULHWrm: [ 0.00 0.00 ]
+Key: VPMULHWrr: [ 0.00 0.00 ]
+Key: VPMULLDYrm: [ 0.00 0.00 ]
+Key: VPMULLDYrr: [ 0.00 0.00 ]
+Key: VPMULLDZ: [ 0.00 0.00 ]
+Key: VPMULLDZrm: [ 0.00 0.00 ]
+Key: VPMULLDZrmb: [ 0.00 0.00 ]
+Key: VPMULLDZrmbk: [ 0.00 0.00 ]
+Key: VPMULLDZrmbkz: [ 0.00 0.00 ]
+Key: VPMULLDZrmk: [ 0.00 0.00 ]
+Key: VPMULLDZrmkz: [ 0.00 0.00 ]
+Key: VPMULLDZrr: [ 0.00 0.00 ]
+Key: VPMULLDZrrk: [ 0.00 0.00 ]
+Key: VPMULLDZrrkz: [ 0.00 0.00 ]
+Key: VPMULLDrm: [ 0.00 0.00 ]
+Key: VPMULLDrr: [ 0.00 0.00 ]
+Key: VPMULLQZ: [ 0.00 0.00 ]
+Key: VPMULLQZrm: [ 0.00 0.00 ]
+Key: VPMULLQZrmb: [ 0.00 0.00 ]
+Key: VPMULLQZrmbk: [ 0.00 0.00 ]
+Key: VPMULLQZrmbkz: [ 0.00 0.00 ]
+Key: VPMULLQZrmk: [ 0.00 0.00 ]
+Key: VPMULLQZrmkz: [ 0.00 0.00 ]
+Key: VPMULLQZrr: [ 0.00 0.00 ]
+Key: VPMULLQZrrk: [ 0.00 0.00 ]
+Key: VPMULLQZrrkz: [ 0.00 0.00 ]
+Key: VPMULLWYrm: [ 0.00 0.00 ]
+Key: VPMULLWYrr: [ 0.00 0.00 ]
+Key: VPMULLWZ: [ 0.00 0.00 ]
+Key: VPMULLWZrm: [ 0.00 0.00 ]
+Key: VPMULLWZrmk: [ 0.00 0.00 ]
+Key: VPMULLWZrmkz: [ 0.00 0.00 ]
+Key: VPMULLWZrr: [ 0.00 0.00 ]
+Key: VPMULLWZrrk: [ 0.00 0.00 ]
+Key: VPMULLWZrrkz: [ 0.00 0.00 ]
+Key: VPMULLWrm: [ 0.00 0.00 ]
+Key: VPMULLWrr: [ 0.00 0.00 ]
+Key: VPMULTISHIFTQBZ: [ 0.00 0.00 ]
+Key: VPMULTISHIFTQBZrm: [ 0.00 0.00 ]
+Key: VPMULTISHIFTQBZrmb: [ 0.00 0.00 ]
+Key: VPMULTISHIFTQBZrmbk: [ 0.00 0.00 ]
+Key: VPMULTISHIFTQBZrmbkz: [ 0.00 0.00 ]
+Key: VPMULTISHIFTQBZrmk: [ 0.00 0.00 ]
+Key: VPMULTISHIFTQBZrmkz: [ 0.00 0.00 ]
+Key: VPMULTISHIFTQBZrr: [ 0.00 0.00 ]
+Key: VPMULTISHIFTQBZrrk: [ 0.00 0.00 ]
+Key: VPMULTISHIFTQBZrrkz: [ 0.00 0.00 ]
+Key: VPMULUDQYrm: [ 0.00 0.00 ]
+Key: VPMULUDQYrr: [ 0.00 0.00 ]
+Key: VPMULUDQZ: [ 0.00 0.00 ]
+Key: VPMULUDQZrm: [ 0.00 0.00 ]
+Key: VPMULUDQZrmb: [ 0.00 0.00 ]
+Key: VPMULUDQZrmbk: [ 0.00 0.00 ]
+Key: VPMULUDQZrmbkz: [ 0.00 0.00 ]
+Key: VPMULUDQZrmk: [ 0.00 0.00 ]
+Key: VPMULUDQZrmkz: [ 0.00 0.00 ]
+Key: VPMULUDQZrr: [ 0.00 0.00 ]
+Key: VPMULUDQZrrk: [ 0.00 0.00 ]
+Key: VPMULUDQZrrkz: [ 0.00 0.00 ]
+Key: VPMULUDQrm: [ 0.00 0.00 ]
+Key: VPMULUDQrr: [ 0.00 0.00 ]
+Key: VPOPCNTBZ: [ 0.00 0.00 ]
+Key: VPOPCNTBZrm: [ 0.00 0.00 ]
+Key: VPOPCNTBZrmk: [ 0.00 0.00 ]
+Key: VPOPCNTBZrmkz: [ 0.00 0.00 ]
+Key: VPOPCNTBZrr: [ 0.00 0.00 ]
+Key: VPOPCNTBZrrk: [ 0.00 0.00 ]
+Key: VPOPCNTBZrrkz: [ 0.00 0.00 ]
+Key: VPOPCNTDZ: [ 0.00 0.00 ]
+Key: VPOPCNTDZrm: [ 0.00 0.00 ]
+Key: VPOPCNTDZrmb: [ 0.00 0.00 ]
+Key: VPOPCNTDZrmbk: [ 0.00 0.00 ]
+Key: VPOPCNTDZrmbkz: [ 0.00 0.00 ]
+Key: VPOPCNTDZrmk: [ 0.00 0.00 ]
+Key: VPOPCNTDZrmkz: [ 0.00 0.00 ]
+Key: VPOPCNTDZrr: [ 0.00 0.00 ]
+Key: VPOPCNTDZrrk: [ 0.00 0.00 ]
+Key: VPOPCNTDZrrkz: [ 0.00 0.00 ]
+Key: VPOPCNTQZ: [ 0.00 0.00 ]
+Key: VPOPCNTQZrm: [ 0.00 0.00 ]
+Key: VPOPCNTQZrmb: [ 0.00 0.00 ]
+Key: VPOPCNTQZrmbk: [ 0.00 0.00 ]
+Key: VPOPCNTQZrmbkz: [ 0.00 0.00 ]
+Key: VPOPCNTQZrmk: [ 0.00 0.00 ]
+Key: VPOPCNTQZrmkz: [ 0.00 0.00 ]
+Key: VPOPCNTQZrr: [ 0.00 0.00 ]
+Key: VPOPCNTQZrrk: [ 0.00 0.00 ]
+Key: VPOPCNTQZrrkz: [ 0.00 0.00 ]
+Key: VPOPCNTWZ: [ 0.00 0.00 ]
+Key: VPOPCNTWZrm: [ 0.00 0.00 ]
+Key: VPOPCNTWZrmk: [ 0.00 0.00 ]
+Key: VPOPCNTWZrmkz: [ 0.00 0.00 ]
+Key: VPOPCNTWZrr: [ 0.00 0.00 ]
+Key: VPOPCNTWZrrk: [ 0.00 0.00 ]
+Key: VPOPCNTWZrrkz: [ 0.00 0.00 ]
+Key: VPORDZ: [ 0.00 0.00 ]
+Key: VPORDZrm: [ 0.00 0.00 ]
+Key: VPORDZrmb: [ 0.00 0.00 ]
+Key: VPORDZrmbk: [ 0.00 0.00 ]
+Key: VPORDZrmbkz: [ 0.00 0.00 ]
+Key: VPORDZrmk: [ 0.00 0.00 ]
+Key: VPORDZrmkz: [ 0.00 0.00 ]
+Key: VPORDZrr: [ 0.00 0.00 ]
+Key: VPORDZrrk: [ 0.00 0.00 ]
+Key: VPORDZrrkz: [ 0.00 0.00 ]
+Key: VPORQZ: [ 0.00 0.00 ]
+Key: VPORQZrm: [ 0.00 0.00 ]
+Key: VPORQZrmb: [ 0.00 0.00 ]
+Key: VPORQZrmbk: [ 0.00 0.00 ]
+Key: VPORQZrmbkz: [ 0.00 0.00 ]
+Key: VPORQZrmk: [ 0.00 0.00 ]
+Key: VPORQZrmkz: [ 0.00 0.00 ]
+Key: VPORQZrr: [ 0.00 0.00 ]
+Key: VPORQZrrk: [ 0.00 0.00 ]
+Key: VPORQZrrkz: [ 0.00 0.00 ]
+Key: VPORYrm: [ 0.00 0.00 ]
+Key: VPORYrr: [ 0.00 0.00 ]
+Key: VPORrm: [ 0.00 0.00 ]
+Key: VPORrr: [ 0.00 0.00 ]
+Key: VPPERMrmr: [ 0.00 0.00 ]
+Key: VPPERMrrm: [ 0.00 0.00 ]
+Key: VPPERMrrr: [ 0.00 0.00 ]
+Key: VPPERMrrr_REV: [ 0.00 0.00 ]
+Key: VPROLDZ: [ 0.00 0.00 ]
+Key: VPROLDZmbi: [ 0.00 0.00 ]
+Key: VPROLDZmbik: [ 0.00 0.00 ]
+Key: VPROLDZmbikz: [ 0.00 0.00 ]
+Key: VPROLDZmi: [ 0.00 0.00 ]
+Key: VPROLDZmik: [ 0.00 0.00 ]
+Key: VPROLDZmikz: [ 0.00 0.00 ]
+Key: VPROLDZri: [ 0.00 0.00 ]
+Key: VPROLDZrik: [ 0.00 0.00 ]
+Key: VPROLDZrikz: [ 0.00 0.00 ]
+Key: VPROLQZ: [ 0.00 0.00 ]
+Key: VPROLQZmbi: [ 0.00 0.00 ]
+Key: VPROLQZmbik: [ 0.00 0.00 ]
+Key: VPROLQZmbikz: [ 0.00 0.00 ]
+Key: VPROLQZmi: [ 0.00 0.00 ]
+Key: VPROLQZmik: [ 0.00 0.00 ]
+Key: VPROLQZmikz: [ 0.00 0.00 ]
+Key: VPROLQZri: [ 0.00 0.00 ]
+Key: VPROLQZrik: [ 0.00 0.00 ]
+Key: VPROLQZrikz: [ 0.00 0.00 ]
+Key: VPROLVDZ: [ 0.00 0.00 ]
+Key: VPROLVDZrm: [ 0.00 0.00 ]
+Key: VPROLVDZrmb: [ 0.00 0.00 ]
+Key: VPROLVDZrmbk: [ 0.00 0.00 ]
+Key: VPROLVDZrmbkz: [ 0.00 0.00 ]
+Key: VPROLVDZrmk: [ 0.00 0.00 ]
+Key: VPROLVDZrmkz: [ 0.00 0.00 ]
+Key: VPROLVDZrr: [ 0.00 0.00 ]
+Key: VPROLVDZrrk: [ 0.00 0.00 ]
+Key: VPROLVDZrrkz: [ 0.00 0.00 ]
+Key: VPROLVQZ: [ 0.00 0.00 ]
+Key: VPROLVQZrm: [ 0.00 0.00 ]
+Key: VPROLVQZrmb: [ 0.00 0.00 ]
+Key: VPROLVQZrmbk: [ 0.00 0.00 ]
+Key: VPROLVQZrmbkz: [ 0.00 0.00 ]
+Key: VPROLVQZrmk: [ 0.00 0.00 ]
+Key: VPROLVQZrmkz: [ 0.00 0.00 ]
+Key: VPROLVQZrr: [ 0.00 0.00 ]
+Key: VPROLVQZrrk: [ 0.00 0.00 ]
+Key: VPROLVQZrrkz: [ 0.00 0.00 ]
+Key: VPRORDZ: [ 0.00 0.00 ]
+Key: VPRORDZmbi: [ 0.00 0.00 ]
+Key: VPRORDZmbik: [ 0.00 0.00 ]
+Key: VPRORDZmbikz: [ 0.00 0.00 ]
+Key: VPRORDZmi: [ 0.00 0.00 ]
+Key: VPRORDZmik: [ 0.00 0.00 ]
+Key: VPRORDZmikz: [ 0.00 0.00 ]
+Key: VPRORDZri: [ 0.00 0.00 ]
+Key: VPRORDZrik: [ 0.00 0.00 ]
+Key: VPRORDZrikz: [ 0.00 0.00 ]
+Key: VPRORQZ: [ 0.00 0.00 ]
+Key: VPRORQZmbi: [ 0.00 0.00 ]
+Key: VPRORQZmbik: [ 0.00 0.00 ]
+Key: VPRORQZmbikz: [ 0.00 0.00 ]
+Key: VPRORQZmi: [ 0.00 0.00 ]
+Key: VPRORQZmik: [ 0.00 0.00 ]
+Key: VPRORQZmikz: [ 0.00 0.00 ]
+Key: VPRORQZri: [ 0.00 0.00 ]
+Key: VPRORQZrik: [ 0.00 0.00 ]
+Key: VPRORQZrikz: [ 0.00 0.00 ]
+Key: VPRORVDZ: [ 0.00 0.00 ]
+Key: VPRORVDZrm: [ 0.00 0.00 ]
+Key: VPRORVDZrmb: [ 0.00 0.00 ]
+Key: VPRORVDZrmbk: [ 0.00 0.00 ]
+Key: VPRORVDZrmbkz: [ 0.00 0.00 ]
+Key: VPRORVDZrmk: [ 0.00 0.00 ]
+Key: VPRORVDZrmkz: [ 0.00 0.00 ]
+Key: VPRORVDZrr: [ 0.00 0.00 ]
+Key: VPRORVDZrrk: [ 0.00 0.00 ]
+Key: VPRORVDZrrkz: [ 0.00 0.00 ]
+Key: VPRORVQZ: [ 0.00 0.00 ]
+Key: VPRORVQZrm: [ 0.00 0.00 ]
+Key: VPRORVQZrmb: [ 0.00 0.00 ]
+Key: VPRORVQZrmbk: [ 0.00 0.00 ]
+Key: VPRORVQZrmbkz: [ 0.00 0.00 ]
+Key: VPRORVQZrmk: [ 0.00 0.00 ]
+Key: VPRORVQZrmkz: [ 0.00 0.00 ]
+Key: VPRORVQZrr: [ 0.00 0.00 ]
+Key: VPRORVQZrrk: [ 0.00 0.00 ]
+Key: VPRORVQZrrkz: [ 0.00 0.00 ]
+Key: VPROTBmi: [ 0.00 0.00 ]
+Key: VPROTBmr: [ 0.00 0.00 ]
+Key: VPROTBri: [ 0.00 0.00 ]
+Key: VPROTBrm: [ 0.00 0.00 ]
+Key: VPROTBrr: [ 0.00 0.00 ]
+Key: VPROTBrr_REV: [ 0.00 0.00 ]
+Key: VPROTDmi: [ 0.00 0.00 ]
+Key: VPROTDmr: [ 0.00 0.00 ]
+Key: VPROTDri: [ 0.00 0.00 ]
+Key: VPROTDrm: [ 0.00 0.00 ]
+Key: VPROTDrr: [ 0.00 0.00 ]
+Key: VPROTDrr_REV: [ 0.00 0.00 ]
+Key: VPROTQmi: [ 0.00 0.00 ]
+Key: VPROTQmr: [ 0.00 0.00 ]
+Key: VPROTQri: [ 0.00 0.00 ]
+Key: VPROTQrm: [ 0.00 0.00 ]
+Key: VPROTQrr: [ 0.00 0.00 ]
+Key: VPROTQrr_REV: [ 0.00 0.00 ]
+Key: VPROTWmi: [ 0.00 0.00 ]
+Key: VPROTWmr: [ 0.00 0.00 ]
+Key: VPROTWri: [ 0.00 0.00 ]
+Key: VPROTWrm: [ 0.00 0.00 ]
+Key: VPROTWrr: [ 0.00 0.00 ]
+Key: VPROTWrr_REV: [ 0.00 0.00 ]
+Key: VPSADBWYrm: [ 0.00 0.00 ]
+Key: VPSADBWYrr: [ 0.00 0.00 ]
+Key: VPSADBWZ: [ 0.00 0.00 ]
+Key: VPSADBWZrm: [ 0.00 0.00 ]
+Key: VPSADBWZrr: [ 0.00 0.00 ]
+Key: VPSADBWrm: [ 0.00 0.00 ]
+Key: VPSADBWrr: [ 0.00 0.00 ]
+Key: VPSCATTERDDZ: [ 0.00 0.00 ]
+Key: VPSCATTERDDZmr: [ 0.00 0.00 ]
+Key: VPSCATTERDQZ: [ 0.00 0.00 ]
+Key: VPSCATTERDQZmr: [ 0.00 0.00 ]
+Key: VPSCATTERQDZ: [ 0.00 0.00 ]
+Key: VPSCATTERQDZmr: [ 0.00 0.00 ]
+Key: VPSCATTERQQZ: [ 0.00 0.00 ]
+Key: VPSCATTERQQZmr: [ 0.00 0.00 ]
+Key: VPSHABmr: [ 0.00 0.00 ]
+Key: VPSHABrm: [ 0.00 0.00 ]
+Key: VPSHABrr: [ 0.00 0.00 ]
+Key: VPSHABrr_REV: [ 0.00 0.00 ]
+Key: VPSHADmr: [ 0.00 0.00 ]
+Key: VPSHADrm: [ 0.00 0.00 ]
+Key: VPSHADrr: [ 0.00 0.00 ]
+Key: VPSHADrr_REV: [ 0.00 0.00 ]
+Key: VPSHAQmr: [ 0.00 0.00 ]
+Key: VPSHAQrm: [ 0.00 0.00 ]
+Key: VPSHAQrr: [ 0.00 0.00 ]
+Key: VPSHAQrr_REV: [ 0.00 0.00 ]
+Key: VPSHAWmr: [ 0.00 0.00 ]
+Key: VPSHAWrm: [ 0.00 0.00 ]
+Key: VPSHAWrr: [ 0.00 0.00 ]
+Key: VPSHAWrr_REV: [ 0.00 0.00 ]
+Key: VPSHLBmr: [ 0.00 0.00 ]
+Key: VPSHLBrm: [ 0.00 0.00 ]
+Key: VPSHLBrr: [ 0.00 0.00 ]
+Key: VPSHLBrr_REV: [ 0.00 0.00 ]
+Key: VPSHLDDZ: [ 0.00 0.00 ]
+Key: VPSHLDDZrmbi: [ 0.00 0.00 ]
+Key: VPSHLDDZrmbik: [ 0.00 0.00 ]
+Key: VPSHLDDZrmbikz: [ 0.00 0.00 ]
+Key: VPSHLDDZrmi: [ 0.00 0.00 ]
+Key: VPSHLDDZrmik: [ 0.00 0.00 ]
+Key: VPSHLDDZrmikz: [ 0.00 0.00 ]
+Key: VPSHLDDZrri: [ 0.00 0.00 ]
+Key: VPSHLDDZrrik: [ 0.00 0.00 ]
+Key: VPSHLDDZrrikz: [ 0.00 0.00 ]
+Key: VPSHLDQZ: [ 0.00 0.00 ]
+Key: VPSHLDQZrmbi: [ 0.00 0.00 ]
+Key: VPSHLDQZrmbik: [ 0.00 0.00 ]
+Key: VPSHLDQZrmbikz: [ 0.00 0.00 ]
+Key: VPSHLDQZrmi: [ 0.00 0.00 ]
+Key: VPSHLDQZrmik: [ 0.00 0.00 ]
+Key: VPSHLDQZrmikz: [ 0.00 0.00 ]
+Key: VPSHLDQZrri: [ 0.00 0.00 ]
+Key: VPSHLDQZrrik: [ 0.00 0.00 ]
+Key: VPSHLDQZrrikz: [ 0.00 0.00 ]
+Key: VPSHLDVDZ: [ 0.00 0.00 ]
+Key: VPSHLDVDZm: [ 0.00 0.00 ]
+Key: VPSHLDVDZmb: [ 0.00 0.00 ]
+Key: VPSHLDVDZmbk: [ 0.00 0.00 ]
+Key: VPSHLDVDZmbkz: [ 0.00 0.00 ]
+Key: VPSHLDVDZmk: [ 0.00 0.00 ]
+Key: VPSHLDVDZmkz: [ 0.00 0.00 ]
+Key: VPSHLDVDZr: [ 0.00 0.00 ]
+Key: VPSHLDVDZrk: [ 0.00 0.00 ]
+Key: VPSHLDVDZrkz: [ 0.00 0.00 ]
+Key: VPSHLDVQZ: [ 0.00 0.00 ]
+Key: VPSHLDVQZm: [ 0.00 0.00 ]
+Key: VPSHLDVQZmb: [ 0.00 0.00 ]
+Key: VPSHLDVQZmbk: [ 0.00 0.00 ]
+Key: VPSHLDVQZmbkz: [ 0.00 0.00 ]
+Key: VPSHLDVQZmk: [ 0.00 0.00 ]
+Key: VPSHLDVQZmkz: [ 0.00 0.00 ]
+Key: VPSHLDVQZr: [ 0.00 0.00 ]
+Key: VPSHLDVQZrk: [ 0.00 0.00 ]
+Key: VPSHLDVQZrkz: [ 0.00 0.00 ]
+Key: VPSHLDVWZ: [ 0.00 0.00 ]
+Key: VPSHLDVWZm: [ 0.00 0.00 ]
+Key: VPSHLDVWZmk: [ 0.00 0.00 ]
+Key: VPSHLDVWZmkz: [ 0.00 0.00 ]
+Key: VPSHLDVWZr: [ 0.00 0.00 ]
+Key: VPSHLDVWZrk: [ 0.00 0.00 ]
+Key: VPSHLDVWZrkz: [ 0.00 0.00 ]
+Key: VPSHLDWZ: [ 0.00 0.00 ]
+Key: VPSHLDWZrmi: [ 0.00 0.00 ]
+Key: VPSHLDWZrmik: [ 0.00 0.00 ]
+Key: VPSHLDWZrmikz: [ 0.00 0.00 ]
+Key: VPSHLDWZrri: [ 0.00 0.00 ]
+Key: VPSHLDWZrrik: [ 0.00 0.00 ]
+Key: VPSHLDWZrrikz: [ 0.00 0.00 ]
+Key: VPSHLDmr: [ 0.00 0.00 ]
+Key: VPSHLDrm: [ 0.00 0.00 ]
+Key: VPSHLDrr: [ 0.00 0.00 ]
+Key: VPSHLDrr_REV: [ 0.00 0.00 ]
+Key: VPSHLQmr: [ 0.00 0.00 ]
+Key: VPSHLQrm: [ 0.00 0.00 ]
+Key: VPSHLQrr: [ 0.00 0.00 ]
+Key: VPSHLQrr_REV: [ 0.00 0.00 ]
+Key: VPSHLWmr: [ 0.00 0.00 ]
+Key: VPSHLWrm: [ 0.00 0.00 ]
+Key: VPSHLWrr: [ 0.00 0.00 ]
+Key: VPSHLWrr_REV: [ 0.00 0.00 ]
+Key: VPSHRDDZ: [ 0.00 0.00 ]
+Key: VPSHRDDZrmbi: [ 0.00 0.00 ]
+Key: VPSHRDDZrmbik: [ 0.00 0.00 ]
+Key: VPSHRDDZrmbikz: [ 0.00 0.00 ]
+Key: VPSHRDDZrmi: [ 0.00 0.00 ]
+Key: VPSHRDDZrmik: [ 0.00 0.00 ]
+Key: VPSHRDDZrmikz: [ 0.00 0.00 ]
+Key: VPSHRDDZrri: [ 0.00 0.00 ]
+Key: VPSHRDDZrrik: [ 0.00 0.00 ]
+Key: VPSHRDDZrrikz: [ 0.00 0.00 ]
+Key: VPSHRDQZ: [ 0.00 0.00 ]
+Key: VPSHRDQZrmbi: [ 0.00 0.00 ]
+Key: VPSHRDQZrmbik: [ 0.00 0.00 ]
+Key: VPSHRDQZrmbikz: [ 0.00 0.00 ]
+Key: VPSHRDQZrmi: [ 0.00 0.00 ]
+Key: VPSHRDQZrmik: [ 0.00 0.00 ]
+Key: VPSHRDQZrmikz: [ 0.00 0.00 ]
+Key: VPSHRDQZrri: [ 0.00 0.00 ]
+Key: VPSHRDQZrrik: [ 0.00 0.00 ]
+Key: VPSHRDQZrrikz: [ 0.00 0.00 ]
+Key: VPSHRDVDZ: [ 0.00 0.00 ]
+Key: VPSHRDVDZm: [ 0.00 0.00 ]
+Key: VPSHRDVDZmb: [ 0.00 0.00 ]
+Key: VPSHRDVDZmbk: [ 0.00 0.00 ]
+Key: VPSHRDVDZmbkz: [ 0.00 0.00 ]
+Key: VPSHRDVDZmk: [ 0.00 0.00 ]
+Key: VPSHRDVDZmkz: [ 0.00 0.00 ]
+Key: VPSHRDVDZr: [ 0.00 0.00 ]
+Key: VPSHRDVDZrk: [ 0.00 0.00 ]
+Key: VPSHRDVDZrkz: [ 0.00 0.00 ]
+Key: VPSHRDVQZ: [ 0.00 0.00 ]
+Key: VPSHRDVQZm: [ 0.00 0.00 ]
+Key: VPSHRDVQZmb: [ 0.00 0.00 ]
+Key: VPSHRDVQZmbk: [ 0.00 0.00 ]
+Key: VPSHRDVQZmbkz: [ 0.00 0.00 ]
+Key: VPSHRDVQZmk: [ 0.00 0.00 ]
+Key: VPSHRDVQZmkz: [ 0.00 0.00 ]
+Key: VPSHRDVQZr: [ 0.00 0.00 ]
+Key: VPSHRDVQZrk: [ 0.00 0.00 ]
+Key: VPSHRDVQZrkz: [ 0.00 0.00 ]
+Key: VPSHRDVWZ: [ 0.00 0.00 ]
+Key: VPSHRDVWZm: [ 0.00 0.00 ]
+Key: VPSHRDVWZmk: [ 0.00 0.00 ]
+Key: VPSHRDVWZmkz: [ 0.00 0.00 ]
+Key: VPSHRDVWZr: [ 0.00 0.00 ]
+Key: VPSHRDVWZrk: [ 0.00 0.00 ]
+Key: VPSHRDVWZrkz: [ 0.00 0.00 ]
+Key: VPSHRDWZ: [ 0.00 0.00 ]
+Key: VPSHRDWZrmi: [ 0.00 0.00 ]
+Key: VPSHRDWZrmik: [ 0.00 0.00 ]
+Key: VPSHRDWZrmikz: [ 0.00 0.00 ]
+Key: VPSHRDWZrri: [ 0.00 0.00 ]
+Key: VPSHRDWZrrik: [ 0.00 0.00 ]
+Key: VPSHRDWZrrikz: [ 0.00 0.00 ]
+Key: VPSHUFBITQMBZ: [ 0.00 0.00 ]
+Key: VPSHUFBITQMBZrm: [ 0.00 0.00 ]
+Key: VPSHUFBITQMBZrmk: [ 0.00 0.00 ]
+Key: VPSHUFBITQMBZrr: [ 0.00 0.00 ]
+Key: VPSHUFBITQMBZrrk: [ 0.00 0.00 ]
+Key: VPSHUFBYrm: [ 0.00 0.00 ]
+Key: VPSHUFBYrr: [ 0.00 0.00 ]
+Key: VPSHUFBZ: [ 0.00 0.00 ]
+Key: VPSHUFBZrm: [ 0.00 0.00 ]
+Key: VPSHUFBZrmk: [ 0.00 0.00 ]
+Key: VPSHUFBZrmkz: [ 0.00 0.00 ]
+Key: VPSHUFBZrr: [ 0.00 0.00 ]
+Key: VPSHUFBZrrk: [ 0.00 0.00 ]
+Key: VPSHUFBZrrkz: [ 0.00 0.00 ]
+Key: VPSHUFBrm: [ 0.00 0.00 ]
+Key: VPSHUFBrr: [ 0.00 0.00 ]
+Key: VPSHUFDYmi: [ 0.00 0.00 ]
+Key: VPSHUFDYri: [ 0.00 0.00 ]
+Key: VPSHUFDZ: [ 0.00 0.00 ]
+Key: VPSHUFDZmbi: [ 0.00 0.00 ]
+Key: VPSHUFDZmbik: [ 0.00 0.00 ]
+Key: VPSHUFDZmbikz: [ 0.00 0.00 ]
+Key: VPSHUFDZmi: [ 0.00 0.00 ]
+Key: VPSHUFDZmik: [ 0.00 0.00 ]
+Key: VPSHUFDZmikz: [ 0.00 0.00 ]
+Key: VPSHUFDZri: [ 0.00 0.00 ]
+Key: VPSHUFDZrik: [ 0.00 0.00 ]
+Key: VPSHUFDZrikz: [ 0.00 0.00 ]
+Key: VPSHUFDmi: [ 0.00 0.00 ]
+Key: VPSHUFDri: [ 0.00 0.00 ]
+Key: VPSHUFHWYmi: [ 0.00 0.00 ]
+Key: VPSHUFHWYri: [ 0.00 0.00 ]
+Key: VPSHUFHWZ: [ 0.00 0.00 ]
+Key: VPSHUFHWZmi: [ 0.00 0.00 ]
+Key: VPSHUFHWZmik: [ 0.00 0.00 ]
+Key: VPSHUFHWZmikz: [ 0.00 0.00 ]
+Key: VPSHUFHWZri: [ 0.00 0.00 ]
+Key: VPSHUFHWZrik: [ 0.00 0.00 ]
+Key: VPSHUFHWZrikz: [ 0.00 0.00 ]
+Key: VPSHUFHWmi: [ 0.00 0.00 ]
+Key: VPSHUFHWri: [ 0.00 0.00 ]
+Key: VPSHUFLWYmi: [ 0.00 0.00 ]
+Key: VPSHUFLWYri: [ 0.00 0.00 ]
+Key: VPSHUFLWZ: [ 0.00 0.00 ]
+Key: VPSHUFLWZmi: [ 0.00 0.00 ]
+Key: VPSHUFLWZmik: [ 0.00 0.00 ]
+Key: VPSHUFLWZmikz: [ 0.00 0.00 ]
+Key: VPSHUFLWZri: [ 0.00 0.00 ]
+Key: VPSHUFLWZrik: [ 0.00 0.00 ]
+Key: VPSHUFLWZrikz: [ 0.00 0.00 ]
+Key: VPSHUFLWmi: [ 0.00 0.00 ]
+Key: VPSHUFLWri: [ 0.00 0.00 ]
+Key: VPSIGNBYrm: [ 0.00 0.00 ]
+Key: VPSIGNBYrr: [ 0.00 0.00 ]
+Key: VPSIGNBrm: [ 0.00 0.00 ]
+Key: VPSIGNBrr: [ 0.00 0.00 ]
+Key: VPSIGNDYrm: [ 0.00 0.00 ]
+Key: VPSIGNDYrr: [ 0.00 0.00 ]
+Key: VPSIGNDrm: [ 0.00 0.00 ]
+Key: VPSIGNDrr: [ 0.00 0.00 ]
+Key: VPSIGNWYrm: [ 0.00 0.00 ]
+Key: VPSIGNWYrr: [ 0.00 0.00 ]
+Key: VPSIGNWrm: [ 0.00 0.00 ]
+Key: VPSIGNWrr: [ 0.00 0.00 ]
+Key: VPSLLDQYri: [ 0.00 0.00 ]
+Key: VPSLLDQZ: [ 0.00 0.00 ]
+Key: VPSLLDQZmi: [ 0.00 0.00 ]
+Key: VPSLLDQZri: [ 0.00 0.00 ]
+Key: VPSLLDQri: [ 0.00 0.00 ]
+Key: VPSLLDYri: [ 0.00 0.00 ]
+Key: VPSLLDYrm: [ 0.00 0.00 ]
+Key: VPSLLDYrr: [ 0.00 0.00 ]
+Key: VPSLLDZ: [ 0.00 0.00 ]
+Key: VPSLLDZmbi: [ 0.00 0.00 ]
+Key: VPSLLDZmbik: [ 0.00 0.00 ]
+Key: VPSLLDZmbikz: [ 0.00 0.00 ]
+Key: VPSLLDZmi: [ 0.00 0.00 ]
+Key: VPSLLDZmik: [ 0.00 0.00 ]
+Key: VPSLLDZmikz: [ 0.00 0.00 ]
+Key: VPSLLDZri: [ 0.00 0.00 ]
+Key: VPSLLDZrik: [ 0.00 0.00 ]
+Key: VPSLLDZrikz: [ 0.00 0.00 ]
+Key: VPSLLDZrm: [ 0.00 0.00 ]
+Key: VPSLLDZrmk: [ 0.00 0.00 ]
+Key: VPSLLDZrmkz: [ 0.00 0.00 ]
+Key: VPSLLDZrr: [ 0.00 0.00 ]
+Key: VPSLLDZrrk: [ 0.00 0.00 ]
+Key: VPSLLDZrrkz: [ 0.00 0.00 ]
+Key: VPSLLDri: [ 0.00 0.00 ]
+Key: VPSLLDrm: [ 0.00 0.00 ]
+Key: VPSLLDrr: [ 0.00 0.00 ]
+Key: VPSLLQYri: [ 0.00 0.00 ]
+Key: VPSLLQYrm: [ 0.00 0.00 ]
+Key: VPSLLQYrr: [ 0.00 0.00 ]
+Key: VPSLLQZ: [ 0.00 0.00 ]
+Key: VPSLLQZmbi: [ 0.00 0.00 ]
+Key: VPSLLQZmbik: [ 0.00 0.00 ]
+Key: VPSLLQZmbikz: [ 0.00 0.00 ]
+Key: VPSLLQZmi: [ 0.00 0.00 ]
+Key: VPSLLQZmik: [ 0.00 0.00 ]
+Key: VPSLLQZmikz: [ 0.00 0.00 ]
+Key: VPSLLQZri: [ 0.00 0.00 ]
+Key: VPSLLQZrik: [ 0.00 0.00 ]
+Key: VPSLLQZrikz: [ 0.00 0.00 ]
+Key: VPSLLQZrm: [ 0.00 0.00 ]
+Key: VPSLLQZrmk: [ 0.00 0.00 ]
+Key: VPSLLQZrmkz: [ 0.00 0.00 ]
+Key: VPSLLQZrr: [ 0.00 0.00 ]
+Key: VPSLLQZrrk: [ 0.00 0.00 ]
+Key: VPSLLQZrrkz: [ 0.00 0.00 ]
+Key: VPSLLQri: [ 0.00 0.00 ]
+Key: VPSLLQrm: [ 0.00 0.00 ]
+Key: VPSLLQrr: [ 0.00 0.00 ]
+Key: VPSLLVDYrm: [ 0.00 0.00 ]
+Key: VPSLLVDYrr: [ 0.00 0.00 ]
+Key: VPSLLVDZ: [ 0.00 0.00 ]
+Key: VPSLLVDZrm: [ 0.00 0.00 ]
+Key: VPSLLVDZrmb: [ 0.00 0.00 ]
+Key: VPSLLVDZrmbk: [ 0.00 0.00 ]
+Key: VPSLLVDZrmbkz: [ 0.00 0.00 ]
+Key: VPSLLVDZrmk: [ 0.00 0.00 ]
+Key: VPSLLVDZrmkz: [ 0.00 0.00 ]
+Key: VPSLLVDZrr: [ 0.00 0.00 ]
+Key: VPSLLVDZrrk: [ 0.00 0.00 ]
+Key: VPSLLVDZrrkz: [ 0.00 0.00 ]
+Key: VPSLLVDrm: [ 0.00 0.00 ]
+Key: VPSLLVDrr: [ 0.00 0.00 ]
+Key: VPSLLVQYrm: [ 0.00 0.00 ]
+Key: VPSLLVQYrr: [ 0.00 0.00 ]
+Key: VPSLLVQZ: [ 0.00 0.00 ]
+Key: VPSLLVQZrm: [ 0.00 0.00 ]
+Key: VPSLLVQZrmb: [ 0.00 0.00 ]
+Key: VPSLLVQZrmbk: [ 0.00 0.00 ]
+Key: VPSLLVQZrmbkz: [ 0.00 0.00 ]
+Key: VPSLLVQZrmk: [ 0.00 0.00 ]
+Key: VPSLLVQZrmkz: [ 0.00 0.00 ]
+Key: VPSLLVQZrr: [ 0.00 0.00 ]
+Key: VPSLLVQZrrk: [ 0.00 0.00 ]
+Key: VPSLLVQZrrkz: [ 0.00 0.00 ]
+Key: VPSLLVQrm: [ 0.00 0.00 ]
+Key: VPSLLVQrr: [ 0.00 0.00 ]
+Key: VPSLLVWZ: [ 0.00 0.00 ]
+Key: VPSLLVWZrm: [ 0.00 0.00 ]
+Key: VPSLLVWZrmk: [ 0.00 0.00 ]
+Key: VPSLLVWZrmkz: [ 0.00 0.00 ]
+Key: VPSLLVWZrr: [ 0.00 0.00 ]
+Key: VPSLLVWZrrk: [ 0.00 0.00 ]
+Key: VPSLLVWZrrkz: [ 0.00 0.00 ]
+Key: VPSLLWYri: [ 0.00 0.00 ]
+Key: VPSLLWYrm: [ 0.00 0.00 ]
+Key: VPSLLWYrr: [ 0.00 0.00 ]
+Key: VPSLLWZ: [ 0.00 0.00 ]
+Key: VPSLLWZmi: [ 0.00 0.00 ]
+Key: VPSLLWZmik: [ 0.00 0.00 ]
+Key: VPSLLWZmikz: [ 0.00 0.00 ]
+Key: VPSLLWZri: [ 0.00 0.00 ]
+Key: VPSLLWZrik: [ 0.00 0.00 ]
+Key: VPSLLWZrikz: [ 0.00 0.00 ]
+Key: VPSLLWZrm: [ 0.00 0.00 ]
+Key: VPSLLWZrmk: [ 0.00 0.00 ]
+Key: VPSLLWZrmkz: [ 0.00 0.00 ]
+Key: VPSLLWZrr: [ 0.00 0.00 ]
+Key: VPSLLWZrrk: [ 0.00 0.00 ]
+Key: VPSLLWZrrkz: [ 0.00 0.00 ]
+Key: VPSLLWri: [ 0.00 0.00 ]
+Key: VPSLLWrm: [ 0.00 0.00 ]
+Key: VPSLLWrr: [ 0.00 0.00 ]
+Key: VPSRADYri: [ 0.00 0.00 ]
+Key: VPSRADYrm: [ 0.00 0.00 ]
+Key: VPSRADYrr: [ 0.00 0.00 ]
+Key: VPSRADZ: [ 0.00 0.00 ]
+Key: VPSRADZmbi: [ 0.00 0.00 ]
+Key: VPSRADZmbik: [ 0.00 0.00 ]
+Key: VPSRADZmbikz: [ 0.00 0.00 ]
+Key: VPSRADZmi: [ 0.00 0.00 ]
+Key: VPSRADZmik: [ 0.00 0.00 ]
+Key: VPSRADZmikz: [ 0.00 0.00 ]
+Key: VPSRADZri: [ 0.00 0.00 ]
+Key: VPSRADZrik: [ 0.00 0.00 ]
+Key: VPSRADZrikz: [ 0.00 0.00 ]
+Key: VPSRADZrm: [ 0.00 0.00 ]
+Key: VPSRADZrmk: [ 0.00 0.00 ]
+Key: VPSRADZrmkz: [ 0.00 0.00 ]
+Key: VPSRADZrr: [ 0.00 0.00 ]
+Key: VPSRADZrrk: [ 0.00 0.00 ]
+Key: VPSRADZrrkz: [ 0.00 0.00 ]
+Key: VPSRADri: [ 0.00 0.00 ]
+Key: VPSRADrm: [ 0.00 0.00 ]
+Key: VPSRADrr: [ 0.00 0.00 ]
+Key: VPSRAQZ: [ 0.00 0.00 ]
+Key: VPSRAQZmbi: [ 0.00 0.00 ]
+Key: VPSRAQZmbik: [ 0.00 0.00 ]
+Key: VPSRAQZmbikz: [ 0.00 0.00 ]
+Key: VPSRAQZmi: [ 0.00 0.00 ]
+Key: VPSRAQZmik: [ 0.00 0.00 ]
+Key: VPSRAQZmikz: [ 0.00 0.00 ]
+Key: VPSRAQZri: [ 0.00 0.00 ]
+Key: VPSRAQZrik: [ 0.00 0.00 ]
+Key: VPSRAQZrikz: [ 0.00 0.00 ]
+Key: VPSRAQZrm: [ 0.00 0.00 ]
+Key: VPSRAQZrmk: [ 0.00 0.00 ]
+Key: VPSRAQZrmkz: [ 0.00 0.00 ]
+Key: VPSRAQZrr: [ 0.00 0.00 ]
+Key: VPSRAQZrrk: [ 0.00 0.00 ]
+Key: VPSRAQZrrkz: [ 0.00 0.00 ]
+Key: VPSRAVDYrm: [ 0.00 0.00 ]
+Key: VPSRAVDYrr: [ 0.00 0.00 ]
+Key: VPSRAVDZ: [ 0.00 0.00 ]
+Key: VPSRAVDZrm: [ 0.00 0.00 ]
+Key: VPSRAVDZrmb: [ 0.00 0.00 ]
+Key: VPSRAVDZrmbk: [ 0.00 0.00 ]
+Key: VPSRAVDZrmbkz: [ 0.00 0.00 ]
+Key: VPSRAVDZrmk: [ 0.00 0.00 ]
+Key: VPSRAVDZrmkz: [ 0.00 0.00 ]
+Key: VPSRAVDZrr: [ 0.00 0.00 ]
+Key: VPSRAVDZrrk: [ 0.00 0.00 ]
+Key: VPSRAVDZrrkz: [ 0.00 0.00 ]
+Key: VPSRAVDrm: [ 0.00 0.00 ]
+Key: VPSRAVDrr: [ 0.00 0.00 ]
+Key: VPSRAVQZ: [ 0.00 0.00 ]
+Key: VPSRAVQZrm: [ 0.00 0.00 ]
+Key: VPSRAVQZrmb: [ 0.00 0.00 ]
+Key: VPSRAVQZrmbk: [ 0.00 0.00 ]
+Key: VPSRAVQZrmbkz: [ 0.00 0.00 ]
+Key: VPSRAVQZrmk: [ 0.00 0.00 ]
+Key: VPSRAVQZrmkz: [ 0.00 0.00 ]
+Key: VPSRAVQZrr: [ 0.00 0.00 ]
+Key: VPSRAVQZrrk: [ 0.00 0.00 ]
+Key: VPSRAVQZrrkz: [ 0.00 0.00 ]
+Key: VPSRAVWZ: [ 0.00 0.00 ]
+Key: VPSRAVWZrm: [ 0.00 0.00 ]
+Key: VPSRAVWZrmk: [ 0.00 0.00 ]
+Key: VPSRAVWZrmkz: [ 0.00 0.00 ]
+Key: VPSRAVWZrr: [ 0.00 0.00 ]
+Key: VPSRAVWZrrk: [ 0.00 0.00 ]
+Key: VPSRAVWZrrkz: [ 0.00 0.00 ]
+Key: VPSRAWYri: [ 0.00 0.00 ]
+Key: VPSRAWYrm: [ 0.00 0.00 ]
+Key: VPSRAWYrr: [ 0.00 0.00 ]
+Key: VPSRAWZ: [ 0.00 0.00 ]
+Key: VPSRAWZmi: [ 0.00 0.00 ]
+Key: VPSRAWZmik: [ 0.00 0.00 ]
+Key: VPSRAWZmikz: [ 0.00 0.00 ]
+Key: VPSRAWZri: [ 0.00 0.00 ]
+Key: VPSRAWZrik: [ 0.00 0.00 ]
+Key: VPSRAWZrikz: [ 0.00 0.00 ]
+Key: VPSRAWZrm: [ 0.00 0.00 ]
+Key: VPSRAWZrmk: [ 0.00 0.00 ]
+Key: VPSRAWZrmkz: [ 0.00 0.00 ]
+Key: VPSRAWZrr: [ 0.00 0.00 ]
+Key: VPSRAWZrrk: [ 0.00 0.00 ]
+Key: VPSRAWZrrkz: [ 0.00 0.00 ]
+Key: VPSRAWri: [ 0.00 0.00 ]
+Key: VPSRAWrm: [ 0.00 0.00 ]
+Key: VPSRAWrr: [ 0.00 0.00 ]
+Key: VPSRLDQYri: [ 0.00 0.00 ]
+Key: VPSRLDQZ: [ 0.00 0.00 ]
+Key: VPSRLDQZmi: [ 0.00 0.00 ]
+Key: VPSRLDQZri: [ 0.00 0.00 ]
+Key: VPSRLDQri: [ 0.00 0.00 ]
+Key: VPSRLDYri: [ 0.00 0.00 ]
+Key: VPSRLDYrm: [ 0.00 0.00 ]
+Key: VPSRLDYrr: [ 0.00 0.00 ]
+Key: VPSRLDZ: [ 0.00 0.00 ]
+Key: VPSRLDZmbi: [ 0.00 0.00 ]
+Key: VPSRLDZmbik: [ 0.00 0.00 ]
+Key: VPSRLDZmbikz: [ 0.00 0.00 ]
+Key: VPSRLDZmi: [ 0.00 0.00 ]
+Key: VPSRLDZmik: [ 0.00 0.00 ]
+Key: VPSRLDZmikz: [ 0.00 0.00 ]
+Key: VPSRLDZri: [ 0.00 0.00 ]
+Key: VPSRLDZrik: [ 0.00 0.00 ]
+Key: VPSRLDZrikz: [ 0.00 0.00 ]
+Key: VPSRLDZrm: [ 0.00 0.00 ]
+Key: VPSRLDZrmk: [ 0.00 0.00 ]
+Key: VPSRLDZrmkz: [ 0.00 0.00 ]
+Key: VPSRLDZrr: [ 0.00 0.00 ]
+Key: VPSRLDZrrk: [ 0.00 0.00 ]
+Key: VPSRLDZrrkz: [ 0.00 0.00 ]
+Key: VPSRLDri: [ 0.00 0.00 ]
+Key: VPSRLDrm: [ 0.00 0.00 ]
+Key: VPSRLDrr: [ 0.00 0.00 ]
+Key: VPSRLQYri: [ 0.00 0.00 ]
+Key: VPSRLQYrm: [ 0.00 0.00 ]
+Key: VPSRLQYrr: [ 0.00 0.00 ]
+Key: VPSRLQZ: [ 0.00 0.00 ]
+Key: VPSRLQZmbi: [ 0.00 0.00 ]
+Key: VPSRLQZmbik: [ 0.00 0.00 ]
+Key: VPSRLQZmbikz: [ 0.00 0.00 ]
+Key: VPSRLQZmi: [ 0.00 0.00 ]
+Key: VPSRLQZmik: [ 0.00 0.00 ]
+Key: VPSRLQZmikz: [ 0.00 0.00 ]
+Key: VPSRLQZri: [ 0.00 0.00 ]
+Key: VPSRLQZrik: [ 0.00 0.00 ]
+Key: VPSRLQZrikz: [ 0.00 0.00 ]
+Key: VPSRLQZrm: [ 0.00 0.00 ]
+Key: VPSRLQZrmk: [ 0.00 0.00 ]
+Key: VPSRLQZrmkz: [ 0.00 0.00 ]
+Key: VPSRLQZrr: [ 0.00 0.00 ]
+Key: VPSRLQZrrk: [ 0.00 0.00 ]
+Key: VPSRLQZrrkz: [ 0.00 0.00 ]
+Key: VPSRLQri: [ 0.00 0.00 ]
+Key: VPSRLQrm: [ 0.00 0.00 ]
+Key: VPSRLQrr: [ 0.00 0.00 ]
+Key: VPSRLVDYrm: [ 0.00 0.00 ]
+Key: VPSRLVDYrr: [ 0.00 0.00 ]
+Key: VPSRLVDZ: [ 0.00 0.00 ]
+Key: VPSRLVDZrm: [ 0.00 0.00 ]
+Key: VPSRLVDZrmb: [ 0.00 0.00 ]
+Key: VPSRLVDZrmbk: [ 0.00 0.00 ]
+Key: VPSRLVDZrmbkz: [ 0.00 0.00 ]
+Key: VPSRLVDZrmk: [ 0.00 0.00 ]
+Key: VPSRLVDZrmkz: [ 0.00 0.00 ]
+Key: VPSRLVDZrr: [ 0.00 0.00 ]
+Key: VPSRLVDZrrk: [ 0.00 0.00 ]
+Key: VPSRLVDZrrkz: [ 0.00 0.00 ]
+Key: VPSRLVDrm: [ 0.00 0.00 ]
+Key: VPSRLVDrr: [ 0.00 0.00 ]
+Key: VPSRLVQYrm: [ 0.00 0.00 ]
+Key: VPSRLVQYrr: [ 0.00 0.00 ]
+Key: VPSRLVQZ: [ 0.00 0.00 ]
+Key: VPSRLVQZrm: [ 0.00 0.00 ]
+Key: VPSRLVQZrmb: [ 0.00 0.00 ]
+Key: VPSRLVQZrmbk: [ 0.00 0.00 ]
+Key: VPSRLVQZrmbkz: [ 0.00 0.00 ]
+Key: VPSRLVQZrmk: [ 0.00 0.00 ]
+Key: VPSRLVQZrmkz: [ 0.00 0.00 ]
+Key: VPSRLVQZrr: [ 0.00 0.00 ]
+Key: VPSRLVQZrrk: [ 0.00 0.00 ]
+Key: VPSRLVQZrrkz: [ 0.00 0.00 ]
+Key: VPSRLVQrm: [ 0.00 0.00 ]
+Key: VPSRLVQrr: [ 0.00 0.00 ]
+Key: VPSRLVWZ: [ 0.00 0.00 ]
+Key: VPSRLVWZrm: [ 0.00 0.00 ]
+Key: VPSRLVWZrmk: [ 0.00 0.00 ]
+Key: VPSRLVWZrmkz: [ 0.00 0.00 ]
+Key: VPSRLVWZrr: [ 0.00 0.00 ]
+Key: VPSRLVWZrrk: [ 0.00 0.00 ]
+Key: VPSRLVWZrrkz: [ 0.00 0.00 ]
+Key: VPSRLWYri: [ 0.00 0.00 ]
+Key: VPSRLWYrm: [ 0.00 0.00 ]
+Key: VPSRLWYrr: [ 0.00 0.00 ]
+Key: VPSRLWZ: [ 0.00 0.00 ]
+Key: VPSRLWZmi: [ 0.00 0.00 ]
+Key: VPSRLWZmik: [ 0.00 0.00 ]
+Key: VPSRLWZmikz: [ 0.00 0.00 ]
+Key: VPSRLWZri: [ 0.00 0.00 ]
+Key: VPSRLWZrik: [ 0.00 0.00 ]
+Key: VPSRLWZrikz: [ 0.00 0.00 ]
+Key: VPSRLWZrm: [ 0.00 0.00 ]
+Key: VPSRLWZrmk: [ 0.00 0.00 ]
+Key: VPSRLWZrmkz: [ 0.00 0.00 ]
+Key: VPSRLWZrr: [ 0.00 0.00 ]
+Key: VPSRLWZrrk: [ 0.00 0.00 ]
+Key: VPSRLWZrrkz: [ 0.00 0.00 ]
+Key: VPSRLWri: [ 0.00 0.00 ]
+Key: VPSRLWrm: [ 0.00 0.00 ]
+Key: VPSRLWrr: [ 0.00 0.00 ]
+Key: VPSUBBYrm: [ 0.00 0.00 ]
+Key: VPSUBBYrr: [ 0.00 0.00 ]
+Key: VPSUBBZ: [ 0.00 0.00 ]
+Key: VPSUBBZrm: [ 0.00 0.00 ]
+Key: VPSUBBZrmk: [ 0.00 0.00 ]
+Key: VPSUBBZrmkz: [ 0.00 0.00 ]
+Key: VPSUBBZrr: [ 0.00 0.00 ]
+Key: VPSUBBZrrk: [ 0.00 0.00 ]
+Key: VPSUBBZrrkz: [ 0.00 0.00 ]
+Key: VPSUBBrm: [ 0.00 0.00 ]
+Key: VPSUBBrr: [ 0.00 0.00 ]
+Key: VPSUBDYrm: [ 0.00 0.00 ]
+Key: VPSUBDYrr: [ 0.00 0.00 ]
+Key: VPSUBDZ: [ 0.00 0.00 ]
+Key: VPSUBDZrm: [ 0.00 0.00 ]
+Key: VPSUBDZrmb: [ 0.00 0.00 ]
+Key: VPSUBDZrmbk: [ 0.00 0.00 ]
+Key: VPSUBDZrmbkz: [ 0.00 0.00 ]
+Key: VPSUBDZrmk: [ 0.00 0.00 ]
+Key: VPSUBDZrmkz: [ 0.00 0.00 ]
+Key: VPSUBDZrr: [ 0.00 0.00 ]
+Key: VPSUBDZrrk: [ 0.00 0.00 ]
+Key: VPSUBDZrrkz: [ 0.00 0.00 ]
+Key: VPSUBDrm: [ 0.00 0.00 ]
+Key: VPSUBDrr: [ 0.00 0.00 ]
+Key: VPSUBQYrm: [ 0.00 0.00 ]
+Key: VPSUBQYrr: [ 0.00 0.00 ]
+Key: VPSUBQZ: [ 0.00 0.00 ]
+Key: VPSUBQZrm: [ 0.00 0.00 ]
+Key: VPSUBQZrmb: [ 0.00 0.00 ]
+Key: VPSUBQZrmbk: [ 0.00 0.00 ]
+Key: VPSUBQZrmbkz: [ 0.00 0.00 ]
+Key: VPSUBQZrmk: [ 0.00 0.00 ]
+Key: VPSUBQZrmkz: [ 0.00 0.00 ]
+Key: VPSUBQZrr: [ 0.00 0.00 ]
+Key: VPSUBQZrrk: [ 0.00 0.00 ]
+Key: VPSUBQZrrkz: [ 0.00 0.00 ]
+Key: VPSUBQrm: [ 0.00 0.00 ]
+Key: VPSUBQrr: [ 0.00 0.00 ]
+Key: VPSUBSBYrm: [ 0.00 0.00 ]
+Key: VPSUBSBYrr: [ 0.00 0.00 ]
+Key: VPSUBSBZ: [ 0.00 0.00 ]
+Key: VPSUBSBZrm: [ 0.00 0.00 ]
+Key: VPSUBSBZrmk: [ 0.00 0.00 ]
+Key: VPSUBSBZrmkz: [ 0.00 0.00 ]
+Key: VPSUBSBZrr: [ 0.00 0.00 ]
+Key: VPSUBSBZrrk: [ 0.00 0.00 ]
+Key: VPSUBSBZrrkz: [ 0.00 0.00 ]
+Key: VPSUBSBrm: [ 0.00 0.00 ]
+Key: VPSUBSBrr: [ 0.00 0.00 ]
+Key: VPSUBSWYrm: [ 0.00 0.00 ]
+Key: VPSUBSWYrr: [ 0.00 0.00 ]
+Key: VPSUBSWZ: [ 0.00 0.00 ]
+Key: VPSUBSWZrm: [ 0.00 0.00 ]
+Key: VPSUBSWZrmk: [ 0.00 0.00 ]
+Key: VPSUBSWZrmkz: [ 0.00 0.00 ]
+Key: VPSUBSWZrr: [ 0.00 0.00 ]
+Key: VPSUBSWZrrk: [ 0.00 0.00 ]
+Key: VPSUBSWZrrkz: [ 0.00 0.00 ]
+Key: VPSUBSWrm: [ 0.00 0.00 ]
+Key: VPSUBSWrr: [ 0.00 0.00 ]
+Key: VPSUBUSBYrm: [ 0.00 0.00 ]
+Key: VPSUBUSBYrr: [ 0.00 0.00 ]
+Key: VPSUBUSBZ: [ 0.00 0.00 ]
+Key: VPSUBUSBZrm: [ 0.00 0.00 ]
+Key: VPSUBUSBZrmk: [ 0.00 0.00 ]
+Key: VPSUBUSBZrmkz: [ 0.00 0.00 ]
+Key: VPSUBUSBZrr: [ 0.00 0.00 ]
+Key: VPSUBUSBZrrk: [ 0.00 0.00 ]
+Key: VPSUBUSBZrrkz: [ 0.00 0.00 ]
+Key: VPSUBUSBrm: [ 0.00 0.00 ]
+Key: VPSUBUSBrr: [ 0.00 0.00 ]
+Key: VPSUBUSWYrm: [ 0.00 0.00 ]
+Key: VPSUBUSWYrr: [ 0.00 0.00 ]
+Key: VPSUBUSWZ: [ 0.00 0.00 ]
+Key: VPSUBUSWZrm: [ 0.00 0.00 ]
+Key: VPSUBUSWZrmk: [ 0.00 0.00 ]
+Key: VPSUBUSWZrmkz: [ 0.00 0.00 ]
+Key: VPSUBUSWZrr: [ 0.00 0.00 ]
+Key: VPSUBUSWZrrk: [ 0.00 0.00 ]
+Key: VPSUBUSWZrrkz: [ 0.00 0.00 ]
+Key: VPSUBUSWrm: [ 0.00 0.00 ]
+Key: VPSUBUSWrr: [ 0.00 0.00 ]
+Key: VPSUBWYrm: [ 0.00 0.00 ]
+Key: VPSUBWYrr: [ 0.00 0.00 ]
+Key: VPSUBWZ: [ 0.00 0.00 ]
+Key: VPSUBWZrm: [ 0.00 0.00 ]
+Key: VPSUBWZrmk: [ 0.00 0.00 ]
+Key: VPSUBWZrmkz: [ 0.00 0.00 ]
+Key: VPSUBWZrr: [ 0.00 0.00 ]
+Key: VPSUBWZrrk: [ 0.00 0.00 ]
+Key: VPSUBWZrrkz: [ 0.00 0.00 ]
+Key: VPSUBWrm: [ 0.00 0.00 ]
+Key: VPSUBWrr: [ 0.00 0.00 ]
+Key: VPTERNLOGDZ: [ 0.00 0.00 ]
+Key: VPTERNLOGDZrmbi: [ 0.00 0.00 ]
+Key: VPTERNLOGDZrmbik: [ 0.00 0.00 ]
+Key: VPTERNLOGDZrmbikz: [ 0.00 0.00 ]
+Key: VPTERNLOGDZrmi: [ 0.00 0.00 ]
+Key: VPTERNLOGDZrmik: [ 0.00 0.00 ]
+Key: VPTERNLOGDZrmikz: [ 0.00 0.00 ]
+Key: VPTERNLOGDZrri: [ 0.00 0.00 ]
+Key: VPTERNLOGDZrrik: [ 0.00 0.00 ]
+Key: VPTERNLOGDZrrikz: [ 0.00 0.00 ]
+Key: VPTERNLOGQZ: [ 0.00 0.00 ]
+Key: VPTERNLOGQZrmbi: [ 0.00 0.00 ]
+Key: VPTERNLOGQZrmbik: [ 0.00 0.00 ]
+Key: VPTERNLOGQZrmbikz: [ 0.00 0.00 ]
+Key: VPTERNLOGQZrmi: [ 0.00 0.00 ]
+Key: VPTERNLOGQZrmik: [ 0.00 0.00 ]
+Key: VPTERNLOGQZrmikz: [ 0.00 0.00 ]
+Key: VPTERNLOGQZrri: [ 0.00 0.00 ]
+Key: VPTERNLOGQZrrik: [ 0.00 0.00 ]
+Key: VPTERNLOGQZrrikz: [ 0.00 0.00 ]
+Key: VPTESTMBZ: [ 0.00 0.00 ]
+Key: VPTESTMBZrm: [ 0.00 0.00 ]
+Key: VPTESTMBZrmk: [ 0.00 0.00 ]
+Key: VPTESTMBZrr: [ 0.00 0.00 ]
+Key: VPTESTMBZrrk: [ 0.00 0.00 ]
+Key: VPTESTMDZ: [ 0.00 0.00 ]
+Key: VPTESTMDZrm: [ 0.00 0.00 ]
+Key: VPTESTMDZrmb: [ 0.00 0.00 ]
+Key: VPTESTMDZrmbk: [ 0.00 0.00 ]
+Key: VPTESTMDZrmk: [ 0.00 0.00 ]
+Key: VPTESTMDZrr: [ 0.00 0.00 ]
+Key: VPTESTMDZrrk: [ 0.00 0.00 ]
+Key: VPTESTMQZ: [ 0.00 0.00 ]
+Key: VPTESTMQZrm: [ 0.00 0.00 ]
+Key: VPTESTMQZrmb: [ 0.00 0.00 ]
+Key: VPTESTMQZrmbk: [ 0.00 0.00 ]
+Key: VPTESTMQZrmk: [ 0.00 0.00 ]
+Key: VPTESTMQZrr: [ 0.00 0.00 ]
+Key: VPTESTMQZrrk: [ 0.00 0.00 ]
+Key: VPTESTMWZ: [ 0.00 0.00 ]
+Key: VPTESTMWZrm: [ 0.00 0.00 ]
+Key: VPTESTMWZrmk: [ 0.00 0.00 ]
+Key: VPTESTMWZrr: [ 0.00 0.00 ]
+Key: VPTESTMWZrrk: [ 0.00 0.00 ]
+Key: VPTESTNMBZ: [ 0.00 0.00 ]
+Key: VPTESTNMBZrm: [ 0.00 0.00 ]
+Key: VPTESTNMBZrmk: [ 0.00 0.00 ]
+Key: VPTESTNMBZrr: [ 0.00 0.00 ]
+Key: VPTESTNMBZrrk: [ 0.00 0.00 ]
+Key: VPTESTNMDZ: [ 0.00 0.00 ]
+Key: VPTESTNMDZrm: [ 0.00 0.00 ]
+Key: VPTESTNMDZrmb: [ 0.00 0.00 ]
+Key: VPTESTNMDZrmbk: [ 0.00 0.00 ]
+Key: VPTESTNMDZrmk: [ 0.00 0.00 ]
+Key: VPTESTNMDZrr: [ 0.00 0.00 ]
+Key: VPTESTNMDZrrk: [ 0.00 0.00 ]
+Key: VPTESTNMQZ: [ 0.00 0.00 ]
+Key: VPTESTNMQZrm: [ 0.00 0.00 ]
+Key: VPTESTNMQZrmb: [ 0.00 0.00 ]
+Key: VPTESTNMQZrmbk: [ 0.00 0.00 ]
+Key: VPTESTNMQZrmk: [ 0.00 0.00 ]
+Key: VPTESTNMQZrr: [ 0.00 0.00 ]
+Key: VPTESTNMQZrrk: [ 0.00 0.00 ]
+Key: VPTESTNMWZ: [ 0.00 0.00 ]
+Key: VPTESTNMWZrm: [ 0.00 0.00 ]
+Key: VPTESTNMWZrmk: [ 0.00 0.00 ]
+Key: VPTESTNMWZrr: [ 0.00 0.00 ]
+Key: VPTESTNMWZrrk: [ 0.00 0.00 ]
+Key: VPTESTYrm: [ 0.00 0.00 ]
+Key: VPTESTYrr: [ 0.00 0.00 ]
+Key: VPTESTrm: [ 0.00 0.00 ]
+Key: VPTESTrr: [ 0.00 0.00 ]
+Key: VPUNPCKHBWYrm: [ 0.00 0.00 ]
+Key: VPUNPCKHBWYrr: [ 0.00 0.00 ]
+Key: VPUNPCKHBWZ: [ 0.00 0.00 ]
+Key: VPUNPCKHBWZrm: [ 0.00 0.00 ]
+Key: VPUNPCKHBWZrmk: [ 0.00 0.00 ]
+Key: VPUNPCKHBWZrmkz: [ 0.00 0.00 ]
+Key: VPUNPCKHBWZrr: [ 0.00 0.00 ]
+Key: VPUNPCKHBWZrrk: [ 0.00 0.00 ]
+Key: VPUNPCKHBWZrrkz: [ 0.00 0.00 ]
+Key: VPUNPCKHBWrm: [ 0.00 0.00 ]
+Key: VPUNPCKHBWrr: [ 0.00 0.00 ]
+Key: VPUNPCKHDQYrm: [ 0.00 0.00 ]
+Key: VPUNPCKHDQYrr: [ 0.00 0.00 ]
+Key: VPUNPCKHDQZ: [ 0.00 0.00 ]
+Key: VPUNPCKHDQZrm: [ 0.00 0.00 ]
+Key: VPUNPCKHDQZrmb: [ 0.00 0.00 ]
+Key: VPUNPCKHDQZrmbk: [ 0.00 0.00 ]
+Key: VPUNPCKHDQZrmbkz: [ 0.00 0.00 ]
+Key: VPUNPCKHDQZrmk: [ 0.00 0.00 ]
+Key: VPUNPCKHDQZrmkz: [ 0.00 0.00 ]
+Key: VPUNPCKHDQZrr: [ 0.00 0.00 ]
+Key: VPUNPCKHDQZrrk: [ 0.00 0.00 ]
+Key: VPUNPCKHDQZrrkz: [ 0.00 0.00 ]
+Key: VPUNPCKHDQrm: [ 0.00 0.00 ]
+Key: VPUNPCKHDQrr: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQYrm: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQYrr: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQZ: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQZrm: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQZrmb: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQZrmbk: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQZrmbkz: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQZrmk: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQZrmkz: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQZrr: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQZrrk: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQZrrkz: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQrm: [ 0.00 0.00 ]
+Key: VPUNPCKHQDQrr: [ 0.00 0.00 ]
+Key: VPUNPCKHWDYrm: [ 0.00 0.00 ]
+Key: VPUNPCKHWDYrr: [ 0.00 0.00 ]
+Key: VPUNPCKHWDZ: [ 0.00 0.00 ]
+Key: VPUNPCKHWDZrm: [ 0.00 0.00 ]
+Key: VPUNPCKHWDZrmk: [ 0.00 0.00 ]
+Key: VPUNPCKHWDZrmkz: [ 0.00 0.00 ]
+Key: VPUNPCKHWDZrr: [ 0.00 0.00 ]
+Key: VPUNPCKHWDZrrk: [ 0.00 0.00 ]
+Key: VPUNPCKHWDZrrkz: [ 0.00 0.00 ]
+Key: VPUNPCKHWDrm: [ 0.00 0.00 ]
+Key: VPUNPCKHWDrr: [ 0.00 0.00 ]
+Key: VPUNPCKLBWYrm: [ 0.00 0.00 ]
+Key: VPUNPCKLBWYrr: [ 0.00 0.00 ]
+Key: VPUNPCKLBWZ: [ 0.00 0.00 ]
+Key: VPUNPCKLBWZrm: [ 0.00 0.00 ]
+Key: VPUNPCKLBWZrmk: [ 0.00 0.00 ]
+Key: VPUNPCKLBWZrmkz: [ 0.00 0.00 ]
+Key: VPUNPCKLBWZrr: [ 0.00 0.00 ]
+Key: VPUNPCKLBWZrrk: [ 0.00 0.00 ]
+Key: VPUNPCKLBWZrrkz: [ 0.00 0.00 ]
+Key: VPUNPCKLBWrm: [ 0.00 0.00 ]
+Key: VPUNPCKLBWrr: [ 0.00 0.00 ]
+Key: VPUNPCKLDQYrm: [ 0.00 0.00 ]
+Key: VPUNPCKLDQYrr: [ 0.00 0.00 ]
+Key: VPUNPCKLDQZ: [ 0.00 0.00 ]
+Key: VPUNPCKLDQZrm: [ 0.00 0.00 ]
+Key: VPUNPCKLDQZrmb: [ 0.00 0.00 ]
+Key: VPUNPCKLDQZrmbk: [ 0.00 0.00 ]
+Key: VPUNPCKLDQZrmbkz: [ 0.00 0.00 ]
+Key: VPUNPCKLDQZrmk: [ 0.00 0.00 ]
+Key: VPUNPCKLDQZrmkz: [ 0.00 0.00 ]
+Key: VPUNPCKLDQZrr: [ 0.00 0.00 ]
+Key: VPUNPCKLDQZrrk: [ 0.00 0.00 ]
+Key: VPUNPCKLDQZrrkz: [ 0.00 0.00 ]
+Key: VPUNPCKLDQrm: [ 0.00 0.00 ]
+Key: VPUNPCKLDQrr: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQYrm: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQYrr: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQZ: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQZrm: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQZrmb: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQZrmbk: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQZrmbkz: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQZrmk: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQZrmkz: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQZrr: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQZrrk: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQZrrkz: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQrm: [ 0.00 0.00 ]
+Key: VPUNPCKLQDQrr: [ 0.00 0.00 ]
+Key: VPUNPCKLWDYrm: [ 0.00 0.00 ]
+Key: VPUNPCKLWDYrr: [ 0.00 0.00 ]
+Key: VPUNPCKLWDZ: [ 0.00 0.00 ]
+Key: VPUNPCKLWDZrm: [ 0.00 0.00 ]
+Key: VPUNPCKLWDZrmk: [ 0.00 0.00 ]
+Key: VPUNPCKLWDZrmkz: [ 0.00 0.00 ]
+Key: VPUNPCKLWDZrr: [ 0.00 0.00 ]
+Key: VPUNPCKLWDZrrk: [ 0.00 0.00 ]
+Key: VPUNPCKLWDZrrkz: [ 0.00 0.00 ]
+Key: VPUNPCKLWDrm: [ 0.00 0.00 ]
+Key: VPUNPCKLWDrr: [ 0.00 0.00 ]
+Key: VPXORDZ: [ 0.00 0.00 ]
+Key: VPXORDZrm: [ 0.00 0.00 ]
+Key: VPXORDZrmb: [ 0.00 0.00 ]
+Key: VPXORDZrmbk: [ 0.00 0.00 ]
+Key: VPXORDZrmbkz: [ 0.00 0.00 ]
+Key: VPXORDZrmk: [ 0.00 0.00 ]
+Key: VPXORDZrmkz: [ 0.00 0.00 ]
+Key: VPXORDZrr: [ 0.00 0.00 ]
+Key: VPXORDZrrk: [ 0.00 0.00 ]
+Key: VPXORDZrrkz: [ 0.00 0.00 ]
+Key: VPXORQZ: [ 0.00 0.00 ]
+Key: VPXORQZrm: [ 0.00 0.00 ]
+Key: VPXORQZrmb: [ 0.00 0.00 ]
+Key: VPXORQZrmbk: [ 0.00 0.00 ]
+Key: VPXORQZrmbkz: [ 0.00 0.00 ]
+Key: VPXORQZrmk: [ 0.00 0.00 ]
+Key: VPXORQZrmkz: [ 0.00 0.00 ]
+Key: VPXORQZrr: [ 0.00 0.00 ]
+Key: VPXORQZrrk: [ 0.00 0.00 ]
+Key: VPXORQZrrkz: [ 0.00 0.00 ]
+Key: VPXORYrm: [ 0.00 0.00 ]
+Key: VPXORYrr: [ 0.00 0.00 ]
+Key: VPXORrm: [ 0.00 0.00 ]
+Key: VPXORrr: [ 0.00 0.00 ]
+Key: VRANGEPDZ: [ 0.00 0.00 ]
+Key: VRANGEPDZrmbi: [ 0.00 0.00 ]
+Key: VRANGEPDZrmbik: [ 0.00 0.00 ]
+Key: VRANGEPDZrmbikz: [ 0.00 0.00 ]
+Key: VRANGEPDZrmi: [ 0.00 0.00 ]
+Key: VRANGEPDZrmik: [ 0.00 0.00 ]
+Key: VRANGEPDZrmikz: [ 0.00 0.00 ]
+Key: VRANGEPDZrri: [ 0.00 0.00 ]
+Key: VRANGEPDZrrib: [ 0.00 0.00 ]
+Key: VRANGEPDZrribk: [ 0.00 0.00 ]
+Key: VRANGEPDZrribkz: [ 0.00 0.00 ]
+Key: VRANGEPDZrrik: [ 0.00 0.00 ]
+Key: VRANGEPDZrrikz: [ 0.00 0.00 ]
+Key: VRANGEPSZ: [ 0.00 0.00 ]
+Key: VRANGEPSZrmbi: [ 0.00 0.00 ]
+Key: VRANGEPSZrmbik: [ 0.00 0.00 ]
+Key: VRANGEPSZrmbikz: [ 0.00 0.00 ]
+Key: VRANGEPSZrmi: [ 0.00 0.00 ]
+Key: VRANGEPSZrmik: [ 0.00 0.00 ]
+Key: VRANGEPSZrmikz: [ 0.00 0.00 ]
+Key: VRANGEPSZrri: [ 0.00 0.00 ]
+Key: VRANGEPSZrrib: [ 0.00 0.00 ]
+Key: VRANGEPSZrribk: [ 0.00 0.00 ]
+Key: VRANGEPSZrribkz: [ 0.00 0.00 ]
+Key: VRANGEPSZrrik: [ 0.00 0.00 ]
+Key: VRANGEPSZrrikz: [ 0.00 0.00 ]
+Key: VRANGESDZrmi: [ 0.00 0.00 ]
+Key: VRANGESDZrmik: [ 0.00 0.00 ]
+Key: VRANGESDZrmikz: [ 0.00 0.00 ]
+Key: VRANGESDZrri: [ 0.00 0.00 ]
+Key: VRANGESDZrrib: [ 0.00 0.00 ]
+Key: VRANGESDZrribk: [ 0.00 0.00 ]
+Key: VRANGESDZrribkz: [ 0.00 0.00 ]
+Key: VRANGESDZrrik: [ 0.00 0.00 ]
+Key: VRANGESDZrrikz: [ 0.00 0.00 ]
+Key: VRANGESSZrmi: [ 0.00 0.00 ]
+Key: VRANGESSZrmik: [ 0.00 0.00 ]
+Key: VRANGESSZrmikz: [ 0.00 0.00 ]
+Key: VRANGESSZrri: [ 0.00 0.00 ]
+Key: VRANGESSZrrib: [ 0.00 0.00 ]
+Key: VRANGESSZrribk: [ 0.00 0.00 ]
+Key: VRANGESSZrribkz: [ 0.00 0.00 ]
+Key: VRANGESSZrrik: [ 0.00 0.00 ]
+Key: VRANGESSZrrikz: [ 0.00 0.00 ]
+Key: VRCP: [ 0.00 0.00 ]
+Key: VRCPBF: [ 0.00 0.00 ]
+Key: VRCPPHZ: [ 0.00 0.00 ]
+Key: VRCPPHZm: [ 0.00 0.00 ]
+Key: VRCPPHZmb: [ 0.00 0.00 ]
+Key: VRCPPHZmbk: [ 0.00 0.00 ]
+Key: VRCPPHZmbkz: [ 0.00 0.00 ]
+Key: VRCPPHZmk: [ 0.00 0.00 ]
+Key: VRCPPHZmkz: [ 0.00 0.00 ]
+Key: VRCPPHZr: [ 0.00 0.00 ]
+Key: VRCPPHZrk: [ 0.00 0.00 ]
+Key: VRCPPHZrkz: [ 0.00 0.00 ]
+Key: VRCPPSYm: [ 0.00 0.00 ]
+Key: VRCPPSYr: [ 0.00 0.00 ]
+Key: VRCPPSm: [ 0.00 0.00 ]
+Key: VRCPPSr: [ 0.00 0.00 ]
+Key: VRCPSHZrm: [ 0.00 0.00 ]
+Key: VRCPSHZrmk: [ 0.00 0.00 ]
+Key: VRCPSHZrmkz: [ 0.00 0.00 ]
+Key: VRCPSHZrr: [ 0.00 0.00 ]
+Key: VRCPSHZrrk: [ 0.00 0.00 ]
+Key: VRCPSHZrrkz: [ 0.00 0.00 ]
+Key: VRCPSSm: [ 0.00 0.00 ]
+Key: VRCPSSm_Int: [ 0.00 0.00 ]
+Key: VRCPSSr: [ 0.00 0.00 ]
+Key: VRCPSSr_Int: [ 0.00 0.00 ]
+Key: VREDUCEBF: [ 0.00 0.00 ]
+Key: VREDUCEPDZ: [ 0.00 0.00 ]
+Key: VREDUCEPDZrmbi: [ 0.00 0.00 ]
+Key: VREDUCEPDZrmbik: [ 0.00 0.00 ]
+Key: VREDUCEPDZrmbikz: [ 0.00 0.00 ]
+Key: VREDUCEPDZrmi: [ 0.00 0.00 ]
+Key: VREDUCEPDZrmik: [ 0.00 0.00 ]
+Key: VREDUCEPDZrmikz: [ 0.00 0.00 ]
+Key: VREDUCEPDZrri: [ 0.00 0.00 ]
+Key: VREDUCEPDZrrib: [ 0.00 0.00 ]
+Key: VREDUCEPDZrribk: [ 0.00 0.00 ]
+Key: VREDUCEPDZrribkz: [ 0.00 0.00 ]
+Key: VREDUCEPDZrrik: [ 0.00 0.00 ]
+Key: VREDUCEPDZrrikz: [ 0.00 0.00 ]
+Key: VREDUCEPHZ: [ 0.00 0.00 ]
+Key: VREDUCEPHZrmbi: [ 0.00 0.00 ]
+Key: VREDUCEPHZrmbik: [ 0.00 0.00 ]
+Key: VREDUCEPHZrmbikz: [ 0.00 0.00 ]
+Key: VREDUCEPHZrmi: [ 0.00 0.00 ]
+Key: VREDUCEPHZrmik: [ 0.00 0.00 ]
+Key: VREDUCEPHZrmikz: [ 0.00 0.00 ]
+Key: VREDUCEPHZrri: [ 0.00 0.00 ]
+Key: VREDUCEPHZrrib: [ 0.00 0.00 ]
+Key: VREDUCEPHZrribk: [ 0.00 0.00 ]
+Key: VREDUCEPHZrribkz: [ 0.00 0.00 ]
+Key: VREDUCEPHZrrik: [ 0.00 0.00 ]
+Key: VREDUCEPHZrrikz: [ 0.00 0.00 ]
+Key: VREDUCEPSZ: [ 0.00 0.00 ]
+Key: VREDUCEPSZrmbi: [ 0.00 0.00 ]
+Key: VREDUCEPSZrmbik: [ 0.00 0.00 ]
+Key: VREDUCEPSZrmbikz: [ 0.00 0.00 ]
+Key: VREDUCEPSZrmi: [ 0.00 0.00 ]
+Key: VREDUCEPSZrmik: [ 0.00 0.00 ]
+Key: VREDUCEPSZrmikz: [ 0.00 0.00 ]
+Key: VREDUCEPSZrri: [ 0.00 0.00 ]
+Key: VREDUCEPSZrrib: [ 0.00 0.00 ]
+Key: VREDUCEPSZrribk: [ 0.00 0.00 ]
+Key: VREDUCEPSZrribkz: [ 0.00 0.00 ]
+Key: VREDUCEPSZrrik: [ 0.00 0.00 ]
+Key: VREDUCEPSZrrikz: [ 0.00 0.00 ]
+Key: VREDUCESDZrmi: [ 0.00 0.00 ]
+Key: VREDUCESDZrmik: [ 0.00 0.00 ]
+Key: VREDUCESDZrmikz: [ 0.00 0.00 ]
+Key: VREDUCESDZrri: [ 0.00 0.00 ]
+Key: VREDUCESDZrrib: [ 0.00 0.00 ]
+Key: VREDUCESDZrribk: [ 0.00 0.00 ]
+Key: VREDUCESDZrribkz: [ 0.00 0.00 ]
+Key: VREDUCESDZrrik: [ 0.00 0.00 ]
+Key: VREDUCESDZrrikz: [ 0.00 0.00 ]
+Key: VREDUCESHZrmi: [ 0.00 0.00 ]
+Key: VREDUCESHZrmik: [ 0.00 0.00 ]
+Key: VREDUCESHZrmikz: [ 0.00 0.00 ]
+Key: VREDUCESHZrri: [ 0.00 0.00 ]
+Key: VREDUCESHZrrib: [ 0.00 0.00 ]
+Key: VREDUCESHZrribk: [ 0.00 0.00 ]
+Key: VREDUCESHZrribkz: [ 0.00 0.00 ]
+Key: VREDUCESHZrrik: [ 0.00 0.00 ]
+Key: VREDUCESHZrrikz: [ 0.00 0.00 ]
+Key: VREDUCESSZrmi: [ 0.00 0.00 ]
+Key: VREDUCESSZrmik: [ 0.00 0.00 ]
+Key: VREDUCESSZrmikz: [ 0.00 0.00 ]
+Key: VREDUCESSZrri: [ 0.00 0.00 ]
+Key: VREDUCESSZrrib: [ 0.00 0.00 ]
+Key: VREDUCESSZrribk: [ 0.00 0.00 ]
+Key: VREDUCESSZrribkz: [ 0.00 0.00 ]
+Key: VREDUCESSZrrik: [ 0.00 0.00 ]
+Key: VREDUCESSZrrikz: [ 0.00 0.00 ]
+Key: VRNDSCALEBF: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZ: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrmbi: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrmbik: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrmbikz: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrmi: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrmik: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrmikz: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrri: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrrib: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrribk: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrribkz: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrrik: [ 0.00 0.00 ]
+Key: VRNDSCALEPDZrrikz: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZ: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrmbi: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrmbik: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrmbikz: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrmi: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrmik: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrmikz: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrri: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrrib: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrribk: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrribkz: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrrik: [ 0.00 0.00 ]
+Key: VRNDSCALEPHZrrikz: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZ: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrmbi: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrmbik: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrmbikz: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrmi: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrmik: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrmikz: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrri: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrrib: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrribk: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrribkz: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrrik: [ 0.00 0.00 ]
+Key: VRNDSCALEPSZrrikz: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrmi: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrmi_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrmik_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrmikz_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrri: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrri_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrrib_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrribk_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrribkz_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrrik_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESDZrrikz_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrmi: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrmi_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrmik_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrmikz_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrri: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrri_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrrib_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrribk_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrribkz_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrrik_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESHZrrikz_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrmi: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrmi_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrmik_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrmikz_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrri: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrri_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrrib_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrribk_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrribkz_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrrik_Int: [ 0.00 0.00 ]
+Key: VRNDSCALESSZrrikz_Int: [ 0.00 0.00 ]
+Key: VROUNDPDYmi: [ 0.00 0.00 ]
+Key: VROUNDPDYri: [ 0.00 0.00 ]
+Key: VROUNDPDmi: [ 0.00 0.00 ]
+Key: VROUNDPDri: [ 0.00 0.00 ]
+Key: VROUNDPSYmi: [ 0.00 0.00 ]
+Key: VROUNDPSYri: [ 0.00 0.00 ]
+Key: VROUNDPSmi: [ 0.00 0.00 ]
+Key: VROUNDPSri: [ 0.00 0.00 ]
+Key: VROUNDSDmi: [ 0.00 0.00 ]
+Key: VROUNDSDmi_Int: [ 0.00 0.00 ]
+Key: VROUNDSDri: [ 0.00 0.00 ]
+Key: VROUNDSDri_Int: [ 0.00 0.00 ]
+Key: VROUNDSSmi: [ 0.00 0.00 ]
+Key: VROUNDSSmi_Int: [ 0.00 0.00 ]
+Key: VROUNDSSri: [ 0.00 0.00 ]
+Key: VROUNDSSri_Int: [ 0.00 0.00 ]
+Key: VRSQRT: [ 0.00 0.00 ]
+Key: VRSQRTBF: [ 0.00 0.00 ]
+Key: VRSQRTPHZ: [ 0.00 0.00 ]
+Key: VRSQRTPHZm: [ 0.00 0.00 ]
+Key: VRSQRTPHZmb: [ 0.00 0.00 ]
+Key: VRSQRTPHZmbk: [ 0.00 0.00 ]
+Key: VRSQRTPHZmbkz: [ 0.00 0.00 ]
+Key: VRSQRTPHZmk: [ 0.00 0.00 ]
+Key: VRSQRTPHZmkz: [ 0.00 0.00 ]
+Key: VRSQRTPHZr: [ 0.00 0.00 ]
+Key: VRSQRTPHZrk: [ 0.00 0.00 ]
+Key: VRSQRTPHZrkz: [ 0.00 0.00 ]
+Key: VRSQRTPSYm: [ 0.00 0.00 ]
+Key: VRSQRTPSYr: [ 0.00 0.00 ]
+Key: VRSQRTPSm: [ 0.00 0.00 ]
+Key: VRSQRTPSr: [ 0.00 0.00 ]
+Key: VRSQRTSHZrm: [ 0.00 0.00 ]
+Key: VRSQRTSHZrmk: [ 0.00 0.00 ]
+Key: VRSQRTSHZrmkz: [ 0.00 0.00 ]
+Key: VRSQRTSHZrr: [ 0.00 0.00 ]
+Key: VRSQRTSHZrrk: [ 0.00 0.00 ]
+Key: VRSQRTSHZrrkz: [ 0.00 0.00 ]
+Key: VRSQRTSSm: [ 0.00 0.00 ]
+Key: VRSQRTSSm_Int: [ 0.00 0.00 ]
+Key: VRSQRTSSr: [ 0.00 0.00 ]
+Key: VRSQRTSSr_Int: [ 0.00 0.00 ]
+Key: VSCALEFBF: [ 0.00 0.00 ]
+Key: VSCALEFPDZ: [ 0.00 0.00 ]
+Key: VSCALEFPDZrm: [ 0.00 0.00 ]
+Key: VSCALEFPDZrmb: [ 0.00 0.00 ]
+Key: VSCALEFPDZrmbk: [ 0.00 0.00 ]
+Key: VSCALEFPDZrmbkz: [ 0.00 0.00 ]
+Key: VSCALEFPDZrmk: [ 0.00 0.00 ]
+Key: VSCALEFPDZrmkz: [ 0.00 0.00 ]
+Key: VSCALEFPDZrr: [ 0.00 0.00 ]
+Key: VSCALEFPDZrrb: [ 0.00 0.00 ]
+Key: VSCALEFPDZrrbk: [ 0.00 0.00 ]
+Key: VSCALEFPDZrrbkz: [ 0.00 0.00 ]
+Key: VSCALEFPDZrrk: [ 0.00 0.00 ]
+Key: VSCALEFPDZrrkz: [ 0.00 0.00 ]
+Key: VSCALEFPHZ: [ 0.00 0.00 ]
+Key: VSCALEFPHZrm: [ 0.00 0.00 ]
+Key: VSCALEFPHZrmb: [ 0.00 0.00 ]
+Key: VSCALEFPHZrmbk: [ 0.00 0.00 ]
+Key: VSCALEFPHZrmbkz: [ 0.00 0.00 ]
+Key: VSCALEFPHZrmk: [ 0.00 0.00 ]
+Key: VSCALEFPHZrmkz: [ 0.00 0.00 ]
+Key: VSCALEFPHZrr: [ 0.00 0.00 ]
+Key: VSCALEFPHZrrb: [ 0.00 0.00 ]
+Key: VSCALEFPHZrrbk: [ 0.00 0.00 ]
+Key: VSCALEFPHZrrbkz: [ 0.00 0.00 ]
+Key: VSCALEFPHZrrk: [ 0.00 0.00 ]
+Key: VSCALEFPHZrrkz: [ 0.00 0.00 ]
+Key: VSCALEFPSZ: [ 0.00 0.00 ]
+Key: VSCALEFPSZrm: [ 0.00 0.00 ]
+Key: VSCALEFPSZrmb: [ 0.00 0.00 ]
+Key: VSCALEFPSZrmbk: [ 0.00 0.00 ]
+Key: VSCALEFPSZrmbkz: [ 0.00 0.00 ]
+Key: VSCALEFPSZrmk: [ 0.00 0.00 ]
+Key: VSCALEFPSZrmkz: [ 0.00 0.00 ]
+Key: VSCALEFPSZrr: [ 0.00 0.00 ]
+Key: VSCALEFPSZrrb: [ 0.00 0.00 ]
+Key: VSCALEFPSZrrbk: [ 0.00 0.00 ]
+Key: VSCALEFPSZrrbkz: [ 0.00 0.00 ]
+Key: VSCALEFPSZrrk: [ 0.00 0.00 ]
+Key: VSCALEFPSZrrkz: [ 0.00 0.00 ]
+Key: VSCALEFSDZrm: [ 0.00 0.00 ]
+Key: VSCALEFSDZrmk: [ 0.00 0.00 ]
+Key: VSCALEFSDZrmkz: [ 0.00 0.00 ]
+Key: VSCALEFSDZrr: [ 0.00 0.00 ]
+Key: VSCALEFSDZrrb_Int: [ 0.00 0.00 ]
+Key: VSCALEFSDZrrbk_Int: [ 0.00 0.00 ]
+Key: VSCALEFSDZrrbkz_Int: [ 0.00 0.00 ]
+Key: VSCALEFSDZrrk: [ 0.00 0.00 ]
+Key: VSCALEFSDZrrkz: [ 0.00 0.00 ]
+Key: VSCALEFSHZrm: [ 0.00 0.00 ]
+Key: VSCALEFSHZrmk: [ 0.00 0.00 ]
+Key: VSCALEFSHZrmkz: [ 0.00 0.00 ]
+Key: VSCALEFSHZrr: [ 0.00 0.00 ]
+Key: VSCALEFSHZrrb_Int: [ 0.00 0.00 ]
+Key: VSCALEFSHZrrbk_Int: [ 0.00 0.00 ]
+Key: VSCALEFSHZrrbkz_Int: [ 0.00 0.00 ]
+Key: VSCALEFSHZrrk: [ 0.00 0.00 ]
+Key: VSCALEFSHZrrkz: [ 0.00 0.00 ]
+Key: VSCALEFSSZrm: [ 0.00 0.00 ]
+Key: VSCALEFSSZrmk: [ 0.00 0.00 ]
+Key: VSCALEFSSZrmkz: [ 0.00 0.00 ]
+Key: VSCALEFSSZrr: [ 0.00 0.00 ]
+Key: VSCALEFSSZrrb_Int: [ 0.00 0.00 ]
+Key: VSCALEFSSZrrbk_Int: [ 0.00 0.00 ]
+Key: VSCALEFSSZrrbkz_Int: [ 0.00 0.00 ]
+Key: VSCALEFSSZrrk: [ 0.00 0.00 ]
+Key: VSCALEFSSZrrkz: [ 0.00 0.00 ]
+Key: VSCATTERDPDZ: [ 0.00 0.00 ]
+Key: VSCATTERDPDZmr: [ 0.00 0.00 ]
+Key: VSCATTERDPSZ: [ 0.00 0.00 ]
+Key: VSCATTERDPSZmr: [ 0.00 0.00 ]
+Key: VSCATTERPF: [ 0.00 0.00 ]
+Key: VSCATTERQPDZ: [ 0.00 0.00 ]
+Key: VSCATTERQPDZmr: [ 0.00 0.00 ]
+Key: VSCATTERQPSZ: [ 0.00 0.00 ]
+Key: VSCATTERQPSZmr: [ 0.00 0.00 ]
+Key: VSHA: [ 0.00 0.00 ]
+Key: VSHUFF: [ 0.00 0.00 ]
+Key: VSHUFI: [ 0.00 0.00 ]
+Key: VSHUFPDYrmi: [ 0.00 0.00 ]
+Key: VSHUFPDYrri: [ 0.00 0.00 ]
+Key: VSHUFPDZ: [ 0.00 0.00 ]
+Key: VSHUFPDZrmbi: [ 0.00 0.00 ]
+Key: VSHUFPDZrmbik: [ 0.00 0.00 ]
+Key: VSHUFPDZrmbikz: [ 0.00 0.00 ]
+Key: VSHUFPDZrmi: [ 0.00 0.00 ]
+Key: VSHUFPDZrmik: [ 0.00 0.00 ]
+Key: VSHUFPDZrmikz: [ 0.00 0.00 ]
+Key: VSHUFPDZrri: [ 0.00 0.00 ]
+Key: VSHUFPDZrrik: [ 0.00 0.00 ]
+Key: VSHUFPDZrrikz: [ 0.00 0.00 ]
+Key: VSHUFPDrmi: [ 0.00 0.00 ]
+Key: VSHUFPDrri: [ 0.00 0.00 ]
+Key: VSHUFPSYrmi: [ 0.00 0.00 ]
+Key: VSHUFPSYrri: [ 0.00 0.00 ]
+Key: VSHUFPSZ: [ 0.00 0.00 ]
+Key: VSHUFPSZrmbi: [ 0.00 0.00 ]
+Key: VSHUFPSZrmbik: [ 0.00 0.00 ]
+Key: VSHUFPSZrmbikz: [ 0.00 0.00 ]
+Key: VSHUFPSZrmi: [ 0.00 0.00 ]
+Key: VSHUFPSZrmik: [ 0.00 0.00 ]
+Key: VSHUFPSZrmikz: [ 0.00 0.00 ]
+Key: VSHUFPSZrri: [ 0.00 0.00 ]
+Key: VSHUFPSZrrik: [ 0.00 0.00 ]
+Key: VSHUFPSZrrikz: [ 0.00 0.00 ]
+Key: VSHUFPSrmi: [ 0.00 0.00 ]
+Key: VSHUFPSrri: [ 0.00 0.00 ]
+Key: VSM: [ 0.00 0.00 ]
+Key: VSQRTBF: [ 0.00 0.00 ]
+Key: VSQRTPDYm: [ 0.00 0.00 ]
+Key: VSQRTPDYr: [ 0.00 0.00 ]
+Key: VSQRTPDZ: [ 0.00 0.00 ]
+Key: VSQRTPDZm: [ 0.00 0.00 ]
+Key: VSQRTPDZmb: [ 0.00 0.00 ]
+Key: VSQRTPDZmbk: [ 0.00 0.00 ]
+Key: VSQRTPDZmbkz: [ 0.00 0.00 ]
+Key: VSQRTPDZmk: [ 0.00 0.00 ]
+Key: VSQRTPDZmkz: [ 0.00 0.00 ]
+Key: VSQRTPDZr: [ 0.00 0.00 ]
+Key: VSQRTPDZrb: [ 0.00 0.00 ]
+Key: VSQRTPDZrbk: [ 0.00 0.00 ]
+Key: VSQRTPDZrbkz: [ 0.00 0.00 ]
+Key: VSQRTPDZrk: [ 0.00 0.00 ]
+Key: VSQRTPDZrkz: [ 0.00 0.00 ]
+Key: VSQRTPDm: [ 0.00 0.00 ]
+Key: VSQRTPDr: [ 0.00 0.00 ]
+Key: VSQRTPHZ: [ 0.00 0.00 ]
+Key: VSQRTPHZm: [ 0.00 0.00 ]
+Key: VSQRTPHZmb: [ 0.00 0.00 ]
+Key: VSQRTPHZmbk: [ 0.00 0.00 ]
+Key: VSQRTPHZmbkz: [ 0.00 0.00 ]
+Key: VSQRTPHZmk: [ 0.00 0.00 ]
+Key: VSQRTPHZmkz: [ 0.00 0.00 ]
+Key: VSQRTPHZr: [ 0.00 0.00 ]
+Key: VSQRTPHZrb: [ 0.00 0.00 ]
+Key: VSQRTPHZrbk: [ 0.00 0.00 ]
+Key: VSQRTPHZrbkz: [ 0.00 0.00 ]
+Key: VSQRTPHZrk: [ 0.00 0.00 ]
+Key: VSQRTPHZrkz: [ 0.00 0.00 ]
+Key: VSQRTPSYm: [ 0.00 0.00 ]
+Key: VSQRTPSYr: [ 0.00 0.00 ]
+Key: VSQRTPSZ: [ 0.00 0.00 ]
+Key: VSQRTPSZm: [ 0.00 0.00 ]
+Key: VSQRTPSZmb: [ 0.00 0.00 ]
+Key: VSQRTPSZmbk: [ 0.00 0.00 ]
+Key: VSQRTPSZmbkz: [ 0.00 0.00 ]
+Key: VSQRTPSZmk: [ 0.00 0.00 ]
+Key: VSQRTPSZmkz: [ 0.00 0.00 ]
+Key: VSQRTPSZr: [ 0.00 0.00 ]
+Key: VSQRTPSZrb: [ 0.00 0.00 ]
+Key: VSQRTPSZrbk: [ 0.00 0.00 ]
+Key: VSQRTPSZrbkz: [ 0.00 0.00 ]
+Key: VSQRTPSZrk: [ 0.00 0.00 ]
+Key: VSQRTPSZrkz: [ 0.00 0.00 ]
+Key: VSQRTPSm: [ 0.00 0.00 ]
+Key: VSQRTPSr: [ 0.00 0.00 ]
+Key: VSQRTSDZm: [ 0.00 0.00 ]
+Key: VSQRTSDZm_Int: [ 0.00 0.00 ]
+Key: VSQRTSDZmk_Int: [ 0.00 0.00 ]
+Key: VSQRTSDZmkz_Int: [ 0.00 0.00 ]
+Key: VSQRTSDZr: [ 0.00 0.00 ]
+Key: VSQRTSDZr_Int: [ 0.00 0.00 ]
+Key: VSQRTSDZrb_Int: [ 0.00 0.00 ]
+Key: VSQRTSDZrbk_Int: [ 0.00 0.00 ]
+Key: VSQRTSDZrbkz_Int: [ 0.00 0.00 ]
+Key: VSQRTSDZrk_Int: [ 0.00 0.00 ]
+Key: VSQRTSDZrkz_Int: [ 0.00 0.00 ]
+Key: VSQRTSDm: [ 0.00 0.00 ]
+Key: VSQRTSDm_Int: [ 0.00 0.00 ]
+Key: VSQRTSDr: [ 0.00 0.00 ]
+Key: VSQRTSDr_Int: [ 0.00 0.00 ]
+Key: VSQRTSHZm: [ 0.00 0.00 ]
+Key: VSQRTSHZm_Int: [ 0.00 0.00 ]
+Key: VSQRTSHZmk_Int: [ 0.00 0.00 ]
+Key: VSQRTSHZmkz_Int: [ 0.00 0.00 ]
+Key: VSQRTSHZr: [ 0.00 0.00 ]
+Key: VSQRTSHZr_Int: [ 0.00 0.00 ]
+Key: VSQRTSHZrb_Int: [ 0.00 0.00 ]
+Key: VSQRTSHZrbk_Int: [ 0.00 0.00 ]
+Key: VSQRTSHZrbkz_Int: [ 0.00 0.00 ]
+Key: VSQRTSHZrk_Int: [ 0.00 0.00 ]
+Key: VSQRTSHZrkz_Int: [ 0.00 0.00 ]
+Key: VSQRTSSZm: [ 0.00 0.00 ]
+Key: VSQRTSSZm_Int: [ 0.00 0.00 ]
+Key: VSQRTSSZmk_Int: [ 0.00 0.00 ]
+Key: VSQRTSSZmkz_Int: [ 0.00 0.00 ]
+Key: VSQRTSSZr: [ 0.00 0.00 ]
+Key: VSQRTSSZr_Int: [ 0.00 0.00 ]
+Key: VSQRTSSZrb_Int: [ 0.00 0.00 ]
+Key: VSQRTSSZrbk_Int: [ 0.00 0.00 ]
+Key: VSQRTSSZrbkz_Int: [ 0.00 0.00 ]
+Key: VSQRTSSZrk_Int: [ 0.00 0.00 ]
+Key: VSQRTSSZrkz_Int: [ 0.00 0.00 ]
+Key: VSQRTSSm: [ 0.00 0.00 ]
+Key: VSQRTSSm_Int: [ 0.00 0.00 ]
+Key: VSQRTSSr: [ 0.00 0.00 ]
+Key: VSQRTSSr_Int: [ 0.00 0.00 ]
+Key: VSTMXCSR: [ 0.00 0.00 ]
+Key: VSUBBF: [ 0.00 0.00 ]
+Key: VSUBPDYrm: [ 0.00 0.00 ]
+Key: VSUBPDYrr: [ 0.00 0.00 ]
+Key: VSUBPDZ: [ 0.00 0.00 ]
+Key: VSUBPDZrm: [ 0.00 0.00 ]
+Key: VSUBPDZrmb: [ 0.00 0.00 ]
+Key: VSUBPDZrmbk: [ 0.00 0.00 ]
+Key: VSUBPDZrmbkz: [ 0.00 0.00 ]
+Key: VSUBPDZrmk: [ 0.00 0.00 ]
+Key: VSUBPDZrmkz: [ 0.00 0.00 ]
+Key: VSUBPDZrr: [ 0.00 0.00 ]
+Key: VSUBPDZrrb: [ 0.00 0.00 ]
+Key: VSUBPDZrrbk: [ 0.00 0.00 ]
+Key: VSUBPDZrrbkz: [ 0.00 0.00 ]
+Key: VSUBPDZrrk: [ 0.00 0.00 ]
+Key: VSUBPDZrrkz: [ 0.00 0.00 ]
+Key: VSUBPDrm: [ 0.00 0.00 ]
+Key: VSUBPDrr: [ 0.00 0.00 ]
+Key: VSUBPHZ: [ 0.00 0.00 ]
+Key: VSUBPHZrm: [ 0.00 0.00 ]
+Key: VSUBPHZrmb: [ 0.00 0.00 ]
+Key: VSUBPHZrmbk: [ 0.00 0.00 ]
+Key: VSUBPHZrmbkz: [ 0.00 0.00 ]
+Key: VSUBPHZrmk: [ 0.00 0.00 ]
+Key: VSUBPHZrmkz: [ 0.00 0.00 ]
+Key: VSUBPHZrr: [ 0.00 0.00 ]
+Key: VSUBPHZrrb: [ 0.00 0.00 ]
+Key: VSUBPHZrrbk: [ 0.00 0.00 ]
+Key: VSUBPHZrrbkz: [ 0.00 0.00 ]
+Key: VSUBPHZrrk: [ 0.00 0.00 ]
+Key: VSUBPHZrrkz: [ 0.00 0.00 ]
+Key: VSUBPSYrm: [ 0.00 0.00 ]
+Key: VSUBPSYrr: [ 0.00 0.00 ]
+Key: VSUBPSZ: [ 0.00 0.00 ]
+Key: VSUBPSZrm: [ 0.00 0.00 ]
+Key: VSUBPSZrmb: [ 0.00 0.00 ]
+Key: VSUBPSZrmbk: [ 0.00 0.00 ]
+Key: VSUBPSZrmbkz: [ 0.00 0.00 ]
+Key: VSUBPSZrmk: [ 0.00 0.00 ]
+Key: VSUBPSZrmkz: [ 0.00 0.00 ]
+Key: VSUBPSZrr: [ 0.00 0.00 ]
+Key: VSUBPSZrrb: [ 0.00 0.00 ]
+Key: VSUBPSZrrbk: [ 0.00 0.00 ]
+Key: VSUBPSZrrbkz: [ 0.00 0.00 ]
+Key: VSUBPSZrrk: [ 0.00 0.00 ]
+Key: VSUBPSZrrkz: [ 0.00 0.00 ]
+Key: VSUBPSrm: [ 0.00 0.00 ]
+Key: VSUBPSrr: [ 0.00 0.00 ]
+Key: VSUBSDZrm: [ 0.00 0.00 ]
+Key: VSUBSDZrm_Int: [ 0.00 0.00 ]
+Key: VSUBSDZrmk_Int: [ 0.00 0.00 ]
+Key: VSUBSDZrmkz_Int: [ 0.00 0.00 ]
+Key: VSUBSDZrr: [ 0.00 0.00 ]
+Key: VSUBSDZrr_Int: [ 0.00 0.00 ]
+Key: VSUBSDZrrb_Int: [ 0.00 0.00 ]
+Key: VSUBSDZrrbk_Int: [ 0.00 0.00 ]
+Key: VSUBSDZrrbkz_Int: [ 0.00 0.00 ]
+Key: VSUBSDZrrk_Int: [ 0.00 0.00 ]
+Key: VSUBSDZrrkz_Int: [ 0.00 0.00 ]
+Key: VSUBSDrm: [ 0.00 0.00 ]
+Key: VSUBSDrm_Int: [ 0.00 0.00 ]
+Key: VSUBSDrr: [ 0.00 0.00 ]
+Key: VSUBSDrr_Int: [ 0.00 0.00 ]
+Key: VSUBSHZrm: [ 0.00 0.00 ]
+Key: VSUBSHZrm_Int: [ 0.00 0.00 ]
+Key: VSUBSHZrmk_Int: [ 0.00 0.00 ]
+Key: VSUBSHZrmkz_Int: [ 0.00 0.00 ]
+Key: VSUBSHZrr: [ 0.00 0.00 ]
+Key: VSUBSHZrr_Int: [ 0.00 0.00 ]
+Key: VSUBSHZrrb_Int: [ 0.00 0.00 ]
+Key: VSUBSHZrrbk_Int: [ 0.00 0.00 ]
+Key: VSUBSHZrrbkz_Int: [ 0.00 0.00 ]
+Key: VSUBSHZrrk_Int: [ 0.00 0.00 ]
+Key: VSUBSHZrrkz_Int: [ 0.00 0.00 ]
+Key: VSUBSSZrm: [ 0.00 0.00 ]
+Key: VSUBSSZrm_Int: [ 0.00 0.00 ]
+Key: VSUBSSZrmk_Int: [ 0.00 0.00 ]
+Key: VSUBSSZrmkz_Int: [ 0.00 0.00 ]
+Key: VSUBSSZrr: [ 0.00 0.00 ]
+Key: VSUBSSZrr_Int: [ 0.00 0.00 ]
+Key: VSUBSSZrrb_Int: [ 0.00 0.00 ]
+Key: VSUBSSZrrbk_Int: [ 0.00 0.00 ]
+Key: VSUBSSZrrbkz_Int: [ 0.00 0.00 ]
+Key: VSUBSSZrrk_Int: [ 0.00 0.00 ]
+Key: VSUBSSZrrkz_Int: [ 0.00 0.00 ]
+Key: VSUBSSrm: [ 0.00 0.00 ]
+Key: VSUBSSrm_Int: [ 0.00 0.00 ]
+Key: VSUBSSrr: [ 0.00 0.00 ]
+Key: VSUBSSrr_Int: [ 0.00 0.00 ]
+Key: VTESTPDYrm: [ 0.00 0.00 ]
+Key: VTESTPDYrr: [ 0.00 0.00 ]
+Key: VTESTPDrm: [ 0.00 0.00 ]
+Key: VTESTPDrr: [ 0.00 0.00 ]
+Key: VTESTPSYrm: [ 0.00 0.00 ]
+Key: VTESTPSYrr: [ 0.00 0.00 ]
+Key: VTESTPSrm: [ 0.00 0.00 ]
+Key: VTESTPSrr: [ 0.00 0.00 ]
+Key: VUCOMISDZrm: [ 0.00 0.00 ]
+Key: VUCOMISDZrm_Int: [ 0.00 0.00 ]
+Key: VUCOMISDZrr: [ 0.00 0.00 ]
+Key: VUCOMISDZrr_Int: [ 0.00 0.00 ]
+Key: VUCOMISDZrrb: [ 0.00 0.00 ]
+Key: VUCOMISDrm: [ 0.00 0.00 ]
+Key: VUCOMISDrm_Int: [ 0.00 0.00 ]
+Key: VUCOMISDrr: [ 0.00 0.00 ]
+Key: VUCOMISDrr_Int: [ 0.00 0.00 ]
+Key: VUCOMISHZrm: [ 0.00 0.00 ]
+Key: VUCOMISHZrm_Int: [ 0.00 0.00 ]
+Key: VUCOMISHZrr: [ 0.00 0.00 ]
+Key: VUCOMISHZrr_Int: [ 0.00 0.00 ]
+Key: VUCOMISHZrrb: [ 0.00 0.00 ]
+Key: VUCOMISSZrm: [ 0.00 0.00 ]
+Key: VUCOMISSZrm_Int: [ 0.00 0.00 ]
+Key: VUCOMISSZrr: [ 0.00 0.00 ]
+Key: VUCOMISSZrr_Int: [ 0.00 0.00 ]
+Key: VUCOMISSZrrb: [ 0.00 0.00 ]
+Key: VUCOMISSrm: [ 0.00 0.00 ]
+Key: VUCOMISSrm_Int: [ 0.00 0.00 ]
+Key: VUCOMISSrr: [ 0.00 0.00 ]
+Key: VUCOMISSrr_Int: [ 0.00 0.00 ]
+Key: VUCOMXSDZrm: [ 0.00 0.00 ]
+Key: VUCOMXSDZrm_Int: [ 0.00 0.00 ]
+Key: VUCOMXSDZrr: [ 0.00 0.00 ]
+Key: VUCOMXSDZrr_Int: [ 0.00 0.00 ]
+Key: VUCOMXSDZrrb_Int: [ 0.00 0.00 ]
+Key: VUCOMXSHZrm: [ 0.00 0.00 ]
+Key: VUCOMXSHZrm_Int: [ 0.00 0.00 ]
+Key: VUCOMXSHZrr: [ 0.00 0.00 ]
+Key: VUCOMXSHZrr_Int: [ 0.00 0.00 ]
+Key: VUCOMXSHZrrb_Int: [ 0.00 0.00 ]
+Key: VUCOMXSSZrm: [ 0.00 0.00 ]
+Key: VUCOMXSSZrm_Int: [ 0.00 0.00 ]
+Key: VUCOMXSSZrr: [ 0.00 0.00 ]
+Key: VUCOMXSSZrr_Int: [ 0.00 0.00 ]
+Key: VUCOMXSSZrrb_Int: [ 0.00 0.00 ]
+Key: VUNPCKHPDYrm: [ 0.00 0.00 ]
+Key: VUNPCKHPDYrr: [ 0.00 0.00 ]
+Key: VUNPCKHPDZ: [ 0.00 0.00 ]
+Key: VUNPCKHPDZrm: [ 0.00 0.00 ]
+Key: VUNPCKHPDZrmb: [ 0.00 0.00 ]
+Key: VUNPCKHPDZrmbk: [ 0.00 0.00 ]
+Key: VUNPCKHPDZrmbkz: [ 0.00 0.00 ]
+Key: VUNPCKHPDZrmk: [ 0.00 0.00 ]
+Key: VUNPCKHPDZrmkz: [ 0.00 0.00 ]
+Key: VUNPCKHPDZrr: [ 0.00 0.00 ]
+Key: VUNPCKHPDZrrk: [ 0.00 0.00 ]
+Key: VUNPCKHPDZrrkz: [ 0.00 0.00 ]
+Key: VUNPCKHPDrm: [ 0.00 0.00 ]
+Key: VUNPCKHPDrr: [ 0.00 0.00 ]
+Key: VUNPCKHPSYrm: [ 0.00 0.00 ]
+Key: VUNPCKHPSYrr: [ 0.00 0.00 ]
+Key: VUNPCKHPSZ: [ 0.00 0.00 ]
+Key: VUNPCKHPSZrm: [ 0.00 0.00 ]
+Key: VUNPCKHPSZrmb: [ 0.00 0.00 ]
+Key: VUNPCKHPSZrmbk: [ 0.00 0.00 ]
+Key: VUNPCKHPSZrmbkz: [ 0.00 0.00 ]
+Key: VUNPCKHPSZrmk: [ 0.00 0.00 ]
+Key: VUNPCKHPSZrmkz: [ 0.00 0.00 ]
+Key: VUNPCKHPSZrr: [ 0.00 0.00 ]
+Key: VUNPCKHPSZrrk: [ 0.00 0.00 ]
+Key: VUNPCKHPSZrrkz: [ 0.00 0.00 ]
+Key: VUNPCKHPSrm: [ 0.00 0.00 ]
+Key: VUNPCKHPSrr: [ 0.00 0.00 ]
+Key: VUNPCKLPDYrm: [ 0.00 0.00 ]
+Key: VUNPCKLPDYrr: [ 0.00 0.00 ]
+Key: VUNPCKLPDZ: [ 0.00 0.00 ]
+Key: VUNPCKLPDZrm: [ 0.00 0.00 ]
+Key: VUNPCKLPDZrmb: [ 0.00 0.00 ]
+Key: VUNPCKLPDZrmbk: [ 0.00 0.00 ]
+Key: VUNPCKLPDZrmbkz: [ 0.00 0.00 ]
+Key: VUNPCKLPDZrmk: [ 0.00 0.00 ]
+Key: VUNPCKLPDZrmkz: [ 0.00 0.00 ]
+Key: VUNPCKLPDZrr: [ 0.00 0.00 ]
+Key: VUNPCKLPDZrrk: [ 0.00 0.00 ]
+Key: VUNPCKLPDZrrkz: [ 0.00 0.00 ]
+Key: VUNPCKLPDrm: [ 0.00 0.00 ]
+Key: VUNPCKLPDrr: [ 0.00 0.00 ]
+Key: VUNPCKLPSYrm: [ 0.00 0.00 ]
+Key: VUNPCKLPSYrr: [ 0.00 0.00 ]
+Key: VUNPCKLPSZ: [ 0.00 0.00 ]
+Key: VUNPCKLPSZrm: [ 0.00 0.00 ]
+Key: VUNPCKLPSZrmb: [ 0.00 0.00 ]
+Key: VUNPCKLPSZrmbk: [ 0.00 0.00 ]
+Key: VUNPCKLPSZrmbkz: [ 0.00 0.00 ]
+Key: VUNPCKLPSZrmk: [ 0.00 0.00 ]
+Key: VUNPCKLPSZrmkz: [ 0.00 0.00 ]
+Key: VUNPCKLPSZrr: [ 0.00 0.00 ]
+Key: VUNPCKLPSZrrk: [ 0.00 0.00 ]
+Key: VUNPCKLPSZrrkz: [ 0.00 0.00 ]
+Key: VUNPCKLPSrm: [ 0.00 0.00 ]
+Key: VUNPCKLPSrr: [ 0.00 0.00 ]
+Key: VXORPDYrm: [ 0.00 0.00 ]
+Key: VXORPDYrr: [ 0.00 0.00 ]
+Key: VXORPDZ: [ 0.00 0.00 ]
+Key: VXORPDZrm: [ 0.00 0.00 ]
+Key: VXORPDZrmb: [ 0.00 0.00 ]
+Key: VXORPDZrmbk: [ 0.00 0.00 ]
+Key: VXORPDZrmbkz: [ 0.00 0.00 ]
+Key: VXORPDZrmk: [ 0.00 0.00 ]
+Key: VXORPDZrmkz: [ 0.00 0.00 ]
+Key: VXORPDZrr: [ 0.00 0.00 ]
+Key: VXORPDZrrk: [ 0.00 0.00 ]
+Key: VXORPDZrrkz: [ 0.00 0.00 ]
+Key: VXORPDrm: [ 0.00 0.00 ]
+Key: VXORPDrr: [ 0.00 0.00 ]
+Key: VXORPSYrm: [ 0.00 0.00 ]
+Key: VXORPSYrr: [ 0.00 0.00 ]
+Key: VXORPSZ: [ 0.00 0.00 ]
+Key: VXORPSZrm: [ 0.00 0.00 ]
+Key: VXORPSZrmb: [ 0.00 0.00 ]
+Key: VXORPSZrmbk: [ 0.00 0.00 ]
+Key: VXORPSZrmbkz: [ 0.00 0.00 ]
+Key: VXORPSZrmk: [ 0.00 0.00 ]
+Key: VXORPSZrmkz: [ 0.00 0.00 ]
+Key: VXORPSZrr: [ 0.00 0.00 ]
+Key: VXORPSZrrk: [ 0.00 0.00 ]
+Key: VXORPSZrrkz: [ 0.00 0.00 ]
+Key: VXORPSrm: [ 0.00 0.00 ]
+Key: VXORPSrr: [ 0.00 0.00 ]
+Key: VZEROALL: [ 0.00 0.00 ]
+Key: VZEROUPPER: [ 0.00 0.00 ]
+Key: V_SET: [ 0.00 0.00 ]
+Key: V_SETALLONES: [ 0.00 0.00 ]
+Key: WAIT: [ 0.00 0.00 ]
+Key: WBINVD: [ 0.00 0.00 ]
+Key: WBNOINVD: [ 0.00 0.00 ]
+Key: WRFLAGS: [ 0.00 0.00 ]
+Key: WRFSBASE: [ 0.00 0.00 ]
+Key: WRGSBASE: [ 0.00 0.00 ]
+Key: WRMSR: [ 0.00 0.00 ]
+Key: WRMSRLIST: [ 0.00 0.00 ]
+Key: WRMSRNS: [ 0.00 0.00 ]
+Key: WRMSRNSir: [ 0.00 0.00 ]
+Key: WRMSRNSir_EVEX: [ 0.00 0.00 ]
+Key: WRPKRUr: [ 0.00 0.00 ]
+Key: WRSSD: [ 0.00 0.00 ]
+Key: WRSSD_EVEX: [ 0.00 0.00 ]
+Key: WRSSQ: [ 0.00 0.00 ]
+Key: WRSSQ_EVEX: [ 0.00 0.00 ]
+Key: WRUSSD: [ 0.00 0.00 ]
+Key: WRUSSD_EVEX: [ 0.00 0.00 ]
+Key: WRUSSQ: [ 0.00 0.00 ]
+Key: WRUSSQ_EVEX: [ 0.00 0.00 ]
+Key: XABORT: [ 0.00 0.00 ]
+Key: XABORT_DEF: [ 0.00 0.00 ]
+Key: XACQUIRE_PREFIX: [ 0.00 0.00 ]
+Key: XADD: [ 0.00 0.00 ]
+Key: XAM_F: [ 0.00 0.00 ]
+Key: XAM_Fp: [ 0.00 0.00 ]
+Key: XBEGIN: [ 0.00 0.00 ]
+Key: XCHG: [ 0.00 0.00 ]
+Key: XCH_F: [ 0.00 0.00 ]
+Key: XCRYPTCBC: [ 0.00 0.00 ]
+Key: XCRYPTCFB: [ 0.00 0.00 ]
+Key: XCRYPTCTR: [ 0.00 0.00 ]
+Key: XCRYPTECB: [ 0.00 0.00 ]
+Key: XCRYPTOFB: [ 0.00 0.00 ]
+Key: XEND: [ 0.00 0.00 ]
+Key: XGETBV: [ 0.00 0.00 ]
+Key: XLAT: [ 0.00 0.00 ]
+Key: XOR: [ 0.00 0.00 ]
+Key: XORPDrm: [ 0.00 0.00 ]
+Key: XORPDrr: [ 0.00 0.00 ]
+Key: XORPSrm: [ 0.00 0.00 ]
+Key: XORPSrr: [ 0.00 0.00 ]
+Key: XRELEASE_PREFIX: [ 0.00 0.00 ]
+Key: XRESLDTRK: [ 0.00 0.00 ]
+Key: XRSTOR: [ 0.00 0.00 ]
+Key: XRSTORS: [ 0.00 0.00 ]
+Key: XSAVE: [ 0.00 0.00 ]
+Key: XSAVEC: [ 0.00 0.00 ]
+Key: XSAVEOPT: [ 0.00 0.00 ]
+Key: XSAVES: [ 0.00 0.00 ]
+Key: XSETBV: [ 0.00 0.00 ]
+Key: XSHA: [ 0.00 0.00 ]
+Key: XSTORE: [ 0.00 0.00 ]
+Key: XSUSLDTRK: [ 0.00 0.00 ]
+Key: XTEST: [ 0.00 0.00 ]
diff --git a/llvm/test/CodeGen/MIR2Vec/vocab-basic.ll b/llvm/test/CodeGen/MIR2Vec/vocab-basic.ll
new file mode 100644
index 0000000..a57dd0b
--- /dev/null
+++ b/llvm/test/CodeGen/MIR2Vec/vocab-basic.ll
@@ -0,0 +1,14 @@
+; REQUIRES: x86_64-linux
+; RUN: llc -o /dev/null -print-mir2vec-vocab -mir2vec-vocab-path=%S/Inputs/mir2vec_dummy_2D_vocab.json %s 2> %t1.log
+; RUN: diff %S/Inputs/reference_x86_vocab_print.txt %t1.log
+
+; RUN: llc -o /dev/null -print-mir2vec-vocab -mir2vec-opc-weight=1 -mir2vec-vocab-path=%S/Inputs/mir2vec_dummy_2D_vocab.json %s 2> %t1.log
+; RUN: diff %S/Inputs/reference_x86_vocab_print.txt %t1.log
+
+; RUN: llc -o /dev/null -print-mir2vec-vocab -mir2vec-opc-weight=0.5 -mir2vec-vocab-path=%S/Inputs/mir2vec_dummy_2D_vocab.json %s 2> %t1.log
+; RUN: diff %S/Inputs/reference_x86_vocab_wo=0.5_print.txt %t1.log
+
+define dso_local void @test() {
+ entry:
+ ret void
+}
diff --git a/llvm/test/CodeGen/MIR2Vec/vocab-error-handling.ll b/llvm/test/CodeGen/MIR2Vec/vocab-error-handling.ll
new file mode 100644
index 0000000..1da516a
--- /dev/null
+++ b/llvm/test/CodeGen/MIR2Vec/vocab-error-handling.ll
@@ -0,0 +1,15 @@
+; REQUIRES: x86_64-linux
+; RUN: not llc -o /dev/null -print-mir2vec-vocab %s 2>&1 | FileCheck %s --check-prefix=CHECK-INVALID
+; RUN: not llc -o /dev/null -print-mir2vec-vocab -mir2vec-vocab-path=%S/Inputs/mir2vec_zero_vocab.json %s 2>&1 | FileCheck %s --check-prefix=CHECK-ZERO-DIM
+; RUN: not llc -o /dev/null -print-mir2vec-vocab -mir2vec-vocab-path=%S/Inputs/mir2vec_invalid_vocab.json %s 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ENTITIES
+; RUN: not llc -o /dev/null -print-mir2vec-vocab -mir2vec-vocab-path=%S/Inputs/mir2vec_inconsistent_dims.json %s 2>&1 | FileCheck %s --check-prefix=CHECK-INCONSISTENT-DIMS
+
+define dso_local void @test() {
+ entry:
+ ret void
+}
+
+; CHECK-INVALID: error: MIR2Vec vocabulary file path not specified; set it using --mir2vec-vocab-path
+; CHECK-ZERO-DIM: error: Dimension of 'entities' section of the vocabulary is zero
+; CHECK-NO-ENTITIES: error: Missing 'entities' section in vocabulary file
+; CHECK-INCONSISTENT-DIMS: error: All vectors in the 'entities' section of the vocabulary are not of the same dimension
diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/atomic-load-store-fp.ll b/llvm/test/CodeGen/RISCV/GlobalISel/atomic-load-store-fp.ll
index 4ad2d2c..4914357 100644
--- a/llvm/test/CodeGen/RISCV/GlobalISel/atomic-load-store-fp.ll
+++ b/llvm/test/CodeGen/RISCV/GlobalISel/atomic-load-store-fp.ll
@@ -23,6 +23,16 @@
; RUN: llc -mtriple=riscv64 -global-isel -mattr=+d,+a,+ztso -verify-machineinstrs < %s \
; RUN: | FileCheck -check-prefixes=RV64IA,RV64IA-TSO-TRAILING-FENCE %s
+; RUN: llc -mtriple=riscv32 -global-isel -mattr=+d,+a,+experimental-zalasr -verify-machineinstrs < %s \
+; RUN: | FileCheck -check-prefixes=RV32IA,RV32IA-ZALASR,RV32IA-ZALASR-WMO %s
+; RUN: llc -mtriple=riscv32 -global-isel -mattr=+d,+a,+experimental-zalasr,+ztso -verify-machineinstrs < %s \
+; RUN: | FileCheck -check-prefixes=RV32IA,RV32IA-ZALASR,RV32IA-ZALASR-TSO %s
+
+; RUN: llc -mtriple=riscv64 -global-isel -mattr=+d,+a,+experimental-zalasr -verify-machineinstrs < %s \
+; RUN: | FileCheck -check-prefixes=RV64IA,RV64IA-ZALASR,RV64IA-ZALASR-WMO %s
+; RUN: llc -mtriple=riscv64 -global-isel -mattr=+d,+a,+experimental-zalasr,+ztso -verify-machineinstrs < %s \
+; RUN: | FileCheck -check-prefixes=RV64IA,RV64IA-ZALASR,RV64IA-ZALASR-TSO %s
+
define float @atomic_load_f32_unordered(ptr %a) nounwind {
; RV32I-LABEL: atomic_load_f32_unordered:
@@ -171,6 +181,30 @@ define float @atomic_load_f32_acquire(ptr %a) nounwind {
; RV64IA-TSO-TRAILING-FENCE-NEXT: lw a0, 0(a0)
; RV64IA-TSO-TRAILING-FENCE-NEXT: fmv.w.x fa0, a0
; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
+;
+; RV32IA-ZALASR-WMO-LABEL: atomic_load_f32_acquire:
+; RV32IA-ZALASR-WMO: # %bb.0:
+; RV32IA-ZALASR-WMO-NEXT: lw.aq a0, (a0)
+; RV32IA-ZALASR-WMO-NEXT: fmv.w.x fa0, a0
+; RV32IA-ZALASR-WMO-NEXT: ret
+;
+; RV32IA-ZALASR-TSO-LABEL: atomic_load_f32_acquire:
+; RV32IA-ZALASR-TSO: # %bb.0:
+; RV32IA-ZALASR-TSO-NEXT: lw a0, 0(a0)
+; RV32IA-ZALASR-TSO-NEXT: fmv.w.x fa0, a0
+; RV32IA-ZALASR-TSO-NEXT: ret
+;
+; RV64IA-ZALASR-WMO-LABEL: atomic_load_f32_acquire:
+; RV64IA-ZALASR-WMO: # %bb.0:
+; RV64IA-ZALASR-WMO-NEXT: lw.aq a0, (a0)
+; RV64IA-ZALASR-WMO-NEXT: fmv.w.x fa0, a0
+; RV64IA-ZALASR-WMO-NEXT: ret
+;
+; RV64IA-ZALASR-TSO-LABEL: atomic_load_f32_acquire:
+; RV64IA-ZALASR-TSO: # %bb.0:
+; RV64IA-ZALASR-TSO-NEXT: lw a0, 0(a0)
+; RV64IA-ZALASR-TSO-NEXT: fmv.w.x fa0, a0
+; RV64IA-ZALASR-TSO-NEXT: ret
%1 = load atomic float, ptr %a acquire, align 4
ret float %1
}
@@ -256,6 +290,18 @@ define float @atomic_load_f32_seq_cst(ptr %a) nounwind {
; RV64IA-TSO-TRAILING-FENCE-NEXT: lw a0, 0(a0)
; RV64IA-TSO-TRAILING-FENCE-NEXT: fmv.w.x fa0, a0
; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
+;
+; RV32IA-ZALASR-LABEL: atomic_load_f32_seq_cst:
+; RV32IA-ZALASR: # %bb.0:
+; RV32IA-ZALASR-NEXT: lw.aq a0, (a0)
+; RV32IA-ZALASR-NEXT: fmv.w.x fa0, a0
+; RV32IA-ZALASR-NEXT: ret
+;
+; RV64IA-ZALASR-LABEL: atomic_load_f32_seq_cst:
+; RV64IA-ZALASR: # %bb.0:
+; RV64IA-ZALASR-NEXT: lw.aq a0, (a0)
+; RV64IA-ZALASR-NEXT: fmv.w.x fa0, a0
+; RV64IA-ZALASR-NEXT: ret
%1 = load atomic float, ptr %a seq_cst, align 4
ret float %1
}
@@ -414,6 +460,18 @@ define double @atomic_load_f64_acquire(ptr %a) nounwind {
; RV64IA-TSO-TRAILING-FENCE-NEXT: ld a0, 0(a0)
; RV64IA-TSO-TRAILING-FENCE-NEXT: fmv.d.x fa0, a0
; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
+;
+; RV64IA-ZALASR-WMO-LABEL: atomic_load_f64_acquire:
+; RV64IA-ZALASR-WMO: # %bb.0:
+; RV64IA-ZALASR-WMO-NEXT: ld.aq a0, (a0)
+; RV64IA-ZALASR-WMO-NEXT: fmv.d.x fa0, a0
+; RV64IA-ZALASR-WMO-NEXT: ret
+;
+; RV64IA-ZALASR-TSO-LABEL: atomic_load_f64_acquire:
+; RV64IA-ZALASR-TSO: # %bb.0:
+; RV64IA-ZALASR-TSO-NEXT: ld a0, 0(a0)
+; RV64IA-ZALASR-TSO-NEXT: fmv.d.x fa0, a0
+; RV64IA-ZALASR-TSO-NEXT: ret
%1 = load atomic double, ptr %a acquire, align 8
ret double %1
}
@@ -484,6 +542,12 @@ define double @atomic_load_f64_seq_cst(ptr %a) nounwind {
; RV64IA-TSO-TRAILING-FENCE-NEXT: ld a0, 0(a0)
; RV64IA-TSO-TRAILING-FENCE-NEXT: fmv.d.x fa0, a0
; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
+;
+; RV64IA-ZALASR-LABEL: atomic_load_f64_seq_cst:
+; RV64IA-ZALASR: # %bb.0:
+; RV64IA-ZALASR-NEXT: ld.aq a0, (a0)
+; RV64IA-ZALASR-NEXT: fmv.d.x fa0, a0
+; RV64IA-ZALASR-NEXT: ret
%1 = load atomic double, ptr %a seq_cst, align 8
ret double %1
}
@@ -635,6 +699,30 @@ define void @atomic_store_f32_release(ptr %a, float %b) nounwind {
; RV64IA-TSO-TRAILING-FENCE-NEXT: fmv.x.w a1, fa0
; RV64IA-TSO-TRAILING-FENCE-NEXT: sw a1, 0(a0)
; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
+;
+; RV32IA-ZALASR-WMO-LABEL: atomic_store_f32_release:
+; RV32IA-ZALASR-WMO: # %bb.0:
+; RV32IA-ZALASR-WMO-NEXT: fmv.x.w a1, fa0
+; RV32IA-ZALASR-WMO-NEXT: sw.rl a1, (a0)
+; RV32IA-ZALASR-WMO-NEXT: ret
+;
+; RV32IA-ZALASR-TSO-LABEL: atomic_store_f32_release:
+; RV32IA-ZALASR-TSO: # %bb.0:
+; RV32IA-ZALASR-TSO-NEXT: fmv.x.w a1, fa0
+; RV32IA-ZALASR-TSO-NEXT: sw a1, 0(a0)
+; RV32IA-ZALASR-TSO-NEXT: ret
+;
+; RV64IA-ZALASR-WMO-LABEL: atomic_store_f32_release:
+; RV64IA-ZALASR-WMO: # %bb.0:
+; RV64IA-ZALASR-WMO-NEXT: fmv.x.w a1, fa0
+; RV64IA-ZALASR-WMO-NEXT: sw.rl a1, (a0)
+; RV64IA-ZALASR-WMO-NEXT: ret
+;
+; RV64IA-ZALASR-TSO-LABEL: atomic_store_f32_release:
+; RV64IA-ZALASR-TSO: # %bb.0:
+; RV64IA-ZALASR-TSO-NEXT: fmv.x.w a1, fa0
+; RV64IA-ZALASR-TSO-NEXT: sw a1, 0(a0)
+; RV64IA-ZALASR-TSO-NEXT: ret
store atomic float %b, ptr %a release, align 4
ret void
}
@@ -718,6 +806,18 @@ define void @atomic_store_f32_seq_cst(ptr %a, float %b) nounwind {
; RV64IA-TSO-TRAILING-FENCE-NEXT: sw a1, 0(a0)
; RV64IA-TSO-TRAILING-FENCE-NEXT: fence rw, rw
; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
+;
+; RV32IA-ZALASR-LABEL: atomic_store_f32_seq_cst:
+; RV32IA-ZALASR: # %bb.0:
+; RV32IA-ZALASR-NEXT: fmv.x.w a1, fa0
+; RV32IA-ZALASR-NEXT: sw.rl a1, (a0)
+; RV32IA-ZALASR-NEXT: ret
+;
+; RV64IA-ZALASR-LABEL: atomic_store_f32_seq_cst:
+; RV64IA-ZALASR: # %bb.0:
+; RV64IA-ZALASR-NEXT: fmv.x.w a1, fa0
+; RV64IA-ZALASR-NEXT: sw.rl a1, (a0)
+; RV64IA-ZALASR-NEXT: ret
store atomic float %b, ptr %a seq_cst, align 4
ret void
}
@@ -876,6 +976,18 @@ define void @atomic_store_f64_release(ptr %a, double %b) nounwind {
; RV64IA-TSO-TRAILING-FENCE-NEXT: fmv.x.d a1, fa0
; RV64IA-TSO-TRAILING-FENCE-NEXT: sd a1, 0(a0)
; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
+;
+; RV64IA-ZALASR-WMO-LABEL: atomic_store_f64_release:
+; RV64IA-ZALASR-WMO: # %bb.0:
+; RV64IA-ZALASR-WMO-NEXT: fmv.x.d a1, fa0
+; RV64IA-ZALASR-WMO-NEXT: sd.rl a1, (a0)
+; RV64IA-ZALASR-WMO-NEXT: ret
+;
+; RV64IA-ZALASR-TSO-LABEL: atomic_store_f64_release:
+; RV64IA-ZALASR-TSO: # %bb.0:
+; RV64IA-ZALASR-TSO-NEXT: fmv.x.d a1, fa0
+; RV64IA-ZALASR-TSO-NEXT: sd a1, 0(a0)
+; RV64IA-ZALASR-TSO-NEXT: ret
store atomic double %b, ptr %a release, align 8
ret void
}
@@ -945,6 +1057,12 @@ define void @atomic_store_f64_seq_cst(ptr %a, double %b) nounwind {
; RV64IA-TSO-TRAILING-FENCE-NEXT: sd a1, 0(a0)
; RV64IA-TSO-TRAILING-FENCE-NEXT: fence rw, rw
; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
+;
+; RV64IA-ZALASR-LABEL: atomic_store_f64_seq_cst:
+; RV64IA-ZALASR: # %bb.0:
+; RV64IA-ZALASR-NEXT: fmv.x.d a1, fa0
+; RV64IA-ZALASR-NEXT: sd.rl a1, (a0)
+; RV64IA-ZALASR-NEXT: ret
store atomic double %b, ptr %a seq_cst, align 8
ret void
}
diff --git a/llvm/test/CodeGen/RISCV/atomic-rmw.ll b/llvm/test/CodeGen/RISCV/atomic-rmw.ll
index b0510f8..1213256 100644
--- a/llvm/test/CodeGen/RISCV/atomic-rmw.ll
+++ b/llvm/test/CodeGen/RISCV/atomic-rmw.ll
@@ -21,10 +21,19 @@
; RUN: llc -mtriple=riscv64 -mattr=+a,+ztso,+zacas -verify-machineinstrs < %s \
; RUN: | FileCheck -check-prefixes=RV64IA,RV64IA-ZACAS,RV64IA-TSO,RV64IA-TSO-ZACAS %s
+; RUN: llc -mtriple=riscv32 -mattr=+a,+zabha -verify-machineinstrs < %s \
+; RUN: | FileCheck -check-prefixes=RV32IA,RV32IA-WMO,RV32IA-WMO-ZABHA,RV32IA-WMO-ZABHA-NOZACAS %s
+; RUN: llc -mtriple=riscv32 -mattr=+a,+ztso,+zabha -verify-machineinstrs < %s \
+; RUN: | FileCheck -check-prefixes=RV32IA,RV32IA-TSO,RV32IA-TSO-ZABHA,RV32IA-TSO-ZABHA-NOZACAS %s
; RUN: llc -mtriple=riscv64 -mattr=+a,+zabha -verify-machineinstrs < %s \
; RUN: | FileCheck -check-prefixes=RV64IA,RV64IA-WMO,RV64IA-WMO-ZABHA,RV64IA-WMO-ZABHA-NOZACAS %s
; RUN: llc -mtriple=riscv64 -mattr=+a,+ztso,+zabha -verify-machineinstrs < %s \
; RUN: | FileCheck -check-prefixes=RV64IA,RV64IA-TSO,RV64IA-TSO-ZABHA,RV64IA-TSO-ZABHA-NOZACAS %s
+
+; RUN: llc -mtriple=riscv32 -mattr=+a,+zabha,+zacas -verify-machineinstrs < %s \
+; RUN: | FileCheck -check-prefixes=RV32IA,RV32IA-WMO,RV32IA-WMO-ZABHA,RV32IA-WMO-ZABHA-ZACAS %s
+; RUN: llc -mtriple=riscv32 -mattr=+a,+ztso,+zabha,+zacas -verify-machineinstrs < %s \
+; RUN: | FileCheck -check-prefixes=RV32IA,RV32IA-TSO,RV32IA-TSO-ZABHA,RV32IA-TSO-ZABHA-ZACAS %s
; RUN: llc -mtriple=riscv64 -mattr=+a,+zabha,+zacas -verify-machineinstrs < %s \
; RUN: | FileCheck -check-prefixes=RV64IA,RV64IA-WMO,RV64IA-WMO-ZABHA,RV64IA-WMO-ZABHA-ZACAS %s
; RUN: llc -mtriple=riscv64 -mattr=+a,+ztso,+zabha,+zacas -verify-machineinstrs < %s \
@@ -41,25 +50,25 @@ define i8 @atomicrmw_xchg_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_xchg_i8_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: li a3, 255
-; RV32IA-NEXT: zext.b a1, a1
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB0_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w a4, (a2)
-; RV32IA-NEXT: mv a5, a1
-; RV32IA-NEXT: xor a5, a4, a5
-; RV32IA-NEXT: and a5, a5, a3
-; RV32IA-NEXT: xor a5, a4, a5
-; RV32IA-NEXT: sc.w a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB0_1
-; RV32IA-NEXT: # %bb.2:
-; RV32IA-NEXT: srl a0, a4, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_xchg_i8_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: li a3, 255
+; RV32IA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB0_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-NOZACAS-NEXT: mv a5, a1
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB0_1
+; RV32IA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_i8_monotonic:
; RV64I: # %bb.0:
@@ -91,6 +100,26 @@ define i8 @atomicrmw_xchg_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_xchg_i8_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: li a3, 255
+; RV32IA-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB0_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-ZACAS-NEXT: mv a5, a1
+; RV32IA-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB0_1
+; RV32IA-ZACAS-NEXT: # %bb.2:
+; RV32IA-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_xchg_i8_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -111,6 +140,16 @@ define i8 @atomicrmw_xchg_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_i8_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoswap.b a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_i8_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoswap.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_i8_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoswap.b a0, a1, (a0)
@@ -135,45 +174,45 @@ define i8 @atomicrmw_xchg_i8_acquire(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_i8_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB1_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a4, (a2)
-; RV32IA-WMO-NEXT: mv a5, a1
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: and a5, a5, a3
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB1_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a4, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_i8_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB1_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: mv a5, a1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB1_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_i8_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB1_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a4, (a2)
-; RV32IA-TSO-NEXT: mv a5, a1
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: and a5, a5, a3
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB1_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a4, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_i8_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB1_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: mv a5, a1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB1_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_i8_acquire:
; RV64I: # %bb.0:
@@ -225,6 +264,46 @@ define i8 @atomicrmw_xchg_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_i8_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB1_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-ZACAS-NEXT: mv a5, a1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB1_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_i8_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB1_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZACAS-NEXT: mv a5, a1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB1_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_i8_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -265,6 +344,16 @@ define i8 @atomicrmw_xchg_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_i8_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoswap.b.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_i8_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoswap.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_i8_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoswap.b.aq a0, a1, (a0)
@@ -289,45 +378,45 @@ define i8 @atomicrmw_xchg_i8_release(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_i8_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB2_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w a4, (a2)
-; RV32IA-WMO-NEXT: mv a5, a1
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: and a5, a5, a3
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB2_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a4, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_i8_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB2_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: mv a5, a1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB2_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_i8_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB2_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a4, (a2)
-; RV32IA-TSO-NEXT: mv a5, a1
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: and a5, a5, a3
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB2_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a4, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_i8_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB2_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: mv a5, a1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB2_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_i8_release:
; RV64I: # %bb.0:
@@ -379,6 +468,46 @@ define i8 @atomicrmw_xchg_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_i8_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB2_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-WMO-ZACAS-NEXT: mv a5, a1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB2_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_i8_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB2_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZACAS-NEXT: mv a5, a1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB2_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_i8_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -419,6 +548,16 @@ define i8 @atomicrmw_xchg_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_i8_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoswap.b.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_i8_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoswap.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_i8_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoswap.b.rl a0, a1, (a0)
@@ -443,45 +582,45 @@ define i8 @atomicrmw_xchg_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_i8_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB3_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a4, (a2)
-; RV32IA-WMO-NEXT: mv a5, a1
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: and a5, a5, a3
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB3_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a4, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_i8_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB3_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: mv a5, a1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB3_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_i8_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB3_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a4, (a2)
-; RV32IA-TSO-NEXT: mv a5, a1
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: and a5, a5, a3
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB3_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a4, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_i8_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB3_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: mv a5, a1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB3_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_i8_acq_rel:
; RV64I: # %bb.0:
@@ -533,6 +672,46 @@ define i8 @atomicrmw_xchg_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_i8_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB3_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-ZACAS-NEXT: mv a5, a1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB3_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_i8_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB3_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZACAS-NEXT: mv a5, a1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB3_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_i8_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -573,6 +752,16 @@ define i8 @atomicrmw_xchg_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_i8_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoswap.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_i8_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoswap.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_i8_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoswap.b.aqrl a0, a1, (a0)
@@ -597,25 +786,25 @@ define i8 @atomicrmw_xchg_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_xchg_i8_seq_cst:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: li a3, 255
-; RV32IA-NEXT: zext.b a1, a1
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB4_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w.aqrl a4, (a2)
-; RV32IA-NEXT: mv a5, a1
-; RV32IA-NEXT: xor a5, a4, a5
-; RV32IA-NEXT: and a5, a5, a3
-; RV32IA-NEXT: xor a5, a4, a5
-; RV32IA-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB4_1
-; RV32IA-NEXT: # %bb.2:
-; RV32IA-NEXT: srl a0, a4, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_xchg_i8_seq_cst:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: li a3, 255
+; RV32IA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB4_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w.aqrl a4, (a2)
+; RV32IA-NOZACAS-NEXT: mv a5, a1
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB4_1
+; RV32IA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_i8_seq_cst:
; RV64I: # %bb.0:
@@ -647,6 +836,26 @@ define i8 @atomicrmw_xchg_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_xchg_i8_seq_cst:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: li a3, 255
+; RV32IA-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB4_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w.aqrl a4, (a2)
+; RV32IA-ZACAS-NEXT: mv a5, a1
+; RV32IA-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB4_1
+; RV32IA-ZACAS-NEXT: # %bb.2:
+; RV32IA-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_xchg_i8_seq_cst:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -667,6 +876,16 @@ define i8 @atomicrmw_xchg_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_i8_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoswap.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_i8_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoswap.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_i8_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoswap.b.aqrl a0, a1, (a0)
@@ -695,16 +914,16 @@ define i8 @atomicrmw_xchg_0_i8_monotonic(ptr %a) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_xchg_0_i8_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a1, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: li a2, 255
-; RV32IA-NEXT: sll a2, a2, a0
-; RV32IA-NEXT: not a2, a2
-; RV32IA-NEXT: amoand.w a1, a2, (a1)
-; RV32IA-NEXT: srl a0, a1, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_xchg_0_i8_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: li a2, 255
+; RV32IA-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-NOZACAS-NEXT: not a2, a2
+; RV32IA-NOZACAS-NEXT: amoand.w a1, a2, (a1)
+; RV32IA-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_0_i8_monotonic:
; RV64I: # %bb.0:
@@ -728,6 +947,17 @@ define i8 @atomicrmw_xchg_0_i8_monotonic(ptr %a) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_xchg_0_i8_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: li a2, 255
+; RV32IA-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-ZACAS-NEXT: not a2, a2
+; RV32IA-ZACAS-NEXT: amoand.w a1, a2, (a1)
+; RV32IA-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_xchg_0_i8_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a1, a0, -4
@@ -739,6 +969,16 @@ define i8 @atomicrmw_xchg_0_i8_monotonic(ptr %a) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_0_i8_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoswap.b a0, zero, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_0_i8_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoswap.b a0, zero, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_0_i8_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoswap.b a0, zero, (a0)
@@ -764,27 +1004,27 @@ define i8 @atomicrmw_xchg_0_i8_acquire(ptr %a) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_0_i8_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a1, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a2, 255
-; RV32IA-WMO-NEXT: sll a2, a2, a0
-; RV32IA-WMO-NEXT: not a2, a2
-; RV32IA-WMO-NEXT: amoand.w.aq a1, a2, (a1)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_0_i8_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a2, 255
+; RV32IA-WMO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-NOZACAS-NEXT: not a2, a2
+; RV32IA-WMO-NOZACAS-NEXT: amoand.w.aq a1, a2, (a1)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_0_i8_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a1, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a2, 255
-; RV32IA-TSO-NEXT: sll a2, a2, a0
-; RV32IA-TSO-NEXT: not a2, a2
-; RV32IA-TSO-NEXT: amoand.w a1, a2, (a1)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_0_i8_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a2, 255
+; RV32IA-TSO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-NOZACAS-NEXT: not a2, a2
+; RV32IA-TSO-NOZACAS-NEXT: amoand.w a1, a2, (a1)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_0_i8_acquire:
; RV64I: # %bb.0:
@@ -819,6 +1059,28 @@ define i8 @atomicrmw_xchg_0_i8_acquire(ptr %a) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_0_i8_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a2, 255
+; RV32IA-WMO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-ZACAS-NEXT: not a2, a2
+; RV32IA-WMO-ZACAS-NEXT: amoand.w.aq a1, a2, (a1)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_0_i8_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a2, 255
+; RV32IA-TSO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-ZACAS-NEXT: not a2, a2
+; RV32IA-TSO-ZACAS-NEXT: amoand.w a1, a2, (a1)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_0_i8_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a1, a0, -4
@@ -841,6 +1103,16 @@ define i8 @atomicrmw_xchg_0_i8_acquire(ptr %a) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_0_i8_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoswap.b.aq a0, zero, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_0_i8_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoswap.b a0, zero, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_0_i8_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoswap.b.aq a0, zero, (a0)
@@ -866,27 +1138,27 @@ define i8 @atomicrmw_xchg_0_i8_release(ptr %a) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_0_i8_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a1, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a2, 255
-; RV32IA-WMO-NEXT: sll a2, a2, a0
-; RV32IA-WMO-NEXT: not a2, a2
-; RV32IA-WMO-NEXT: amoand.w.rl a1, a2, (a1)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_0_i8_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a2, 255
+; RV32IA-WMO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-NOZACAS-NEXT: not a2, a2
+; RV32IA-WMO-NOZACAS-NEXT: amoand.w.rl a1, a2, (a1)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_0_i8_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a1, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a2, 255
-; RV32IA-TSO-NEXT: sll a2, a2, a0
-; RV32IA-TSO-NEXT: not a2, a2
-; RV32IA-TSO-NEXT: amoand.w a1, a2, (a1)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_0_i8_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a2, 255
+; RV32IA-TSO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-NOZACAS-NEXT: not a2, a2
+; RV32IA-TSO-NOZACAS-NEXT: amoand.w a1, a2, (a1)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_0_i8_release:
; RV64I: # %bb.0:
@@ -921,6 +1193,28 @@ define i8 @atomicrmw_xchg_0_i8_release(ptr %a) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_0_i8_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a2, 255
+; RV32IA-WMO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-ZACAS-NEXT: not a2, a2
+; RV32IA-WMO-ZACAS-NEXT: amoand.w.rl a1, a2, (a1)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_0_i8_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a2, 255
+; RV32IA-TSO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-ZACAS-NEXT: not a2, a2
+; RV32IA-TSO-ZACAS-NEXT: amoand.w a1, a2, (a1)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_0_i8_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a1, a0, -4
@@ -943,6 +1237,16 @@ define i8 @atomicrmw_xchg_0_i8_release(ptr %a) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_0_i8_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoswap.b.rl a0, zero, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_0_i8_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoswap.b a0, zero, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_0_i8_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoswap.b.rl a0, zero, (a0)
@@ -968,27 +1272,27 @@ define i8 @atomicrmw_xchg_0_i8_acq_rel(ptr %a) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_0_i8_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a1, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a2, 255
-; RV32IA-WMO-NEXT: sll a2, a2, a0
-; RV32IA-WMO-NEXT: not a2, a2
-; RV32IA-WMO-NEXT: amoand.w.aqrl a1, a2, (a1)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_0_i8_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a2, 255
+; RV32IA-WMO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-NOZACAS-NEXT: not a2, a2
+; RV32IA-WMO-NOZACAS-NEXT: amoand.w.aqrl a1, a2, (a1)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_0_i8_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a1, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a2, 255
-; RV32IA-TSO-NEXT: sll a2, a2, a0
-; RV32IA-TSO-NEXT: not a2, a2
-; RV32IA-TSO-NEXT: amoand.w a1, a2, (a1)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_0_i8_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a2, 255
+; RV32IA-TSO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-NOZACAS-NEXT: not a2, a2
+; RV32IA-TSO-NOZACAS-NEXT: amoand.w a1, a2, (a1)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_0_i8_acq_rel:
; RV64I: # %bb.0:
@@ -1023,6 +1327,28 @@ define i8 @atomicrmw_xchg_0_i8_acq_rel(ptr %a) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_0_i8_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a2, 255
+; RV32IA-WMO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-ZACAS-NEXT: not a2, a2
+; RV32IA-WMO-ZACAS-NEXT: amoand.w.aqrl a1, a2, (a1)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_0_i8_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a2, 255
+; RV32IA-TSO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-ZACAS-NEXT: not a2, a2
+; RV32IA-TSO-ZACAS-NEXT: amoand.w a1, a2, (a1)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_0_i8_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a1, a0, -4
@@ -1045,6 +1371,16 @@ define i8 @atomicrmw_xchg_0_i8_acq_rel(ptr %a) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_0_i8_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoswap.b.aqrl a0, zero, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_0_i8_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoswap.b a0, zero, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_0_i8_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoswap.b.aqrl a0, zero, (a0)
@@ -1070,27 +1406,27 @@ define i8 @atomicrmw_xchg_0_i8_seq_cst(ptr %a) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_0_i8_seq_cst:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a1, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a2, 255
-; RV32IA-WMO-NEXT: sll a2, a2, a0
-; RV32IA-WMO-NEXT: not a2, a2
-; RV32IA-WMO-NEXT: amoand.w.aqrl a1, a2, (a1)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_0_i8_seq_cst:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a2, 255
+; RV32IA-WMO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-NOZACAS-NEXT: not a2, a2
+; RV32IA-WMO-NOZACAS-NEXT: amoand.w.aqrl a1, a2, (a1)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_0_i8_seq_cst:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a1, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a2, 255
-; RV32IA-TSO-NEXT: sll a2, a2, a0
-; RV32IA-TSO-NEXT: not a2, a2
-; RV32IA-TSO-NEXT: amoand.w a1, a2, (a1)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_0_i8_seq_cst:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a2, 255
+; RV32IA-TSO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-NOZACAS-NEXT: not a2, a2
+; RV32IA-TSO-NOZACAS-NEXT: amoand.w a1, a2, (a1)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_0_i8_seq_cst:
; RV64I: # %bb.0:
@@ -1125,6 +1461,28 @@ define i8 @atomicrmw_xchg_0_i8_seq_cst(ptr %a) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_0_i8_seq_cst:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a2, 255
+; RV32IA-WMO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-ZACAS-NEXT: not a2, a2
+; RV32IA-WMO-ZACAS-NEXT: amoand.w.aqrl a1, a2, (a1)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_0_i8_seq_cst:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a2, 255
+; RV32IA-TSO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-ZACAS-NEXT: not a2, a2
+; RV32IA-TSO-ZACAS-NEXT: amoand.w a1, a2, (a1)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_0_i8_seq_cst:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a1, a0, -4
@@ -1147,6 +1505,16 @@ define i8 @atomicrmw_xchg_0_i8_seq_cst(ptr %a) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_0_i8_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoswap.b.aqrl a0, zero, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_0_i8_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoswap.b a0, zero, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_0_i8_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoswap.b.aqrl a0, zero, (a0)
@@ -1172,15 +1540,15 @@ define i8 @atomicrmw_xchg_minus_1_i8_monotonic(ptr %a) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_xchg_minus_1_i8_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a1, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: li a2, 255
-; RV32IA-NEXT: sll a2, a2, a0
-; RV32IA-NEXT: amoor.w a1, a2, (a1)
-; RV32IA-NEXT: srl a0, a1, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_xchg_minus_1_i8_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: li a2, 255
+; RV32IA-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-NOZACAS-NEXT: amoor.w a1, a2, (a1)
+; RV32IA-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_minus_1_i8_monotonic:
; RV64I: # %bb.0:
@@ -1203,6 +1571,16 @@ define i8 @atomicrmw_xchg_minus_1_i8_monotonic(ptr %a) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_xchg_minus_1_i8_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: li a2, 255
+; RV32IA-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-ZACAS-NEXT: amoor.w a1, a2, (a1)
+; RV32IA-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_xchg_minus_1_i8_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a1, a0, -4
@@ -1213,6 +1591,18 @@ define i8 @atomicrmw_xchg_minus_1_i8_monotonic(ptr %a) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i8_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: li a1, -1
+; RV32IA-WMO-ZABHA-NEXT: amoswap.b a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i8_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: li a1, -1
+; RV32IA-TSO-ZABHA-NEXT: amoswap.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i8_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: li a1, -1
@@ -1240,25 +1630,25 @@ define i8 @atomicrmw_xchg_minus_1_i8_acquire(ptr %a) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_minus_1_i8_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a1, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a2, 255
-; RV32IA-WMO-NEXT: sll a2, a2, a0
-; RV32IA-WMO-NEXT: amoor.w.aq a1, a2, (a1)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_minus_1_i8_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a2, 255
+; RV32IA-WMO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoor.w.aq a1, a2, (a1)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_minus_1_i8_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a1, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a2, 255
-; RV32IA-TSO-NEXT: sll a2, a2, a0
-; RV32IA-TSO-NEXT: amoor.w a1, a2, (a1)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_minus_1_i8_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a2, 255
+; RV32IA-TSO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoor.w a1, a2, (a1)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_minus_1_i8_acquire:
; RV64I: # %bb.0:
@@ -1291,6 +1681,26 @@ define i8 @atomicrmw_xchg_minus_1_i8_acquire(ptr %a) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i8_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a2, 255
+; RV32IA-WMO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-ZACAS-NEXT: amoor.w.aq a1, a2, (a1)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i8_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a2, 255
+; RV32IA-TSO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-ZACAS-NEXT: amoor.w a1, a2, (a1)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i8_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a1, a0, -4
@@ -1311,6 +1721,18 @@ define i8 @atomicrmw_xchg_minus_1_i8_acquire(ptr %a) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i8_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: li a1, -1
+; RV32IA-WMO-ZABHA-NEXT: amoswap.b.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i8_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: li a1, -1
+; RV32IA-TSO-ZABHA-NEXT: amoswap.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i8_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: li a1, -1
@@ -1338,25 +1760,25 @@ define i8 @atomicrmw_xchg_minus_1_i8_release(ptr %a) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_minus_1_i8_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a1, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a2, 255
-; RV32IA-WMO-NEXT: sll a2, a2, a0
-; RV32IA-WMO-NEXT: amoor.w.rl a1, a2, (a1)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_minus_1_i8_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a2, 255
+; RV32IA-WMO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoor.w.rl a1, a2, (a1)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_minus_1_i8_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a1, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a2, 255
-; RV32IA-TSO-NEXT: sll a2, a2, a0
-; RV32IA-TSO-NEXT: amoor.w a1, a2, (a1)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_minus_1_i8_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a2, 255
+; RV32IA-TSO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoor.w a1, a2, (a1)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_minus_1_i8_release:
; RV64I: # %bb.0:
@@ -1389,6 +1811,26 @@ define i8 @atomicrmw_xchg_minus_1_i8_release(ptr %a) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i8_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a2, 255
+; RV32IA-WMO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-ZACAS-NEXT: amoor.w.rl a1, a2, (a1)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i8_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a2, 255
+; RV32IA-TSO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-ZACAS-NEXT: amoor.w a1, a2, (a1)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i8_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a1, a0, -4
@@ -1409,6 +1851,18 @@ define i8 @atomicrmw_xchg_minus_1_i8_release(ptr %a) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i8_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: li a1, -1
+; RV32IA-WMO-ZABHA-NEXT: amoswap.b.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i8_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: li a1, -1
+; RV32IA-TSO-ZABHA-NEXT: amoswap.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i8_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: li a1, -1
@@ -1436,25 +1890,25 @@ define i8 @atomicrmw_xchg_minus_1_i8_acq_rel(ptr %a) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_minus_1_i8_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a1, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a2, 255
-; RV32IA-WMO-NEXT: sll a2, a2, a0
-; RV32IA-WMO-NEXT: amoor.w.aqrl a1, a2, (a1)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_minus_1_i8_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a2, 255
+; RV32IA-WMO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoor.w.aqrl a1, a2, (a1)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_minus_1_i8_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a1, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a2, 255
-; RV32IA-TSO-NEXT: sll a2, a2, a0
-; RV32IA-TSO-NEXT: amoor.w a1, a2, (a1)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_minus_1_i8_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a2, 255
+; RV32IA-TSO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoor.w a1, a2, (a1)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_minus_1_i8_acq_rel:
; RV64I: # %bb.0:
@@ -1487,6 +1941,26 @@ define i8 @atomicrmw_xchg_minus_1_i8_acq_rel(ptr %a) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i8_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a2, 255
+; RV32IA-WMO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-ZACAS-NEXT: amoor.w.aqrl a1, a2, (a1)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i8_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a2, 255
+; RV32IA-TSO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-ZACAS-NEXT: amoor.w a1, a2, (a1)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i8_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a1, a0, -4
@@ -1507,6 +1981,18 @@ define i8 @atomicrmw_xchg_minus_1_i8_acq_rel(ptr %a) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i8_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: li a1, -1
+; RV32IA-WMO-ZABHA-NEXT: amoswap.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i8_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: li a1, -1
+; RV32IA-TSO-ZABHA-NEXT: amoswap.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i8_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: li a1, -1
@@ -1534,25 +2020,25 @@ define i8 @atomicrmw_xchg_minus_1_i8_seq_cst(ptr %a) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_minus_1_i8_seq_cst:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a1, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a2, 255
-; RV32IA-WMO-NEXT: sll a2, a2, a0
-; RV32IA-WMO-NEXT: amoor.w.aqrl a1, a2, (a1)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_minus_1_i8_seq_cst:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a2, 255
+; RV32IA-WMO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoor.w.aqrl a1, a2, (a1)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_minus_1_i8_seq_cst:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a1, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a2, 255
-; RV32IA-TSO-NEXT: sll a2, a2, a0
-; RV32IA-TSO-NEXT: amoor.w a1, a2, (a1)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_minus_1_i8_seq_cst:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a2, 255
+; RV32IA-TSO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoor.w a1, a2, (a1)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_minus_1_i8_seq_cst:
; RV64I: # %bb.0:
@@ -1585,6 +2071,26 @@ define i8 @atomicrmw_xchg_minus_1_i8_seq_cst(ptr %a) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i8_seq_cst:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a2, 255
+; RV32IA-WMO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-ZACAS-NEXT: amoor.w.aqrl a1, a2, (a1)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i8_seq_cst:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a2, 255
+; RV32IA-TSO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-ZACAS-NEXT: amoor.w a1, a2, (a1)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i8_seq_cst:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a1, a0, -4
@@ -1605,6 +2111,18 @@ define i8 @atomicrmw_xchg_minus_1_i8_seq_cst(ptr %a) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i8_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: li a1, -1
+; RV32IA-WMO-ZABHA-NEXT: amoswap.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i8_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: li a1, -1
+; RV32IA-TSO-ZABHA-NEXT: amoswap.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i8_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: li a1, -1
@@ -1631,25 +2149,25 @@ define i8 @atomicrmw_add_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_add_i8_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: li a3, 255
-; RV32IA-NEXT: zext.b a1, a1
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB15_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w a4, (a2)
-; RV32IA-NEXT: add a5, a4, a1
-; RV32IA-NEXT: xor a5, a4, a5
-; RV32IA-NEXT: and a5, a5, a3
-; RV32IA-NEXT: xor a5, a4, a5
-; RV32IA-NEXT: sc.w a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB15_1
-; RV32IA-NEXT: # %bb.2:
-; RV32IA-NEXT: srl a0, a4, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_add_i8_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: li a3, 255
+; RV32IA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB15_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-NOZACAS-NEXT: add a5, a4, a1
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB15_1
+; RV32IA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_add_i8_monotonic:
; RV64I: # %bb.0:
@@ -1681,6 +2199,26 @@ define i8 @atomicrmw_add_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_add_i8_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: li a3, 255
+; RV32IA-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB15_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-ZACAS-NEXT: add a5, a4, a1
+; RV32IA-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB15_1
+; RV32IA-ZACAS-NEXT: # %bb.2:
+; RV32IA-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_add_i8_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -1701,6 +2239,16 @@ define i8 @atomicrmw_add_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_add_i8_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoadd.b a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_add_i8_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoadd.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_add_i8_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoadd.b a0, a1, (a0)
@@ -1725,45 +2273,45 @@ define i8 @atomicrmw_add_i8_acquire(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_add_i8_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB16_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a4, (a2)
-; RV32IA-WMO-NEXT: add a5, a4, a1
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: and a5, a5, a3
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB16_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a4, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_add_i8_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB16_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: add a5, a4, a1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB16_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_add_i8_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB16_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a4, (a2)
-; RV32IA-TSO-NEXT: add a5, a4, a1
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: and a5, a5, a3
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB16_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a4, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_add_i8_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB16_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: add a5, a4, a1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB16_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_add_i8_acquire:
; RV64I: # %bb.0:
@@ -1815,6 +2363,46 @@ define i8 @atomicrmw_add_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_add_i8_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB16_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-ZACAS-NEXT: add a5, a4, a1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB16_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_add_i8_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB16_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZACAS-NEXT: add a5, a4, a1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB16_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_add_i8_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -1855,6 +2443,16 @@ define i8 @atomicrmw_add_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_add_i8_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoadd.b.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_add_i8_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoadd.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_add_i8_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoadd.b.aq a0, a1, (a0)
@@ -1879,45 +2477,45 @@ define i8 @atomicrmw_add_i8_release(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_add_i8_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB17_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w a4, (a2)
-; RV32IA-WMO-NEXT: add a5, a4, a1
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: and a5, a5, a3
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB17_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a4, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_add_i8_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB17_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: add a5, a4, a1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB17_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_add_i8_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB17_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a4, (a2)
-; RV32IA-TSO-NEXT: add a5, a4, a1
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: and a5, a5, a3
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB17_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a4, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_add_i8_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB17_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: add a5, a4, a1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB17_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_add_i8_release:
; RV64I: # %bb.0:
@@ -1969,6 +2567,46 @@ define i8 @atomicrmw_add_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_add_i8_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB17_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-WMO-ZACAS-NEXT: add a5, a4, a1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB17_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_add_i8_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB17_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZACAS-NEXT: add a5, a4, a1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB17_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_add_i8_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -2009,6 +2647,16 @@ define i8 @atomicrmw_add_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_add_i8_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoadd.b.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_add_i8_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoadd.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_add_i8_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoadd.b.rl a0, a1, (a0)
@@ -2033,45 +2681,45 @@ define i8 @atomicrmw_add_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_add_i8_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB18_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a4, (a2)
-; RV32IA-WMO-NEXT: add a5, a4, a1
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: and a5, a5, a3
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB18_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a4, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_add_i8_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB18_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: add a5, a4, a1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB18_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_add_i8_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB18_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a4, (a2)
-; RV32IA-TSO-NEXT: add a5, a4, a1
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: and a5, a5, a3
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB18_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a4, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_add_i8_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB18_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: add a5, a4, a1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB18_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_add_i8_acq_rel:
; RV64I: # %bb.0:
@@ -2123,6 +2771,46 @@ define i8 @atomicrmw_add_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_add_i8_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB18_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-ZACAS-NEXT: add a5, a4, a1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB18_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_add_i8_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB18_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZACAS-NEXT: add a5, a4, a1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB18_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_add_i8_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -2163,6 +2851,16 @@ define i8 @atomicrmw_add_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_add_i8_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoadd.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_add_i8_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoadd.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_add_i8_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoadd.b.aqrl a0, a1, (a0)
@@ -2187,25 +2885,25 @@ define i8 @atomicrmw_add_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_add_i8_seq_cst:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: li a3, 255
-; RV32IA-NEXT: zext.b a1, a1
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB19_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w.aqrl a4, (a2)
-; RV32IA-NEXT: add a5, a4, a1
-; RV32IA-NEXT: xor a5, a4, a5
-; RV32IA-NEXT: and a5, a5, a3
-; RV32IA-NEXT: xor a5, a4, a5
-; RV32IA-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB19_1
-; RV32IA-NEXT: # %bb.2:
-; RV32IA-NEXT: srl a0, a4, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_add_i8_seq_cst:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: li a3, 255
+; RV32IA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB19_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w.aqrl a4, (a2)
+; RV32IA-NOZACAS-NEXT: add a5, a4, a1
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB19_1
+; RV32IA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_add_i8_seq_cst:
; RV64I: # %bb.0:
@@ -2237,6 +2935,26 @@ define i8 @atomicrmw_add_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_add_i8_seq_cst:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: li a3, 255
+; RV32IA-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB19_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w.aqrl a4, (a2)
+; RV32IA-ZACAS-NEXT: add a5, a4, a1
+; RV32IA-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB19_1
+; RV32IA-ZACAS-NEXT: # %bb.2:
+; RV32IA-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_add_i8_seq_cst:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -2257,6 +2975,16 @@ define i8 @atomicrmw_add_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_add_i8_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoadd.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_add_i8_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoadd.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_add_i8_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoadd.b.aqrl a0, a1, (a0)
@@ -2281,25 +3009,25 @@ define i8 @atomicrmw_sub_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_sub_i8_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: li a3, 255
-; RV32IA-NEXT: zext.b a1, a1
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB20_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w a4, (a2)
-; RV32IA-NEXT: sub a5, a4, a1
-; RV32IA-NEXT: xor a5, a4, a5
-; RV32IA-NEXT: and a5, a5, a3
-; RV32IA-NEXT: xor a5, a4, a5
-; RV32IA-NEXT: sc.w a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB20_1
-; RV32IA-NEXT: # %bb.2:
-; RV32IA-NEXT: srl a0, a4, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_sub_i8_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: li a3, 255
+; RV32IA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB20_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-NOZACAS-NEXT: sub a5, a4, a1
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB20_1
+; RV32IA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_sub_i8_monotonic:
; RV64I: # %bb.0:
@@ -2331,6 +3059,26 @@ define i8 @atomicrmw_sub_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_sub_i8_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: li a3, 255
+; RV32IA-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB20_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-ZACAS-NEXT: sub a5, a4, a1
+; RV32IA-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB20_1
+; RV32IA-ZACAS-NEXT: # %bb.2:
+; RV32IA-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_sub_i8_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -2351,6 +3099,18 @@ define i8 @atomicrmw_sub_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_sub_i8_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: neg a1, a1
+; RV32IA-WMO-ZABHA-NEXT: amoadd.b a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_sub_i8_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: neg a1, a1
+; RV32IA-TSO-ZABHA-NEXT: amoadd.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_sub_i8_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: neg a1, a1
@@ -2377,45 +3137,45 @@ define i8 @atomicrmw_sub_i8_acquire(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_sub_i8_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB21_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a4, (a2)
-; RV32IA-WMO-NEXT: sub a5, a4, a1
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: and a5, a5, a3
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB21_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a4, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_sub_i8_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB21_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: sub a5, a4, a1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB21_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_sub_i8_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB21_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a4, (a2)
-; RV32IA-TSO-NEXT: sub a5, a4, a1
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: and a5, a5, a3
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB21_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a4, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_sub_i8_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB21_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: sub a5, a4, a1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB21_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_sub_i8_acquire:
; RV64I: # %bb.0:
@@ -2467,6 +3227,46 @@ define i8 @atomicrmw_sub_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_sub_i8_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB21_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-ZACAS-NEXT: sub a5, a4, a1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB21_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_sub_i8_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB21_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZACAS-NEXT: sub a5, a4, a1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB21_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_sub_i8_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -2507,6 +3307,18 @@ define i8 @atomicrmw_sub_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_sub_i8_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: neg a1, a1
+; RV32IA-WMO-ZABHA-NEXT: amoadd.b.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_sub_i8_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: neg a1, a1
+; RV32IA-TSO-ZABHA-NEXT: amoadd.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_sub_i8_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: neg a1, a1
@@ -2533,45 +3345,45 @@ define i8 @atomicrmw_sub_i8_release(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_sub_i8_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB22_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w a4, (a2)
-; RV32IA-WMO-NEXT: sub a5, a4, a1
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: and a5, a5, a3
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB22_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a4, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_sub_i8_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB22_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: sub a5, a4, a1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB22_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_sub_i8_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB22_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a4, (a2)
-; RV32IA-TSO-NEXT: sub a5, a4, a1
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: and a5, a5, a3
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB22_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a4, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_sub_i8_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB22_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: sub a5, a4, a1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB22_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_sub_i8_release:
; RV64I: # %bb.0:
@@ -2623,6 +3435,46 @@ define i8 @atomicrmw_sub_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_sub_i8_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB22_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-WMO-ZACAS-NEXT: sub a5, a4, a1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB22_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_sub_i8_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB22_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZACAS-NEXT: sub a5, a4, a1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB22_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_sub_i8_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -2663,6 +3515,18 @@ define i8 @atomicrmw_sub_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_sub_i8_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: neg a1, a1
+; RV32IA-WMO-ZABHA-NEXT: amoadd.b.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_sub_i8_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: neg a1, a1
+; RV32IA-TSO-ZABHA-NEXT: amoadd.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_sub_i8_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: neg a1, a1
@@ -2689,45 +3553,45 @@ define i8 @atomicrmw_sub_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_sub_i8_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB23_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a4, (a2)
-; RV32IA-WMO-NEXT: sub a5, a4, a1
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: and a5, a5, a3
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB23_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a4, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_sub_i8_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB23_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: sub a5, a4, a1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB23_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_sub_i8_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB23_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a4, (a2)
-; RV32IA-TSO-NEXT: sub a5, a4, a1
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: and a5, a5, a3
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB23_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a4, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_sub_i8_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB23_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: sub a5, a4, a1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB23_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_sub_i8_acq_rel:
; RV64I: # %bb.0:
@@ -2779,6 +3643,46 @@ define i8 @atomicrmw_sub_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_sub_i8_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB23_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-ZACAS-NEXT: sub a5, a4, a1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB23_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_sub_i8_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB23_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZACAS-NEXT: sub a5, a4, a1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB23_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_sub_i8_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -2819,6 +3723,18 @@ define i8 @atomicrmw_sub_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_sub_i8_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: neg a1, a1
+; RV32IA-WMO-ZABHA-NEXT: amoadd.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_sub_i8_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: neg a1, a1
+; RV32IA-TSO-ZABHA-NEXT: amoadd.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_sub_i8_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: neg a1, a1
@@ -2845,25 +3761,25 @@ define i8 @atomicrmw_sub_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_sub_i8_seq_cst:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: li a3, 255
-; RV32IA-NEXT: zext.b a1, a1
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB24_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w.aqrl a4, (a2)
-; RV32IA-NEXT: sub a5, a4, a1
-; RV32IA-NEXT: xor a5, a4, a5
-; RV32IA-NEXT: and a5, a5, a3
-; RV32IA-NEXT: xor a5, a4, a5
-; RV32IA-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB24_1
-; RV32IA-NEXT: # %bb.2:
-; RV32IA-NEXT: srl a0, a4, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_sub_i8_seq_cst:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: li a3, 255
+; RV32IA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB24_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w.aqrl a4, (a2)
+; RV32IA-NOZACAS-NEXT: sub a5, a4, a1
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB24_1
+; RV32IA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_sub_i8_seq_cst:
; RV64I: # %bb.0:
@@ -2895,6 +3811,26 @@ define i8 @atomicrmw_sub_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_sub_i8_seq_cst:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: li a3, 255
+; RV32IA-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB24_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w.aqrl a4, (a2)
+; RV32IA-ZACAS-NEXT: sub a5, a4, a1
+; RV32IA-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB24_1
+; RV32IA-ZACAS-NEXT: # %bb.2:
+; RV32IA-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_sub_i8_seq_cst:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -2915,6 +3851,18 @@ define i8 @atomicrmw_sub_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_sub_i8_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: neg a1, a1
+; RV32IA-WMO-ZABHA-NEXT: amoadd.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_sub_i8_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: neg a1, a1
+; RV32IA-TSO-ZABHA-NEXT: amoadd.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_sub_i8_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: neg a1, a1
@@ -2941,19 +3889,19 @@ define i8 @atomicrmw_and_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_and_i8_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: li a3, 255
-; RV32IA-NEXT: zext.b a1, a1
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: not a3, a3
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: or a1, a1, a3
-; RV32IA-NEXT: amoand.w a1, a1, (a2)
-; RV32IA-NEXT: srl a0, a1, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_and_i8_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: li a3, 255
+; RV32IA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: not a3, a3
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: or a1, a1, a3
+; RV32IA-NOZACAS-NEXT: amoand.w a1, a1, (a2)
+; RV32IA-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_and_i8_monotonic:
; RV64I: # %bb.0:
@@ -2979,6 +3927,20 @@ define i8 @atomicrmw_and_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_and_i8_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: li a3, 255
+; RV32IA-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: not a3, a3
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: or a1, a1, a3
+; RV32IA-ZACAS-NEXT: amoand.w a1, a1, (a2)
+; RV32IA-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_and_i8_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -2993,6 +3955,16 @@ define i8 @atomicrmw_and_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_and_i8_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoand.b a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_and_i8_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoand.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_and_i8_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoand.b a0, a1, (a0)
@@ -3017,33 +3989,33 @@ define i8 @atomicrmw_and_i8_acquire(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_and_i8_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: not a3, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: or a1, a1, a3
-; RV32IA-WMO-NEXT: amoand.w.aq a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_and_i8_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: not a3, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: or a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: amoand.w.aq a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_and_i8_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: not a3, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: or a1, a1, a3
-; RV32IA-TSO-NEXT: amoand.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_and_i8_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: not a3, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: or a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: amoand.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_and_i8_acquire:
; RV64I: # %bb.0:
@@ -3083,6 +4055,34 @@ define i8 @atomicrmw_and_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_and_i8_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: not a3, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: or a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: amoand.w.aq a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_and_i8_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: not a3, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: or a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: amoand.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_and_i8_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -3111,6 +4111,16 @@ define i8 @atomicrmw_and_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_and_i8_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoand.b.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_and_i8_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoand.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_and_i8_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoand.b.aq a0, a1, (a0)
@@ -3135,33 +4145,33 @@ define i8 @atomicrmw_and_i8_release(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_and_i8_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: not a3, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: or a1, a1, a3
-; RV32IA-WMO-NEXT: amoand.w.rl a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_and_i8_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: not a3, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: or a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: amoand.w.rl a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_and_i8_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: not a3, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: or a1, a1, a3
-; RV32IA-TSO-NEXT: amoand.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_and_i8_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: not a3, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: or a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: amoand.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_and_i8_release:
; RV64I: # %bb.0:
@@ -3201,6 +4211,34 @@ define i8 @atomicrmw_and_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_and_i8_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: not a3, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: or a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: amoand.w.rl a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_and_i8_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: not a3, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: or a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: amoand.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_and_i8_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -3229,6 +4267,16 @@ define i8 @atomicrmw_and_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_and_i8_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoand.b.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_and_i8_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoand.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_and_i8_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoand.b.rl a0, a1, (a0)
@@ -3253,33 +4301,33 @@ define i8 @atomicrmw_and_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_and_i8_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: not a3, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: or a1, a1, a3
-; RV32IA-WMO-NEXT: amoand.w.aqrl a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_and_i8_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: not a3, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: or a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: amoand.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_and_i8_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: not a3, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: or a1, a1, a3
-; RV32IA-TSO-NEXT: amoand.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_and_i8_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: not a3, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: or a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: amoand.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_and_i8_acq_rel:
; RV64I: # %bb.0:
@@ -3319,6 +4367,34 @@ define i8 @atomicrmw_and_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_and_i8_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: not a3, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: or a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: amoand.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_and_i8_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: not a3, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: or a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: amoand.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_and_i8_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -3347,6 +4423,16 @@ define i8 @atomicrmw_and_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_and_i8_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoand.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_and_i8_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoand.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_and_i8_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoand.b.aqrl a0, a1, (a0)
@@ -3371,33 +4457,33 @@ define i8 @atomicrmw_and_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_and_i8_seq_cst:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: not a3, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: or a1, a1, a3
-; RV32IA-WMO-NEXT: amoand.w.aqrl a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_and_i8_seq_cst:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: not a3, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: or a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: amoand.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_and_i8_seq_cst:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: not a3, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: or a1, a1, a3
-; RV32IA-TSO-NEXT: amoand.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_and_i8_seq_cst:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: not a3, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: or a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: amoand.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_and_i8_seq_cst:
; RV64I: # %bb.0:
@@ -3437,6 +4523,34 @@ define i8 @atomicrmw_and_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_and_i8_seq_cst:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: not a3, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: or a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: amoand.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_and_i8_seq_cst:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: not a3, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: or a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: amoand.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_and_i8_seq_cst:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -3465,6 +4579,16 @@ define i8 @atomicrmw_and_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_and_i8_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoand.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_and_i8_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoand.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_and_i8_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoand.b.aqrl a0, a1, (a0)
@@ -3489,26 +4613,26 @@ define i8 @atomicrmw_nand_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_nand_i8_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: li a3, 255
-; RV32IA-NEXT: zext.b a1, a1
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB30_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w a4, (a2)
-; RV32IA-NEXT: and a5, a4, a1
-; RV32IA-NEXT: not a5, a5
-; RV32IA-NEXT: xor a5, a4, a5
-; RV32IA-NEXT: and a5, a5, a3
-; RV32IA-NEXT: xor a5, a4, a5
-; RV32IA-NEXT: sc.w a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB30_1
-; RV32IA-NEXT: # %bb.2:
-; RV32IA-NEXT: srl a0, a4, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_nand_i8_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: li a3, 255
+; RV32IA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB30_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-NOZACAS-NEXT: and a5, a4, a1
+; RV32IA-NOZACAS-NEXT: not a5, a5
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB30_1
+; RV32IA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_nand_i8_monotonic:
; RV64I: # %bb.0:
@@ -3541,6 +4665,27 @@ define i8 @atomicrmw_nand_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_nand_i8_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: li a3, 255
+; RV32IA-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB30_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-ZACAS-NEXT: and a5, a4, a1
+; RV32IA-ZACAS-NEXT: not a5, a5
+; RV32IA-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB30_1
+; RV32IA-ZACAS-NEXT: # %bb.2:
+; RV32IA-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_nand_i8_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -3562,6 +4707,48 @@ define i8 @atomicrmw_nand_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i8_monotonic:
+; RV32IA-WMO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: .LBB30_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a5, a4, a1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: not a5, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: bnez a5, .LBB30_1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i8_monotonic:
+; RV32IA-TSO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: .LBB30_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a5, a4, a1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: not a5, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: bnez a5, .LBB30_1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i8_monotonic:
; RV64IA-WMO-ZABHA-NOZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
@@ -3604,6 +4791,36 @@ define i8 @atomicrmw_nand_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i8_monotonic:
+; RV32IA-WMO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: lbu a0, 0(a0)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: .LBB30_1: # %atomicrmw.start
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: and a3, a0, a1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: not a3, a3
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: slli a4, a0, 24
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: amocas.b a0, a3, (a2)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: srai a4, a4, 24
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: bne a0, a4, .LBB30_1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i8_monotonic:
+; RV32IA-TSO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: lbu a0, 0(a0)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: .LBB30_1: # %atomicrmw.start
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: and a3, a0, a1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: not a3, a3
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: slli a4, a0, 24
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: amocas.b a0, a3, (a2)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: srai a4, a4, 24
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: bne a0, a4, .LBB30_1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i8_monotonic:
; RV64IA-WMO-ZABHA-ZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
@@ -3648,47 +4865,47 @@ define i8 @atomicrmw_nand_i8_acquire(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_nand_i8_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB31_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a4, (a2)
-; RV32IA-WMO-NEXT: and a5, a4, a1
-; RV32IA-WMO-NEXT: not a5, a5
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: and a5, a5, a3
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB31_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a4, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_nand_i8_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB31_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a4, a1
+; RV32IA-WMO-NOZACAS-NEXT: not a5, a5
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB31_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_nand_i8_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB31_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a4, (a2)
-; RV32IA-TSO-NEXT: and a5, a4, a1
-; RV32IA-TSO-NEXT: not a5, a5
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: and a5, a5, a3
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB31_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a4, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_nand_i8_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB31_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a4, a1
+; RV32IA-TSO-NOZACAS-NEXT: not a5, a5
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB31_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_nand_i8_acquire:
; RV64I: # %bb.0:
@@ -3742,6 +4959,48 @@ define i8 @atomicrmw_nand_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_nand_i8_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB31_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a5, a4, a1
+; RV32IA-WMO-ZACAS-NEXT: not a5, a5
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB31_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_nand_i8_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB31_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a5, a4, a1
+; RV32IA-TSO-ZACAS-NEXT: not a5, a5
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB31_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_nand_i8_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -3784,6 +5043,48 @@ define i8 @atomicrmw_nand_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i8_acquire:
+; RV32IA-WMO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: .LBB31_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a5, a4, a1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: not a5, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: bnez a5, .LBB31_1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i8_acquire:
+; RV32IA-TSO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: .LBB31_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a5, a4, a1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: not a5, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: bnez a5, .LBB31_1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i8_acquire:
; RV64IA-WMO-ZABHA-NOZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
@@ -3826,6 +5127,36 @@ define i8 @atomicrmw_nand_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i8_acquire:
+; RV32IA-WMO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: lbu a0, 0(a0)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: .LBB31_1: # %atomicrmw.start
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: and a3, a0, a1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: not a3, a3
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: slli a4, a0, 24
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: amocas.b.aq a0, a3, (a2)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: srai a4, a4, 24
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: bne a0, a4, .LBB31_1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i8_acquire:
+; RV32IA-TSO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: lbu a0, 0(a0)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: .LBB31_1: # %atomicrmw.start
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: and a3, a0, a1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: not a3, a3
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: slli a4, a0, 24
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: amocas.b a0, a3, (a2)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: srai a4, a4, 24
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: bne a0, a4, .LBB31_1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i8_acquire:
; RV64IA-WMO-ZABHA-ZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
@@ -3870,47 +5201,47 @@ define i8 @atomicrmw_nand_i8_release(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_nand_i8_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB32_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w a4, (a2)
-; RV32IA-WMO-NEXT: and a5, a4, a1
-; RV32IA-WMO-NEXT: not a5, a5
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: and a5, a5, a3
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB32_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a4, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_nand_i8_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB32_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a4, a1
+; RV32IA-WMO-NOZACAS-NEXT: not a5, a5
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB32_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_nand_i8_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB32_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a4, (a2)
-; RV32IA-TSO-NEXT: and a5, a4, a1
-; RV32IA-TSO-NEXT: not a5, a5
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: and a5, a5, a3
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB32_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a4, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_nand_i8_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB32_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a4, a1
+; RV32IA-TSO-NOZACAS-NEXT: not a5, a5
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB32_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_nand_i8_release:
; RV64I: # %bb.0:
@@ -3964,6 +5295,48 @@ define i8 @atomicrmw_nand_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_nand_i8_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB32_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a5, a4, a1
+; RV32IA-WMO-ZACAS-NEXT: not a5, a5
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB32_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_nand_i8_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB32_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a5, a4, a1
+; RV32IA-TSO-ZACAS-NEXT: not a5, a5
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB32_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_nand_i8_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -4006,6 +5379,48 @@ define i8 @atomicrmw_nand_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i8_release:
+; RV32IA-WMO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: .LBB32_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a5, a4, a1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: not a5, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: bnez a5, .LBB32_1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i8_release:
+; RV32IA-TSO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: .LBB32_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a5, a4, a1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: not a5, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: bnez a5, .LBB32_1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i8_release:
; RV64IA-WMO-ZABHA-NOZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
@@ -4048,6 +5463,36 @@ define i8 @atomicrmw_nand_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i8_release:
+; RV32IA-WMO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: lbu a0, 0(a0)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: .LBB32_1: # %atomicrmw.start
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: and a3, a0, a1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: not a3, a3
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: slli a4, a0, 24
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: amocas.b.rl a0, a3, (a2)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: srai a4, a4, 24
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: bne a0, a4, .LBB32_1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i8_release:
+; RV32IA-TSO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: lbu a0, 0(a0)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: .LBB32_1: # %atomicrmw.start
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: and a3, a0, a1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: not a3, a3
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: slli a4, a0, 24
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: amocas.b a0, a3, (a2)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: srai a4, a4, 24
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: bne a0, a4, .LBB32_1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i8_release:
; RV64IA-WMO-ZABHA-ZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
@@ -4092,47 +5537,47 @@ define i8 @atomicrmw_nand_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_nand_i8_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB33_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a4, (a2)
-; RV32IA-WMO-NEXT: and a5, a4, a1
-; RV32IA-WMO-NEXT: not a5, a5
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: and a5, a5, a3
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB33_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a4, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_nand_i8_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB33_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a4, a1
+; RV32IA-WMO-NOZACAS-NEXT: not a5, a5
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB33_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_nand_i8_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB33_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a4, (a2)
-; RV32IA-TSO-NEXT: and a5, a4, a1
-; RV32IA-TSO-NEXT: not a5, a5
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: and a5, a5, a3
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB33_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a4, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_nand_i8_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB33_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a4, a1
+; RV32IA-TSO-NOZACAS-NEXT: not a5, a5
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB33_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_nand_i8_acq_rel:
; RV64I: # %bb.0:
@@ -4186,6 +5631,48 @@ define i8 @atomicrmw_nand_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_nand_i8_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB33_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a5, a4, a1
+; RV32IA-WMO-ZACAS-NEXT: not a5, a5
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB33_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_nand_i8_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB33_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a5, a4, a1
+; RV32IA-TSO-ZACAS-NEXT: not a5, a5
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB33_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_nand_i8_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -4228,6 +5715,48 @@ define i8 @atomicrmw_nand_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i8_acq_rel:
+; RV32IA-WMO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: .LBB33_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a5, a4, a1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: not a5, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: bnez a5, .LBB33_1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i8_acq_rel:
+; RV32IA-TSO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: .LBB33_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a5, a4, a1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: not a5, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: bnez a5, .LBB33_1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i8_acq_rel:
; RV64IA-WMO-ZABHA-NOZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
@@ -4270,6 +5799,36 @@ define i8 @atomicrmw_nand_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i8_acq_rel:
+; RV32IA-WMO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: lbu a0, 0(a0)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: .LBB33_1: # %atomicrmw.start
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: and a3, a0, a1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: not a3, a3
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: slli a4, a0, 24
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: amocas.b.aqrl a0, a3, (a2)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: srai a4, a4, 24
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: bne a0, a4, .LBB33_1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i8_acq_rel:
+; RV32IA-TSO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: lbu a0, 0(a0)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: .LBB33_1: # %atomicrmw.start
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: and a3, a0, a1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: not a3, a3
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: slli a4, a0, 24
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: amocas.b a0, a3, (a2)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: srai a4, a4, 24
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: bne a0, a4, .LBB33_1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i8_acq_rel:
; RV64IA-WMO-ZABHA-ZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
@@ -4314,26 +5873,26 @@ define i8 @atomicrmw_nand_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_nand_i8_seq_cst:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: li a3, 255
-; RV32IA-NEXT: zext.b a1, a1
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB34_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w.aqrl a4, (a2)
-; RV32IA-NEXT: and a5, a4, a1
-; RV32IA-NEXT: not a5, a5
-; RV32IA-NEXT: xor a5, a4, a5
-; RV32IA-NEXT: and a5, a5, a3
-; RV32IA-NEXT: xor a5, a4, a5
-; RV32IA-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB34_1
-; RV32IA-NEXT: # %bb.2:
-; RV32IA-NEXT: srl a0, a4, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_nand_i8_seq_cst:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: li a3, 255
+; RV32IA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB34_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w.aqrl a4, (a2)
+; RV32IA-NOZACAS-NEXT: and a5, a4, a1
+; RV32IA-NOZACAS-NEXT: not a5, a5
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB34_1
+; RV32IA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_nand_i8_seq_cst:
; RV64I: # %bb.0:
@@ -4366,6 +5925,27 @@ define i8 @atomicrmw_nand_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_nand_i8_seq_cst:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: li a3, 255
+; RV32IA-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB34_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w.aqrl a4, (a2)
+; RV32IA-ZACAS-NEXT: and a5, a4, a1
+; RV32IA-ZACAS-NEXT: not a5, a5
+; RV32IA-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB34_1
+; RV32IA-ZACAS-NEXT: # %bb.2:
+; RV32IA-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_nand_i8_seq_cst:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -4387,6 +5967,48 @@ define i8 @atomicrmw_nand_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i8_seq_cst:
+; RV32IA-WMO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: .LBB34_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: lr.w.aqrl a4, (a2)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a5, a4, a1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: not a5, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: bnez a5, .LBB34_1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i8_seq_cst:
+; RV32IA-TSO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: .LBB34_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: lr.w.aqrl a4, (a2)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a5, a4, a1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: not a5, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: bnez a5, .LBB34_1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i8_seq_cst:
; RV64IA-WMO-ZABHA-NOZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
@@ -4429,6 +6051,38 @@ define i8 @atomicrmw_nand_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i8_seq_cst:
+; RV32IA-WMO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: lbu a0, 0(a0)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: .LBB34_1: # %atomicrmw.start
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: and a3, a0, a1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: fence rw, rw
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: not a3, a3
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: slli a4, a0, 24
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: amocas.b.aqrl a0, a3, (a2)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: srai a4, a4, 24
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: bne a0, a4, .LBB34_1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i8_seq_cst:
+; RV32IA-TSO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: lbu a0, 0(a0)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: .LBB34_1: # %atomicrmw.start
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: and a3, a0, a1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: fence rw, rw
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: not a3, a3
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: slli a4, a0, 24
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: amocas.b a0, a3, (a2)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: srai a4, a4, 24
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: bne a0, a4, .LBB34_1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i8_seq_cst:
; RV64IA-WMO-ZABHA-ZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
@@ -4475,15 +6129,15 @@ define i8 @atomicrmw_or_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_or_i8_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: zext.b a1, a1
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: amoor.w a1, a1, (a2)
-; RV32IA-NEXT: srl a0, a1, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_or_i8_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: amoor.w a1, a1, (a2)
+; RV32IA-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_or_i8_monotonic:
; RV64I: # %bb.0:
@@ -4505,6 +6159,16 @@ define i8 @atomicrmw_or_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_or_i8_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: amoor.w a1, a1, (a2)
+; RV32IA-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_or_i8_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -4515,6 +6179,16 @@ define i8 @atomicrmw_or_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_or_i8_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoor.b a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_or_i8_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoor.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_or_i8_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoor.b a0, a1, (a0)
@@ -4539,25 +6213,25 @@ define i8 @atomicrmw_or_i8_acquire(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_or_i8_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: amoor.w.aq a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_or_i8_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoor.w.aq a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_or_i8_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: amoor.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_or_i8_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoor.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_or_i8_acquire:
; RV64I: # %bb.0:
@@ -4589,6 +6263,26 @@ define i8 @atomicrmw_or_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_or_i8_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: amoor.w.aq a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_or_i8_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: amoor.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_or_i8_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -4609,6 +6303,16 @@ define i8 @atomicrmw_or_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_or_i8_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoor.b.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_or_i8_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoor.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_or_i8_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoor.b.aq a0, a1, (a0)
@@ -4633,25 +6337,25 @@ define i8 @atomicrmw_or_i8_release(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_or_i8_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: amoor.w.rl a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_or_i8_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoor.w.rl a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_or_i8_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: amoor.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_or_i8_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoor.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_or_i8_release:
; RV64I: # %bb.0:
@@ -4683,6 +6387,26 @@ define i8 @atomicrmw_or_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_or_i8_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: amoor.w.rl a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_or_i8_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: amoor.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_or_i8_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -4703,6 +6427,16 @@ define i8 @atomicrmw_or_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_or_i8_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoor.b.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_or_i8_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoor.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_or_i8_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoor.b.rl a0, a1, (a0)
@@ -4727,25 +6461,25 @@ define i8 @atomicrmw_or_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_or_i8_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: amoor.w.aqrl a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_or_i8_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoor.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_or_i8_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: amoor.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_or_i8_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoor.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_or_i8_acq_rel:
; RV64I: # %bb.0:
@@ -4777,6 +6511,26 @@ define i8 @atomicrmw_or_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_or_i8_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: amoor.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_or_i8_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: amoor.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_or_i8_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -4797,6 +6551,16 @@ define i8 @atomicrmw_or_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_or_i8_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoor.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_or_i8_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoor.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_or_i8_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoor.b.aqrl a0, a1, (a0)
@@ -4821,25 +6585,25 @@ define i8 @atomicrmw_or_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_or_i8_seq_cst:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: amoor.w.aqrl a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_or_i8_seq_cst:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoor.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_or_i8_seq_cst:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: amoor.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_or_i8_seq_cst:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoor.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_or_i8_seq_cst:
; RV64I: # %bb.0:
@@ -4871,6 +6635,26 @@ define i8 @atomicrmw_or_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_or_i8_seq_cst:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: amoor.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_or_i8_seq_cst:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: amoor.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_or_i8_seq_cst:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -4891,6 +6675,16 @@ define i8 @atomicrmw_or_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_or_i8_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoor.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_or_i8_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoor.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_or_i8_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoor.b.aqrl a0, a1, (a0)
@@ -4915,15 +6709,15 @@ define i8 @atomicrmw_xor_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_xor_i8_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: zext.b a1, a1
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: amoxor.w a1, a1, (a2)
-; RV32IA-NEXT: srl a0, a1, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_xor_i8_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: amoxor.w a1, a1, (a2)
+; RV32IA-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xor_i8_monotonic:
; RV64I: # %bb.0:
@@ -4945,6 +6739,16 @@ define i8 @atomicrmw_xor_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_xor_i8_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: amoxor.w a1, a1, (a2)
+; RV32IA-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_xor_i8_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -4955,6 +6759,16 @@ define i8 @atomicrmw_xor_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xor_i8_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoxor.b a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xor_i8_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoxor.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xor_i8_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoxor.b a0, a1, (a0)
@@ -4979,25 +6793,25 @@ define i8 @atomicrmw_xor_i8_acquire(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xor_i8_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: amoxor.w.aq a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xor_i8_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoxor.w.aq a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xor_i8_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: amoxor.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xor_i8_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoxor.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xor_i8_acquire:
; RV64I: # %bb.0:
@@ -5029,6 +6843,26 @@ define i8 @atomicrmw_xor_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xor_i8_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: amoxor.w.aq a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xor_i8_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: amoxor.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xor_i8_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -5049,6 +6883,16 @@ define i8 @atomicrmw_xor_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xor_i8_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoxor.b.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xor_i8_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoxor.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xor_i8_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoxor.b.aq a0, a1, (a0)
@@ -5073,25 +6917,25 @@ define i8 @atomicrmw_xor_i8_release(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xor_i8_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: amoxor.w.rl a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xor_i8_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoxor.w.rl a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xor_i8_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: amoxor.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xor_i8_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoxor.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xor_i8_release:
; RV64I: # %bb.0:
@@ -5123,6 +6967,26 @@ define i8 @atomicrmw_xor_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xor_i8_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: amoxor.w.rl a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xor_i8_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: amoxor.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xor_i8_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -5143,6 +7007,16 @@ define i8 @atomicrmw_xor_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xor_i8_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoxor.b.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xor_i8_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoxor.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xor_i8_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoxor.b.rl a0, a1, (a0)
@@ -5167,25 +7041,25 @@ define i8 @atomicrmw_xor_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xor_i8_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: amoxor.w.aqrl a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xor_i8_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoxor.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xor_i8_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: amoxor.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xor_i8_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoxor.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xor_i8_acq_rel:
; RV64I: # %bb.0:
@@ -5217,6 +7091,26 @@ define i8 @atomicrmw_xor_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xor_i8_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: amoxor.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xor_i8_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: amoxor.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xor_i8_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -5237,6 +7131,16 @@ define i8 @atomicrmw_xor_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xor_i8_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoxor.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xor_i8_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoxor.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xor_i8_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoxor.b.aqrl a0, a1, (a0)
@@ -5261,25 +7165,25 @@ define i8 @atomicrmw_xor_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xor_i8_seq_cst:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: amoxor.w.aqrl a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xor_i8_seq_cst:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoxor.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xor_i8_seq_cst:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: amoxor.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xor_i8_seq_cst:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoxor.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xor_i8_seq_cst:
; RV64I: # %bb.0:
@@ -5311,6 +7215,26 @@ define i8 @atomicrmw_xor_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xor_i8_seq_cst:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: amoxor.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xor_i8_seq_cst:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: amoxor.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xor_i8_seq_cst:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -5331,6 +7255,16 @@ define i8 @atomicrmw_xor_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xor_i8_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoxor.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xor_i8_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoxor.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xor_i8_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoxor.b.aqrl a0, a1, (a0)
@@ -5387,34 +7321,34 @@ define i8 @atomicrmw_max_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_max_i8_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: li a3, 255
-; RV32IA-NEXT: slli a1, a1, 24
-; RV32IA-NEXT: andi a4, a0, 24
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: srai a1, a1, 24
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: xori a4, a4, 24
-; RV32IA-NEXT: .LBB45_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w a5, (a2)
-; RV32IA-NEXT: and a7, a5, a3
-; RV32IA-NEXT: mv a6, a5
-; RV32IA-NEXT: sll a7, a7, a4
-; RV32IA-NEXT: sra a7, a7, a4
-; RV32IA-NEXT: bge a7, a1, .LBB45_3
-; RV32IA-NEXT: # %bb.2: # in Loop: Header=BB45_1 Depth=1
-; RV32IA-NEXT: xor a6, a5, a1
-; RV32IA-NEXT: and a6, a6, a3
-; RV32IA-NEXT: xor a6, a5, a6
-; RV32IA-NEXT: .LBB45_3: # in Loop: Header=BB45_1 Depth=1
-; RV32IA-NEXT: sc.w a6, a6, (a2)
-; RV32IA-NEXT: bnez a6, .LBB45_1
-; RV32IA-NEXT: # %bb.4:
-; RV32IA-NEXT: srl a0, a5, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_max_i8_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: li a3, 255
+; RV32IA-NOZACAS-NEXT: slli a1, a1, 24
+; RV32IA-NOZACAS-NEXT: andi a4, a0, 24
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: srai a1, a1, 24
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: xori a4, a4, 24
+; RV32IA-NOZACAS-NEXT: .LBB45_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-NOZACAS-NEXT: mv a6, a5
+; RV32IA-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-NOZACAS-NEXT: bge a7, a1, .LBB45_3
+; RV32IA-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB45_1 Depth=1
+; RV32IA-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-NOZACAS-NEXT: .LBB45_3: # in Loop: Header=BB45_1 Depth=1
+; RV32IA-NOZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a6, .LBB45_1
+; RV32IA-NOZACAS-NEXT: # %bb.4:
+; RV32IA-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_max_i8_monotonic:
; RV64I: # %bb.0:
@@ -5487,6 +7421,35 @@ define i8 @atomicrmw_max_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a5, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_max_i8_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: li a3, 255
+; RV32IA-ZACAS-NEXT: slli a1, a1, 24
+; RV32IA-ZACAS-NEXT: andi a4, a0, 24
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: srai a1, a1, 24
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: xori a4, a4, 24
+; RV32IA-ZACAS-NEXT: .LBB45_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-ZACAS-NEXT: mv a6, a5
+; RV32IA-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-ZACAS-NEXT: bge a7, a1, .LBB45_3
+; RV32IA-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB45_1 Depth=1
+; RV32IA-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-ZACAS-NEXT: .LBB45_3: # in Loop: Header=BB45_1 Depth=1
+; RV32IA-ZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-ZACAS-NEXT: bnez a6, .LBB45_1
+; RV32IA-ZACAS-NEXT: # %bb.4:
+; RV32IA-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_max_i8_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -5516,6 +7479,16 @@ define i8 @atomicrmw_max_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a5, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_max_i8_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomax.b a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_max_i8_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomax.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_max_i8_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomax.b a0, a1, (a0)
@@ -5572,63 +7545,63 @@ define i8 @atomicrmw_max_i8_acquire(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_max_i8_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: slli a1, a1, 24
-; RV32IA-WMO-NEXT: andi a4, a0, 24
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: srai a1, a1, 24
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: xori a4, a4, 24
-; RV32IA-WMO-NEXT: .LBB46_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a5, (a2)
-; RV32IA-WMO-NEXT: and a7, a5, a3
-; RV32IA-WMO-NEXT: mv a6, a5
-; RV32IA-WMO-NEXT: sll a7, a7, a4
-; RV32IA-WMO-NEXT: sra a7, a7, a4
-; RV32IA-WMO-NEXT: bge a7, a1, .LBB46_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB46_1 Depth=1
-; RV32IA-WMO-NEXT: xor a6, a5, a1
-; RV32IA-WMO-NEXT: and a6, a6, a3
-; RV32IA-WMO-NEXT: xor a6, a5, a6
-; RV32IA-WMO-NEXT: .LBB46_3: # in Loop: Header=BB46_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w a6, a6, (a2)
-; RV32IA-WMO-NEXT: bnez a6, .LBB46_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a5, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_max_i8_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: slli a1, a1, 24
+; RV32IA-WMO-NOZACAS-NEXT: andi a4, a0, 24
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: srai a1, a1, 24
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: xori a4, a4, 24
+; RV32IA-WMO-NOZACAS-NEXT: .LBB46_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: bge a7, a1, .LBB46_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB46_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-NOZACAS-NEXT: .LBB46_3: # in Loop: Header=BB46_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a6, .LBB46_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_max_i8_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: slli a1, a1, 24
-; RV32IA-TSO-NEXT: andi a4, a0, 24
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: srai a1, a1, 24
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: xori a4, a4, 24
-; RV32IA-TSO-NEXT: .LBB46_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a5, (a2)
-; RV32IA-TSO-NEXT: and a7, a5, a3
-; RV32IA-TSO-NEXT: mv a6, a5
-; RV32IA-TSO-NEXT: sll a7, a7, a4
-; RV32IA-TSO-NEXT: sra a7, a7, a4
-; RV32IA-TSO-NEXT: bge a7, a1, .LBB46_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB46_1 Depth=1
-; RV32IA-TSO-NEXT: xor a6, a5, a1
-; RV32IA-TSO-NEXT: and a6, a6, a3
-; RV32IA-TSO-NEXT: xor a6, a5, a6
-; RV32IA-TSO-NEXT: .LBB46_3: # in Loop: Header=BB46_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a6, a6, (a2)
-; RV32IA-TSO-NEXT: bnez a6, .LBB46_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a5, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_max_i8_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: slli a1, a1, 24
+; RV32IA-TSO-NOZACAS-NEXT: andi a4, a0, 24
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: srai a1, a1, 24
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: xori a4, a4, 24
+; RV32IA-TSO-NOZACAS-NEXT: .LBB46_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: bge a7, a1, .LBB46_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB46_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-NOZACAS-NEXT: .LBB46_3: # in Loop: Header=BB46_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a6, .LBB46_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_max_i8_acquire:
; RV64I: # %bb.0:
@@ -5730,6 +7703,64 @@ define i8 @atomicrmw_max_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_max_i8_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: slli a1, a1, 24
+; RV32IA-WMO-ZACAS-NEXT: andi a4, a0, 24
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: srai a1, a1, 24
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: xori a4, a4, 24
+; RV32IA-WMO-ZACAS-NEXT: .LBB46_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: bge a7, a1, .LBB46_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB46_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-ZACAS-NEXT: .LBB46_3: # in Loop: Header=BB46_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a6, .LBB46_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_max_i8_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: slli a1, a1, 24
+; RV32IA-TSO-ZACAS-NEXT: andi a4, a0, 24
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: srai a1, a1, 24
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: xori a4, a4, 24
+; RV32IA-TSO-ZACAS-NEXT: .LBB46_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: bge a7, a1, .LBB46_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB46_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-ZACAS-NEXT: .LBB46_3: # in Loop: Header=BB46_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a6, .LBB46_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_max_i8_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -5788,6 +7819,16 @@ define i8 @atomicrmw_max_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_max_i8_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomax.b.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_max_i8_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomax.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_max_i8_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomax.b.aq a0, a1, (a0)
@@ -5844,63 +7885,63 @@ define i8 @atomicrmw_max_i8_release(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_max_i8_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: slli a1, a1, 24
-; RV32IA-WMO-NEXT: andi a4, a0, 24
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: srai a1, a1, 24
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: xori a4, a4, 24
-; RV32IA-WMO-NEXT: .LBB47_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w a5, (a2)
-; RV32IA-WMO-NEXT: and a7, a5, a3
-; RV32IA-WMO-NEXT: mv a6, a5
-; RV32IA-WMO-NEXT: sll a7, a7, a4
-; RV32IA-WMO-NEXT: sra a7, a7, a4
-; RV32IA-WMO-NEXT: bge a7, a1, .LBB47_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB47_1 Depth=1
-; RV32IA-WMO-NEXT: xor a6, a5, a1
-; RV32IA-WMO-NEXT: and a6, a6, a3
-; RV32IA-WMO-NEXT: xor a6, a5, a6
-; RV32IA-WMO-NEXT: .LBB47_3: # in Loop: Header=BB47_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w.rl a6, a6, (a2)
-; RV32IA-WMO-NEXT: bnez a6, .LBB47_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a5, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_max_i8_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: slli a1, a1, 24
+; RV32IA-WMO-NOZACAS-NEXT: andi a4, a0, 24
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: srai a1, a1, 24
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: xori a4, a4, 24
+; RV32IA-WMO-NOZACAS-NEXT: .LBB47_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: bge a7, a1, .LBB47_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB47_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-NOZACAS-NEXT: .LBB47_3: # in Loop: Header=BB47_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a6, .LBB47_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_max_i8_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: slli a1, a1, 24
-; RV32IA-TSO-NEXT: andi a4, a0, 24
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: srai a1, a1, 24
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: xori a4, a4, 24
-; RV32IA-TSO-NEXT: .LBB47_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a5, (a2)
-; RV32IA-TSO-NEXT: and a7, a5, a3
-; RV32IA-TSO-NEXT: mv a6, a5
-; RV32IA-TSO-NEXT: sll a7, a7, a4
-; RV32IA-TSO-NEXT: sra a7, a7, a4
-; RV32IA-TSO-NEXT: bge a7, a1, .LBB47_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB47_1 Depth=1
-; RV32IA-TSO-NEXT: xor a6, a5, a1
-; RV32IA-TSO-NEXT: and a6, a6, a3
-; RV32IA-TSO-NEXT: xor a6, a5, a6
-; RV32IA-TSO-NEXT: .LBB47_3: # in Loop: Header=BB47_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a6, a6, (a2)
-; RV32IA-TSO-NEXT: bnez a6, .LBB47_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a5, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_max_i8_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: slli a1, a1, 24
+; RV32IA-TSO-NOZACAS-NEXT: andi a4, a0, 24
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: srai a1, a1, 24
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: xori a4, a4, 24
+; RV32IA-TSO-NOZACAS-NEXT: .LBB47_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: bge a7, a1, .LBB47_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB47_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-NOZACAS-NEXT: .LBB47_3: # in Loop: Header=BB47_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a6, .LBB47_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_max_i8_release:
; RV64I: # %bb.0:
@@ -6002,6 +8043,64 @@ define i8 @atomicrmw_max_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_max_i8_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: slli a1, a1, 24
+; RV32IA-WMO-ZACAS-NEXT: andi a4, a0, 24
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: srai a1, a1, 24
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: xori a4, a4, 24
+; RV32IA-WMO-ZACAS-NEXT: .LBB47_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: bge a7, a1, .LBB47_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB47_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-ZACAS-NEXT: .LBB47_3: # in Loop: Header=BB47_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a6, .LBB47_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_max_i8_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: slli a1, a1, 24
+; RV32IA-TSO-ZACAS-NEXT: andi a4, a0, 24
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: srai a1, a1, 24
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: xori a4, a4, 24
+; RV32IA-TSO-ZACAS-NEXT: .LBB47_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: bge a7, a1, .LBB47_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB47_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-ZACAS-NEXT: .LBB47_3: # in Loop: Header=BB47_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a6, .LBB47_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_max_i8_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -6060,6 +8159,16 @@ define i8 @atomicrmw_max_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_max_i8_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomax.b.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_max_i8_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomax.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_max_i8_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomax.b.rl a0, a1, (a0)
@@ -6116,63 +8225,63 @@ define i8 @atomicrmw_max_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_max_i8_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: slli a1, a1, 24
-; RV32IA-WMO-NEXT: andi a4, a0, 24
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: srai a1, a1, 24
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: xori a4, a4, 24
-; RV32IA-WMO-NEXT: .LBB48_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a5, (a2)
-; RV32IA-WMO-NEXT: and a7, a5, a3
-; RV32IA-WMO-NEXT: mv a6, a5
-; RV32IA-WMO-NEXT: sll a7, a7, a4
-; RV32IA-WMO-NEXT: sra a7, a7, a4
-; RV32IA-WMO-NEXT: bge a7, a1, .LBB48_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB48_1 Depth=1
-; RV32IA-WMO-NEXT: xor a6, a5, a1
-; RV32IA-WMO-NEXT: and a6, a6, a3
-; RV32IA-WMO-NEXT: xor a6, a5, a6
-; RV32IA-WMO-NEXT: .LBB48_3: # in Loop: Header=BB48_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w.rl a6, a6, (a2)
-; RV32IA-WMO-NEXT: bnez a6, .LBB48_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a5, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_max_i8_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: slli a1, a1, 24
+; RV32IA-WMO-NOZACAS-NEXT: andi a4, a0, 24
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: srai a1, a1, 24
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: xori a4, a4, 24
+; RV32IA-WMO-NOZACAS-NEXT: .LBB48_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: bge a7, a1, .LBB48_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB48_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-NOZACAS-NEXT: .LBB48_3: # in Loop: Header=BB48_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a6, .LBB48_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_max_i8_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: slli a1, a1, 24
-; RV32IA-TSO-NEXT: andi a4, a0, 24
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: srai a1, a1, 24
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: xori a4, a4, 24
-; RV32IA-TSO-NEXT: .LBB48_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a5, (a2)
-; RV32IA-TSO-NEXT: and a7, a5, a3
-; RV32IA-TSO-NEXT: mv a6, a5
-; RV32IA-TSO-NEXT: sll a7, a7, a4
-; RV32IA-TSO-NEXT: sra a7, a7, a4
-; RV32IA-TSO-NEXT: bge a7, a1, .LBB48_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB48_1 Depth=1
-; RV32IA-TSO-NEXT: xor a6, a5, a1
-; RV32IA-TSO-NEXT: and a6, a6, a3
-; RV32IA-TSO-NEXT: xor a6, a5, a6
-; RV32IA-TSO-NEXT: .LBB48_3: # in Loop: Header=BB48_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a6, a6, (a2)
-; RV32IA-TSO-NEXT: bnez a6, .LBB48_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a5, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_max_i8_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: slli a1, a1, 24
+; RV32IA-TSO-NOZACAS-NEXT: andi a4, a0, 24
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: srai a1, a1, 24
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: xori a4, a4, 24
+; RV32IA-TSO-NOZACAS-NEXT: .LBB48_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: bge a7, a1, .LBB48_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB48_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-NOZACAS-NEXT: .LBB48_3: # in Loop: Header=BB48_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a6, .LBB48_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_max_i8_acq_rel:
; RV64I: # %bb.0:
@@ -6274,6 +8383,64 @@ define i8 @atomicrmw_max_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_max_i8_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: slli a1, a1, 24
+; RV32IA-WMO-ZACAS-NEXT: andi a4, a0, 24
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: srai a1, a1, 24
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: xori a4, a4, 24
+; RV32IA-WMO-ZACAS-NEXT: .LBB48_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: bge a7, a1, .LBB48_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB48_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-ZACAS-NEXT: .LBB48_3: # in Loop: Header=BB48_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a6, .LBB48_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_max_i8_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: slli a1, a1, 24
+; RV32IA-TSO-ZACAS-NEXT: andi a4, a0, 24
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: srai a1, a1, 24
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: xori a4, a4, 24
+; RV32IA-TSO-ZACAS-NEXT: .LBB48_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: bge a7, a1, .LBB48_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB48_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-ZACAS-NEXT: .LBB48_3: # in Loop: Header=BB48_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a6, .LBB48_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_max_i8_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -6332,6 +8499,16 @@ define i8 @atomicrmw_max_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_max_i8_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomax.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_max_i8_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomax.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_max_i8_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomax.b.aqrl a0, a1, (a0)
@@ -6388,34 +8565,34 @@ define i8 @atomicrmw_max_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_max_i8_seq_cst:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: li a3, 255
-; RV32IA-NEXT: slli a1, a1, 24
-; RV32IA-NEXT: andi a4, a0, 24
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: srai a1, a1, 24
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: xori a4, a4, 24
-; RV32IA-NEXT: .LBB49_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w.aqrl a5, (a2)
-; RV32IA-NEXT: and a7, a5, a3
-; RV32IA-NEXT: mv a6, a5
-; RV32IA-NEXT: sll a7, a7, a4
-; RV32IA-NEXT: sra a7, a7, a4
-; RV32IA-NEXT: bge a7, a1, .LBB49_3
-; RV32IA-NEXT: # %bb.2: # in Loop: Header=BB49_1 Depth=1
-; RV32IA-NEXT: xor a6, a5, a1
-; RV32IA-NEXT: and a6, a6, a3
-; RV32IA-NEXT: xor a6, a5, a6
-; RV32IA-NEXT: .LBB49_3: # in Loop: Header=BB49_1 Depth=1
-; RV32IA-NEXT: sc.w.rl a6, a6, (a2)
-; RV32IA-NEXT: bnez a6, .LBB49_1
-; RV32IA-NEXT: # %bb.4:
-; RV32IA-NEXT: srl a0, a5, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_max_i8_seq_cst:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: li a3, 255
+; RV32IA-NOZACAS-NEXT: slli a1, a1, 24
+; RV32IA-NOZACAS-NEXT: andi a4, a0, 24
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: srai a1, a1, 24
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: xori a4, a4, 24
+; RV32IA-NOZACAS-NEXT: .LBB49_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w.aqrl a5, (a2)
+; RV32IA-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-NOZACAS-NEXT: mv a6, a5
+; RV32IA-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-NOZACAS-NEXT: bge a7, a1, .LBB49_3
+; RV32IA-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB49_1 Depth=1
+; RV32IA-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-NOZACAS-NEXT: .LBB49_3: # in Loop: Header=BB49_1 Depth=1
+; RV32IA-NOZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a6, .LBB49_1
+; RV32IA-NOZACAS-NEXT: # %bb.4:
+; RV32IA-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_max_i8_seq_cst:
; RV64I: # %bb.0:
@@ -6488,6 +8665,35 @@ define i8 @atomicrmw_max_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a5, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_max_i8_seq_cst:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: li a3, 255
+; RV32IA-ZACAS-NEXT: slli a1, a1, 24
+; RV32IA-ZACAS-NEXT: andi a4, a0, 24
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: srai a1, a1, 24
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: xori a4, a4, 24
+; RV32IA-ZACAS-NEXT: .LBB49_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w.aqrl a5, (a2)
+; RV32IA-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-ZACAS-NEXT: mv a6, a5
+; RV32IA-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-ZACAS-NEXT: bge a7, a1, .LBB49_3
+; RV32IA-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB49_1 Depth=1
+; RV32IA-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-ZACAS-NEXT: .LBB49_3: # in Loop: Header=BB49_1 Depth=1
+; RV32IA-ZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-ZACAS-NEXT: bnez a6, .LBB49_1
+; RV32IA-ZACAS-NEXT: # %bb.4:
+; RV32IA-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_max_i8_seq_cst:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -6517,6 +8723,16 @@ define i8 @atomicrmw_max_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a5, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_max_i8_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomax.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_max_i8_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomax.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_max_i8_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomax.b.aqrl a0, a1, (a0)
@@ -6573,34 +8789,34 @@ define i8 @atomicrmw_min_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_min_i8_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: li a3, 255
-; RV32IA-NEXT: slli a1, a1, 24
-; RV32IA-NEXT: andi a4, a0, 24
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: srai a1, a1, 24
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: xori a4, a4, 24
-; RV32IA-NEXT: .LBB50_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w a5, (a2)
-; RV32IA-NEXT: and a7, a5, a3
-; RV32IA-NEXT: mv a6, a5
-; RV32IA-NEXT: sll a7, a7, a4
-; RV32IA-NEXT: sra a7, a7, a4
-; RV32IA-NEXT: bge a1, a7, .LBB50_3
-; RV32IA-NEXT: # %bb.2: # in Loop: Header=BB50_1 Depth=1
-; RV32IA-NEXT: xor a6, a5, a1
-; RV32IA-NEXT: and a6, a6, a3
-; RV32IA-NEXT: xor a6, a5, a6
-; RV32IA-NEXT: .LBB50_3: # in Loop: Header=BB50_1 Depth=1
-; RV32IA-NEXT: sc.w a6, a6, (a2)
-; RV32IA-NEXT: bnez a6, .LBB50_1
-; RV32IA-NEXT: # %bb.4:
-; RV32IA-NEXT: srl a0, a5, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_min_i8_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: li a3, 255
+; RV32IA-NOZACAS-NEXT: slli a1, a1, 24
+; RV32IA-NOZACAS-NEXT: andi a4, a0, 24
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: srai a1, a1, 24
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: xori a4, a4, 24
+; RV32IA-NOZACAS-NEXT: .LBB50_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-NOZACAS-NEXT: mv a6, a5
+; RV32IA-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-NOZACAS-NEXT: bge a1, a7, .LBB50_3
+; RV32IA-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB50_1 Depth=1
+; RV32IA-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-NOZACAS-NEXT: .LBB50_3: # in Loop: Header=BB50_1 Depth=1
+; RV32IA-NOZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a6, .LBB50_1
+; RV32IA-NOZACAS-NEXT: # %bb.4:
+; RV32IA-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_min_i8_monotonic:
; RV64I: # %bb.0:
@@ -6673,6 +8889,35 @@ define i8 @atomicrmw_min_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a5, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_min_i8_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: li a3, 255
+; RV32IA-ZACAS-NEXT: slli a1, a1, 24
+; RV32IA-ZACAS-NEXT: andi a4, a0, 24
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: srai a1, a1, 24
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: xori a4, a4, 24
+; RV32IA-ZACAS-NEXT: .LBB50_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-ZACAS-NEXT: mv a6, a5
+; RV32IA-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-ZACAS-NEXT: bge a1, a7, .LBB50_3
+; RV32IA-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB50_1 Depth=1
+; RV32IA-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-ZACAS-NEXT: .LBB50_3: # in Loop: Header=BB50_1 Depth=1
+; RV32IA-ZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-ZACAS-NEXT: bnez a6, .LBB50_1
+; RV32IA-ZACAS-NEXT: # %bb.4:
+; RV32IA-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_min_i8_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -6702,6 +8947,16 @@ define i8 @atomicrmw_min_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a5, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_min_i8_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomin.b a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_min_i8_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomin.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_min_i8_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomin.b a0, a1, (a0)
@@ -6758,63 +9013,63 @@ define i8 @atomicrmw_min_i8_acquire(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_min_i8_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: slli a1, a1, 24
-; RV32IA-WMO-NEXT: andi a4, a0, 24
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: srai a1, a1, 24
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: xori a4, a4, 24
-; RV32IA-WMO-NEXT: .LBB51_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a5, (a2)
-; RV32IA-WMO-NEXT: and a7, a5, a3
-; RV32IA-WMO-NEXT: mv a6, a5
-; RV32IA-WMO-NEXT: sll a7, a7, a4
-; RV32IA-WMO-NEXT: sra a7, a7, a4
-; RV32IA-WMO-NEXT: bge a1, a7, .LBB51_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB51_1 Depth=1
-; RV32IA-WMO-NEXT: xor a6, a5, a1
-; RV32IA-WMO-NEXT: and a6, a6, a3
-; RV32IA-WMO-NEXT: xor a6, a5, a6
-; RV32IA-WMO-NEXT: .LBB51_3: # in Loop: Header=BB51_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w a6, a6, (a2)
-; RV32IA-WMO-NEXT: bnez a6, .LBB51_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a5, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_min_i8_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: slli a1, a1, 24
+; RV32IA-WMO-NOZACAS-NEXT: andi a4, a0, 24
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: srai a1, a1, 24
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: xori a4, a4, 24
+; RV32IA-WMO-NOZACAS-NEXT: .LBB51_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: bge a1, a7, .LBB51_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB51_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-NOZACAS-NEXT: .LBB51_3: # in Loop: Header=BB51_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a6, .LBB51_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_min_i8_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: slli a1, a1, 24
-; RV32IA-TSO-NEXT: andi a4, a0, 24
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: srai a1, a1, 24
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: xori a4, a4, 24
-; RV32IA-TSO-NEXT: .LBB51_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a5, (a2)
-; RV32IA-TSO-NEXT: and a7, a5, a3
-; RV32IA-TSO-NEXT: mv a6, a5
-; RV32IA-TSO-NEXT: sll a7, a7, a4
-; RV32IA-TSO-NEXT: sra a7, a7, a4
-; RV32IA-TSO-NEXT: bge a1, a7, .LBB51_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB51_1 Depth=1
-; RV32IA-TSO-NEXT: xor a6, a5, a1
-; RV32IA-TSO-NEXT: and a6, a6, a3
-; RV32IA-TSO-NEXT: xor a6, a5, a6
-; RV32IA-TSO-NEXT: .LBB51_3: # in Loop: Header=BB51_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a6, a6, (a2)
-; RV32IA-TSO-NEXT: bnez a6, .LBB51_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a5, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_min_i8_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: slli a1, a1, 24
+; RV32IA-TSO-NOZACAS-NEXT: andi a4, a0, 24
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: srai a1, a1, 24
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: xori a4, a4, 24
+; RV32IA-TSO-NOZACAS-NEXT: .LBB51_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: bge a1, a7, .LBB51_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB51_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-NOZACAS-NEXT: .LBB51_3: # in Loop: Header=BB51_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a6, .LBB51_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_min_i8_acquire:
; RV64I: # %bb.0:
@@ -6916,6 +9171,64 @@ define i8 @atomicrmw_min_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_min_i8_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: slli a1, a1, 24
+; RV32IA-WMO-ZACAS-NEXT: andi a4, a0, 24
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: srai a1, a1, 24
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: xori a4, a4, 24
+; RV32IA-WMO-ZACAS-NEXT: .LBB51_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: bge a1, a7, .LBB51_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB51_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-ZACAS-NEXT: .LBB51_3: # in Loop: Header=BB51_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a6, .LBB51_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_min_i8_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: slli a1, a1, 24
+; RV32IA-TSO-ZACAS-NEXT: andi a4, a0, 24
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: srai a1, a1, 24
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: xori a4, a4, 24
+; RV32IA-TSO-ZACAS-NEXT: .LBB51_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: bge a1, a7, .LBB51_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB51_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-ZACAS-NEXT: .LBB51_3: # in Loop: Header=BB51_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a6, .LBB51_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_min_i8_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -6974,6 +9287,16 @@ define i8 @atomicrmw_min_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_min_i8_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomin.b.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_min_i8_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomin.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_min_i8_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomin.b.aq a0, a1, (a0)
@@ -7030,63 +9353,63 @@ define i8 @atomicrmw_min_i8_release(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_min_i8_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: slli a1, a1, 24
-; RV32IA-WMO-NEXT: andi a4, a0, 24
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: srai a1, a1, 24
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: xori a4, a4, 24
-; RV32IA-WMO-NEXT: .LBB52_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w a5, (a2)
-; RV32IA-WMO-NEXT: and a7, a5, a3
-; RV32IA-WMO-NEXT: mv a6, a5
-; RV32IA-WMO-NEXT: sll a7, a7, a4
-; RV32IA-WMO-NEXT: sra a7, a7, a4
-; RV32IA-WMO-NEXT: bge a1, a7, .LBB52_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB52_1 Depth=1
-; RV32IA-WMO-NEXT: xor a6, a5, a1
-; RV32IA-WMO-NEXT: and a6, a6, a3
-; RV32IA-WMO-NEXT: xor a6, a5, a6
-; RV32IA-WMO-NEXT: .LBB52_3: # in Loop: Header=BB52_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w.rl a6, a6, (a2)
-; RV32IA-WMO-NEXT: bnez a6, .LBB52_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a5, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_min_i8_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: slli a1, a1, 24
+; RV32IA-WMO-NOZACAS-NEXT: andi a4, a0, 24
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: srai a1, a1, 24
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: xori a4, a4, 24
+; RV32IA-WMO-NOZACAS-NEXT: .LBB52_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: bge a1, a7, .LBB52_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB52_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-NOZACAS-NEXT: .LBB52_3: # in Loop: Header=BB52_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a6, .LBB52_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_min_i8_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: slli a1, a1, 24
-; RV32IA-TSO-NEXT: andi a4, a0, 24
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: srai a1, a1, 24
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: xori a4, a4, 24
-; RV32IA-TSO-NEXT: .LBB52_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a5, (a2)
-; RV32IA-TSO-NEXT: and a7, a5, a3
-; RV32IA-TSO-NEXT: mv a6, a5
-; RV32IA-TSO-NEXT: sll a7, a7, a4
-; RV32IA-TSO-NEXT: sra a7, a7, a4
-; RV32IA-TSO-NEXT: bge a1, a7, .LBB52_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB52_1 Depth=1
-; RV32IA-TSO-NEXT: xor a6, a5, a1
-; RV32IA-TSO-NEXT: and a6, a6, a3
-; RV32IA-TSO-NEXT: xor a6, a5, a6
-; RV32IA-TSO-NEXT: .LBB52_3: # in Loop: Header=BB52_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a6, a6, (a2)
-; RV32IA-TSO-NEXT: bnez a6, .LBB52_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a5, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_min_i8_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: slli a1, a1, 24
+; RV32IA-TSO-NOZACAS-NEXT: andi a4, a0, 24
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: srai a1, a1, 24
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: xori a4, a4, 24
+; RV32IA-TSO-NOZACAS-NEXT: .LBB52_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: bge a1, a7, .LBB52_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB52_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-NOZACAS-NEXT: .LBB52_3: # in Loop: Header=BB52_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a6, .LBB52_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_min_i8_release:
; RV64I: # %bb.0:
@@ -7188,6 +9511,64 @@ define i8 @atomicrmw_min_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_min_i8_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: slli a1, a1, 24
+; RV32IA-WMO-ZACAS-NEXT: andi a4, a0, 24
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: srai a1, a1, 24
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: xori a4, a4, 24
+; RV32IA-WMO-ZACAS-NEXT: .LBB52_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: bge a1, a7, .LBB52_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB52_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-ZACAS-NEXT: .LBB52_3: # in Loop: Header=BB52_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a6, .LBB52_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_min_i8_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: slli a1, a1, 24
+; RV32IA-TSO-ZACAS-NEXT: andi a4, a0, 24
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: srai a1, a1, 24
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: xori a4, a4, 24
+; RV32IA-TSO-ZACAS-NEXT: .LBB52_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: bge a1, a7, .LBB52_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB52_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-ZACAS-NEXT: .LBB52_3: # in Loop: Header=BB52_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a6, .LBB52_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_min_i8_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -7246,6 +9627,16 @@ define i8 @atomicrmw_min_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_min_i8_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomin.b.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_min_i8_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomin.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_min_i8_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomin.b.rl a0, a1, (a0)
@@ -7302,63 +9693,63 @@ define i8 @atomicrmw_min_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_min_i8_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: slli a1, a1, 24
-; RV32IA-WMO-NEXT: andi a4, a0, 24
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: srai a1, a1, 24
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: xori a4, a4, 24
-; RV32IA-WMO-NEXT: .LBB53_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a5, (a2)
-; RV32IA-WMO-NEXT: and a7, a5, a3
-; RV32IA-WMO-NEXT: mv a6, a5
-; RV32IA-WMO-NEXT: sll a7, a7, a4
-; RV32IA-WMO-NEXT: sra a7, a7, a4
-; RV32IA-WMO-NEXT: bge a1, a7, .LBB53_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB53_1 Depth=1
-; RV32IA-WMO-NEXT: xor a6, a5, a1
-; RV32IA-WMO-NEXT: and a6, a6, a3
-; RV32IA-WMO-NEXT: xor a6, a5, a6
-; RV32IA-WMO-NEXT: .LBB53_3: # in Loop: Header=BB53_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w.rl a6, a6, (a2)
-; RV32IA-WMO-NEXT: bnez a6, .LBB53_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a5, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_min_i8_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: slli a1, a1, 24
+; RV32IA-WMO-NOZACAS-NEXT: andi a4, a0, 24
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: srai a1, a1, 24
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: xori a4, a4, 24
+; RV32IA-WMO-NOZACAS-NEXT: .LBB53_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: bge a1, a7, .LBB53_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB53_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-NOZACAS-NEXT: .LBB53_3: # in Loop: Header=BB53_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a6, .LBB53_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_min_i8_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: slli a1, a1, 24
-; RV32IA-TSO-NEXT: andi a4, a0, 24
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: srai a1, a1, 24
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: xori a4, a4, 24
-; RV32IA-TSO-NEXT: .LBB53_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a5, (a2)
-; RV32IA-TSO-NEXT: and a7, a5, a3
-; RV32IA-TSO-NEXT: mv a6, a5
-; RV32IA-TSO-NEXT: sll a7, a7, a4
-; RV32IA-TSO-NEXT: sra a7, a7, a4
-; RV32IA-TSO-NEXT: bge a1, a7, .LBB53_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB53_1 Depth=1
-; RV32IA-TSO-NEXT: xor a6, a5, a1
-; RV32IA-TSO-NEXT: and a6, a6, a3
-; RV32IA-TSO-NEXT: xor a6, a5, a6
-; RV32IA-TSO-NEXT: .LBB53_3: # in Loop: Header=BB53_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a6, a6, (a2)
-; RV32IA-TSO-NEXT: bnez a6, .LBB53_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a5, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_min_i8_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: slli a1, a1, 24
+; RV32IA-TSO-NOZACAS-NEXT: andi a4, a0, 24
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: srai a1, a1, 24
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: xori a4, a4, 24
+; RV32IA-TSO-NOZACAS-NEXT: .LBB53_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: bge a1, a7, .LBB53_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB53_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-NOZACAS-NEXT: .LBB53_3: # in Loop: Header=BB53_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a6, .LBB53_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_min_i8_acq_rel:
; RV64I: # %bb.0:
@@ -7460,6 +9851,64 @@ define i8 @atomicrmw_min_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_min_i8_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: slli a1, a1, 24
+; RV32IA-WMO-ZACAS-NEXT: andi a4, a0, 24
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: srai a1, a1, 24
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: xori a4, a4, 24
+; RV32IA-WMO-ZACAS-NEXT: .LBB53_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: bge a1, a7, .LBB53_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB53_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-ZACAS-NEXT: .LBB53_3: # in Loop: Header=BB53_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a6, .LBB53_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_min_i8_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: slli a1, a1, 24
+; RV32IA-TSO-ZACAS-NEXT: andi a4, a0, 24
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: srai a1, a1, 24
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: xori a4, a4, 24
+; RV32IA-TSO-ZACAS-NEXT: .LBB53_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: bge a1, a7, .LBB53_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB53_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-ZACAS-NEXT: .LBB53_3: # in Loop: Header=BB53_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a6, .LBB53_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_min_i8_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -7518,6 +9967,16 @@ define i8 @atomicrmw_min_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_min_i8_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomin.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_min_i8_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomin.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_min_i8_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomin.b.aqrl a0, a1, (a0)
@@ -7574,34 +10033,34 @@ define i8 @atomicrmw_min_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_min_i8_seq_cst:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: li a3, 255
-; RV32IA-NEXT: slli a1, a1, 24
-; RV32IA-NEXT: andi a4, a0, 24
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: srai a1, a1, 24
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: xori a4, a4, 24
-; RV32IA-NEXT: .LBB54_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w.aqrl a5, (a2)
-; RV32IA-NEXT: and a7, a5, a3
-; RV32IA-NEXT: mv a6, a5
-; RV32IA-NEXT: sll a7, a7, a4
-; RV32IA-NEXT: sra a7, a7, a4
-; RV32IA-NEXT: bge a1, a7, .LBB54_3
-; RV32IA-NEXT: # %bb.2: # in Loop: Header=BB54_1 Depth=1
-; RV32IA-NEXT: xor a6, a5, a1
-; RV32IA-NEXT: and a6, a6, a3
-; RV32IA-NEXT: xor a6, a5, a6
-; RV32IA-NEXT: .LBB54_3: # in Loop: Header=BB54_1 Depth=1
-; RV32IA-NEXT: sc.w.rl a6, a6, (a2)
-; RV32IA-NEXT: bnez a6, .LBB54_1
-; RV32IA-NEXT: # %bb.4:
-; RV32IA-NEXT: srl a0, a5, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_min_i8_seq_cst:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: li a3, 255
+; RV32IA-NOZACAS-NEXT: slli a1, a1, 24
+; RV32IA-NOZACAS-NEXT: andi a4, a0, 24
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: srai a1, a1, 24
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: xori a4, a4, 24
+; RV32IA-NOZACAS-NEXT: .LBB54_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w.aqrl a5, (a2)
+; RV32IA-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-NOZACAS-NEXT: mv a6, a5
+; RV32IA-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-NOZACAS-NEXT: bge a1, a7, .LBB54_3
+; RV32IA-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB54_1 Depth=1
+; RV32IA-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-NOZACAS-NEXT: .LBB54_3: # in Loop: Header=BB54_1 Depth=1
+; RV32IA-NOZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a6, .LBB54_1
+; RV32IA-NOZACAS-NEXT: # %bb.4:
+; RV32IA-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_min_i8_seq_cst:
; RV64I: # %bb.0:
@@ -7674,6 +10133,35 @@ define i8 @atomicrmw_min_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a5, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_min_i8_seq_cst:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: li a3, 255
+; RV32IA-ZACAS-NEXT: slli a1, a1, 24
+; RV32IA-ZACAS-NEXT: andi a4, a0, 24
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: srai a1, a1, 24
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: xori a4, a4, 24
+; RV32IA-ZACAS-NEXT: .LBB54_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w.aqrl a5, (a2)
+; RV32IA-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-ZACAS-NEXT: mv a6, a5
+; RV32IA-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-ZACAS-NEXT: bge a1, a7, .LBB54_3
+; RV32IA-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB54_1 Depth=1
+; RV32IA-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-ZACAS-NEXT: .LBB54_3: # in Loop: Header=BB54_1 Depth=1
+; RV32IA-ZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-ZACAS-NEXT: bnez a6, .LBB54_1
+; RV32IA-ZACAS-NEXT: # %bb.4:
+; RV32IA-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_min_i8_seq_cst:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -7703,6 +10191,16 @@ define i8 @atomicrmw_min_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a5, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_min_i8_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomin.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_min_i8_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomin.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_min_i8_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomin.b.aqrl a0, a1, (a0)
@@ -7757,29 +10255,29 @@ define i8 @atomicrmw_umax_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_umax_i8_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: li a3, 255
-; RV32IA-NEXT: zext.b a1, a1
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB55_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w a4, (a2)
-; RV32IA-NEXT: and a6, a4, a3
-; RV32IA-NEXT: mv a5, a4
-; RV32IA-NEXT: bgeu a6, a1, .LBB55_3
-; RV32IA-NEXT: # %bb.2: # in Loop: Header=BB55_1 Depth=1
-; RV32IA-NEXT: xor a5, a4, a1
-; RV32IA-NEXT: and a5, a5, a3
-; RV32IA-NEXT: xor a5, a4, a5
-; RV32IA-NEXT: .LBB55_3: # in Loop: Header=BB55_1 Depth=1
-; RV32IA-NEXT: sc.w a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB55_1
-; RV32IA-NEXT: # %bb.4:
-; RV32IA-NEXT: srl a0, a4, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_umax_i8_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: li a3, 255
+; RV32IA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB55_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-NOZACAS-NEXT: and a6, a4, a3
+; RV32IA-NOZACAS-NEXT: mv a5, a4
+; RV32IA-NOZACAS-NEXT: bgeu a6, a1, .LBB55_3
+; RV32IA-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB55_1 Depth=1
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a1
+; RV32IA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-NOZACAS-NEXT: .LBB55_3: # in Loop: Header=BB55_1 Depth=1
+; RV32IA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB55_1
+; RV32IA-NOZACAS-NEXT: # %bb.4:
+; RV32IA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_umax_i8_monotonic:
; RV64I: # %bb.0:
@@ -7845,6 +10343,30 @@ define i8 @atomicrmw_umax_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_umax_i8_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: li a3, 255
+; RV32IA-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB55_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-ZACAS-NEXT: and a6, a4, a3
+; RV32IA-ZACAS-NEXT: mv a5, a4
+; RV32IA-ZACAS-NEXT: bgeu a6, a1, .LBB55_3
+; RV32IA-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB55_1 Depth=1
+; RV32IA-ZACAS-NEXT: xor a5, a4, a1
+; RV32IA-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-ZACAS-NEXT: .LBB55_3: # in Loop: Header=BB55_1 Depth=1
+; RV32IA-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB55_1
+; RV32IA-ZACAS-NEXT: # %bb.4:
+; RV32IA-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_umax_i8_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -7869,6 +10391,16 @@ define i8 @atomicrmw_umax_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_umax_i8_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomaxu.b a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_umax_i8_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomaxu.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_umax_i8_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomaxu.b a0, a1, (a0)
@@ -7923,53 +10455,53 @@ define i8 @atomicrmw_umax_i8_acquire(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_umax_i8_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB56_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a4, (a2)
-; RV32IA-WMO-NEXT: and a6, a4, a3
-; RV32IA-WMO-NEXT: mv a5, a4
-; RV32IA-WMO-NEXT: bgeu a6, a1, .LBB56_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB56_1 Depth=1
-; RV32IA-WMO-NEXT: xor a5, a4, a1
-; RV32IA-WMO-NEXT: and a5, a5, a3
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: .LBB56_3: # in Loop: Header=BB56_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB56_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a4, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_umax_i8_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB56_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a4, a3
+; RV32IA-WMO-NOZACAS-NEXT: mv a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: bgeu a6, a1, .LBB56_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB56_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: .LBB56_3: # in Loop: Header=BB56_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB56_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_umax_i8_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB56_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a4, (a2)
-; RV32IA-TSO-NEXT: and a6, a4, a3
-; RV32IA-TSO-NEXT: mv a5, a4
-; RV32IA-TSO-NEXT: bgeu a6, a1, .LBB56_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB56_1 Depth=1
-; RV32IA-TSO-NEXT: xor a5, a4, a1
-; RV32IA-TSO-NEXT: and a5, a5, a3
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: .LBB56_3: # in Loop: Header=BB56_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB56_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a4, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_umax_i8_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB56_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a4, a3
+; RV32IA-TSO-NOZACAS-NEXT: mv a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: bgeu a6, a1, .LBB56_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB56_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: .LBB56_3: # in Loop: Header=BB56_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB56_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_umax_i8_acquire:
; RV64I: # %bb.0:
@@ -8059,6 +10591,54 @@ define i8 @atomicrmw_umax_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_umax_i8_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB56_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a6, a4, a3
+; RV32IA-WMO-ZACAS-NEXT: mv a5, a4
+; RV32IA-WMO-ZACAS-NEXT: bgeu a6, a1, .LBB56_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB56_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a1
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: .LBB56_3: # in Loop: Header=BB56_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB56_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_umax_i8_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB56_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a6, a4, a3
+; RV32IA-TSO-ZACAS-NEXT: mv a5, a4
+; RV32IA-TSO-ZACAS-NEXT: bgeu a6, a1, .LBB56_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB56_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a1
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: .LBB56_3: # in Loop: Header=BB56_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB56_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_umax_i8_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -8107,6 +10687,16 @@ define i8 @atomicrmw_umax_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_umax_i8_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomaxu.b.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_umax_i8_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomaxu.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_umax_i8_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomaxu.b.aq a0, a1, (a0)
@@ -8161,53 +10751,53 @@ define i8 @atomicrmw_umax_i8_release(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_umax_i8_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB57_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w a4, (a2)
-; RV32IA-WMO-NEXT: and a6, a4, a3
-; RV32IA-WMO-NEXT: mv a5, a4
-; RV32IA-WMO-NEXT: bgeu a6, a1, .LBB57_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB57_1 Depth=1
-; RV32IA-WMO-NEXT: xor a5, a4, a1
-; RV32IA-WMO-NEXT: and a5, a5, a3
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: .LBB57_3: # in Loop: Header=BB57_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB57_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a4, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_umax_i8_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB57_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a4, a3
+; RV32IA-WMO-NOZACAS-NEXT: mv a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: bgeu a6, a1, .LBB57_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB57_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: .LBB57_3: # in Loop: Header=BB57_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB57_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_umax_i8_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB57_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a4, (a2)
-; RV32IA-TSO-NEXT: and a6, a4, a3
-; RV32IA-TSO-NEXT: mv a5, a4
-; RV32IA-TSO-NEXT: bgeu a6, a1, .LBB57_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB57_1 Depth=1
-; RV32IA-TSO-NEXT: xor a5, a4, a1
-; RV32IA-TSO-NEXT: and a5, a5, a3
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: .LBB57_3: # in Loop: Header=BB57_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB57_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a4, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_umax_i8_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB57_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a4, a3
+; RV32IA-TSO-NOZACAS-NEXT: mv a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: bgeu a6, a1, .LBB57_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB57_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: .LBB57_3: # in Loop: Header=BB57_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB57_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_umax_i8_release:
; RV64I: # %bb.0:
@@ -8297,6 +10887,54 @@ define i8 @atomicrmw_umax_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_umax_i8_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB57_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a6, a4, a3
+; RV32IA-WMO-ZACAS-NEXT: mv a5, a4
+; RV32IA-WMO-ZACAS-NEXT: bgeu a6, a1, .LBB57_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB57_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a1
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: .LBB57_3: # in Loop: Header=BB57_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB57_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_umax_i8_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB57_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a6, a4, a3
+; RV32IA-TSO-ZACAS-NEXT: mv a5, a4
+; RV32IA-TSO-ZACAS-NEXT: bgeu a6, a1, .LBB57_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB57_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a1
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: .LBB57_3: # in Loop: Header=BB57_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB57_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_umax_i8_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -8345,6 +10983,16 @@ define i8 @atomicrmw_umax_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_umax_i8_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomaxu.b.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_umax_i8_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomaxu.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_umax_i8_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomaxu.b.rl a0, a1, (a0)
@@ -8399,53 +11047,53 @@ define i8 @atomicrmw_umax_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_umax_i8_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB58_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a4, (a2)
-; RV32IA-WMO-NEXT: and a6, a4, a3
-; RV32IA-WMO-NEXT: mv a5, a4
-; RV32IA-WMO-NEXT: bgeu a6, a1, .LBB58_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB58_1 Depth=1
-; RV32IA-WMO-NEXT: xor a5, a4, a1
-; RV32IA-WMO-NEXT: and a5, a5, a3
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: .LBB58_3: # in Loop: Header=BB58_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB58_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a4, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_umax_i8_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB58_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a4, a3
+; RV32IA-WMO-NOZACAS-NEXT: mv a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: bgeu a6, a1, .LBB58_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB58_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: .LBB58_3: # in Loop: Header=BB58_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB58_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_umax_i8_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB58_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a4, (a2)
-; RV32IA-TSO-NEXT: and a6, a4, a3
-; RV32IA-TSO-NEXT: mv a5, a4
-; RV32IA-TSO-NEXT: bgeu a6, a1, .LBB58_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB58_1 Depth=1
-; RV32IA-TSO-NEXT: xor a5, a4, a1
-; RV32IA-TSO-NEXT: and a5, a5, a3
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: .LBB58_3: # in Loop: Header=BB58_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB58_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a4, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_umax_i8_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB58_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a4, a3
+; RV32IA-TSO-NOZACAS-NEXT: mv a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: bgeu a6, a1, .LBB58_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB58_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: .LBB58_3: # in Loop: Header=BB58_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB58_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_umax_i8_acq_rel:
; RV64I: # %bb.0:
@@ -8535,6 +11183,54 @@ define i8 @atomicrmw_umax_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_umax_i8_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB58_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a6, a4, a3
+; RV32IA-WMO-ZACAS-NEXT: mv a5, a4
+; RV32IA-WMO-ZACAS-NEXT: bgeu a6, a1, .LBB58_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB58_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a1
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: .LBB58_3: # in Loop: Header=BB58_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB58_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_umax_i8_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB58_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a6, a4, a3
+; RV32IA-TSO-ZACAS-NEXT: mv a5, a4
+; RV32IA-TSO-ZACAS-NEXT: bgeu a6, a1, .LBB58_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB58_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a1
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: .LBB58_3: # in Loop: Header=BB58_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB58_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_umax_i8_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -8583,6 +11279,16 @@ define i8 @atomicrmw_umax_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_umax_i8_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomaxu.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_umax_i8_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomaxu.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_umax_i8_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomaxu.b.aqrl a0, a1, (a0)
@@ -8637,29 +11343,29 @@ define i8 @atomicrmw_umax_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_umax_i8_seq_cst:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: li a3, 255
-; RV32IA-NEXT: zext.b a1, a1
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB59_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w.aqrl a4, (a2)
-; RV32IA-NEXT: and a6, a4, a3
-; RV32IA-NEXT: mv a5, a4
-; RV32IA-NEXT: bgeu a6, a1, .LBB59_3
-; RV32IA-NEXT: # %bb.2: # in Loop: Header=BB59_1 Depth=1
-; RV32IA-NEXT: xor a5, a4, a1
-; RV32IA-NEXT: and a5, a5, a3
-; RV32IA-NEXT: xor a5, a4, a5
-; RV32IA-NEXT: .LBB59_3: # in Loop: Header=BB59_1 Depth=1
-; RV32IA-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB59_1
-; RV32IA-NEXT: # %bb.4:
-; RV32IA-NEXT: srl a0, a4, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_umax_i8_seq_cst:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: li a3, 255
+; RV32IA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB59_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w.aqrl a4, (a2)
+; RV32IA-NOZACAS-NEXT: and a6, a4, a3
+; RV32IA-NOZACAS-NEXT: mv a5, a4
+; RV32IA-NOZACAS-NEXT: bgeu a6, a1, .LBB59_3
+; RV32IA-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB59_1 Depth=1
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a1
+; RV32IA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-NOZACAS-NEXT: .LBB59_3: # in Loop: Header=BB59_1 Depth=1
+; RV32IA-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB59_1
+; RV32IA-NOZACAS-NEXT: # %bb.4:
+; RV32IA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_umax_i8_seq_cst:
; RV64I: # %bb.0:
@@ -8725,6 +11431,30 @@ define i8 @atomicrmw_umax_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_umax_i8_seq_cst:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: li a3, 255
+; RV32IA-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB59_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w.aqrl a4, (a2)
+; RV32IA-ZACAS-NEXT: and a6, a4, a3
+; RV32IA-ZACAS-NEXT: mv a5, a4
+; RV32IA-ZACAS-NEXT: bgeu a6, a1, .LBB59_3
+; RV32IA-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB59_1 Depth=1
+; RV32IA-ZACAS-NEXT: xor a5, a4, a1
+; RV32IA-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-ZACAS-NEXT: .LBB59_3: # in Loop: Header=BB59_1 Depth=1
+; RV32IA-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB59_1
+; RV32IA-ZACAS-NEXT: # %bb.4:
+; RV32IA-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_umax_i8_seq_cst:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -8749,6 +11479,16 @@ define i8 @atomicrmw_umax_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_umax_i8_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomaxu.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_umax_i8_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomaxu.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_umax_i8_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomaxu.b.aqrl a0, a1, (a0)
@@ -8803,29 +11543,29 @@ define i8 @atomicrmw_umin_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_umin_i8_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: li a3, 255
-; RV32IA-NEXT: zext.b a1, a1
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB60_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w a4, (a2)
-; RV32IA-NEXT: and a6, a4, a3
-; RV32IA-NEXT: mv a5, a4
-; RV32IA-NEXT: bgeu a1, a6, .LBB60_3
-; RV32IA-NEXT: # %bb.2: # in Loop: Header=BB60_1 Depth=1
-; RV32IA-NEXT: xor a5, a4, a1
-; RV32IA-NEXT: and a5, a5, a3
-; RV32IA-NEXT: xor a5, a4, a5
-; RV32IA-NEXT: .LBB60_3: # in Loop: Header=BB60_1 Depth=1
-; RV32IA-NEXT: sc.w a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB60_1
-; RV32IA-NEXT: # %bb.4:
-; RV32IA-NEXT: srl a0, a4, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_umin_i8_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: li a3, 255
+; RV32IA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB60_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-NOZACAS-NEXT: and a6, a4, a3
+; RV32IA-NOZACAS-NEXT: mv a5, a4
+; RV32IA-NOZACAS-NEXT: bgeu a1, a6, .LBB60_3
+; RV32IA-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB60_1 Depth=1
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a1
+; RV32IA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-NOZACAS-NEXT: .LBB60_3: # in Loop: Header=BB60_1 Depth=1
+; RV32IA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB60_1
+; RV32IA-NOZACAS-NEXT: # %bb.4:
+; RV32IA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_umin_i8_monotonic:
; RV64I: # %bb.0:
@@ -8891,6 +11631,30 @@ define i8 @atomicrmw_umin_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_umin_i8_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: li a3, 255
+; RV32IA-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB60_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-ZACAS-NEXT: and a6, a4, a3
+; RV32IA-ZACAS-NEXT: mv a5, a4
+; RV32IA-ZACAS-NEXT: bgeu a1, a6, .LBB60_3
+; RV32IA-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB60_1 Depth=1
+; RV32IA-ZACAS-NEXT: xor a5, a4, a1
+; RV32IA-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-ZACAS-NEXT: .LBB60_3: # in Loop: Header=BB60_1 Depth=1
+; RV32IA-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB60_1
+; RV32IA-ZACAS-NEXT: # %bb.4:
+; RV32IA-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_umin_i8_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -8915,6 +11679,16 @@ define i8 @atomicrmw_umin_i8_monotonic(ptr %a, i8 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_umin_i8_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amominu.b a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_umin_i8_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amominu.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_umin_i8_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amominu.b a0, a1, (a0)
@@ -8969,53 +11743,53 @@ define i8 @atomicrmw_umin_i8_acquire(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_umin_i8_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB61_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a4, (a2)
-; RV32IA-WMO-NEXT: and a6, a4, a3
-; RV32IA-WMO-NEXT: mv a5, a4
-; RV32IA-WMO-NEXT: bgeu a1, a6, .LBB61_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB61_1 Depth=1
-; RV32IA-WMO-NEXT: xor a5, a4, a1
-; RV32IA-WMO-NEXT: and a5, a5, a3
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: .LBB61_3: # in Loop: Header=BB61_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB61_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a4, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_umin_i8_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB61_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a4, a3
+; RV32IA-WMO-NOZACAS-NEXT: mv a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: bgeu a1, a6, .LBB61_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB61_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: .LBB61_3: # in Loop: Header=BB61_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB61_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_umin_i8_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB61_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a4, (a2)
-; RV32IA-TSO-NEXT: and a6, a4, a3
-; RV32IA-TSO-NEXT: mv a5, a4
-; RV32IA-TSO-NEXT: bgeu a1, a6, .LBB61_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB61_1 Depth=1
-; RV32IA-TSO-NEXT: xor a5, a4, a1
-; RV32IA-TSO-NEXT: and a5, a5, a3
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: .LBB61_3: # in Loop: Header=BB61_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB61_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a4, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_umin_i8_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB61_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a4, a3
+; RV32IA-TSO-NOZACAS-NEXT: mv a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: bgeu a1, a6, .LBB61_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB61_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: .LBB61_3: # in Loop: Header=BB61_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB61_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_umin_i8_acquire:
; RV64I: # %bb.0:
@@ -9105,6 +11879,54 @@ define i8 @atomicrmw_umin_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_umin_i8_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB61_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a6, a4, a3
+; RV32IA-WMO-ZACAS-NEXT: mv a5, a4
+; RV32IA-WMO-ZACAS-NEXT: bgeu a1, a6, .LBB61_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB61_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a1
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: .LBB61_3: # in Loop: Header=BB61_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB61_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_umin_i8_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB61_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a6, a4, a3
+; RV32IA-TSO-ZACAS-NEXT: mv a5, a4
+; RV32IA-TSO-ZACAS-NEXT: bgeu a1, a6, .LBB61_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB61_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a1
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: .LBB61_3: # in Loop: Header=BB61_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB61_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_umin_i8_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -9153,6 +11975,16 @@ define i8 @atomicrmw_umin_i8_acquire(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_umin_i8_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amominu.b.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_umin_i8_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amominu.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_umin_i8_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amominu.b.aq a0, a1, (a0)
@@ -9207,53 +12039,53 @@ define i8 @atomicrmw_umin_i8_release(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_umin_i8_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB62_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w a4, (a2)
-; RV32IA-WMO-NEXT: and a6, a4, a3
-; RV32IA-WMO-NEXT: mv a5, a4
-; RV32IA-WMO-NEXT: bgeu a1, a6, .LBB62_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB62_1 Depth=1
-; RV32IA-WMO-NEXT: xor a5, a4, a1
-; RV32IA-WMO-NEXT: and a5, a5, a3
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: .LBB62_3: # in Loop: Header=BB62_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB62_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a4, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_umin_i8_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB62_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a4, a3
+; RV32IA-WMO-NOZACAS-NEXT: mv a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: bgeu a1, a6, .LBB62_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB62_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: .LBB62_3: # in Loop: Header=BB62_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB62_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_umin_i8_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB62_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a4, (a2)
-; RV32IA-TSO-NEXT: and a6, a4, a3
-; RV32IA-TSO-NEXT: mv a5, a4
-; RV32IA-TSO-NEXT: bgeu a1, a6, .LBB62_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB62_1 Depth=1
-; RV32IA-TSO-NEXT: xor a5, a4, a1
-; RV32IA-TSO-NEXT: and a5, a5, a3
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: .LBB62_3: # in Loop: Header=BB62_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB62_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a4, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_umin_i8_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB62_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a4, a3
+; RV32IA-TSO-NOZACAS-NEXT: mv a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: bgeu a1, a6, .LBB62_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB62_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: .LBB62_3: # in Loop: Header=BB62_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB62_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_umin_i8_release:
; RV64I: # %bb.0:
@@ -9343,6 +12175,54 @@ define i8 @atomicrmw_umin_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_umin_i8_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB62_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a6, a4, a3
+; RV32IA-WMO-ZACAS-NEXT: mv a5, a4
+; RV32IA-WMO-ZACAS-NEXT: bgeu a1, a6, .LBB62_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB62_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a1
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: .LBB62_3: # in Loop: Header=BB62_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB62_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_umin_i8_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB62_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a6, a4, a3
+; RV32IA-TSO-ZACAS-NEXT: mv a5, a4
+; RV32IA-TSO-ZACAS-NEXT: bgeu a1, a6, .LBB62_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB62_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a1
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: .LBB62_3: # in Loop: Header=BB62_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB62_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_umin_i8_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -9391,6 +12271,16 @@ define i8 @atomicrmw_umin_i8_release(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_umin_i8_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amominu.b.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_umin_i8_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amominu.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_umin_i8_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amominu.b.rl a0, a1, (a0)
@@ -9445,53 +12335,53 @@ define i8 @atomicrmw_umin_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_umin_i8_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: li a3, 255
-; RV32IA-WMO-NEXT: zext.b a1, a1
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB63_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a4, (a2)
-; RV32IA-WMO-NEXT: and a6, a4, a3
-; RV32IA-WMO-NEXT: mv a5, a4
-; RV32IA-WMO-NEXT: bgeu a1, a6, .LBB63_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB63_1 Depth=1
-; RV32IA-WMO-NEXT: xor a5, a4, a1
-; RV32IA-WMO-NEXT: and a5, a5, a3
-; RV32IA-WMO-NEXT: xor a5, a4, a5
-; RV32IA-WMO-NEXT: .LBB63_3: # in Loop: Header=BB63_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB63_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a4, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_umin_i8_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: li a3, 255
+; RV32IA-WMO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB63_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a4, a3
+; RV32IA-WMO-NOZACAS-NEXT: mv a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: bgeu a1, a6, .LBB63_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB63_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: .LBB63_3: # in Loop: Header=BB63_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB63_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_umin_i8_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: li a3, 255
-; RV32IA-TSO-NEXT: zext.b a1, a1
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB63_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a4, (a2)
-; RV32IA-TSO-NEXT: and a6, a4, a3
-; RV32IA-TSO-NEXT: mv a5, a4
-; RV32IA-TSO-NEXT: bgeu a1, a6, .LBB63_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB63_1 Depth=1
-; RV32IA-TSO-NEXT: xor a5, a4, a1
-; RV32IA-TSO-NEXT: and a5, a5, a3
-; RV32IA-TSO-NEXT: xor a5, a4, a5
-; RV32IA-TSO-NEXT: .LBB63_3: # in Loop: Header=BB63_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB63_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a4, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_umin_i8_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: li a3, 255
+; RV32IA-TSO-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB63_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a4, a3
+; RV32IA-TSO-NOZACAS-NEXT: mv a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: bgeu a1, a6, .LBB63_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB63_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: .LBB63_3: # in Loop: Header=BB63_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB63_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_umin_i8_acq_rel:
; RV64I: # %bb.0:
@@ -9581,6 +12471,54 @@ define i8 @atomicrmw_umin_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_umin_i8_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: li a3, 255
+; RV32IA-WMO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB63_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a4, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a6, a4, a3
+; RV32IA-WMO-ZACAS-NEXT: mv a5, a4
+; RV32IA-WMO-ZACAS-NEXT: bgeu a1, a6, .LBB63_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB63_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a1
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: .LBB63_3: # in Loop: Header=BB63_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB63_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_umin_i8_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: li a3, 255
+; RV32IA-TSO-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB63_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a4, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a6, a4, a3
+; RV32IA-TSO-ZACAS-NEXT: mv a5, a4
+; RV32IA-TSO-ZACAS-NEXT: bgeu a1, a6, .LBB63_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB63_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a1
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: .LBB63_3: # in Loop: Header=BB63_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB63_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_umin_i8_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -9629,6 +12567,16 @@ define i8 @atomicrmw_umin_i8_acq_rel(ptr %a, i8 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_umin_i8_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amominu.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_umin_i8_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amominu.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_umin_i8_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amominu.b.aqrl a0, a1, (a0)
@@ -9683,29 +12631,29 @@ define i8 @atomicrmw_umin_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_umin_i8_seq_cst:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: li a3, 255
-; RV32IA-NEXT: zext.b a1, a1
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB64_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w.aqrl a4, (a2)
-; RV32IA-NEXT: and a6, a4, a3
-; RV32IA-NEXT: mv a5, a4
-; RV32IA-NEXT: bgeu a1, a6, .LBB64_3
-; RV32IA-NEXT: # %bb.2: # in Loop: Header=BB64_1 Depth=1
-; RV32IA-NEXT: xor a5, a4, a1
-; RV32IA-NEXT: and a5, a5, a3
-; RV32IA-NEXT: xor a5, a4, a5
-; RV32IA-NEXT: .LBB64_3: # in Loop: Header=BB64_1 Depth=1
-; RV32IA-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB64_1
-; RV32IA-NEXT: # %bb.4:
-; RV32IA-NEXT: srl a0, a4, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_umin_i8_seq_cst:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: li a3, 255
+; RV32IA-NOZACAS-NEXT: zext.b a1, a1
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB64_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w.aqrl a4, (a2)
+; RV32IA-NOZACAS-NEXT: and a6, a4, a3
+; RV32IA-NOZACAS-NEXT: mv a5, a4
+; RV32IA-NOZACAS-NEXT: bgeu a1, a6, .LBB64_3
+; RV32IA-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB64_1 Depth=1
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a1
+; RV32IA-NOZACAS-NEXT: and a5, a5, a3
+; RV32IA-NOZACAS-NEXT: xor a5, a4, a5
+; RV32IA-NOZACAS-NEXT: .LBB64_3: # in Loop: Header=BB64_1 Depth=1
+; RV32IA-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB64_1
+; RV32IA-NOZACAS-NEXT: # %bb.4:
+; RV32IA-NOZACAS-NEXT: srl a0, a4, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_umin_i8_seq_cst:
; RV64I: # %bb.0:
@@ -9771,6 +12719,30 @@ define i8 @atomicrmw_umin_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a4, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_umin_i8_seq_cst:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: li a3, 255
+; RV32IA-ZACAS-NEXT: zext.b a1, a1
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB64_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w.aqrl a4, (a2)
+; RV32IA-ZACAS-NEXT: and a6, a4, a3
+; RV32IA-ZACAS-NEXT: mv a5, a4
+; RV32IA-ZACAS-NEXT: bgeu a1, a6, .LBB64_3
+; RV32IA-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB64_1 Depth=1
+; RV32IA-ZACAS-NEXT: xor a5, a4, a1
+; RV32IA-ZACAS-NEXT: and a5, a5, a3
+; RV32IA-ZACAS-NEXT: xor a5, a4, a5
+; RV32IA-ZACAS-NEXT: .LBB64_3: # in Loop: Header=BB64_1 Depth=1
+; RV32IA-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB64_1
+; RV32IA-ZACAS-NEXT: # %bb.4:
+; RV32IA-ZACAS-NEXT: srl a0, a4, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_umin_i8_seq_cst:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -9795,6 +12767,16 @@ define i8 @atomicrmw_umin_i8_seq_cst(ptr %a, i8 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a4, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_umin_i8_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amominu.b.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_umin_i8_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amominu.b a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_umin_i8_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amominu.b.aqrl a0, a1, (a0)
@@ -9819,26 +12801,26 @@ define i16 @atomicrmw_xchg_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_xchg_i16_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: lui a3, 16
-; RV32IA-NEXT: addi a3, a3, -1
-; RV32IA-NEXT: sll a4, a3, a0
-; RV32IA-NEXT: and a1, a1, a3
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB65_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w a3, (a2)
-; RV32IA-NEXT: mv a5, a1
-; RV32IA-NEXT: xor a5, a3, a5
-; RV32IA-NEXT: and a5, a5, a4
-; RV32IA-NEXT: xor a5, a3, a5
-; RV32IA-NEXT: sc.w a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB65_1
-; RV32IA-NEXT: # %bb.2:
-; RV32IA-NEXT: srl a0, a3, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_xchg_i16_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB65_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-NOZACAS-NEXT: mv a5, a1
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB65_1
+; RV32IA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_i16_monotonic:
; RV64I: # %bb.0:
@@ -9871,6 +12853,27 @@ define i16 @atomicrmw_xchg_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_xchg_i16_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: lui a3, 16
+; RV32IA-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB65_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-ZACAS-NEXT: mv a5, a1
+; RV32IA-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB65_1
+; RV32IA-ZACAS-NEXT: # %bb.2:
+; RV32IA-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_xchg_i16_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -9892,6 +12895,16 @@ define i16 @atomicrmw_xchg_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_i16_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoswap.h a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_i16_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoswap.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_i16_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoswap.h a0, a1, (a0)
@@ -9916,47 +12929,47 @@ define i16 @atomicrmw_xchg_i16_acquire(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_i16_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB66_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a3, (a2)
-; RV32IA-WMO-NEXT: mv a5, a1
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: and a5, a5, a4
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB66_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a3, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_i16_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB66_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: mv a5, a1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB66_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_i16_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB66_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a3, (a2)
-; RV32IA-TSO-NEXT: mv a5, a1
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: and a5, a5, a4
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB66_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a3, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_i16_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB66_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: mv a5, a1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB66_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_i16_acquire:
; RV64I: # %bb.0:
@@ -10010,6 +13023,48 @@ define i16 @atomicrmw_xchg_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_i16_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB66_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-ZACAS-NEXT: mv a5, a1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB66_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_i16_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB66_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZACAS-NEXT: mv a5, a1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB66_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_i16_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -10052,6 +13107,16 @@ define i16 @atomicrmw_xchg_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_i16_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoswap.h.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_i16_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoswap.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_i16_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoswap.h.aq a0, a1, (a0)
@@ -10076,47 +13141,47 @@ define i16 @atomicrmw_xchg_i16_release(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_i16_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB67_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w a3, (a2)
-; RV32IA-WMO-NEXT: mv a5, a1
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: and a5, a5, a4
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB67_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a3, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_i16_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB67_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: mv a5, a1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB67_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_i16_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB67_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a3, (a2)
-; RV32IA-TSO-NEXT: mv a5, a1
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: and a5, a5, a4
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB67_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a3, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_i16_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB67_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: mv a5, a1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB67_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_i16_release:
; RV64I: # %bb.0:
@@ -10170,6 +13235,48 @@ define i16 @atomicrmw_xchg_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_i16_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB67_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-WMO-ZACAS-NEXT: mv a5, a1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB67_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_i16_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB67_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZACAS-NEXT: mv a5, a1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB67_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_i16_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -10212,6 +13319,16 @@ define i16 @atomicrmw_xchg_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_i16_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoswap.h.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_i16_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoswap.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_i16_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoswap.h.rl a0, a1, (a0)
@@ -10236,47 +13353,47 @@ define i16 @atomicrmw_xchg_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_i16_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB68_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a3, (a2)
-; RV32IA-WMO-NEXT: mv a5, a1
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: and a5, a5, a4
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB68_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a3, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_i16_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB68_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: mv a5, a1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB68_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_i16_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB68_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a3, (a2)
-; RV32IA-TSO-NEXT: mv a5, a1
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: and a5, a5, a4
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB68_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a3, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_i16_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB68_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: mv a5, a1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB68_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_i16_acq_rel:
; RV64I: # %bb.0:
@@ -10330,6 +13447,48 @@ define i16 @atomicrmw_xchg_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_i16_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB68_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-ZACAS-NEXT: mv a5, a1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB68_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_i16_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB68_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZACAS-NEXT: mv a5, a1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB68_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_i16_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -10372,6 +13531,16 @@ define i16 @atomicrmw_xchg_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_i16_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoswap.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_i16_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoswap.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_i16_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoswap.h.aqrl a0, a1, (a0)
@@ -10396,26 +13565,26 @@ define i16 @atomicrmw_xchg_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_xchg_i16_seq_cst:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: lui a3, 16
-; RV32IA-NEXT: addi a3, a3, -1
-; RV32IA-NEXT: sll a4, a3, a0
-; RV32IA-NEXT: and a1, a1, a3
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB69_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w.aqrl a3, (a2)
-; RV32IA-NEXT: mv a5, a1
-; RV32IA-NEXT: xor a5, a3, a5
-; RV32IA-NEXT: and a5, a5, a4
-; RV32IA-NEXT: xor a5, a3, a5
-; RV32IA-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB69_1
-; RV32IA-NEXT: # %bb.2:
-; RV32IA-NEXT: srl a0, a3, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_xchg_i16_seq_cst:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB69_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w.aqrl a3, (a2)
+; RV32IA-NOZACAS-NEXT: mv a5, a1
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB69_1
+; RV32IA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_i16_seq_cst:
; RV64I: # %bb.0:
@@ -10448,6 +13617,27 @@ define i16 @atomicrmw_xchg_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_xchg_i16_seq_cst:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: lui a3, 16
+; RV32IA-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB69_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w.aqrl a3, (a2)
+; RV32IA-ZACAS-NEXT: mv a5, a1
+; RV32IA-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB69_1
+; RV32IA-ZACAS-NEXT: # %bb.2:
+; RV32IA-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_xchg_i16_seq_cst:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -10469,6 +13659,16 @@ define i16 @atomicrmw_xchg_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_i16_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoswap.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_i16_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoswap.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_i16_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoswap.h.aqrl a0, a1, (a0)
@@ -10497,17 +13697,17 @@ define i16 @atomicrmw_xchg_0_i16_monotonic(ptr %a) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_xchg_0_i16_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a1, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: lui a2, 16
-; RV32IA-NEXT: addi a2, a2, -1
-; RV32IA-NEXT: sll a2, a2, a0
-; RV32IA-NEXT: not a2, a2
-; RV32IA-NEXT: amoand.w a1, a2, (a1)
-; RV32IA-NEXT: srl a0, a1, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_xchg_0_i16_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: lui a2, 16
+; RV32IA-NOZACAS-NEXT: addi a2, a2, -1
+; RV32IA-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-NOZACAS-NEXT: not a2, a2
+; RV32IA-NOZACAS-NEXT: amoand.w a1, a2, (a1)
+; RV32IA-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_0_i16_monotonic:
; RV64I: # %bb.0:
@@ -10532,6 +13732,18 @@ define i16 @atomicrmw_xchg_0_i16_monotonic(ptr %a) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_xchg_0_i16_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: lui a2, 16
+; RV32IA-ZACAS-NEXT: addi a2, a2, -1
+; RV32IA-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-ZACAS-NEXT: not a2, a2
+; RV32IA-ZACAS-NEXT: amoand.w a1, a2, (a1)
+; RV32IA-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_xchg_0_i16_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a1, a0, -4
@@ -10544,6 +13756,16 @@ define i16 @atomicrmw_xchg_0_i16_monotonic(ptr %a) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_0_i16_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoswap.h a0, zero, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_0_i16_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoswap.h a0, zero, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_0_i16_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoswap.h a0, zero, (a0)
@@ -10569,29 +13791,29 @@ define i16 @atomicrmw_xchg_0_i16_acquire(ptr %a) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_0_i16_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a1, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a2, 16
-; RV32IA-WMO-NEXT: addi a2, a2, -1
-; RV32IA-WMO-NEXT: sll a2, a2, a0
-; RV32IA-WMO-NEXT: not a2, a2
-; RV32IA-WMO-NEXT: amoand.w.aq a1, a2, (a1)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_0_i16_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a2, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a2, a2, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-NOZACAS-NEXT: not a2, a2
+; RV32IA-WMO-NOZACAS-NEXT: amoand.w.aq a1, a2, (a1)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_0_i16_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a1, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a2, 16
-; RV32IA-TSO-NEXT: addi a2, a2, -1
-; RV32IA-TSO-NEXT: sll a2, a2, a0
-; RV32IA-TSO-NEXT: not a2, a2
-; RV32IA-TSO-NEXT: amoand.w a1, a2, (a1)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_0_i16_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a2, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a2, a2, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-NOZACAS-NEXT: not a2, a2
+; RV32IA-TSO-NOZACAS-NEXT: amoand.w a1, a2, (a1)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_0_i16_acquire:
; RV64I: # %bb.0:
@@ -10628,6 +13850,30 @@ define i16 @atomicrmw_xchg_0_i16_acquire(ptr %a) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_0_i16_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a2, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a2, a2, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-ZACAS-NEXT: not a2, a2
+; RV32IA-WMO-ZACAS-NEXT: amoand.w.aq a1, a2, (a1)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_0_i16_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a2, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a2, a2, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-ZACAS-NEXT: not a2, a2
+; RV32IA-TSO-ZACAS-NEXT: amoand.w a1, a2, (a1)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_0_i16_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a1, a0, -4
@@ -10652,6 +13898,16 @@ define i16 @atomicrmw_xchg_0_i16_acquire(ptr %a) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_0_i16_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoswap.h.aq a0, zero, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_0_i16_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoswap.h a0, zero, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_0_i16_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoswap.h.aq a0, zero, (a0)
@@ -10677,29 +13933,29 @@ define i16 @atomicrmw_xchg_0_i16_release(ptr %a) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_0_i16_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a1, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a2, 16
-; RV32IA-WMO-NEXT: addi a2, a2, -1
-; RV32IA-WMO-NEXT: sll a2, a2, a0
-; RV32IA-WMO-NEXT: not a2, a2
-; RV32IA-WMO-NEXT: amoand.w.rl a1, a2, (a1)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_0_i16_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a2, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a2, a2, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-NOZACAS-NEXT: not a2, a2
+; RV32IA-WMO-NOZACAS-NEXT: amoand.w.rl a1, a2, (a1)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_0_i16_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a1, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a2, 16
-; RV32IA-TSO-NEXT: addi a2, a2, -1
-; RV32IA-TSO-NEXT: sll a2, a2, a0
-; RV32IA-TSO-NEXT: not a2, a2
-; RV32IA-TSO-NEXT: amoand.w a1, a2, (a1)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_0_i16_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a2, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a2, a2, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-NOZACAS-NEXT: not a2, a2
+; RV32IA-TSO-NOZACAS-NEXT: amoand.w a1, a2, (a1)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_0_i16_release:
; RV64I: # %bb.0:
@@ -10736,6 +13992,30 @@ define i16 @atomicrmw_xchg_0_i16_release(ptr %a) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_0_i16_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a2, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a2, a2, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-ZACAS-NEXT: not a2, a2
+; RV32IA-WMO-ZACAS-NEXT: amoand.w.rl a1, a2, (a1)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_0_i16_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a2, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a2, a2, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-ZACAS-NEXT: not a2, a2
+; RV32IA-TSO-ZACAS-NEXT: amoand.w a1, a2, (a1)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_0_i16_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a1, a0, -4
@@ -10760,6 +14040,16 @@ define i16 @atomicrmw_xchg_0_i16_release(ptr %a) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_0_i16_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoswap.h.rl a0, zero, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_0_i16_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoswap.h a0, zero, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_0_i16_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoswap.h.rl a0, zero, (a0)
@@ -10785,29 +14075,29 @@ define i16 @atomicrmw_xchg_0_i16_acq_rel(ptr %a) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_0_i16_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a1, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a2, 16
-; RV32IA-WMO-NEXT: addi a2, a2, -1
-; RV32IA-WMO-NEXT: sll a2, a2, a0
-; RV32IA-WMO-NEXT: not a2, a2
-; RV32IA-WMO-NEXT: amoand.w.aqrl a1, a2, (a1)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_0_i16_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a2, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a2, a2, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-NOZACAS-NEXT: not a2, a2
+; RV32IA-WMO-NOZACAS-NEXT: amoand.w.aqrl a1, a2, (a1)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_0_i16_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a1, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a2, 16
-; RV32IA-TSO-NEXT: addi a2, a2, -1
-; RV32IA-TSO-NEXT: sll a2, a2, a0
-; RV32IA-TSO-NEXT: not a2, a2
-; RV32IA-TSO-NEXT: amoand.w a1, a2, (a1)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_0_i16_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a2, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a2, a2, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-NOZACAS-NEXT: not a2, a2
+; RV32IA-TSO-NOZACAS-NEXT: amoand.w a1, a2, (a1)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_0_i16_acq_rel:
; RV64I: # %bb.0:
@@ -10844,6 +14134,30 @@ define i16 @atomicrmw_xchg_0_i16_acq_rel(ptr %a) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_0_i16_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a2, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a2, a2, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-ZACAS-NEXT: not a2, a2
+; RV32IA-WMO-ZACAS-NEXT: amoand.w.aqrl a1, a2, (a1)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_0_i16_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a2, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a2, a2, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-ZACAS-NEXT: not a2, a2
+; RV32IA-TSO-ZACAS-NEXT: amoand.w a1, a2, (a1)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_0_i16_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a1, a0, -4
@@ -10868,6 +14182,16 @@ define i16 @atomicrmw_xchg_0_i16_acq_rel(ptr %a) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_0_i16_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoswap.h.aqrl a0, zero, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_0_i16_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoswap.h a0, zero, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_0_i16_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoswap.h.aqrl a0, zero, (a0)
@@ -10893,29 +14217,29 @@ define i16 @atomicrmw_xchg_0_i16_seq_cst(ptr %a) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_0_i16_seq_cst:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a1, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a2, 16
-; RV32IA-WMO-NEXT: addi a2, a2, -1
-; RV32IA-WMO-NEXT: sll a2, a2, a0
-; RV32IA-WMO-NEXT: not a2, a2
-; RV32IA-WMO-NEXT: amoand.w.aqrl a1, a2, (a1)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_0_i16_seq_cst:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a2, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a2, a2, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-NOZACAS-NEXT: not a2, a2
+; RV32IA-WMO-NOZACAS-NEXT: amoand.w.aqrl a1, a2, (a1)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_0_i16_seq_cst:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a1, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a2, 16
-; RV32IA-TSO-NEXT: addi a2, a2, -1
-; RV32IA-TSO-NEXT: sll a2, a2, a0
-; RV32IA-TSO-NEXT: not a2, a2
-; RV32IA-TSO-NEXT: amoand.w a1, a2, (a1)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_0_i16_seq_cst:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a2, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a2, a2, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-NOZACAS-NEXT: not a2, a2
+; RV32IA-TSO-NOZACAS-NEXT: amoand.w a1, a2, (a1)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_0_i16_seq_cst:
; RV64I: # %bb.0:
@@ -10952,6 +14276,30 @@ define i16 @atomicrmw_xchg_0_i16_seq_cst(ptr %a) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_0_i16_seq_cst:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a2, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a2, a2, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-ZACAS-NEXT: not a2, a2
+; RV32IA-WMO-ZACAS-NEXT: amoand.w.aqrl a1, a2, (a1)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_0_i16_seq_cst:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a2, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a2, a2, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-ZACAS-NEXT: not a2, a2
+; RV32IA-TSO-ZACAS-NEXT: amoand.w a1, a2, (a1)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_0_i16_seq_cst:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a1, a0, -4
@@ -10976,6 +14324,16 @@ define i16 @atomicrmw_xchg_0_i16_seq_cst(ptr %a) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_0_i16_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoswap.h.aqrl a0, zero, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_0_i16_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoswap.h a0, zero, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_0_i16_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoswap.h.aqrl a0, zero, (a0)
@@ -11002,16 +14360,16 @@ define i16 @atomicrmw_xchg_minus_1_i16_monotonic(ptr %a) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_xchg_minus_1_i16_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a1, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: lui a2, 16
-; RV32IA-NEXT: addi a2, a2, -1
-; RV32IA-NEXT: sll a2, a2, a0
-; RV32IA-NEXT: amoor.w a1, a2, (a1)
-; RV32IA-NEXT: srl a0, a1, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_xchg_minus_1_i16_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: lui a2, 16
+; RV32IA-NOZACAS-NEXT: addi a2, a2, -1
+; RV32IA-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-NOZACAS-NEXT: amoor.w a1, a2, (a1)
+; RV32IA-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_minus_1_i16_monotonic:
; RV64I: # %bb.0:
@@ -11036,6 +14394,17 @@ define i16 @atomicrmw_xchg_minus_1_i16_monotonic(ptr %a) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_xchg_minus_1_i16_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: lui a2, 16
+; RV32IA-ZACAS-NEXT: addi a2, a2, -1
+; RV32IA-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-ZACAS-NEXT: amoor.w a1, a2, (a1)
+; RV32IA-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_xchg_minus_1_i16_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a1, a0, -4
@@ -11047,6 +14416,18 @@ define i16 @atomicrmw_xchg_minus_1_i16_monotonic(ptr %a) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i16_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: li a1, -1
+; RV32IA-WMO-ZABHA-NEXT: amoswap.h a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i16_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: li a1, -1
+; RV32IA-TSO-ZABHA-NEXT: amoswap.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i16_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: li a1, -1
@@ -11075,27 +14456,27 @@ define i16 @atomicrmw_xchg_minus_1_i16_acquire(ptr %a) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_minus_1_i16_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a1, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a2, 16
-; RV32IA-WMO-NEXT: addi a2, a2, -1
-; RV32IA-WMO-NEXT: sll a2, a2, a0
-; RV32IA-WMO-NEXT: amoor.w.aq a1, a2, (a1)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_minus_1_i16_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a2, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a2, a2, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoor.w.aq a1, a2, (a1)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_minus_1_i16_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a1, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a2, 16
-; RV32IA-TSO-NEXT: addi a2, a2, -1
-; RV32IA-TSO-NEXT: sll a2, a2, a0
-; RV32IA-TSO-NEXT: amoor.w a1, a2, (a1)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_minus_1_i16_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a2, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a2, a2, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoor.w a1, a2, (a1)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_minus_1_i16_acquire:
; RV64I: # %bb.0:
@@ -11131,6 +14512,28 @@ define i16 @atomicrmw_xchg_minus_1_i16_acquire(ptr %a) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i16_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a2, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a2, a2, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-ZACAS-NEXT: amoor.w.aq a1, a2, (a1)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i16_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a2, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a2, a2, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-ZACAS-NEXT: amoor.w a1, a2, (a1)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i16_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a1, a0, -4
@@ -11153,6 +14556,18 @@ define i16 @atomicrmw_xchg_minus_1_i16_acquire(ptr %a) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i16_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: li a1, -1
+; RV32IA-WMO-ZABHA-NEXT: amoswap.h.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i16_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: li a1, -1
+; RV32IA-TSO-ZABHA-NEXT: amoswap.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i16_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: li a1, -1
@@ -11181,27 +14596,27 @@ define i16 @atomicrmw_xchg_minus_1_i16_release(ptr %a) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_minus_1_i16_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a1, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a2, 16
-; RV32IA-WMO-NEXT: addi a2, a2, -1
-; RV32IA-WMO-NEXT: sll a2, a2, a0
-; RV32IA-WMO-NEXT: amoor.w.rl a1, a2, (a1)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_minus_1_i16_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a2, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a2, a2, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoor.w.rl a1, a2, (a1)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_minus_1_i16_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a1, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a2, 16
-; RV32IA-TSO-NEXT: addi a2, a2, -1
-; RV32IA-TSO-NEXT: sll a2, a2, a0
-; RV32IA-TSO-NEXT: amoor.w a1, a2, (a1)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_minus_1_i16_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a2, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a2, a2, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoor.w a1, a2, (a1)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_minus_1_i16_release:
; RV64I: # %bb.0:
@@ -11237,6 +14652,28 @@ define i16 @atomicrmw_xchg_minus_1_i16_release(ptr %a) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i16_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a2, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a2, a2, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-ZACAS-NEXT: amoor.w.rl a1, a2, (a1)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i16_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a2, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a2, a2, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-ZACAS-NEXT: amoor.w a1, a2, (a1)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i16_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a1, a0, -4
@@ -11259,6 +14696,18 @@ define i16 @atomicrmw_xchg_minus_1_i16_release(ptr %a) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i16_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: li a1, -1
+; RV32IA-WMO-ZABHA-NEXT: amoswap.h.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i16_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: li a1, -1
+; RV32IA-TSO-ZABHA-NEXT: amoswap.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i16_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: li a1, -1
@@ -11287,27 +14736,27 @@ define i16 @atomicrmw_xchg_minus_1_i16_acq_rel(ptr %a) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_minus_1_i16_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a1, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a2, 16
-; RV32IA-WMO-NEXT: addi a2, a2, -1
-; RV32IA-WMO-NEXT: sll a2, a2, a0
-; RV32IA-WMO-NEXT: amoor.w.aqrl a1, a2, (a1)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_minus_1_i16_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a2, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a2, a2, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoor.w.aqrl a1, a2, (a1)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_minus_1_i16_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a1, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a2, 16
-; RV32IA-TSO-NEXT: addi a2, a2, -1
-; RV32IA-TSO-NEXT: sll a2, a2, a0
-; RV32IA-TSO-NEXT: amoor.w a1, a2, (a1)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_minus_1_i16_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a2, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a2, a2, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoor.w a1, a2, (a1)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_minus_1_i16_acq_rel:
; RV64I: # %bb.0:
@@ -11343,6 +14792,28 @@ define i16 @atomicrmw_xchg_minus_1_i16_acq_rel(ptr %a) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i16_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a2, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a2, a2, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-ZACAS-NEXT: amoor.w.aqrl a1, a2, (a1)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i16_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a2, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a2, a2, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-ZACAS-NEXT: amoor.w a1, a2, (a1)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i16_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a1, a0, -4
@@ -11365,6 +14836,18 @@ define i16 @atomicrmw_xchg_minus_1_i16_acq_rel(ptr %a) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i16_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: li a1, -1
+; RV32IA-WMO-ZABHA-NEXT: amoswap.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i16_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: li a1, -1
+; RV32IA-TSO-ZABHA-NEXT: amoswap.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i16_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: li a1, -1
@@ -11393,27 +14876,27 @@ define i16 @atomicrmw_xchg_minus_1_i16_seq_cst(ptr %a) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xchg_minus_1_i16_seq_cst:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a1, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a2, 16
-; RV32IA-WMO-NEXT: addi a2, a2, -1
-; RV32IA-WMO-NEXT: sll a2, a2, a0
-; RV32IA-WMO-NEXT: amoor.w.aqrl a1, a2, (a1)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xchg_minus_1_i16_seq_cst:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a2, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a2, a2, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoor.w.aqrl a1, a2, (a1)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xchg_minus_1_i16_seq_cst:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a1, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a2, 16
-; RV32IA-TSO-NEXT: addi a2, a2, -1
-; RV32IA-TSO-NEXT: sll a2, a2, a0
-; RV32IA-TSO-NEXT: amoor.w a1, a2, (a1)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xchg_minus_1_i16_seq_cst:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a2, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a2, a2, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoor.w a1, a2, (a1)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xchg_minus_1_i16_seq_cst:
; RV64I: # %bb.0:
@@ -11449,6 +14932,28 @@ define i16 @atomicrmw_xchg_minus_1_i16_seq_cst(ptr %a) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i16_seq_cst:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a2, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a2, a2, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-WMO-ZACAS-NEXT: amoor.w.aqrl a1, a2, (a1)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i16_seq_cst:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a1, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a2, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a2, a2, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a2, a2, a0
+; RV32IA-TSO-ZACAS-NEXT: amoor.w a1, a2, (a1)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xchg_minus_1_i16_seq_cst:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a1, a0, -4
@@ -11471,6 +14976,18 @@ define i16 @atomicrmw_xchg_minus_1_i16_seq_cst(ptr %a) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i16_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: li a1, -1
+; RV32IA-WMO-ZABHA-NEXT: amoswap.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i16_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: li a1, -1
+; RV32IA-TSO-ZABHA-NEXT: amoswap.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xchg_minus_1_i16_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: li a1, -1
@@ -11497,26 +15014,26 @@ define i16 @atomicrmw_add_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_add_i16_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: lui a3, 16
-; RV32IA-NEXT: addi a3, a3, -1
-; RV32IA-NEXT: sll a4, a3, a0
-; RV32IA-NEXT: and a1, a1, a3
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB80_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w a3, (a2)
-; RV32IA-NEXT: add a5, a3, a1
-; RV32IA-NEXT: xor a5, a3, a5
-; RV32IA-NEXT: and a5, a5, a4
-; RV32IA-NEXT: xor a5, a3, a5
-; RV32IA-NEXT: sc.w a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB80_1
-; RV32IA-NEXT: # %bb.2:
-; RV32IA-NEXT: srl a0, a3, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_add_i16_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB80_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-NOZACAS-NEXT: add a5, a3, a1
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB80_1
+; RV32IA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_add_i16_monotonic:
; RV64I: # %bb.0:
@@ -11549,6 +15066,27 @@ define i16 @atomicrmw_add_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_add_i16_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: lui a3, 16
+; RV32IA-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB80_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-ZACAS-NEXT: add a5, a3, a1
+; RV32IA-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB80_1
+; RV32IA-ZACAS-NEXT: # %bb.2:
+; RV32IA-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_add_i16_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -11570,6 +15108,16 @@ define i16 @atomicrmw_add_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_add_i16_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoadd.h a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_add_i16_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoadd.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_add_i16_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoadd.h a0, a1, (a0)
@@ -11594,47 +15142,47 @@ define i16 @atomicrmw_add_i16_acquire(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_add_i16_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB81_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a3, (a2)
-; RV32IA-WMO-NEXT: add a5, a3, a1
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: and a5, a5, a4
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB81_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a3, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_add_i16_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB81_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: add a5, a3, a1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB81_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_add_i16_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB81_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a3, (a2)
-; RV32IA-TSO-NEXT: add a5, a3, a1
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: and a5, a5, a4
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB81_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a3, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_add_i16_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB81_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: add a5, a3, a1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB81_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_add_i16_acquire:
; RV64I: # %bb.0:
@@ -11688,6 +15236,48 @@ define i16 @atomicrmw_add_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_add_i16_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB81_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-ZACAS-NEXT: add a5, a3, a1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB81_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_add_i16_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB81_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZACAS-NEXT: add a5, a3, a1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB81_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_add_i16_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -11730,6 +15320,16 @@ define i16 @atomicrmw_add_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_add_i16_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoadd.h.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_add_i16_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoadd.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_add_i16_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoadd.h.aq a0, a1, (a0)
@@ -11754,47 +15354,47 @@ define i16 @atomicrmw_add_i16_release(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_add_i16_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB82_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w a3, (a2)
-; RV32IA-WMO-NEXT: add a5, a3, a1
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: and a5, a5, a4
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB82_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a3, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_add_i16_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB82_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: add a5, a3, a1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB82_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_add_i16_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB82_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a3, (a2)
-; RV32IA-TSO-NEXT: add a5, a3, a1
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: and a5, a5, a4
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB82_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a3, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_add_i16_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB82_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: add a5, a3, a1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB82_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_add_i16_release:
; RV64I: # %bb.0:
@@ -11848,6 +15448,48 @@ define i16 @atomicrmw_add_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_add_i16_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB82_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-WMO-ZACAS-NEXT: add a5, a3, a1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB82_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_add_i16_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB82_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZACAS-NEXT: add a5, a3, a1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB82_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_add_i16_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -11890,6 +15532,16 @@ define i16 @atomicrmw_add_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_add_i16_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoadd.h.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_add_i16_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoadd.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_add_i16_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoadd.h.rl a0, a1, (a0)
@@ -11914,47 +15566,47 @@ define i16 @atomicrmw_add_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_add_i16_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB83_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a3, (a2)
-; RV32IA-WMO-NEXT: add a5, a3, a1
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: and a5, a5, a4
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB83_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a3, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_add_i16_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB83_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: add a5, a3, a1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB83_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_add_i16_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB83_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a3, (a2)
-; RV32IA-TSO-NEXT: add a5, a3, a1
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: and a5, a5, a4
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB83_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a3, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_add_i16_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB83_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: add a5, a3, a1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB83_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_add_i16_acq_rel:
; RV64I: # %bb.0:
@@ -12008,6 +15660,48 @@ define i16 @atomicrmw_add_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_add_i16_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB83_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-ZACAS-NEXT: add a5, a3, a1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB83_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_add_i16_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB83_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZACAS-NEXT: add a5, a3, a1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB83_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_add_i16_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -12050,6 +15744,16 @@ define i16 @atomicrmw_add_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_add_i16_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoadd.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_add_i16_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoadd.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_add_i16_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoadd.h.aqrl a0, a1, (a0)
@@ -12074,26 +15778,26 @@ define i16 @atomicrmw_add_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_add_i16_seq_cst:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: lui a3, 16
-; RV32IA-NEXT: addi a3, a3, -1
-; RV32IA-NEXT: sll a4, a3, a0
-; RV32IA-NEXT: and a1, a1, a3
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB84_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w.aqrl a3, (a2)
-; RV32IA-NEXT: add a5, a3, a1
-; RV32IA-NEXT: xor a5, a3, a5
-; RV32IA-NEXT: and a5, a5, a4
-; RV32IA-NEXT: xor a5, a3, a5
-; RV32IA-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB84_1
-; RV32IA-NEXT: # %bb.2:
-; RV32IA-NEXT: srl a0, a3, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_add_i16_seq_cst:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB84_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w.aqrl a3, (a2)
+; RV32IA-NOZACAS-NEXT: add a5, a3, a1
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB84_1
+; RV32IA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_add_i16_seq_cst:
; RV64I: # %bb.0:
@@ -12126,6 +15830,27 @@ define i16 @atomicrmw_add_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_add_i16_seq_cst:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: lui a3, 16
+; RV32IA-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB84_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w.aqrl a3, (a2)
+; RV32IA-ZACAS-NEXT: add a5, a3, a1
+; RV32IA-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB84_1
+; RV32IA-ZACAS-NEXT: # %bb.2:
+; RV32IA-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_add_i16_seq_cst:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -12147,6 +15872,16 @@ define i16 @atomicrmw_add_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_add_i16_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoadd.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_add_i16_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoadd.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_add_i16_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoadd.h.aqrl a0, a1, (a0)
@@ -12171,26 +15906,26 @@ define i16 @atomicrmw_sub_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_sub_i16_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: lui a3, 16
-; RV32IA-NEXT: addi a3, a3, -1
-; RV32IA-NEXT: sll a4, a3, a0
-; RV32IA-NEXT: and a1, a1, a3
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB85_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w a3, (a2)
-; RV32IA-NEXT: sub a5, a3, a1
-; RV32IA-NEXT: xor a5, a3, a5
-; RV32IA-NEXT: and a5, a5, a4
-; RV32IA-NEXT: xor a5, a3, a5
-; RV32IA-NEXT: sc.w a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB85_1
-; RV32IA-NEXT: # %bb.2:
-; RV32IA-NEXT: srl a0, a3, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_sub_i16_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB85_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-NOZACAS-NEXT: sub a5, a3, a1
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB85_1
+; RV32IA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_sub_i16_monotonic:
; RV64I: # %bb.0:
@@ -12223,6 +15958,27 @@ define i16 @atomicrmw_sub_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_sub_i16_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: lui a3, 16
+; RV32IA-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB85_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-ZACAS-NEXT: sub a5, a3, a1
+; RV32IA-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB85_1
+; RV32IA-ZACAS-NEXT: # %bb.2:
+; RV32IA-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_sub_i16_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -12244,6 +16000,18 @@ define i16 @atomicrmw_sub_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_sub_i16_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: neg a1, a1
+; RV32IA-WMO-ZABHA-NEXT: amoadd.h a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_sub_i16_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: neg a1, a1
+; RV32IA-TSO-ZABHA-NEXT: amoadd.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_sub_i16_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: neg a1, a1
@@ -12270,47 +16038,47 @@ define i16 @atomicrmw_sub_i16_acquire(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_sub_i16_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB86_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a3, (a2)
-; RV32IA-WMO-NEXT: sub a5, a3, a1
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: and a5, a5, a4
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB86_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a3, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_sub_i16_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB86_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: sub a5, a3, a1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB86_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_sub_i16_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB86_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a3, (a2)
-; RV32IA-TSO-NEXT: sub a5, a3, a1
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: and a5, a5, a4
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB86_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a3, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_sub_i16_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB86_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: sub a5, a3, a1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB86_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_sub_i16_acquire:
; RV64I: # %bb.0:
@@ -12364,6 +16132,48 @@ define i16 @atomicrmw_sub_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_sub_i16_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB86_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-ZACAS-NEXT: sub a5, a3, a1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB86_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_sub_i16_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB86_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZACAS-NEXT: sub a5, a3, a1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB86_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_sub_i16_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -12406,6 +16216,18 @@ define i16 @atomicrmw_sub_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_sub_i16_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: neg a1, a1
+; RV32IA-WMO-ZABHA-NEXT: amoadd.h.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_sub_i16_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: neg a1, a1
+; RV32IA-TSO-ZABHA-NEXT: amoadd.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_sub_i16_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: neg a1, a1
@@ -12432,47 +16254,47 @@ define i16 @atomicrmw_sub_i16_release(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_sub_i16_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB87_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w a3, (a2)
-; RV32IA-WMO-NEXT: sub a5, a3, a1
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: and a5, a5, a4
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB87_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a3, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_sub_i16_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB87_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: sub a5, a3, a1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB87_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_sub_i16_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB87_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a3, (a2)
-; RV32IA-TSO-NEXT: sub a5, a3, a1
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: and a5, a5, a4
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB87_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a3, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_sub_i16_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB87_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: sub a5, a3, a1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB87_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_sub_i16_release:
; RV64I: # %bb.0:
@@ -12526,6 +16348,48 @@ define i16 @atomicrmw_sub_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_sub_i16_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB87_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-WMO-ZACAS-NEXT: sub a5, a3, a1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB87_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_sub_i16_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB87_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZACAS-NEXT: sub a5, a3, a1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB87_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_sub_i16_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -12568,6 +16432,18 @@ define i16 @atomicrmw_sub_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_sub_i16_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: neg a1, a1
+; RV32IA-WMO-ZABHA-NEXT: amoadd.h.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_sub_i16_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: neg a1, a1
+; RV32IA-TSO-ZABHA-NEXT: amoadd.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_sub_i16_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: neg a1, a1
@@ -12594,47 +16470,47 @@ define i16 @atomicrmw_sub_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_sub_i16_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB88_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a3, (a2)
-; RV32IA-WMO-NEXT: sub a5, a3, a1
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: and a5, a5, a4
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB88_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a3, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_sub_i16_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB88_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: sub a5, a3, a1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB88_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_sub_i16_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB88_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a3, (a2)
-; RV32IA-TSO-NEXT: sub a5, a3, a1
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: and a5, a5, a4
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB88_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a3, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_sub_i16_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB88_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: sub a5, a3, a1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB88_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_sub_i16_acq_rel:
; RV64I: # %bb.0:
@@ -12688,6 +16564,48 @@ define i16 @atomicrmw_sub_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_sub_i16_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB88_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-ZACAS-NEXT: sub a5, a3, a1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB88_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_sub_i16_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB88_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZACAS-NEXT: sub a5, a3, a1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB88_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_sub_i16_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -12730,6 +16648,18 @@ define i16 @atomicrmw_sub_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_sub_i16_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: neg a1, a1
+; RV32IA-WMO-ZABHA-NEXT: amoadd.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_sub_i16_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: neg a1, a1
+; RV32IA-TSO-ZABHA-NEXT: amoadd.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_sub_i16_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: neg a1, a1
@@ -12756,26 +16686,26 @@ define i16 @atomicrmw_sub_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_sub_i16_seq_cst:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: lui a3, 16
-; RV32IA-NEXT: addi a3, a3, -1
-; RV32IA-NEXT: sll a4, a3, a0
-; RV32IA-NEXT: and a1, a1, a3
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB89_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w.aqrl a3, (a2)
-; RV32IA-NEXT: sub a5, a3, a1
-; RV32IA-NEXT: xor a5, a3, a5
-; RV32IA-NEXT: and a5, a5, a4
-; RV32IA-NEXT: xor a5, a3, a5
-; RV32IA-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB89_1
-; RV32IA-NEXT: # %bb.2:
-; RV32IA-NEXT: srl a0, a3, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_sub_i16_seq_cst:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB89_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w.aqrl a3, (a2)
+; RV32IA-NOZACAS-NEXT: sub a5, a3, a1
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB89_1
+; RV32IA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_sub_i16_seq_cst:
; RV64I: # %bb.0:
@@ -12808,6 +16738,27 @@ define i16 @atomicrmw_sub_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_sub_i16_seq_cst:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: lui a3, 16
+; RV32IA-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB89_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w.aqrl a3, (a2)
+; RV32IA-ZACAS-NEXT: sub a5, a3, a1
+; RV32IA-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB89_1
+; RV32IA-ZACAS-NEXT: # %bb.2:
+; RV32IA-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_sub_i16_seq_cst:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -12829,6 +16780,18 @@ define i16 @atomicrmw_sub_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_sub_i16_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: neg a1, a1
+; RV32IA-WMO-ZABHA-NEXT: amoadd.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_sub_i16_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: neg a1, a1
+; RV32IA-TSO-ZABHA-NEXT: amoadd.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_sub_i16_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: neg a1, a1
@@ -12855,20 +16818,20 @@ define i16 @atomicrmw_and_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_and_i16_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: lui a3, 16
-; RV32IA-NEXT: addi a3, a3, -1
-; RV32IA-NEXT: sll a4, a3, a0
-; RV32IA-NEXT: and a1, a1, a3
-; RV32IA-NEXT: not a3, a4
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: or a1, a1, a3
-; RV32IA-NEXT: amoand.w a1, a1, (a2)
-; RV32IA-NEXT: srl a0, a1, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_and_i16_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-NOZACAS-NEXT: not a3, a4
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: or a1, a1, a3
+; RV32IA-NOZACAS-NEXT: amoand.w a1, a1, (a2)
+; RV32IA-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_and_i16_monotonic:
; RV64I: # %bb.0:
@@ -12895,6 +16858,21 @@ define i16 @atomicrmw_and_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_and_i16_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: lui a3, 16
+; RV32IA-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-ZACAS-NEXT: not a3, a4
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: or a1, a1, a3
+; RV32IA-ZACAS-NEXT: amoand.w a1, a1, (a2)
+; RV32IA-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_and_i16_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -12910,6 +16888,16 @@ define i16 @atomicrmw_and_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_and_i16_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoand.h a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_and_i16_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoand.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_and_i16_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoand.h a0, a1, (a0)
@@ -12934,35 +16922,35 @@ define i16 @atomicrmw_and_i16_acquire(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_and_i16_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: not a3, a4
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: or a1, a1, a3
-; RV32IA-WMO-NEXT: amoand.w.aq a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_and_i16_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: not a3, a4
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: or a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: amoand.w.aq a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_and_i16_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: not a3, a4
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: or a1, a1, a3
-; RV32IA-TSO-NEXT: amoand.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_and_i16_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: not a3, a4
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: or a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: amoand.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_and_i16_acquire:
; RV64I: # %bb.0:
@@ -13004,6 +16992,36 @@ define i16 @atomicrmw_and_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_and_i16_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: not a3, a4
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: or a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: amoand.w.aq a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_and_i16_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: not a3, a4
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: or a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: amoand.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_and_i16_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -13034,6 +17052,16 @@ define i16 @atomicrmw_and_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_and_i16_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoand.h.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_and_i16_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoand.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_and_i16_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoand.h.aq a0, a1, (a0)
@@ -13058,35 +17086,35 @@ define i16 @atomicrmw_and_i16_release(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_and_i16_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: not a3, a4
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: or a1, a1, a3
-; RV32IA-WMO-NEXT: amoand.w.rl a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_and_i16_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: not a3, a4
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: or a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: amoand.w.rl a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_and_i16_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: not a3, a4
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: or a1, a1, a3
-; RV32IA-TSO-NEXT: amoand.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_and_i16_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: not a3, a4
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: or a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: amoand.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_and_i16_release:
; RV64I: # %bb.0:
@@ -13128,6 +17156,36 @@ define i16 @atomicrmw_and_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_and_i16_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: not a3, a4
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: or a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: amoand.w.rl a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_and_i16_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: not a3, a4
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: or a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: amoand.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_and_i16_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -13158,6 +17216,16 @@ define i16 @atomicrmw_and_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_and_i16_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoand.h.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_and_i16_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoand.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_and_i16_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoand.h.rl a0, a1, (a0)
@@ -13182,35 +17250,35 @@ define i16 @atomicrmw_and_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_and_i16_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: not a3, a4
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: or a1, a1, a3
-; RV32IA-WMO-NEXT: amoand.w.aqrl a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_and_i16_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: not a3, a4
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: or a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: amoand.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_and_i16_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: not a3, a4
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: or a1, a1, a3
-; RV32IA-TSO-NEXT: amoand.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_and_i16_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: not a3, a4
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: or a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: amoand.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_and_i16_acq_rel:
; RV64I: # %bb.0:
@@ -13252,6 +17320,36 @@ define i16 @atomicrmw_and_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_and_i16_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: not a3, a4
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: or a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: amoand.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_and_i16_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: not a3, a4
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: or a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: amoand.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_and_i16_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -13282,6 +17380,16 @@ define i16 @atomicrmw_and_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_and_i16_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoand.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_and_i16_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoand.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_and_i16_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoand.h.aqrl a0, a1, (a0)
@@ -13306,35 +17414,35 @@ define i16 @atomicrmw_and_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_and_i16_seq_cst:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: not a3, a4
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: or a1, a1, a3
-; RV32IA-WMO-NEXT: amoand.w.aqrl a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_and_i16_seq_cst:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: not a3, a4
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: or a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: amoand.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_and_i16_seq_cst:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: not a3, a4
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: or a1, a1, a3
-; RV32IA-TSO-NEXT: amoand.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_and_i16_seq_cst:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: not a3, a4
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: or a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: amoand.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_and_i16_seq_cst:
; RV64I: # %bb.0:
@@ -13376,6 +17484,36 @@ define i16 @atomicrmw_and_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_and_i16_seq_cst:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: not a3, a4
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: or a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: amoand.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_and_i16_seq_cst:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: not a3, a4
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: or a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: amoand.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_and_i16_seq_cst:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -13406,6 +17544,16 @@ define i16 @atomicrmw_and_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_and_i16_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoand.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_and_i16_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoand.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_and_i16_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoand.h.aqrl a0, a1, (a0)
@@ -13430,27 +17578,27 @@ define i16 @atomicrmw_nand_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_nand_i16_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: lui a3, 16
-; RV32IA-NEXT: addi a3, a3, -1
-; RV32IA-NEXT: sll a4, a3, a0
-; RV32IA-NEXT: and a1, a1, a3
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB95_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w a3, (a2)
-; RV32IA-NEXT: and a5, a3, a1
-; RV32IA-NEXT: not a5, a5
-; RV32IA-NEXT: xor a5, a3, a5
-; RV32IA-NEXT: and a5, a5, a4
-; RV32IA-NEXT: xor a5, a3, a5
-; RV32IA-NEXT: sc.w a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB95_1
-; RV32IA-NEXT: # %bb.2:
-; RV32IA-NEXT: srl a0, a3, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_nand_i16_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB95_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-NOZACAS-NEXT: and a5, a3, a1
+; RV32IA-NOZACAS-NEXT: not a5, a5
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB95_1
+; RV32IA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_nand_i16_monotonic:
; RV64I: # %bb.0:
@@ -13484,6 +17632,28 @@ define i16 @atomicrmw_nand_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_nand_i16_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: lui a3, 16
+; RV32IA-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB95_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-ZACAS-NEXT: and a5, a3, a1
+; RV32IA-ZACAS-NEXT: not a5, a5
+; RV32IA-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB95_1
+; RV32IA-ZACAS-NEXT: # %bb.2:
+; RV32IA-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_nand_i16_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -13506,6 +17676,50 @@ define i16 @atomicrmw_nand_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i16_monotonic:
+; RV32IA-WMO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: .LBB95_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a5, a3, a1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: not a5, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: bnez a5, .LBB95_1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i16_monotonic:
+; RV32IA-TSO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: .LBB95_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a5, a3, a1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: not a5, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: bnez a5, .LBB95_1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i16_monotonic:
; RV64IA-WMO-ZABHA-NOZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
@@ -13550,6 +17764,36 @@ define i16 @atomicrmw_nand_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i16_monotonic:
+; RV32IA-WMO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: lhu a0, 0(a0)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: .LBB95_1: # %atomicrmw.start
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: and a3, a0, a1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: not a3, a3
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: slli a4, a0, 16
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: amocas.h a0, a3, (a2)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: srai a4, a4, 16
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: bne a0, a4, .LBB95_1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i16_monotonic:
+; RV32IA-TSO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: lhu a0, 0(a0)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: .LBB95_1: # %atomicrmw.start
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: and a3, a0, a1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: not a3, a3
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: slli a4, a0, 16
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: amocas.h a0, a3, (a2)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: srai a4, a4, 16
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: bne a0, a4, .LBB95_1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i16_monotonic:
; RV64IA-WMO-ZABHA-ZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
@@ -13594,49 +17838,49 @@ define i16 @atomicrmw_nand_i16_acquire(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_nand_i16_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB96_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a3, (a2)
-; RV32IA-WMO-NEXT: and a5, a3, a1
-; RV32IA-WMO-NEXT: not a5, a5
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: and a5, a5, a4
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB96_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a3, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_nand_i16_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB96_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a3, a1
+; RV32IA-WMO-NOZACAS-NEXT: not a5, a5
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB96_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_nand_i16_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB96_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a3, (a2)
-; RV32IA-TSO-NEXT: and a5, a3, a1
-; RV32IA-TSO-NEXT: not a5, a5
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: and a5, a5, a4
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB96_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a3, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_nand_i16_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB96_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a3, a1
+; RV32IA-TSO-NOZACAS-NEXT: not a5, a5
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB96_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_nand_i16_acquire:
; RV64I: # %bb.0:
@@ -13692,6 +17936,50 @@ define i16 @atomicrmw_nand_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_nand_i16_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB96_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a5, a3, a1
+; RV32IA-WMO-ZACAS-NEXT: not a5, a5
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB96_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_nand_i16_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB96_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a5, a3, a1
+; RV32IA-TSO-ZACAS-NEXT: not a5, a5
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB96_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_nand_i16_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -13736,6 +18024,50 @@ define i16 @atomicrmw_nand_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i16_acquire:
+; RV32IA-WMO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: .LBB96_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a5, a3, a1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: not a5, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: bnez a5, .LBB96_1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i16_acquire:
+; RV32IA-TSO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: .LBB96_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a5, a3, a1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: not a5, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: bnez a5, .LBB96_1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i16_acquire:
; RV64IA-WMO-ZABHA-NOZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
@@ -13780,6 +18112,36 @@ define i16 @atomicrmw_nand_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i16_acquire:
+; RV32IA-WMO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: lhu a0, 0(a0)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: .LBB96_1: # %atomicrmw.start
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: and a3, a0, a1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: not a3, a3
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: slli a4, a0, 16
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: amocas.h.aq a0, a3, (a2)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: srai a4, a4, 16
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: bne a0, a4, .LBB96_1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i16_acquire:
+; RV32IA-TSO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: lhu a0, 0(a0)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: .LBB96_1: # %atomicrmw.start
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: and a3, a0, a1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: not a3, a3
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: slli a4, a0, 16
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: amocas.h a0, a3, (a2)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: srai a4, a4, 16
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: bne a0, a4, .LBB96_1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i16_acquire:
; RV64IA-WMO-ZABHA-ZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
@@ -13824,49 +18186,49 @@ define i16 @atomicrmw_nand_i16_release(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_nand_i16_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB97_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w a3, (a2)
-; RV32IA-WMO-NEXT: and a5, a3, a1
-; RV32IA-WMO-NEXT: not a5, a5
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: and a5, a5, a4
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB97_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a3, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_nand_i16_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB97_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a3, a1
+; RV32IA-WMO-NOZACAS-NEXT: not a5, a5
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB97_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_nand_i16_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB97_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a3, (a2)
-; RV32IA-TSO-NEXT: and a5, a3, a1
-; RV32IA-TSO-NEXT: not a5, a5
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: and a5, a5, a4
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB97_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a3, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_nand_i16_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB97_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a3, a1
+; RV32IA-TSO-NOZACAS-NEXT: not a5, a5
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB97_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_nand_i16_release:
; RV64I: # %bb.0:
@@ -13922,6 +18284,50 @@ define i16 @atomicrmw_nand_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_nand_i16_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB97_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a5, a3, a1
+; RV32IA-WMO-ZACAS-NEXT: not a5, a5
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB97_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_nand_i16_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB97_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a5, a3, a1
+; RV32IA-TSO-ZACAS-NEXT: not a5, a5
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB97_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_nand_i16_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -13966,6 +18372,50 @@ define i16 @atomicrmw_nand_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i16_release:
+; RV32IA-WMO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: .LBB97_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a5, a3, a1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: not a5, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: bnez a5, .LBB97_1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i16_release:
+; RV32IA-TSO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: .LBB97_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a5, a3, a1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: not a5, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: bnez a5, .LBB97_1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i16_release:
; RV64IA-WMO-ZABHA-NOZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
@@ -14010,6 +18460,36 @@ define i16 @atomicrmw_nand_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i16_release:
+; RV32IA-WMO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: lhu a0, 0(a0)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: .LBB97_1: # %atomicrmw.start
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: and a3, a0, a1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: not a3, a3
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: slli a4, a0, 16
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: amocas.h.rl a0, a3, (a2)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: srai a4, a4, 16
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: bne a0, a4, .LBB97_1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i16_release:
+; RV32IA-TSO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: lhu a0, 0(a0)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: .LBB97_1: # %atomicrmw.start
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: and a3, a0, a1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: not a3, a3
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: slli a4, a0, 16
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: amocas.h a0, a3, (a2)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: srai a4, a4, 16
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: bne a0, a4, .LBB97_1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i16_release:
; RV64IA-WMO-ZABHA-ZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
@@ -14054,49 +18534,49 @@ define i16 @atomicrmw_nand_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_nand_i16_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB98_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a3, (a2)
-; RV32IA-WMO-NEXT: and a5, a3, a1
-; RV32IA-WMO-NEXT: not a5, a5
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: and a5, a5, a4
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB98_1
-; RV32IA-WMO-NEXT: # %bb.2:
-; RV32IA-WMO-NEXT: srl a0, a3, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_nand_i16_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB98_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a3, a1
+; RV32IA-WMO-NOZACAS-NEXT: not a5, a5
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB98_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_nand_i16_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB98_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a3, (a2)
-; RV32IA-TSO-NEXT: and a5, a3, a1
-; RV32IA-TSO-NEXT: not a5, a5
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: and a5, a5, a4
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB98_1
-; RV32IA-TSO-NEXT: # %bb.2:
-; RV32IA-TSO-NEXT: srl a0, a3, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_nand_i16_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB98_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a3, a1
+; RV32IA-TSO-NOZACAS-NEXT: not a5, a5
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB98_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_nand_i16_acq_rel:
; RV64I: # %bb.0:
@@ -14152,6 +18632,50 @@ define i16 @atomicrmw_nand_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_nand_i16_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB98_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a5, a3, a1
+; RV32IA-WMO-ZACAS-NEXT: not a5, a5
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB98_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_nand_i16_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB98_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a5, a3, a1
+; RV32IA-TSO-ZACAS-NEXT: not a5, a5
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB98_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_nand_i16_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -14196,6 +18720,50 @@ define i16 @atomicrmw_nand_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i16_acq_rel:
+; RV32IA-WMO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: .LBB98_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a5, a3, a1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: not a5, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: bnez a5, .LBB98_1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i16_acq_rel:
+; RV32IA-TSO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: .LBB98_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a5, a3, a1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: not a5, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: bnez a5, .LBB98_1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i16_acq_rel:
; RV64IA-WMO-ZABHA-NOZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
@@ -14240,6 +18808,36 @@ define i16 @atomicrmw_nand_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i16_acq_rel:
+; RV32IA-WMO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: lhu a0, 0(a0)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: .LBB98_1: # %atomicrmw.start
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: and a3, a0, a1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: not a3, a3
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: slli a4, a0, 16
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: amocas.h.aqrl a0, a3, (a2)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: srai a4, a4, 16
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: bne a0, a4, .LBB98_1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i16_acq_rel:
+; RV32IA-TSO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: lhu a0, 0(a0)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: .LBB98_1: # %atomicrmw.start
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: and a3, a0, a1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: not a3, a3
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: slli a4, a0, 16
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: amocas.h a0, a3, (a2)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: srai a4, a4, 16
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: bne a0, a4, .LBB98_1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i16_acq_rel:
; RV64IA-WMO-ZABHA-ZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
@@ -14284,27 +18882,27 @@ define i16 @atomicrmw_nand_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_nand_i16_seq_cst:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: lui a3, 16
-; RV32IA-NEXT: addi a3, a3, -1
-; RV32IA-NEXT: sll a4, a3, a0
-; RV32IA-NEXT: and a1, a1, a3
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB99_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w.aqrl a3, (a2)
-; RV32IA-NEXT: and a5, a3, a1
-; RV32IA-NEXT: not a5, a5
-; RV32IA-NEXT: xor a5, a3, a5
-; RV32IA-NEXT: and a5, a5, a4
-; RV32IA-NEXT: xor a5, a3, a5
-; RV32IA-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB99_1
-; RV32IA-NEXT: # %bb.2:
-; RV32IA-NEXT: srl a0, a3, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_nand_i16_seq_cst:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB99_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w.aqrl a3, (a2)
+; RV32IA-NOZACAS-NEXT: and a5, a3, a1
+; RV32IA-NOZACAS-NEXT: not a5, a5
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB99_1
+; RV32IA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_nand_i16_seq_cst:
; RV64I: # %bb.0:
@@ -14338,6 +18936,28 @@ define i16 @atomicrmw_nand_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_nand_i16_seq_cst:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: lui a3, 16
+; RV32IA-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB99_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w.aqrl a3, (a2)
+; RV32IA-ZACAS-NEXT: and a5, a3, a1
+; RV32IA-ZACAS-NEXT: not a5, a5
+; RV32IA-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB99_1
+; RV32IA-ZACAS-NEXT: # %bb.2:
+; RV32IA-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_nand_i16_seq_cst:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -14360,6 +18980,50 @@ define i16 @atomicrmw_nand_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i16_seq_cst:
+; RV32IA-WMO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: .LBB99_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: lr.w.aqrl a3, (a2)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a5, a3, a1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: not a5, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: bnez a5, .LBB99_1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i16_seq_cst:
+; RV32IA-TSO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: .LBB99_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: lr.w.aqrl a3, (a2)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a5, a3, a1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: not a5, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: bnez a5, .LBB99_1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i16_seq_cst:
; RV64IA-WMO-ZABHA-NOZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-NOZACAS-NEXT: andi a2, a0, -4
@@ -14404,6 +19068,38 @@ define i16 @atomicrmw_nand_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i16_seq_cst:
+; RV32IA-WMO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: lhu a0, 0(a0)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: .LBB99_1: # %atomicrmw.start
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: and a3, a0, a1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: fence rw, rw
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: not a3, a3
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: slli a4, a0, 16
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: amocas.h.aqrl a0, a3, (a2)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: srai a4, a4, 16
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: bne a0, a4, .LBB99_1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i16_seq_cst:
+; RV32IA-TSO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: lhu a0, 0(a0)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: .LBB99_1: # %atomicrmw.start
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: and a3, a0, a1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: fence rw, rw
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: not a3, a3
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: slli a4, a0, 16
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: amocas.h a0, a3, (a2)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: srai a4, a4, 16
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: bne a0, a4, .LBB99_1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i16_seq_cst:
; RV64IA-WMO-ZABHA-ZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
@@ -14450,16 +19146,16 @@ define i16 @atomicrmw_or_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_or_i16_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: slli a1, a1, 16
-; RV32IA-NEXT: srli a1, a1, 16
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: amoor.w a1, a1, (a2)
-; RV32IA-NEXT: srl a0, a1, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_or_i16_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-NOZACAS-NEXT: srli a1, a1, 16
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: amoor.w a1, a1, (a2)
+; RV32IA-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_or_i16_monotonic:
; RV64I: # %bb.0:
@@ -14482,6 +19178,17 @@ define i16 @atomicrmw_or_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_or_i16_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-ZACAS-NEXT: srli a1, a1, 16
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: amoor.w a1, a1, (a2)
+; RV32IA-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_or_i16_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -14493,6 +19200,16 @@ define i16 @atomicrmw_or_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_or_i16_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoor.h a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_or_i16_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoor.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_or_i16_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoor.h a0, a1, (a0)
@@ -14517,27 +19234,27 @@ define i16 @atomicrmw_or_i16_acquire(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_or_i16_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: slli a1, a1, 16
-; RV32IA-WMO-NEXT: srli a1, a1, 16
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: amoor.w.aq a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_or_i16_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: srli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoor.w.aq a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_or_i16_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: slli a1, a1, 16
-; RV32IA-TSO-NEXT: srli a1, a1, 16
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: amoor.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_or_i16_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: srli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoor.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_or_i16_acquire:
; RV64I: # %bb.0:
@@ -14571,6 +19288,28 @@ define i16 @atomicrmw_or_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_or_i16_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: srli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: amoor.w.aq a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_or_i16_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: srli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: amoor.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_or_i16_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -14593,6 +19332,16 @@ define i16 @atomicrmw_or_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_or_i16_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoor.h.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_or_i16_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoor.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_or_i16_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoor.h.aq a0, a1, (a0)
@@ -14617,27 +19366,27 @@ define i16 @atomicrmw_or_i16_release(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_or_i16_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: slli a1, a1, 16
-; RV32IA-WMO-NEXT: srli a1, a1, 16
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: amoor.w.rl a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_or_i16_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: srli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoor.w.rl a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_or_i16_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: slli a1, a1, 16
-; RV32IA-TSO-NEXT: srli a1, a1, 16
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: amoor.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_or_i16_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: srli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoor.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_or_i16_release:
; RV64I: # %bb.0:
@@ -14671,6 +19420,28 @@ define i16 @atomicrmw_or_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_or_i16_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: srli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: amoor.w.rl a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_or_i16_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: srli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: amoor.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_or_i16_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -14693,6 +19464,16 @@ define i16 @atomicrmw_or_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_or_i16_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoor.h.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_or_i16_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoor.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_or_i16_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoor.h.rl a0, a1, (a0)
@@ -14717,27 +19498,27 @@ define i16 @atomicrmw_or_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_or_i16_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: slli a1, a1, 16
-; RV32IA-WMO-NEXT: srli a1, a1, 16
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: amoor.w.aqrl a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_or_i16_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: srli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoor.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_or_i16_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: slli a1, a1, 16
-; RV32IA-TSO-NEXT: srli a1, a1, 16
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: amoor.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_or_i16_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: srli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoor.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_or_i16_acq_rel:
; RV64I: # %bb.0:
@@ -14771,6 +19552,28 @@ define i16 @atomicrmw_or_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_or_i16_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: srli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: amoor.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_or_i16_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: srli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: amoor.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_or_i16_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -14793,6 +19596,16 @@ define i16 @atomicrmw_or_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_or_i16_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoor.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_or_i16_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoor.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_or_i16_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoor.h.aqrl a0, a1, (a0)
@@ -14817,27 +19630,27 @@ define i16 @atomicrmw_or_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_or_i16_seq_cst:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: slli a1, a1, 16
-; RV32IA-WMO-NEXT: srli a1, a1, 16
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: amoor.w.aqrl a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_or_i16_seq_cst:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: srli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoor.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_or_i16_seq_cst:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: slli a1, a1, 16
-; RV32IA-TSO-NEXT: srli a1, a1, 16
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: amoor.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_or_i16_seq_cst:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: srli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoor.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_or_i16_seq_cst:
; RV64I: # %bb.0:
@@ -14871,6 +19684,28 @@ define i16 @atomicrmw_or_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_or_i16_seq_cst:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: srli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: amoor.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_or_i16_seq_cst:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: srli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: amoor.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_or_i16_seq_cst:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -14893,6 +19728,16 @@ define i16 @atomicrmw_or_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_or_i16_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoor.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_or_i16_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoor.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_or_i16_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoor.h.aqrl a0, a1, (a0)
@@ -14917,16 +19762,16 @@ define i16 @atomicrmw_xor_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_xor_i16_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: slli a1, a1, 16
-; RV32IA-NEXT: srli a1, a1, 16
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: amoxor.w a1, a1, (a2)
-; RV32IA-NEXT: srl a0, a1, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_xor_i16_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-NOZACAS-NEXT: srli a1, a1, 16
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: amoxor.w a1, a1, (a2)
+; RV32IA-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xor_i16_monotonic:
; RV64I: # %bb.0:
@@ -14949,6 +19794,17 @@ define i16 @atomicrmw_xor_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_xor_i16_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-ZACAS-NEXT: srli a1, a1, 16
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: amoxor.w a1, a1, (a2)
+; RV32IA-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_xor_i16_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -14960,6 +19816,16 @@ define i16 @atomicrmw_xor_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xor_i16_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoxor.h a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xor_i16_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoxor.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xor_i16_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoxor.h a0, a1, (a0)
@@ -14984,27 +19850,27 @@ define i16 @atomicrmw_xor_i16_acquire(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xor_i16_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: slli a1, a1, 16
-; RV32IA-WMO-NEXT: srli a1, a1, 16
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: amoxor.w.aq a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xor_i16_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: srli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoxor.w.aq a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xor_i16_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: slli a1, a1, 16
-; RV32IA-TSO-NEXT: srli a1, a1, 16
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: amoxor.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xor_i16_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: srli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoxor.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xor_i16_acquire:
; RV64I: # %bb.0:
@@ -15038,6 +19904,28 @@ define i16 @atomicrmw_xor_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xor_i16_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: srli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: amoxor.w.aq a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xor_i16_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: srli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: amoxor.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xor_i16_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -15060,6 +19948,16 @@ define i16 @atomicrmw_xor_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xor_i16_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoxor.h.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xor_i16_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoxor.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xor_i16_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoxor.h.aq a0, a1, (a0)
@@ -15084,27 +19982,27 @@ define i16 @atomicrmw_xor_i16_release(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xor_i16_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: slli a1, a1, 16
-; RV32IA-WMO-NEXT: srli a1, a1, 16
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: amoxor.w.rl a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xor_i16_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: srli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoxor.w.rl a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xor_i16_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: slli a1, a1, 16
-; RV32IA-TSO-NEXT: srli a1, a1, 16
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: amoxor.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xor_i16_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: srli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoxor.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xor_i16_release:
; RV64I: # %bb.0:
@@ -15138,6 +20036,28 @@ define i16 @atomicrmw_xor_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xor_i16_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: srli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: amoxor.w.rl a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xor_i16_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: srli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: amoxor.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xor_i16_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -15160,6 +20080,16 @@ define i16 @atomicrmw_xor_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xor_i16_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoxor.h.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xor_i16_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoxor.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xor_i16_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoxor.h.rl a0, a1, (a0)
@@ -15184,27 +20114,27 @@ define i16 @atomicrmw_xor_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xor_i16_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: slli a1, a1, 16
-; RV32IA-WMO-NEXT: srli a1, a1, 16
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: amoxor.w.aqrl a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xor_i16_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: srli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoxor.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xor_i16_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: slli a1, a1, 16
-; RV32IA-TSO-NEXT: srli a1, a1, 16
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: amoxor.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xor_i16_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: srli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoxor.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xor_i16_acq_rel:
; RV64I: # %bb.0:
@@ -15238,6 +20168,28 @@ define i16 @atomicrmw_xor_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xor_i16_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: srli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: amoxor.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xor_i16_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: srli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: amoxor.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xor_i16_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -15260,6 +20212,16 @@ define i16 @atomicrmw_xor_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xor_i16_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoxor.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xor_i16_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoxor.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xor_i16_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoxor.h.aqrl a0, a1, (a0)
@@ -15284,27 +20246,27 @@ define i16 @atomicrmw_xor_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 16
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_xor_i16_seq_cst:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: slli a1, a1, 16
-; RV32IA-WMO-NEXT: srli a1, a1, 16
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: amoxor.w.aqrl a1, a1, (a2)
-; RV32IA-WMO-NEXT: srl a0, a1, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_xor_i16_seq_cst:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: srli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: amoxor.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_xor_i16_seq_cst:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: slli a1, a1, 16
-; RV32IA-TSO-NEXT: srli a1, a1, 16
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: amoxor.w a1, a1, (a2)
-; RV32IA-TSO-NEXT: srl a0, a1, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_xor_i16_seq_cst:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: srli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: amoxor.w a1, a1, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_xor_i16_seq_cst:
; RV64I: # %bb.0:
@@ -15338,6 +20300,28 @@ define i16 @atomicrmw_xor_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_xor_i16_seq_cst:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: srli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: amoxor.w.aqrl a1, a1, (a2)
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_xor_i16_seq_cst:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: srli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: amoxor.w a1, a1, (a2)
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_xor_i16_seq_cst:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -15360,6 +20344,16 @@ define i16 @atomicrmw_xor_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a1, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_xor_i16_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amoxor.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_xor_i16_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amoxor.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_xor_i16_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amoxor.h.aqrl a0, a1, (a0)
@@ -15416,36 +20410,36 @@ define i16 @atomicrmw_max_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_max_i16_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: lui a3, 16
-; RV32IA-NEXT: slli a1, a1, 16
-; RV32IA-NEXT: li a4, 16
-; RV32IA-NEXT: andi a5, a0, 24
-; RV32IA-NEXT: addi a3, a3, -1
-; RV32IA-NEXT: srai a1, a1, 16
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: sub a4, a4, a5
-; RV32IA-NEXT: .LBB110_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w a5, (a2)
-; RV32IA-NEXT: and a7, a5, a3
-; RV32IA-NEXT: mv a6, a5
-; RV32IA-NEXT: sll a7, a7, a4
-; RV32IA-NEXT: sra a7, a7, a4
-; RV32IA-NEXT: bge a7, a1, .LBB110_3
-; RV32IA-NEXT: # %bb.2: # in Loop: Header=BB110_1 Depth=1
-; RV32IA-NEXT: xor a6, a5, a1
-; RV32IA-NEXT: and a6, a6, a3
-; RV32IA-NEXT: xor a6, a5, a6
-; RV32IA-NEXT: .LBB110_3: # in Loop: Header=BB110_1 Depth=1
-; RV32IA-NEXT: sc.w a6, a6, (a2)
-; RV32IA-NEXT: bnez a6, .LBB110_1
-; RV32IA-NEXT: # %bb.4:
-; RV32IA-NEXT: srl a0, a5, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_max_i16_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-NOZACAS-NEXT: li a4, 16
+; RV32IA-NOZACAS-NEXT: andi a5, a0, 24
+; RV32IA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-NOZACAS-NEXT: srai a1, a1, 16
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: sub a4, a4, a5
+; RV32IA-NOZACAS-NEXT: .LBB110_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-NOZACAS-NEXT: mv a6, a5
+; RV32IA-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-NOZACAS-NEXT: bge a7, a1, .LBB110_3
+; RV32IA-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB110_1 Depth=1
+; RV32IA-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-NOZACAS-NEXT: .LBB110_3: # in Loop: Header=BB110_1 Depth=1
+; RV32IA-NOZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a6, .LBB110_1
+; RV32IA-NOZACAS-NEXT: # %bb.4:
+; RV32IA-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_max_i16_monotonic:
; RV64I: # %bb.0:
@@ -15520,6 +20514,37 @@ define i16 @atomicrmw_max_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a5, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_max_i16_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: lui a3, 16
+; RV32IA-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-ZACAS-NEXT: li a4, 16
+; RV32IA-ZACAS-NEXT: andi a5, a0, 24
+; RV32IA-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-ZACAS-NEXT: srai a1, a1, 16
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: sub a4, a4, a5
+; RV32IA-ZACAS-NEXT: .LBB110_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-ZACAS-NEXT: mv a6, a5
+; RV32IA-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-ZACAS-NEXT: bge a7, a1, .LBB110_3
+; RV32IA-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB110_1 Depth=1
+; RV32IA-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-ZACAS-NEXT: .LBB110_3: # in Loop: Header=BB110_1 Depth=1
+; RV32IA-ZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-ZACAS-NEXT: bnez a6, .LBB110_1
+; RV32IA-ZACAS-NEXT: # %bb.4:
+; RV32IA-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_max_i16_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -15551,6 +20576,16 @@ define i16 @atomicrmw_max_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a5, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_max_i16_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomax.h a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_max_i16_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomax.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_max_i16_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomax.h a0, a1, (a0)
@@ -15607,67 +20642,67 @@ define i16 @atomicrmw_max_i16_acquire(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_max_i16_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: slli a1, a1, 16
-; RV32IA-WMO-NEXT: li a4, 16
-; RV32IA-WMO-NEXT: andi a5, a0, 24
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: srai a1, a1, 16
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: sub a4, a4, a5
-; RV32IA-WMO-NEXT: .LBB111_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a5, (a2)
-; RV32IA-WMO-NEXT: and a7, a5, a3
-; RV32IA-WMO-NEXT: mv a6, a5
-; RV32IA-WMO-NEXT: sll a7, a7, a4
-; RV32IA-WMO-NEXT: sra a7, a7, a4
-; RV32IA-WMO-NEXT: bge a7, a1, .LBB111_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB111_1 Depth=1
-; RV32IA-WMO-NEXT: xor a6, a5, a1
-; RV32IA-WMO-NEXT: and a6, a6, a3
-; RV32IA-WMO-NEXT: xor a6, a5, a6
-; RV32IA-WMO-NEXT: .LBB111_3: # in Loop: Header=BB111_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w a6, a6, (a2)
-; RV32IA-WMO-NEXT: bnez a6, .LBB111_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a5, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_max_i16_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: li a4, 16
+; RV32IA-WMO-NOZACAS-NEXT: andi a5, a0, 24
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: srai a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: sub a4, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: .LBB111_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: bge a7, a1, .LBB111_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB111_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-NOZACAS-NEXT: .LBB111_3: # in Loop: Header=BB111_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a6, .LBB111_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_max_i16_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: slli a1, a1, 16
-; RV32IA-TSO-NEXT: li a4, 16
-; RV32IA-TSO-NEXT: andi a5, a0, 24
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: srai a1, a1, 16
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: sub a4, a4, a5
-; RV32IA-TSO-NEXT: .LBB111_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a5, (a2)
-; RV32IA-TSO-NEXT: and a7, a5, a3
-; RV32IA-TSO-NEXT: mv a6, a5
-; RV32IA-TSO-NEXT: sll a7, a7, a4
-; RV32IA-TSO-NEXT: sra a7, a7, a4
-; RV32IA-TSO-NEXT: bge a7, a1, .LBB111_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB111_1 Depth=1
-; RV32IA-TSO-NEXT: xor a6, a5, a1
-; RV32IA-TSO-NEXT: and a6, a6, a3
-; RV32IA-TSO-NEXT: xor a6, a5, a6
-; RV32IA-TSO-NEXT: .LBB111_3: # in Loop: Header=BB111_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a6, a6, (a2)
-; RV32IA-TSO-NEXT: bnez a6, .LBB111_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a5, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_max_i16_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: li a4, 16
+; RV32IA-TSO-NOZACAS-NEXT: andi a5, a0, 24
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: srai a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: sub a4, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: .LBB111_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: bge a7, a1, .LBB111_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB111_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-NOZACAS-NEXT: .LBB111_3: # in Loop: Header=BB111_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a6, .LBB111_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_max_i16_acquire:
; RV64I: # %bb.0:
@@ -15773,6 +20808,68 @@ define i16 @atomicrmw_max_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_max_i16_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: li a4, 16
+; RV32IA-WMO-ZACAS-NEXT: andi a5, a0, 24
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: srai a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: sub a4, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: .LBB111_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: bge a7, a1, .LBB111_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB111_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-ZACAS-NEXT: .LBB111_3: # in Loop: Header=BB111_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a6, .LBB111_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_max_i16_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: li a4, 16
+; RV32IA-TSO-ZACAS-NEXT: andi a5, a0, 24
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: srai a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: sub a4, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: .LBB111_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: bge a7, a1, .LBB111_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB111_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-ZACAS-NEXT: .LBB111_3: # in Loop: Header=BB111_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a6, .LBB111_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_max_i16_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -15835,6 +20932,16 @@ define i16 @atomicrmw_max_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_max_i16_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomax.h.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_max_i16_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomax.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_max_i16_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomax.h.aq a0, a1, (a0)
@@ -15891,67 +20998,67 @@ define i16 @atomicrmw_max_i16_release(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_max_i16_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: slli a1, a1, 16
-; RV32IA-WMO-NEXT: li a4, 16
-; RV32IA-WMO-NEXT: andi a5, a0, 24
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: srai a1, a1, 16
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: sub a4, a4, a5
-; RV32IA-WMO-NEXT: .LBB112_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w a5, (a2)
-; RV32IA-WMO-NEXT: and a7, a5, a3
-; RV32IA-WMO-NEXT: mv a6, a5
-; RV32IA-WMO-NEXT: sll a7, a7, a4
-; RV32IA-WMO-NEXT: sra a7, a7, a4
-; RV32IA-WMO-NEXT: bge a7, a1, .LBB112_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB112_1 Depth=1
-; RV32IA-WMO-NEXT: xor a6, a5, a1
-; RV32IA-WMO-NEXT: and a6, a6, a3
-; RV32IA-WMO-NEXT: xor a6, a5, a6
-; RV32IA-WMO-NEXT: .LBB112_3: # in Loop: Header=BB112_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w.rl a6, a6, (a2)
-; RV32IA-WMO-NEXT: bnez a6, .LBB112_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a5, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_max_i16_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: li a4, 16
+; RV32IA-WMO-NOZACAS-NEXT: andi a5, a0, 24
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: srai a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: sub a4, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: .LBB112_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: bge a7, a1, .LBB112_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB112_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-NOZACAS-NEXT: .LBB112_3: # in Loop: Header=BB112_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a6, .LBB112_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_max_i16_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: slli a1, a1, 16
-; RV32IA-TSO-NEXT: li a4, 16
-; RV32IA-TSO-NEXT: andi a5, a0, 24
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: srai a1, a1, 16
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: sub a4, a4, a5
-; RV32IA-TSO-NEXT: .LBB112_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a5, (a2)
-; RV32IA-TSO-NEXT: and a7, a5, a3
-; RV32IA-TSO-NEXT: mv a6, a5
-; RV32IA-TSO-NEXT: sll a7, a7, a4
-; RV32IA-TSO-NEXT: sra a7, a7, a4
-; RV32IA-TSO-NEXT: bge a7, a1, .LBB112_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB112_1 Depth=1
-; RV32IA-TSO-NEXT: xor a6, a5, a1
-; RV32IA-TSO-NEXT: and a6, a6, a3
-; RV32IA-TSO-NEXT: xor a6, a5, a6
-; RV32IA-TSO-NEXT: .LBB112_3: # in Loop: Header=BB112_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a6, a6, (a2)
-; RV32IA-TSO-NEXT: bnez a6, .LBB112_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a5, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_max_i16_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: li a4, 16
+; RV32IA-TSO-NOZACAS-NEXT: andi a5, a0, 24
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: srai a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: sub a4, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: .LBB112_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: bge a7, a1, .LBB112_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB112_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-NOZACAS-NEXT: .LBB112_3: # in Loop: Header=BB112_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a6, .LBB112_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_max_i16_release:
; RV64I: # %bb.0:
@@ -16057,6 +21164,68 @@ define i16 @atomicrmw_max_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_max_i16_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: li a4, 16
+; RV32IA-WMO-ZACAS-NEXT: andi a5, a0, 24
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: srai a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: sub a4, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: .LBB112_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: bge a7, a1, .LBB112_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB112_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-ZACAS-NEXT: .LBB112_3: # in Loop: Header=BB112_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a6, .LBB112_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_max_i16_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: li a4, 16
+; RV32IA-TSO-ZACAS-NEXT: andi a5, a0, 24
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: srai a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: sub a4, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: .LBB112_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: bge a7, a1, .LBB112_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB112_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-ZACAS-NEXT: .LBB112_3: # in Loop: Header=BB112_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a6, .LBB112_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_max_i16_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -16119,6 +21288,16 @@ define i16 @atomicrmw_max_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_max_i16_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomax.h.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_max_i16_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomax.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_max_i16_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomax.h.rl a0, a1, (a0)
@@ -16175,67 +21354,67 @@ define i16 @atomicrmw_max_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_max_i16_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: slli a1, a1, 16
-; RV32IA-WMO-NEXT: li a4, 16
-; RV32IA-WMO-NEXT: andi a5, a0, 24
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: srai a1, a1, 16
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: sub a4, a4, a5
-; RV32IA-WMO-NEXT: .LBB113_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a5, (a2)
-; RV32IA-WMO-NEXT: and a7, a5, a3
-; RV32IA-WMO-NEXT: mv a6, a5
-; RV32IA-WMO-NEXT: sll a7, a7, a4
-; RV32IA-WMO-NEXT: sra a7, a7, a4
-; RV32IA-WMO-NEXT: bge a7, a1, .LBB113_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB113_1 Depth=1
-; RV32IA-WMO-NEXT: xor a6, a5, a1
-; RV32IA-WMO-NEXT: and a6, a6, a3
-; RV32IA-WMO-NEXT: xor a6, a5, a6
-; RV32IA-WMO-NEXT: .LBB113_3: # in Loop: Header=BB113_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w.rl a6, a6, (a2)
-; RV32IA-WMO-NEXT: bnez a6, .LBB113_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a5, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_max_i16_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: li a4, 16
+; RV32IA-WMO-NOZACAS-NEXT: andi a5, a0, 24
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: srai a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: sub a4, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: .LBB113_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: bge a7, a1, .LBB113_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB113_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-NOZACAS-NEXT: .LBB113_3: # in Loop: Header=BB113_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a6, .LBB113_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_max_i16_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: slli a1, a1, 16
-; RV32IA-TSO-NEXT: li a4, 16
-; RV32IA-TSO-NEXT: andi a5, a0, 24
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: srai a1, a1, 16
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: sub a4, a4, a5
-; RV32IA-TSO-NEXT: .LBB113_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a5, (a2)
-; RV32IA-TSO-NEXT: and a7, a5, a3
-; RV32IA-TSO-NEXT: mv a6, a5
-; RV32IA-TSO-NEXT: sll a7, a7, a4
-; RV32IA-TSO-NEXT: sra a7, a7, a4
-; RV32IA-TSO-NEXT: bge a7, a1, .LBB113_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB113_1 Depth=1
-; RV32IA-TSO-NEXT: xor a6, a5, a1
-; RV32IA-TSO-NEXT: and a6, a6, a3
-; RV32IA-TSO-NEXT: xor a6, a5, a6
-; RV32IA-TSO-NEXT: .LBB113_3: # in Loop: Header=BB113_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a6, a6, (a2)
-; RV32IA-TSO-NEXT: bnez a6, .LBB113_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a5, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_max_i16_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: li a4, 16
+; RV32IA-TSO-NOZACAS-NEXT: andi a5, a0, 24
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: srai a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: sub a4, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: .LBB113_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: bge a7, a1, .LBB113_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB113_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-NOZACAS-NEXT: .LBB113_3: # in Loop: Header=BB113_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a6, .LBB113_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_max_i16_acq_rel:
; RV64I: # %bb.0:
@@ -16341,6 +21520,68 @@ define i16 @atomicrmw_max_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_max_i16_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: li a4, 16
+; RV32IA-WMO-ZACAS-NEXT: andi a5, a0, 24
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: srai a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: sub a4, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: .LBB113_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: bge a7, a1, .LBB113_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB113_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-ZACAS-NEXT: .LBB113_3: # in Loop: Header=BB113_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a6, .LBB113_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_max_i16_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: li a4, 16
+; RV32IA-TSO-ZACAS-NEXT: andi a5, a0, 24
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: srai a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: sub a4, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: .LBB113_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: bge a7, a1, .LBB113_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB113_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-ZACAS-NEXT: .LBB113_3: # in Loop: Header=BB113_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a6, .LBB113_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_max_i16_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -16403,6 +21644,16 @@ define i16 @atomicrmw_max_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_max_i16_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomax.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_max_i16_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomax.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_max_i16_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomax.h.aqrl a0, a1, (a0)
@@ -16459,36 +21710,36 @@ define i16 @atomicrmw_max_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_max_i16_seq_cst:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: lui a3, 16
-; RV32IA-NEXT: slli a1, a1, 16
-; RV32IA-NEXT: li a4, 16
-; RV32IA-NEXT: andi a5, a0, 24
-; RV32IA-NEXT: addi a3, a3, -1
-; RV32IA-NEXT: srai a1, a1, 16
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: sub a4, a4, a5
-; RV32IA-NEXT: .LBB114_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w.aqrl a5, (a2)
-; RV32IA-NEXT: and a7, a5, a3
-; RV32IA-NEXT: mv a6, a5
-; RV32IA-NEXT: sll a7, a7, a4
-; RV32IA-NEXT: sra a7, a7, a4
-; RV32IA-NEXT: bge a7, a1, .LBB114_3
-; RV32IA-NEXT: # %bb.2: # in Loop: Header=BB114_1 Depth=1
-; RV32IA-NEXT: xor a6, a5, a1
-; RV32IA-NEXT: and a6, a6, a3
-; RV32IA-NEXT: xor a6, a5, a6
-; RV32IA-NEXT: .LBB114_3: # in Loop: Header=BB114_1 Depth=1
-; RV32IA-NEXT: sc.w.rl a6, a6, (a2)
-; RV32IA-NEXT: bnez a6, .LBB114_1
-; RV32IA-NEXT: # %bb.4:
-; RV32IA-NEXT: srl a0, a5, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_max_i16_seq_cst:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-NOZACAS-NEXT: li a4, 16
+; RV32IA-NOZACAS-NEXT: andi a5, a0, 24
+; RV32IA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-NOZACAS-NEXT: srai a1, a1, 16
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: sub a4, a4, a5
+; RV32IA-NOZACAS-NEXT: .LBB114_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w.aqrl a5, (a2)
+; RV32IA-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-NOZACAS-NEXT: mv a6, a5
+; RV32IA-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-NOZACAS-NEXT: bge a7, a1, .LBB114_3
+; RV32IA-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB114_1 Depth=1
+; RV32IA-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-NOZACAS-NEXT: .LBB114_3: # in Loop: Header=BB114_1 Depth=1
+; RV32IA-NOZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a6, .LBB114_1
+; RV32IA-NOZACAS-NEXT: # %bb.4:
+; RV32IA-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_max_i16_seq_cst:
; RV64I: # %bb.0:
@@ -16563,6 +21814,37 @@ define i16 @atomicrmw_max_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a5, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_max_i16_seq_cst:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: lui a3, 16
+; RV32IA-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-ZACAS-NEXT: li a4, 16
+; RV32IA-ZACAS-NEXT: andi a5, a0, 24
+; RV32IA-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-ZACAS-NEXT: srai a1, a1, 16
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: sub a4, a4, a5
+; RV32IA-ZACAS-NEXT: .LBB114_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w.aqrl a5, (a2)
+; RV32IA-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-ZACAS-NEXT: mv a6, a5
+; RV32IA-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-ZACAS-NEXT: bge a7, a1, .LBB114_3
+; RV32IA-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB114_1 Depth=1
+; RV32IA-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-ZACAS-NEXT: .LBB114_3: # in Loop: Header=BB114_1 Depth=1
+; RV32IA-ZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-ZACAS-NEXT: bnez a6, .LBB114_1
+; RV32IA-ZACAS-NEXT: # %bb.4:
+; RV32IA-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_max_i16_seq_cst:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -16594,6 +21876,16 @@ define i16 @atomicrmw_max_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a5, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_max_i16_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomax.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_max_i16_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomax.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_max_i16_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomax.h.aqrl a0, a1, (a0)
@@ -16650,36 +21942,36 @@ define i16 @atomicrmw_min_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_min_i16_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: lui a3, 16
-; RV32IA-NEXT: slli a1, a1, 16
-; RV32IA-NEXT: li a4, 16
-; RV32IA-NEXT: andi a5, a0, 24
-; RV32IA-NEXT: addi a3, a3, -1
-; RV32IA-NEXT: srai a1, a1, 16
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: sub a4, a4, a5
-; RV32IA-NEXT: .LBB115_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w a5, (a2)
-; RV32IA-NEXT: and a7, a5, a3
-; RV32IA-NEXT: mv a6, a5
-; RV32IA-NEXT: sll a7, a7, a4
-; RV32IA-NEXT: sra a7, a7, a4
-; RV32IA-NEXT: bge a1, a7, .LBB115_3
-; RV32IA-NEXT: # %bb.2: # in Loop: Header=BB115_1 Depth=1
-; RV32IA-NEXT: xor a6, a5, a1
-; RV32IA-NEXT: and a6, a6, a3
-; RV32IA-NEXT: xor a6, a5, a6
-; RV32IA-NEXT: .LBB115_3: # in Loop: Header=BB115_1 Depth=1
-; RV32IA-NEXT: sc.w a6, a6, (a2)
-; RV32IA-NEXT: bnez a6, .LBB115_1
-; RV32IA-NEXT: # %bb.4:
-; RV32IA-NEXT: srl a0, a5, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_min_i16_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-NOZACAS-NEXT: li a4, 16
+; RV32IA-NOZACAS-NEXT: andi a5, a0, 24
+; RV32IA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-NOZACAS-NEXT: srai a1, a1, 16
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: sub a4, a4, a5
+; RV32IA-NOZACAS-NEXT: .LBB115_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-NOZACAS-NEXT: mv a6, a5
+; RV32IA-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-NOZACAS-NEXT: bge a1, a7, .LBB115_3
+; RV32IA-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB115_1 Depth=1
+; RV32IA-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-NOZACAS-NEXT: .LBB115_3: # in Loop: Header=BB115_1 Depth=1
+; RV32IA-NOZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a6, .LBB115_1
+; RV32IA-NOZACAS-NEXT: # %bb.4:
+; RV32IA-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_min_i16_monotonic:
; RV64I: # %bb.0:
@@ -16754,6 +22046,37 @@ define i16 @atomicrmw_min_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a5, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_min_i16_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: lui a3, 16
+; RV32IA-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-ZACAS-NEXT: li a4, 16
+; RV32IA-ZACAS-NEXT: andi a5, a0, 24
+; RV32IA-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-ZACAS-NEXT: srai a1, a1, 16
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: sub a4, a4, a5
+; RV32IA-ZACAS-NEXT: .LBB115_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-ZACAS-NEXT: mv a6, a5
+; RV32IA-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-ZACAS-NEXT: bge a1, a7, .LBB115_3
+; RV32IA-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB115_1 Depth=1
+; RV32IA-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-ZACAS-NEXT: .LBB115_3: # in Loop: Header=BB115_1 Depth=1
+; RV32IA-ZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-ZACAS-NEXT: bnez a6, .LBB115_1
+; RV32IA-ZACAS-NEXT: # %bb.4:
+; RV32IA-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_min_i16_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -16785,6 +22108,16 @@ define i16 @atomicrmw_min_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a5, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_min_i16_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomin.h a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_min_i16_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomin.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_min_i16_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomin.h a0, a1, (a0)
@@ -16841,67 +22174,67 @@ define i16 @atomicrmw_min_i16_acquire(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_min_i16_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: slli a1, a1, 16
-; RV32IA-WMO-NEXT: li a4, 16
-; RV32IA-WMO-NEXT: andi a5, a0, 24
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: srai a1, a1, 16
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: sub a4, a4, a5
-; RV32IA-WMO-NEXT: .LBB116_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a5, (a2)
-; RV32IA-WMO-NEXT: and a7, a5, a3
-; RV32IA-WMO-NEXT: mv a6, a5
-; RV32IA-WMO-NEXT: sll a7, a7, a4
-; RV32IA-WMO-NEXT: sra a7, a7, a4
-; RV32IA-WMO-NEXT: bge a1, a7, .LBB116_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB116_1 Depth=1
-; RV32IA-WMO-NEXT: xor a6, a5, a1
-; RV32IA-WMO-NEXT: and a6, a6, a3
-; RV32IA-WMO-NEXT: xor a6, a5, a6
-; RV32IA-WMO-NEXT: .LBB116_3: # in Loop: Header=BB116_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w a6, a6, (a2)
-; RV32IA-WMO-NEXT: bnez a6, .LBB116_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a5, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_min_i16_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: li a4, 16
+; RV32IA-WMO-NOZACAS-NEXT: andi a5, a0, 24
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: srai a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: sub a4, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: .LBB116_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: bge a1, a7, .LBB116_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB116_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-NOZACAS-NEXT: .LBB116_3: # in Loop: Header=BB116_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a6, .LBB116_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_min_i16_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: slli a1, a1, 16
-; RV32IA-TSO-NEXT: li a4, 16
-; RV32IA-TSO-NEXT: andi a5, a0, 24
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: srai a1, a1, 16
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: sub a4, a4, a5
-; RV32IA-TSO-NEXT: .LBB116_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a5, (a2)
-; RV32IA-TSO-NEXT: and a7, a5, a3
-; RV32IA-TSO-NEXT: mv a6, a5
-; RV32IA-TSO-NEXT: sll a7, a7, a4
-; RV32IA-TSO-NEXT: sra a7, a7, a4
-; RV32IA-TSO-NEXT: bge a1, a7, .LBB116_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB116_1 Depth=1
-; RV32IA-TSO-NEXT: xor a6, a5, a1
-; RV32IA-TSO-NEXT: and a6, a6, a3
-; RV32IA-TSO-NEXT: xor a6, a5, a6
-; RV32IA-TSO-NEXT: .LBB116_3: # in Loop: Header=BB116_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a6, a6, (a2)
-; RV32IA-TSO-NEXT: bnez a6, .LBB116_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a5, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_min_i16_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: li a4, 16
+; RV32IA-TSO-NOZACAS-NEXT: andi a5, a0, 24
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: srai a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: sub a4, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: .LBB116_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: bge a1, a7, .LBB116_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB116_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-NOZACAS-NEXT: .LBB116_3: # in Loop: Header=BB116_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a6, .LBB116_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_min_i16_acquire:
; RV64I: # %bb.0:
@@ -17007,6 +22340,68 @@ define i16 @atomicrmw_min_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_min_i16_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: li a4, 16
+; RV32IA-WMO-ZACAS-NEXT: andi a5, a0, 24
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: srai a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: sub a4, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: .LBB116_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: bge a1, a7, .LBB116_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB116_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-ZACAS-NEXT: .LBB116_3: # in Loop: Header=BB116_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a6, .LBB116_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_min_i16_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: li a4, 16
+; RV32IA-TSO-ZACAS-NEXT: andi a5, a0, 24
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: srai a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: sub a4, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: .LBB116_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: bge a1, a7, .LBB116_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB116_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-ZACAS-NEXT: .LBB116_3: # in Loop: Header=BB116_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a6, .LBB116_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_min_i16_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -17069,6 +22464,16 @@ define i16 @atomicrmw_min_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_min_i16_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomin.h.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_min_i16_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomin.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_min_i16_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomin.h.aq a0, a1, (a0)
@@ -17125,67 +22530,67 @@ define i16 @atomicrmw_min_i16_release(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_min_i16_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: slli a1, a1, 16
-; RV32IA-WMO-NEXT: li a4, 16
-; RV32IA-WMO-NEXT: andi a5, a0, 24
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: srai a1, a1, 16
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: sub a4, a4, a5
-; RV32IA-WMO-NEXT: .LBB117_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w a5, (a2)
-; RV32IA-WMO-NEXT: and a7, a5, a3
-; RV32IA-WMO-NEXT: mv a6, a5
-; RV32IA-WMO-NEXT: sll a7, a7, a4
-; RV32IA-WMO-NEXT: sra a7, a7, a4
-; RV32IA-WMO-NEXT: bge a1, a7, .LBB117_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB117_1 Depth=1
-; RV32IA-WMO-NEXT: xor a6, a5, a1
-; RV32IA-WMO-NEXT: and a6, a6, a3
-; RV32IA-WMO-NEXT: xor a6, a5, a6
-; RV32IA-WMO-NEXT: .LBB117_3: # in Loop: Header=BB117_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w.rl a6, a6, (a2)
-; RV32IA-WMO-NEXT: bnez a6, .LBB117_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a5, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_min_i16_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: li a4, 16
+; RV32IA-WMO-NOZACAS-NEXT: andi a5, a0, 24
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: srai a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: sub a4, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: .LBB117_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: bge a1, a7, .LBB117_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB117_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-NOZACAS-NEXT: .LBB117_3: # in Loop: Header=BB117_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a6, .LBB117_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_min_i16_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: slli a1, a1, 16
-; RV32IA-TSO-NEXT: li a4, 16
-; RV32IA-TSO-NEXT: andi a5, a0, 24
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: srai a1, a1, 16
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: sub a4, a4, a5
-; RV32IA-TSO-NEXT: .LBB117_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a5, (a2)
-; RV32IA-TSO-NEXT: and a7, a5, a3
-; RV32IA-TSO-NEXT: mv a6, a5
-; RV32IA-TSO-NEXT: sll a7, a7, a4
-; RV32IA-TSO-NEXT: sra a7, a7, a4
-; RV32IA-TSO-NEXT: bge a1, a7, .LBB117_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB117_1 Depth=1
-; RV32IA-TSO-NEXT: xor a6, a5, a1
-; RV32IA-TSO-NEXT: and a6, a6, a3
-; RV32IA-TSO-NEXT: xor a6, a5, a6
-; RV32IA-TSO-NEXT: .LBB117_3: # in Loop: Header=BB117_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a6, a6, (a2)
-; RV32IA-TSO-NEXT: bnez a6, .LBB117_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a5, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_min_i16_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: li a4, 16
+; RV32IA-TSO-NOZACAS-NEXT: andi a5, a0, 24
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: srai a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: sub a4, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: .LBB117_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: bge a1, a7, .LBB117_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB117_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-NOZACAS-NEXT: .LBB117_3: # in Loop: Header=BB117_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a6, .LBB117_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_min_i16_release:
; RV64I: # %bb.0:
@@ -17291,6 +22696,68 @@ define i16 @atomicrmw_min_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_min_i16_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: li a4, 16
+; RV32IA-WMO-ZACAS-NEXT: andi a5, a0, 24
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: srai a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: sub a4, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: .LBB117_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: bge a1, a7, .LBB117_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB117_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-ZACAS-NEXT: .LBB117_3: # in Loop: Header=BB117_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a6, .LBB117_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_min_i16_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: li a4, 16
+; RV32IA-TSO-ZACAS-NEXT: andi a5, a0, 24
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: srai a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: sub a4, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: .LBB117_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: bge a1, a7, .LBB117_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB117_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-ZACAS-NEXT: .LBB117_3: # in Loop: Header=BB117_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a6, .LBB117_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_min_i16_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -17353,6 +22820,16 @@ define i16 @atomicrmw_min_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_min_i16_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomin.h.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_min_i16_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomin.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_min_i16_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomin.h.rl a0, a1, (a0)
@@ -17409,67 +22886,67 @@ define i16 @atomicrmw_min_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_min_i16_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: slli a1, a1, 16
-; RV32IA-WMO-NEXT: li a4, 16
-; RV32IA-WMO-NEXT: andi a5, a0, 24
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: srai a1, a1, 16
-; RV32IA-WMO-NEXT: sll a3, a3, a0
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: sub a4, a4, a5
-; RV32IA-WMO-NEXT: .LBB118_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a5, (a2)
-; RV32IA-WMO-NEXT: and a7, a5, a3
-; RV32IA-WMO-NEXT: mv a6, a5
-; RV32IA-WMO-NEXT: sll a7, a7, a4
-; RV32IA-WMO-NEXT: sra a7, a7, a4
-; RV32IA-WMO-NEXT: bge a1, a7, .LBB118_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB118_1 Depth=1
-; RV32IA-WMO-NEXT: xor a6, a5, a1
-; RV32IA-WMO-NEXT: and a6, a6, a3
-; RV32IA-WMO-NEXT: xor a6, a5, a6
-; RV32IA-WMO-NEXT: .LBB118_3: # in Loop: Header=BB118_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w.rl a6, a6, (a2)
-; RV32IA-WMO-NEXT: bnez a6, .LBB118_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a5, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_min_i16_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: li a4, 16
+; RV32IA-WMO-NOZACAS-NEXT: andi a5, a0, 24
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: srai a1, a1, 16
+; RV32IA-WMO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: sub a4, a4, a5
+; RV32IA-WMO-NOZACAS-NEXT: .LBB118_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-NOZACAS-NEXT: bge a1, a7, .LBB118_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB118_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-NOZACAS-NEXT: .LBB118_3: # in Loop: Header=BB118_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a6, .LBB118_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_min_i16_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: slli a1, a1, 16
-; RV32IA-TSO-NEXT: li a4, 16
-; RV32IA-TSO-NEXT: andi a5, a0, 24
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: srai a1, a1, 16
-; RV32IA-TSO-NEXT: sll a3, a3, a0
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: sub a4, a4, a5
-; RV32IA-TSO-NEXT: .LBB118_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a5, (a2)
-; RV32IA-TSO-NEXT: and a7, a5, a3
-; RV32IA-TSO-NEXT: mv a6, a5
-; RV32IA-TSO-NEXT: sll a7, a7, a4
-; RV32IA-TSO-NEXT: sra a7, a7, a4
-; RV32IA-TSO-NEXT: bge a1, a7, .LBB118_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB118_1 Depth=1
-; RV32IA-TSO-NEXT: xor a6, a5, a1
-; RV32IA-TSO-NEXT: and a6, a6, a3
-; RV32IA-TSO-NEXT: xor a6, a5, a6
-; RV32IA-TSO-NEXT: .LBB118_3: # in Loop: Header=BB118_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a6, a6, (a2)
-; RV32IA-TSO-NEXT: bnez a6, .LBB118_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a5, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_min_i16_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: li a4, 16
+; RV32IA-TSO-NOZACAS-NEXT: andi a5, a0, 24
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: srai a1, a1, 16
+; RV32IA-TSO-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: sub a4, a4, a5
+; RV32IA-TSO-NOZACAS-NEXT: .LBB118_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-NOZACAS-NEXT: bge a1, a7, .LBB118_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB118_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-NOZACAS-NEXT: .LBB118_3: # in Loop: Header=BB118_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a6, .LBB118_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_min_i16_acq_rel:
; RV64I: # %bb.0:
@@ -17575,6 +23052,68 @@ define i16 @atomicrmw_min_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_min_i16_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: li a4, 16
+; RV32IA-WMO-ZACAS-NEXT: andi a5, a0, 24
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: srai a1, a1, 16
+; RV32IA-WMO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: sub a4, a4, a5
+; RV32IA-WMO-ZACAS-NEXT: .LBB118_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-WMO-ZACAS-NEXT: mv a6, a5
+; RV32IA-WMO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-WMO-ZACAS-NEXT: bge a1, a7, .LBB118_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB118_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-WMO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-WMO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-WMO-ZACAS-NEXT: .LBB118_3: # in Loop: Header=BB118_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a6, .LBB118_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_min_i16_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: li a4, 16
+; RV32IA-TSO-ZACAS-NEXT: andi a5, a0, 24
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: srai a1, a1, 16
+; RV32IA-TSO-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: sub a4, a4, a5
+; RV32IA-TSO-ZACAS-NEXT: .LBB118_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-TSO-ZACAS-NEXT: mv a6, a5
+; RV32IA-TSO-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-TSO-ZACAS-NEXT: bge a1, a7, .LBB118_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB118_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-TSO-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-TSO-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-TSO-ZACAS-NEXT: .LBB118_3: # in Loop: Header=BB118_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a6, a6, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a6, .LBB118_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_min_i16_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -17637,6 +23176,16 @@ define i16 @atomicrmw_min_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a5, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_min_i16_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomin.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_min_i16_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomin.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_min_i16_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomin.h.aqrl a0, a1, (a0)
@@ -17693,36 +23242,36 @@ define i16 @atomicrmw_min_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_min_i16_seq_cst:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: lui a3, 16
-; RV32IA-NEXT: slli a1, a1, 16
-; RV32IA-NEXT: li a4, 16
-; RV32IA-NEXT: andi a5, a0, 24
-; RV32IA-NEXT: addi a3, a3, -1
-; RV32IA-NEXT: srai a1, a1, 16
-; RV32IA-NEXT: sll a3, a3, a0
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: sub a4, a4, a5
-; RV32IA-NEXT: .LBB119_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w.aqrl a5, (a2)
-; RV32IA-NEXT: and a7, a5, a3
-; RV32IA-NEXT: mv a6, a5
-; RV32IA-NEXT: sll a7, a7, a4
-; RV32IA-NEXT: sra a7, a7, a4
-; RV32IA-NEXT: bge a1, a7, .LBB119_3
-; RV32IA-NEXT: # %bb.2: # in Loop: Header=BB119_1 Depth=1
-; RV32IA-NEXT: xor a6, a5, a1
-; RV32IA-NEXT: and a6, a6, a3
-; RV32IA-NEXT: xor a6, a5, a6
-; RV32IA-NEXT: .LBB119_3: # in Loop: Header=BB119_1 Depth=1
-; RV32IA-NEXT: sc.w.rl a6, a6, (a2)
-; RV32IA-NEXT: bnez a6, .LBB119_1
-; RV32IA-NEXT: # %bb.4:
-; RV32IA-NEXT: srl a0, a5, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_min_i16_seq_cst:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-NOZACAS-NEXT: slli a1, a1, 16
+; RV32IA-NOZACAS-NEXT: li a4, 16
+; RV32IA-NOZACAS-NEXT: andi a5, a0, 24
+; RV32IA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-NOZACAS-NEXT: srai a1, a1, 16
+; RV32IA-NOZACAS-NEXT: sll a3, a3, a0
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: sub a4, a4, a5
+; RV32IA-NOZACAS-NEXT: .LBB119_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w.aqrl a5, (a2)
+; RV32IA-NOZACAS-NEXT: and a7, a5, a3
+; RV32IA-NOZACAS-NEXT: mv a6, a5
+; RV32IA-NOZACAS-NEXT: sll a7, a7, a4
+; RV32IA-NOZACAS-NEXT: sra a7, a7, a4
+; RV32IA-NOZACAS-NEXT: bge a1, a7, .LBB119_3
+; RV32IA-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB119_1 Depth=1
+; RV32IA-NOZACAS-NEXT: xor a6, a5, a1
+; RV32IA-NOZACAS-NEXT: and a6, a6, a3
+; RV32IA-NOZACAS-NEXT: xor a6, a5, a6
+; RV32IA-NOZACAS-NEXT: .LBB119_3: # in Loop: Header=BB119_1 Depth=1
+; RV32IA-NOZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a6, .LBB119_1
+; RV32IA-NOZACAS-NEXT: # %bb.4:
+; RV32IA-NOZACAS-NEXT: srl a0, a5, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_min_i16_seq_cst:
; RV64I: # %bb.0:
@@ -17797,6 +23346,37 @@ define i16 @atomicrmw_min_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a5, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_min_i16_seq_cst:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: lui a3, 16
+; RV32IA-ZACAS-NEXT: slli a1, a1, 16
+; RV32IA-ZACAS-NEXT: li a4, 16
+; RV32IA-ZACAS-NEXT: andi a5, a0, 24
+; RV32IA-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-ZACAS-NEXT: srai a1, a1, 16
+; RV32IA-ZACAS-NEXT: sll a3, a3, a0
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: sub a4, a4, a5
+; RV32IA-ZACAS-NEXT: .LBB119_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w.aqrl a5, (a2)
+; RV32IA-ZACAS-NEXT: and a7, a5, a3
+; RV32IA-ZACAS-NEXT: mv a6, a5
+; RV32IA-ZACAS-NEXT: sll a7, a7, a4
+; RV32IA-ZACAS-NEXT: sra a7, a7, a4
+; RV32IA-ZACAS-NEXT: bge a1, a7, .LBB119_3
+; RV32IA-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB119_1 Depth=1
+; RV32IA-ZACAS-NEXT: xor a6, a5, a1
+; RV32IA-ZACAS-NEXT: and a6, a6, a3
+; RV32IA-ZACAS-NEXT: xor a6, a5, a6
+; RV32IA-ZACAS-NEXT: .LBB119_3: # in Loop: Header=BB119_1 Depth=1
+; RV32IA-ZACAS-NEXT: sc.w.rl a6, a6, (a2)
+; RV32IA-ZACAS-NEXT: bnez a6, .LBB119_1
+; RV32IA-ZACAS-NEXT: # %bb.4:
+; RV32IA-ZACAS-NEXT: srl a0, a5, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_min_i16_seq_cst:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -17828,6 +23408,16 @@ define i16 @atomicrmw_min_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a5, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_min_i16_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomin.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_min_i16_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomin.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_min_i16_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomin.h.aqrl a0, a1, (a0)
@@ -17886,30 +23476,30 @@ define i16 @atomicrmw_umax_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_umax_i16_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: lui a3, 16
-; RV32IA-NEXT: addi a3, a3, -1
-; RV32IA-NEXT: sll a4, a3, a0
-; RV32IA-NEXT: and a1, a1, a3
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB120_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w a3, (a2)
-; RV32IA-NEXT: and a6, a3, a4
-; RV32IA-NEXT: mv a5, a3
-; RV32IA-NEXT: bgeu a6, a1, .LBB120_3
-; RV32IA-NEXT: # %bb.2: # in Loop: Header=BB120_1 Depth=1
-; RV32IA-NEXT: xor a5, a3, a1
-; RV32IA-NEXT: and a5, a5, a4
-; RV32IA-NEXT: xor a5, a3, a5
-; RV32IA-NEXT: .LBB120_3: # in Loop: Header=BB120_1 Depth=1
-; RV32IA-NEXT: sc.w a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB120_1
-; RV32IA-NEXT: # %bb.4:
-; RV32IA-NEXT: srl a0, a3, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_umax_i16_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB120_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-NOZACAS-NEXT: and a6, a3, a4
+; RV32IA-NOZACAS-NEXT: mv a5, a3
+; RV32IA-NOZACAS-NEXT: bgeu a6, a1, .LBB120_3
+; RV32IA-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB120_1 Depth=1
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a1
+; RV32IA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-NOZACAS-NEXT: .LBB120_3: # in Loop: Header=BB120_1 Depth=1
+; RV32IA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB120_1
+; RV32IA-NOZACAS-NEXT: # %bb.4:
+; RV32IA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_umax_i16_monotonic:
; RV64I: # %bb.0:
@@ -17980,6 +23570,31 @@ define i16 @atomicrmw_umax_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_umax_i16_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: lui a3, 16
+; RV32IA-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB120_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-ZACAS-NEXT: and a6, a3, a4
+; RV32IA-ZACAS-NEXT: mv a5, a3
+; RV32IA-ZACAS-NEXT: bgeu a6, a1, .LBB120_3
+; RV32IA-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB120_1 Depth=1
+; RV32IA-ZACAS-NEXT: xor a5, a3, a1
+; RV32IA-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-ZACAS-NEXT: .LBB120_3: # in Loop: Header=BB120_1 Depth=1
+; RV32IA-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB120_1
+; RV32IA-ZACAS-NEXT: # %bb.4:
+; RV32IA-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_umax_i16_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -18005,6 +23620,16 @@ define i16 @atomicrmw_umax_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_umax_i16_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomaxu.h a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_umax_i16_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomaxu.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_umax_i16_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomaxu.h a0, a1, (a0)
@@ -18063,55 +23688,55 @@ define i16 @atomicrmw_umax_i16_acquire(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_umax_i16_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB121_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a3, (a2)
-; RV32IA-WMO-NEXT: and a6, a3, a4
-; RV32IA-WMO-NEXT: mv a5, a3
-; RV32IA-WMO-NEXT: bgeu a6, a1, .LBB121_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB121_1 Depth=1
-; RV32IA-WMO-NEXT: xor a5, a3, a1
-; RV32IA-WMO-NEXT: and a5, a5, a4
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: .LBB121_3: # in Loop: Header=BB121_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB121_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a3, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_umax_i16_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB121_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a3, a4
+; RV32IA-WMO-NOZACAS-NEXT: mv a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: bgeu a6, a1, .LBB121_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB121_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: .LBB121_3: # in Loop: Header=BB121_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB121_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_umax_i16_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB121_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a3, (a2)
-; RV32IA-TSO-NEXT: and a6, a3, a4
-; RV32IA-TSO-NEXT: mv a5, a3
-; RV32IA-TSO-NEXT: bgeu a6, a1, .LBB121_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB121_1 Depth=1
-; RV32IA-TSO-NEXT: xor a5, a3, a1
-; RV32IA-TSO-NEXT: and a5, a5, a4
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: .LBB121_3: # in Loop: Header=BB121_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB121_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a3, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_umax_i16_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB121_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a3, a4
+; RV32IA-TSO-NOZACAS-NEXT: mv a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: bgeu a6, a1, .LBB121_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB121_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: .LBB121_3: # in Loop: Header=BB121_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB121_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_umax_i16_acquire:
; RV64I: # %bb.0:
@@ -18207,6 +23832,56 @@ define i16 @atomicrmw_umax_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_umax_i16_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB121_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a6, a3, a4
+; RV32IA-WMO-ZACAS-NEXT: mv a5, a3
+; RV32IA-WMO-ZACAS-NEXT: bgeu a6, a1, .LBB121_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB121_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a1
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: .LBB121_3: # in Loop: Header=BB121_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB121_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_umax_i16_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB121_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a6, a3, a4
+; RV32IA-TSO-ZACAS-NEXT: mv a5, a3
+; RV32IA-TSO-ZACAS-NEXT: bgeu a6, a1, .LBB121_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB121_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a1
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: .LBB121_3: # in Loop: Header=BB121_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB121_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_umax_i16_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -18257,6 +23932,16 @@ define i16 @atomicrmw_umax_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_umax_i16_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomaxu.h.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_umax_i16_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomaxu.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_umax_i16_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomaxu.h.aq a0, a1, (a0)
@@ -18315,55 +24000,55 @@ define i16 @atomicrmw_umax_i16_release(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_umax_i16_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB122_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w a3, (a2)
-; RV32IA-WMO-NEXT: and a6, a3, a4
-; RV32IA-WMO-NEXT: mv a5, a3
-; RV32IA-WMO-NEXT: bgeu a6, a1, .LBB122_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB122_1 Depth=1
-; RV32IA-WMO-NEXT: xor a5, a3, a1
-; RV32IA-WMO-NEXT: and a5, a5, a4
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: .LBB122_3: # in Loop: Header=BB122_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB122_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a3, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_umax_i16_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB122_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a3, a4
+; RV32IA-WMO-NOZACAS-NEXT: mv a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: bgeu a6, a1, .LBB122_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB122_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: .LBB122_3: # in Loop: Header=BB122_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB122_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_umax_i16_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB122_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a3, (a2)
-; RV32IA-TSO-NEXT: and a6, a3, a4
-; RV32IA-TSO-NEXT: mv a5, a3
-; RV32IA-TSO-NEXT: bgeu a6, a1, .LBB122_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB122_1 Depth=1
-; RV32IA-TSO-NEXT: xor a5, a3, a1
-; RV32IA-TSO-NEXT: and a5, a5, a4
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: .LBB122_3: # in Loop: Header=BB122_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB122_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a3, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_umax_i16_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB122_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a3, a4
+; RV32IA-TSO-NOZACAS-NEXT: mv a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: bgeu a6, a1, .LBB122_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB122_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: .LBB122_3: # in Loop: Header=BB122_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB122_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_umax_i16_release:
; RV64I: # %bb.0:
@@ -18459,6 +24144,56 @@ define i16 @atomicrmw_umax_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_umax_i16_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB122_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a6, a3, a4
+; RV32IA-WMO-ZACAS-NEXT: mv a5, a3
+; RV32IA-WMO-ZACAS-NEXT: bgeu a6, a1, .LBB122_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB122_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a1
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: .LBB122_3: # in Loop: Header=BB122_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB122_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_umax_i16_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB122_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a6, a3, a4
+; RV32IA-TSO-ZACAS-NEXT: mv a5, a3
+; RV32IA-TSO-ZACAS-NEXT: bgeu a6, a1, .LBB122_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB122_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a1
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: .LBB122_3: # in Loop: Header=BB122_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB122_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_umax_i16_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -18509,6 +24244,16 @@ define i16 @atomicrmw_umax_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_umax_i16_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomaxu.h.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_umax_i16_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomaxu.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_umax_i16_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomaxu.h.rl a0, a1, (a0)
@@ -18567,55 +24312,55 @@ define i16 @atomicrmw_umax_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_umax_i16_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB123_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a3, (a2)
-; RV32IA-WMO-NEXT: and a6, a3, a4
-; RV32IA-WMO-NEXT: mv a5, a3
-; RV32IA-WMO-NEXT: bgeu a6, a1, .LBB123_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB123_1 Depth=1
-; RV32IA-WMO-NEXT: xor a5, a3, a1
-; RV32IA-WMO-NEXT: and a5, a5, a4
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: .LBB123_3: # in Loop: Header=BB123_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB123_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a3, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_umax_i16_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB123_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a3, a4
+; RV32IA-WMO-NOZACAS-NEXT: mv a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: bgeu a6, a1, .LBB123_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB123_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: .LBB123_3: # in Loop: Header=BB123_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB123_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_umax_i16_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB123_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a3, (a2)
-; RV32IA-TSO-NEXT: and a6, a3, a4
-; RV32IA-TSO-NEXT: mv a5, a3
-; RV32IA-TSO-NEXT: bgeu a6, a1, .LBB123_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB123_1 Depth=1
-; RV32IA-TSO-NEXT: xor a5, a3, a1
-; RV32IA-TSO-NEXT: and a5, a5, a4
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: .LBB123_3: # in Loop: Header=BB123_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB123_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a3, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_umax_i16_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB123_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a3, a4
+; RV32IA-TSO-NOZACAS-NEXT: mv a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: bgeu a6, a1, .LBB123_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB123_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: .LBB123_3: # in Loop: Header=BB123_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB123_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_umax_i16_acq_rel:
; RV64I: # %bb.0:
@@ -18711,6 +24456,56 @@ define i16 @atomicrmw_umax_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_umax_i16_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB123_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a6, a3, a4
+; RV32IA-WMO-ZACAS-NEXT: mv a5, a3
+; RV32IA-WMO-ZACAS-NEXT: bgeu a6, a1, .LBB123_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB123_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a1
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: .LBB123_3: # in Loop: Header=BB123_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB123_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_umax_i16_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB123_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a6, a3, a4
+; RV32IA-TSO-ZACAS-NEXT: mv a5, a3
+; RV32IA-TSO-ZACAS-NEXT: bgeu a6, a1, .LBB123_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB123_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a1
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: .LBB123_3: # in Loop: Header=BB123_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB123_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_umax_i16_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -18761,6 +24556,16 @@ define i16 @atomicrmw_umax_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_umax_i16_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomaxu.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_umax_i16_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomaxu.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_umax_i16_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomaxu.h.aqrl a0, a1, (a0)
@@ -18819,30 +24624,30 @@ define i16 @atomicrmw_umax_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_umax_i16_seq_cst:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: lui a3, 16
-; RV32IA-NEXT: addi a3, a3, -1
-; RV32IA-NEXT: sll a4, a3, a0
-; RV32IA-NEXT: and a1, a1, a3
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB124_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w.aqrl a3, (a2)
-; RV32IA-NEXT: and a6, a3, a4
-; RV32IA-NEXT: mv a5, a3
-; RV32IA-NEXT: bgeu a6, a1, .LBB124_3
-; RV32IA-NEXT: # %bb.2: # in Loop: Header=BB124_1 Depth=1
-; RV32IA-NEXT: xor a5, a3, a1
-; RV32IA-NEXT: and a5, a5, a4
-; RV32IA-NEXT: xor a5, a3, a5
-; RV32IA-NEXT: .LBB124_3: # in Loop: Header=BB124_1 Depth=1
-; RV32IA-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB124_1
-; RV32IA-NEXT: # %bb.4:
-; RV32IA-NEXT: srl a0, a3, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_umax_i16_seq_cst:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB124_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w.aqrl a3, (a2)
+; RV32IA-NOZACAS-NEXT: and a6, a3, a4
+; RV32IA-NOZACAS-NEXT: mv a5, a3
+; RV32IA-NOZACAS-NEXT: bgeu a6, a1, .LBB124_3
+; RV32IA-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB124_1 Depth=1
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a1
+; RV32IA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-NOZACAS-NEXT: .LBB124_3: # in Loop: Header=BB124_1 Depth=1
+; RV32IA-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB124_1
+; RV32IA-NOZACAS-NEXT: # %bb.4:
+; RV32IA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_umax_i16_seq_cst:
; RV64I: # %bb.0:
@@ -18913,6 +24718,31 @@ define i16 @atomicrmw_umax_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_umax_i16_seq_cst:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: lui a3, 16
+; RV32IA-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB124_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w.aqrl a3, (a2)
+; RV32IA-ZACAS-NEXT: and a6, a3, a4
+; RV32IA-ZACAS-NEXT: mv a5, a3
+; RV32IA-ZACAS-NEXT: bgeu a6, a1, .LBB124_3
+; RV32IA-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB124_1 Depth=1
+; RV32IA-ZACAS-NEXT: xor a5, a3, a1
+; RV32IA-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-ZACAS-NEXT: .LBB124_3: # in Loop: Header=BB124_1 Depth=1
+; RV32IA-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB124_1
+; RV32IA-ZACAS-NEXT: # %bb.4:
+; RV32IA-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_umax_i16_seq_cst:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -18938,6 +24768,16 @@ define i16 @atomicrmw_umax_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_umax_i16_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amomaxu.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_umax_i16_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amomaxu.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_umax_i16_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amomaxu.h.aqrl a0, a1, (a0)
@@ -18996,30 +24836,30 @@ define i16 @atomicrmw_umin_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_umin_i16_monotonic:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: lui a3, 16
-; RV32IA-NEXT: addi a3, a3, -1
-; RV32IA-NEXT: sll a4, a3, a0
-; RV32IA-NEXT: and a1, a1, a3
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB125_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w a3, (a2)
-; RV32IA-NEXT: and a6, a3, a4
-; RV32IA-NEXT: mv a5, a3
-; RV32IA-NEXT: bgeu a1, a6, .LBB125_3
-; RV32IA-NEXT: # %bb.2: # in Loop: Header=BB125_1 Depth=1
-; RV32IA-NEXT: xor a5, a3, a1
-; RV32IA-NEXT: and a5, a5, a4
-; RV32IA-NEXT: xor a5, a3, a5
-; RV32IA-NEXT: .LBB125_3: # in Loop: Header=BB125_1 Depth=1
-; RV32IA-NEXT: sc.w a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB125_1
-; RV32IA-NEXT: # %bb.4:
-; RV32IA-NEXT: srl a0, a3, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_umin_i16_monotonic:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB125_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-NOZACAS-NEXT: and a6, a3, a4
+; RV32IA-NOZACAS-NEXT: mv a5, a3
+; RV32IA-NOZACAS-NEXT: bgeu a1, a6, .LBB125_3
+; RV32IA-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB125_1 Depth=1
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a1
+; RV32IA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-NOZACAS-NEXT: .LBB125_3: # in Loop: Header=BB125_1 Depth=1
+; RV32IA-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB125_1
+; RV32IA-NOZACAS-NEXT: # %bb.4:
+; RV32IA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_umin_i16_monotonic:
; RV64I: # %bb.0:
@@ -19090,6 +24930,31 @@ define i16 @atomicrmw_umin_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_umin_i16_monotonic:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: lui a3, 16
+; RV32IA-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB125_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-ZACAS-NEXT: and a6, a3, a4
+; RV32IA-ZACAS-NEXT: mv a5, a3
+; RV32IA-ZACAS-NEXT: bgeu a1, a6, .LBB125_3
+; RV32IA-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB125_1 Depth=1
+; RV32IA-ZACAS-NEXT: xor a5, a3, a1
+; RV32IA-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-ZACAS-NEXT: .LBB125_3: # in Loop: Header=BB125_1 Depth=1
+; RV32IA-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB125_1
+; RV32IA-ZACAS-NEXT: # %bb.4:
+; RV32IA-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_umin_i16_monotonic:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -19115,6 +24980,16 @@ define i16 @atomicrmw_umin_i16_monotonic(ptr %a, i16 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_umin_i16_monotonic:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amominu.h a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_umin_i16_monotonic:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amominu.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_umin_i16_monotonic:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amominu.h a0, a1, (a0)
@@ -19173,55 +25048,55 @@ define i16 @atomicrmw_umin_i16_acquire(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_umin_i16_acquire:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB126_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a3, (a2)
-; RV32IA-WMO-NEXT: and a6, a3, a4
-; RV32IA-WMO-NEXT: mv a5, a3
-; RV32IA-WMO-NEXT: bgeu a1, a6, .LBB126_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB126_1 Depth=1
-; RV32IA-WMO-NEXT: xor a5, a3, a1
-; RV32IA-WMO-NEXT: and a5, a5, a4
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: .LBB126_3: # in Loop: Header=BB126_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB126_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a3, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_umin_i16_acquire:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB126_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a3, a4
+; RV32IA-WMO-NOZACAS-NEXT: mv a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: bgeu a1, a6, .LBB126_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB126_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: .LBB126_3: # in Loop: Header=BB126_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB126_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_umin_i16_acquire:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB126_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a3, (a2)
-; RV32IA-TSO-NEXT: and a6, a3, a4
-; RV32IA-TSO-NEXT: mv a5, a3
-; RV32IA-TSO-NEXT: bgeu a1, a6, .LBB126_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB126_1 Depth=1
-; RV32IA-TSO-NEXT: xor a5, a3, a1
-; RV32IA-TSO-NEXT: and a5, a5, a4
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: .LBB126_3: # in Loop: Header=BB126_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB126_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a3, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_umin_i16_acquire:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB126_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a3, a4
+; RV32IA-TSO-NOZACAS-NEXT: mv a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: bgeu a1, a6, .LBB126_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB126_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: .LBB126_3: # in Loop: Header=BB126_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB126_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_umin_i16_acquire:
; RV64I: # %bb.0:
@@ -19317,6 +25192,56 @@ define i16 @atomicrmw_umin_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_umin_i16_acquire:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB126_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a6, a3, a4
+; RV32IA-WMO-ZACAS-NEXT: mv a5, a3
+; RV32IA-WMO-ZACAS-NEXT: bgeu a1, a6, .LBB126_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB126_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a1
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: .LBB126_3: # in Loop: Header=BB126_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB126_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_umin_i16_acquire:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB126_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a6, a3, a4
+; RV32IA-TSO-ZACAS-NEXT: mv a5, a3
+; RV32IA-TSO-ZACAS-NEXT: bgeu a1, a6, .LBB126_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB126_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a1
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: .LBB126_3: # in Loop: Header=BB126_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB126_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_umin_i16_acquire:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -19367,6 +25292,16 @@ define i16 @atomicrmw_umin_i16_acquire(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_umin_i16_acquire:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amominu.h.aq a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_umin_i16_acquire:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amominu.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_umin_i16_acquire:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amominu.h.aq a0, a1, (a0)
@@ -19425,55 +25360,55 @@ define i16 @atomicrmw_umin_i16_release(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_umin_i16_release:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB127_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w a3, (a2)
-; RV32IA-WMO-NEXT: and a6, a3, a4
-; RV32IA-WMO-NEXT: mv a5, a3
-; RV32IA-WMO-NEXT: bgeu a1, a6, .LBB127_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB127_1 Depth=1
-; RV32IA-WMO-NEXT: xor a5, a3, a1
-; RV32IA-WMO-NEXT: and a5, a5, a4
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: .LBB127_3: # in Loop: Header=BB127_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB127_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a3, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_umin_i16_release:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB127_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a3, a4
+; RV32IA-WMO-NOZACAS-NEXT: mv a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: bgeu a1, a6, .LBB127_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB127_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: .LBB127_3: # in Loop: Header=BB127_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB127_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_umin_i16_release:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB127_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a3, (a2)
-; RV32IA-TSO-NEXT: and a6, a3, a4
-; RV32IA-TSO-NEXT: mv a5, a3
-; RV32IA-TSO-NEXT: bgeu a1, a6, .LBB127_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB127_1 Depth=1
-; RV32IA-TSO-NEXT: xor a5, a3, a1
-; RV32IA-TSO-NEXT: and a5, a5, a4
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: .LBB127_3: # in Loop: Header=BB127_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB127_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a3, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_umin_i16_release:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB127_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a3, a4
+; RV32IA-TSO-NOZACAS-NEXT: mv a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: bgeu a1, a6, .LBB127_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB127_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: .LBB127_3: # in Loop: Header=BB127_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB127_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_umin_i16_release:
; RV64I: # %bb.0:
@@ -19569,6 +25504,56 @@ define i16 @atomicrmw_umin_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_umin_i16_release:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB127_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a6, a3, a4
+; RV32IA-WMO-ZACAS-NEXT: mv a5, a3
+; RV32IA-WMO-ZACAS-NEXT: bgeu a1, a6, .LBB127_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB127_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a1
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: .LBB127_3: # in Loop: Header=BB127_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB127_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_umin_i16_release:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB127_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a6, a3, a4
+; RV32IA-TSO-ZACAS-NEXT: mv a5, a3
+; RV32IA-TSO-ZACAS-NEXT: bgeu a1, a6, .LBB127_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB127_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a1
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: .LBB127_3: # in Loop: Header=BB127_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB127_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_umin_i16_release:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -19619,6 +25604,16 @@ define i16 @atomicrmw_umin_i16_release(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_umin_i16_release:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amominu.h.rl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_umin_i16_release:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amominu.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_umin_i16_release:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amominu.h.rl a0, a1, (a0)
@@ -19677,55 +25672,55 @@ define i16 @atomicrmw_umin_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-WMO-LABEL: atomicrmw_umin_i16_acq_rel:
-; RV32IA-WMO: # %bb.0:
-; RV32IA-WMO-NEXT: andi a2, a0, -4
-; RV32IA-WMO-NEXT: slli a0, a0, 3
-; RV32IA-WMO-NEXT: lui a3, 16
-; RV32IA-WMO-NEXT: addi a3, a3, -1
-; RV32IA-WMO-NEXT: sll a4, a3, a0
-; RV32IA-WMO-NEXT: and a1, a1, a3
-; RV32IA-WMO-NEXT: sll a1, a1, a0
-; RV32IA-WMO-NEXT: .LBB128_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-WMO-NEXT: lr.w.aq a3, (a2)
-; RV32IA-WMO-NEXT: and a6, a3, a4
-; RV32IA-WMO-NEXT: mv a5, a3
-; RV32IA-WMO-NEXT: bgeu a1, a6, .LBB128_3
-; RV32IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB128_1 Depth=1
-; RV32IA-WMO-NEXT: xor a5, a3, a1
-; RV32IA-WMO-NEXT: and a5, a5, a4
-; RV32IA-WMO-NEXT: xor a5, a3, a5
-; RV32IA-WMO-NEXT: .LBB128_3: # in Loop: Header=BB128_1 Depth=1
-; RV32IA-WMO-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-WMO-NEXT: bnez a5, .LBB128_1
-; RV32IA-WMO-NEXT: # %bb.4:
-; RV32IA-WMO-NEXT: srl a0, a3, a0
-; RV32IA-WMO-NEXT: ret
+; RV32IA-WMO-NOZACAS-LABEL: atomicrmw_umin_i16_acq_rel:
+; RV32IA-WMO-NOZACAS: # %bb.0:
+; RV32IA-WMO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-NOZACAS-NEXT: .LBB128_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: and a6, a3, a4
+; RV32IA-WMO-NOZACAS-NEXT: mv a5, a3
+; RV32IA-WMO-NOZACAS-NEXT: bgeu a1, a6, .LBB128_3
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB128_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a1
+; RV32IA-WMO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-NOZACAS-NEXT: .LBB128_3: # in Loop: Header=BB128_1 Depth=1
+; RV32IA-WMO-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-NOZACAS-NEXT: bnez a5, .LBB128_1
+; RV32IA-WMO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-NOZACAS-NEXT: ret
;
-; RV32IA-TSO-LABEL: atomicrmw_umin_i16_acq_rel:
-; RV32IA-TSO: # %bb.0:
-; RV32IA-TSO-NEXT: andi a2, a0, -4
-; RV32IA-TSO-NEXT: slli a0, a0, 3
-; RV32IA-TSO-NEXT: lui a3, 16
-; RV32IA-TSO-NEXT: addi a3, a3, -1
-; RV32IA-TSO-NEXT: sll a4, a3, a0
-; RV32IA-TSO-NEXT: and a1, a1, a3
-; RV32IA-TSO-NEXT: sll a1, a1, a0
-; RV32IA-TSO-NEXT: .LBB128_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-TSO-NEXT: lr.w a3, (a2)
-; RV32IA-TSO-NEXT: and a6, a3, a4
-; RV32IA-TSO-NEXT: mv a5, a3
-; RV32IA-TSO-NEXT: bgeu a1, a6, .LBB128_3
-; RV32IA-TSO-NEXT: # %bb.2: # in Loop: Header=BB128_1 Depth=1
-; RV32IA-TSO-NEXT: xor a5, a3, a1
-; RV32IA-TSO-NEXT: and a5, a5, a4
-; RV32IA-TSO-NEXT: xor a5, a3, a5
-; RV32IA-TSO-NEXT: .LBB128_3: # in Loop: Header=BB128_1 Depth=1
-; RV32IA-TSO-NEXT: sc.w a5, a5, (a2)
-; RV32IA-TSO-NEXT: bnez a5, .LBB128_1
-; RV32IA-TSO-NEXT: # %bb.4:
-; RV32IA-TSO-NEXT: srl a0, a3, a0
-; RV32IA-TSO-NEXT: ret
+; RV32IA-TSO-NOZACAS-LABEL: atomicrmw_umin_i16_acq_rel:
+; RV32IA-TSO-NOZACAS: # %bb.0:
+; RV32IA-TSO-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-NOZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-NOZACAS-NEXT: .LBB128_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: and a6, a3, a4
+; RV32IA-TSO-NOZACAS-NEXT: mv a5, a3
+; RV32IA-TSO-NOZACAS-NEXT: bgeu a1, a6, .LBB128_3
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB128_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a1
+; RV32IA-TSO-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-NOZACAS-NEXT: .LBB128_3: # in Loop: Header=BB128_1 Depth=1
+; RV32IA-TSO-NOZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-NOZACAS-NEXT: bnez a5, .LBB128_1
+; RV32IA-TSO-NOZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_umin_i16_acq_rel:
; RV64I: # %bb.0:
@@ -19821,6 +25816,56 @@ define i16 @atomicrmw_umin_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZACAS-LABEL: atomicrmw_umin_i16_acq_rel:
+; RV32IA-WMO-ZACAS: # %bb.0:
+; RV32IA-WMO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-WMO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-WMO-ZACAS-NEXT: lui a3, 16
+; RV32IA-WMO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-WMO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-WMO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-WMO-ZACAS-NEXT: .LBB128_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZACAS-NEXT: lr.w.aq a3, (a2)
+; RV32IA-WMO-ZACAS-NEXT: and a6, a3, a4
+; RV32IA-WMO-ZACAS-NEXT: mv a5, a3
+; RV32IA-WMO-ZACAS-NEXT: bgeu a1, a6, .LBB128_3
+; RV32IA-WMO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB128_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a1
+; RV32IA-WMO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-WMO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-WMO-ZACAS-NEXT: .LBB128_3: # in Loop: Header=BB128_1 Depth=1
+; RV32IA-WMO-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-WMO-ZACAS-NEXT: bnez a5, .LBB128_1
+; RV32IA-WMO-ZACAS-NEXT: # %bb.4:
+; RV32IA-WMO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-WMO-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZACAS-LABEL: atomicrmw_umin_i16_acq_rel:
+; RV32IA-TSO-ZACAS: # %bb.0:
+; RV32IA-TSO-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-TSO-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-TSO-ZACAS-NEXT: lui a3, 16
+; RV32IA-TSO-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-TSO-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-TSO-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-TSO-ZACAS-NEXT: .LBB128_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZACAS-NEXT: lr.w a3, (a2)
+; RV32IA-TSO-ZACAS-NEXT: and a6, a3, a4
+; RV32IA-TSO-ZACAS-NEXT: mv a5, a3
+; RV32IA-TSO-ZACAS-NEXT: bgeu a1, a6, .LBB128_3
+; RV32IA-TSO-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB128_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a1
+; RV32IA-TSO-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-TSO-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-TSO-ZACAS-NEXT: .LBB128_3: # in Loop: Header=BB128_1 Depth=1
+; RV32IA-TSO-ZACAS-NEXT: sc.w a5, a5, (a2)
+; RV32IA-TSO-ZACAS-NEXT: bnez a5, .LBB128_1
+; RV32IA-TSO-ZACAS-NEXT: # %bb.4:
+; RV32IA-TSO-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-TSO-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZACAS-LABEL: atomicrmw_umin_i16_acq_rel:
; RV64IA-WMO-ZACAS: # %bb.0:
; RV64IA-WMO-ZACAS-NEXT: andi a2, a0, -4
@@ -19871,6 +25916,16 @@ define i16 @atomicrmw_umin_i16_acq_rel(ptr %a, i16 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_umin_i16_acq_rel:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amominu.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_umin_i16_acq_rel:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amominu.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_umin_i16_acq_rel:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amominu.h.aqrl a0, a1, (a0)
@@ -19929,30 +25984,30 @@ define i16 @atomicrmw_umin_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV32I-NEXT: addi sp, sp, 32
; RV32I-NEXT: ret
;
-; RV32IA-LABEL: atomicrmw_umin_i16_seq_cst:
-; RV32IA: # %bb.0:
-; RV32IA-NEXT: andi a2, a0, -4
-; RV32IA-NEXT: slli a0, a0, 3
-; RV32IA-NEXT: lui a3, 16
-; RV32IA-NEXT: addi a3, a3, -1
-; RV32IA-NEXT: sll a4, a3, a0
-; RV32IA-NEXT: and a1, a1, a3
-; RV32IA-NEXT: sll a1, a1, a0
-; RV32IA-NEXT: .LBB129_1: # =>This Inner Loop Header: Depth=1
-; RV32IA-NEXT: lr.w.aqrl a3, (a2)
-; RV32IA-NEXT: and a6, a3, a4
-; RV32IA-NEXT: mv a5, a3
-; RV32IA-NEXT: bgeu a1, a6, .LBB129_3
-; RV32IA-NEXT: # %bb.2: # in Loop: Header=BB129_1 Depth=1
-; RV32IA-NEXT: xor a5, a3, a1
-; RV32IA-NEXT: and a5, a5, a4
-; RV32IA-NEXT: xor a5, a3, a5
-; RV32IA-NEXT: .LBB129_3: # in Loop: Header=BB129_1 Depth=1
-; RV32IA-NEXT: sc.w.rl a5, a5, (a2)
-; RV32IA-NEXT: bnez a5, .LBB129_1
-; RV32IA-NEXT: # %bb.4:
-; RV32IA-NEXT: srl a0, a3, a0
-; RV32IA-NEXT: ret
+; RV32IA-NOZACAS-LABEL: atomicrmw_umin_i16_seq_cst:
+; RV32IA-NOZACAS: # %bb.0:
+; RV32IA-NOZACAS-NEXT: andi a2, a0, -4
+; RV32IA-NOZACAS-NEXT: slli a0, a0, 3
+; RV32IA-NOZACAS-NEXT: lui a3, 16
+; RV32IA-NOZACAS-NEXT: addi a3, a3, -1
+; RV32IA-NOZACAS-NEXT: sll a4, a3, a0
+; RV32IA-NOZACAS-NEXT: and a1, a1, a3
+; RV32IA-NOZACAS-NEXT: sll a1, a1, a0
+; RV32IA-NOZACAS-NEXT: .LBB129_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-NOZACAS-NEXT: lr.w.aqrl a3, (a2)
+; RV32IA-NOZACAS-NEXT: and a6, a3, a4
+; RV32IA-NOZACAS-NEXT: mv a5, a3
+; RV32IA-NOZACAS-NEXT: bgeu a1, a6, .LBB129_3
+; RV32IA-NOZACAS-NEXT: # %bb.2: # in Loop: Header=BB129_1 Depth=1
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a1
+; RV32IA-NOZACAS-NEXT: and a5, a5, a4
+; RV32IA-NOZACAS-NEXT: xor a5, a3, a5
+; RV32IA-NOZACAS-NEXT: .LBB129_3: # in Loop: Header=BB129_1 Depth=1
+; RV32IA-NOZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-NOZACAS-NEXT: bnez a5, .LBB129_1
+; RV32IA-NOZACAS-NEXT: # %bb.4:
+; RV32IA-NOZACAS-NEXT: srl a0, a3, a0
+; RV32IA-NOZACAS-NEXT: ret
;
; RV64I-LABEL: atomicrmw_umin_i16_seq_cst:
; RV64I: # %bb.0:
@@ -20023,6 +26078,31 @@ define i16 @atomicrmw_umin_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-NOZACAS-NEXT: srlw a0, a3, a0
; RV64IA-NOZACAS-NEXT: ret
;
+; RV32IA-ZACAS-LABEL: atomicrmw_umin_i16_seq_cst:
+; RV32IA-ZACAS: # %bb.0:
+; RV32IA-ZACAS-NEXT: andi a2, a0, -4
+; RV32IA-ZACAS-NEXT: slli a0, a0, 3
+; RV32IA-ZACAS-NEXT: lui a3, 16
+; RV32IA-ZACAS-NEXT: addi a3, a3, -1
+; RV32IA-ZACAS-NEXT: sll a4, a3, a0
+; RV32IA-ZACAS-NEXT: and a1, a1, a3
+; RV32IA-ZACAS-NEXT: sll a1, a1, a0
+; RV32IA-ZACAS-NEXT: .LBB129_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-ZACAS-NEXT: lr.w.aqrl a3, (a2)
+; RV32IA-ZACAS-NEXT: and a6, a3, a4
+; RV32IA-ZACAS-NEXT: mv a5, a3
+; RV32IA-ZACAS-NEXT: bgeu a1, a6, .LBB129_3
+; RV32IA-ZACAS-NEXT: # %bb.2: # in Loop: Header=BB129_1 Depth=1
+; RV32IA-ZACAS-NEXT: xor a5, a3, a1
+; RV32IA-ZACAS-NEXT: and a5, a5, a4
+; RV32IA-ZACAS-NEXT: xor a5, a3, a5
+; RV32IA-ZACAS-NEXT: .LBB129_3: # in Loop: Header=BB129_1 Depth=1
+; RV32IA-ZACAS-NEXT: sc.w.rl a5, a5, (a2)
+; RV32IA-ZACAS-NEXT: bnez a5, .LBB129_1
+; RV32IA-ZACAS-NEXT: # %bb.4:
+; RV32IA-ZACAS-NEXT: srl a0, a3, a0
+; RV32IA-ZACAS-NEXT: ret
+;
; RV64IA-ZACAS-LABEL: atomicrmw_umin_i16_seq_cst:
; RV64IA-ZACAS: # %bb.0:
; RV64IA-ZACAS-NEXT: andi a2, a0, -4
@@ -20048,6 +26128,16 @@ define i16 @atomicrmw_umin_i16_seq_cst(ptr %a, i16 %b) nounwind {
; RV64IA-ZACAS-NEXT: srlw a0, a3, a0
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-LABEL: atomicrmw_umin_i16_seq_cst:
+; RV32IA-WMO-ZABHA: # %bb.0:
+; RV32IA-WMO-ZABHA-NEXT: amominu.h.aqrl a0, a1, (a0)
+; RV32IA-WMO-ZABHA-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-LABEL: atomicrmw_umin_i16_seq_cst:
+; RV32IA-TSO-ZABHA: # %bb.0:
+; RV32IA-TSO-ZABHA-NEXT: amominu.h a0, a1, (a0)
+; RV32IA-TSO-ZABHA-NEXT: ret
+;
; RV64IA-WMO-ZABHA-LABEL: atomicrmw_umin_i16_seq_cst:
; RV64IA-WMO-ZABHA: # %bb.0:
; RV64IA-WMO-ZABHA-NEXT: amominu.h.aqrl a0, a1, (a0)
@@ -20992,6 +27082,30 @@ define i32 @atomicrmw_nand_i32_monotonic(ptr %a, i32 %b) nounwind {
; RV64IA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
; RV64IA-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i32_monotonic:
+; RV32IA-WMO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: .LBB150_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: lr.w a2, (a0)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a3, a2, a1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: not a3, a3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sc.w a3, a3, (a0)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: bnez a3, .LBB150_1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: mv a0, a2
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i32_monotonic:
+; RV32IA-TSO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: .LBB150_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: lr.w a2, (a0)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a3, a2, a1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: not a3, a3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sc.w a3, a3, (a0)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: bnez a3, .LBB150_1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: mv a0, a2
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i32_monotonic:
; RV64IA-WMO-ZABHA-NOZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-NOZACAS-NEXT: .LBB150_1: # =>This Inner Loop Header: Depth=1
@@ -21016,6 +27130,34 @@ define i32 @atomicrmw_nand_i32_monotonic(ptr %a, i32 %b) nounwind {
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: mv a0, a2
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i32_monotonic:
+; RV32IA-WMO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: lw a0, 0(a0)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: .LBB150_1: # %atomicrmw.start
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: mv a3, a0
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: and a4, a0, a1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: not a4, a4
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: amocas.w a0, a4, (a2)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: bne a0, a3, .LBB150_1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i32_monotonic:
+; RV32IA-TSO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: lw a0, 0(a0)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: .LBB150_1: # %atomicrmw.start
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: mv a3, a0
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: and a4, a0, a1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: not a4, a4
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: amocas.w a0, a4, (a2)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: bne a0, a3, .LBB150_1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i32_monotonic:
; RV64IA-WMO-ZABHA-ZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
@@ -21172,6 +27314,30 @@ define i32 @atomicrmw_nand_i32_acquire(ptr %a, i32 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i32_acquire:
+; RV32IA-WMO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: .LBB151_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: lr.w.aq a2, (a0)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a3, a2, a1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: not a3, a3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sc.w a3, a3, (a0)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: bnez a3, .LBB151_1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: mv a0, a2
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i32_acquire:
+; RV32IA-TSO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: .LBB151_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: lr.w a2, (a0)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a3, a2, a1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: not a3, a3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sc.w a3, a3, (a0)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: bnez a3, .LBB151_1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: mv a0, a2
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i32_acquire:
; RV64IA-WMO-ZABHA-NOZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-NOZACAS-NEXT: .LBB151_1: # =>This Inner Loop Header: Depth=1
@@ -21196,6 +27362,34 @@ define i32 @atomicrmw_nand_i32_acquire(ptr %a, i32 %b) nounwind {
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: mv a0, a2
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i32_acquire:
+; RV32IA-WMO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: lw a0, 0(a0)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: .LBB151_1: # %atomicrmw.start
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: mv a3, a0
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: and a4, a0, a1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: not a4, a4
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: amocas.w.aq a0, a4, (a2)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: bne a0, a3, .LBB151_1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i32_acquire:
+; RV32IA-TSO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: lw a0, 0(a0)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: .LBB151_1: # %atomicrmw.start
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: mv a3, a0
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: and a4, a0, a1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: not a4, a4
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: amocas.w a0, a4, (a2)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: bne a0, a3, .LBB151_1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i32_acquire:
; RV64IA-WMO-ZABHA-ZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
@@ -21352,6 +27546,30 @@ define i32 @atomicrmw_nand_i32_release(ptr %a, i32 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i32_release:
+; RV32IA-WMO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: .LBB152_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: lr.w a2, (a0)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a3, a2, a1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: not a3, a3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sc.w.rl a3, a3, (a0)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: bnez a3, .LBB152_1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: mv a0, a2
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i32_release:
+; RV32IA-TSO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: .LBB152_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: lr.w a2, (a0)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a3, a2, a1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: not a3, a3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sc.w a3, a3, (a0)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: bnez a3, .LBB152_1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: mv a0, a2
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i32_release:
; RV64IA-WMO-ZABHA-NOZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-NOZACAS-NEXT: .LBB152_1: # =>This Inner Loop Header: Depth=1
@@ -21376,6 +27594,34 @@ define i32 @atomicrmw_nand_i32_release(ptr %a, i32 %b) nounwind {
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: mv a0, a2
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i32_release:
+; RV32IA-WMO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: lw a0, 0(a0)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: .LBB152_1: # %atomicrmw.start
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: mv a3, a0
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: and a4, a0, a1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: not a4, a4
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: amocas.w.rl a0, a4, (a2)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: bne a0, a3, .LBB152_1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i32_release:
+; RV32IA-TSO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: lw a0, 0(a0)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: .LBB152_1: # %atomicrmw.start
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: mv a3, a0
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: and a4, a0, a1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: not a4, a4
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: amocas.w a0, a4, (a2)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: bne a0, a3, .LBB152_1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i32_release:
; RV64IA-WMO-ZABHA-ZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
@@ -21532,6 +27778,30 @@ define i32 @atomicrmw_nand_i32_acq_rel(ptr %a, i32 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i32_acq_rel:
+; RV32IA-WMO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: .LBB153_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: lr.w.aq a2, (a0)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a3, a2, a1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: not a3, a3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sc.w.rl a3, a3, (a0)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: bnez a3, .LBB153_1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: mv a0, a2
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i32_acq_rel:
+; RV32IA-TSO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: .LBB153_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: lr.w a2, (a0)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a3, a2, a1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: not a3, a3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sc.w a3, a3, (a0)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: bnez a3, .LBB153_1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: mv a0, a2
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i32_acq_rel:
; RV64IA-WMO-ZABHA-NOZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-NOZACAS-NEXT: .LBB153_1: # =>This Inner Loop Header: Depth=1
@@ -21556,6 +27826,34 @@ define i32 @atomicrmw_nand_i32_acq_rel(ptr %a, i32 %b) nounwind {
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: mv a0, a2
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i32_acq_rel:
+; RV32IA-WMO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: lw a0, 0(a0)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: .LBB153_1: # %atomicrmw.start
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: mv a3, a0
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: and a4, a0, a1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: not a4, a4
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: amocas.w.aqrl a0, a4, (a2)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: bne a0, a3, .LBB153_1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i32_acq_rel:
+; RV32IA-TSO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: lw a0, 0(a0)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: .LBB153_1: # %atomicrmw.start
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: mv a3, a0
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: and a4, a0, a1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: not a4, a4
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: amocas.w a0, a4, (a2)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: bne a0, a3, .LBB153_1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i32_acq_rel:
; RV64IA-WMO-ZABHA-ZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
@@ -21692,6 +27990,30 @@ define i32 @atomicrmw_nand_i32_seq_cst(ptr %a, i32 %b) nounwind {
; RV64IA-TSO-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
; RV64IA-TSO-ZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i32_seq_cst:
+; RV32IA-WMO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: .LBB154_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: lr.w.aqrl a2, (a0)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: and a3, a2, a1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: not a3, a3
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: sc.w.rl a3, a3, (a0)
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: bnez a3, .LBB154_1
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: mv a0, a2
+; RV32IA-WMO-ZABHA-NOZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i32_seq_cst:
+; RV32IA-TSO-ZABHA-NOZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: .LBB154_1: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: lr.w.aqrl a2, (a0)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: and a3, a2, a1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: not a3, a3
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: sc.w.rl a3, a3, (a0)
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: bnez a3, .LBB154_1
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: # %bb.2:
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: mv a0, a2
+; RV32IA-TSO-ZABHA-NOZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-NOZACAS-LABEL: atomicrmw_nand_i32_seq_cst:
; RV64IA-WMO-ZABHA-NOZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-NOZACAS-NEXT: .LBB154_1: # =>This Inner Loop Header: Depth=1
@@ -21716,6 +28038,36 @@ define i32 @atomicrmw_nand_i32_seq_cst(ptr %a, i32 %b) nounwind {
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: mv a0, a2
; RV64IA-TSO-ZABHA-NOZACAS-NEXT: ret
;
+; RV32IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i32_seq_cst:
+; RV32IA-WMO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: lw a0, 0(a0)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: .LBB154_1: # %atomicrmw.start
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: mv a3, a0
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: and a4, a0, a1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: not a4, a4
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: fence rw, rw
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: amocas.w.aqrl a0, a4, (a2)
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: bne a0, a3, .LBB154_1
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-WMO-ZABHA-ZACAS-NEXT: ret
+;
+; RV32IA-TSO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i32_seq_cst:
+; RV32IA-TSO-ZABHA-ZACAS: # %bb.0:
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: mv a2, a0
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: lw a0, 0(a0)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: .LBB154_1: # %atomicrmw.start
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # =>This Inner Loop Header: Depth=1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: mv a3, a0
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: and a4, a0, a1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: not a4, a4
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: fence rw, rw
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: amocas.w a0, a4, (a2)
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: bne a0, a3, .LBB154_1
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: # %bb.2: # %atomicrmw.end
+; RV32IA-TSO-ZABHA-ZACAS-NEXT: ret
+;
; RV64IA-WMO-ZABHA-ZACAS-LABEL: atomicrmw_nand_i32_seq_cst:
; RV64IA-WMO-ZABHA-ZACAS: # %bb.0:
; RV64IA-WMO-ZABHA-ZACAS-NEXT: mv a2, a0
diff --git a/llvm/test/CodeGen/RISCV/attributes.ll b/llvm/test/CodeGen/RISCV/attributes.ll
index ead255b..f3529b1 100644
--- a/llvm/test/CodeGen/RISCV/attributes.ll
+++ b/llvm/test/CodeGen/RISCV/attributes.ll
@@ -443,7 +443,7 @@
; RV32ZVFBFWMA: .attribute 5, "rv32i2p1_f2p2_zicsr2p0_zfbfmin1p0_zve32f1p0_zve32x1p0_zvfbfmin1p0_zvfbfwma1p0_zvl32b1p0"
; RV32ZVFOFP8MIN: .attribute 5, "rv32i2p1_f2p2_zicsr2p0_zve32f1p0_zve32x1p0_zvfofp8min0p2_zvl32b1p0"
; RV32ZACAS: .attribute 5, "rv32i2p1_zaamo1p0_zacas1p0"
-; RV32ZALASR: .attribute 5, "rv32i2p1_zalasr0p1"
+; RV32ZALASR: .attribute 5, "rv32i2p1_zalasr0p9"
; RV32ZAMA16B: .attribute 5, "rv32i2p1_zama16b1p0"
; RV32ZICFILP: .attribute 5, "rv32i2p1_zicfilp1p0_zicsr2p0"
; RV32ZABHA: .attribute 5, "rv32i2p1_zaamo1p0_zabha1p0"
@@ -590,8 +590,8 @@
; RV64ZVFBFWMA: .attribute 5, "rv64i2p1_f2p2_zicsr2p0_zfbfmin1p0_zve32f1p0_zve32x1p0_zvfbfmin1p0_zvfbfwma1p0_zvl32b1p0"
; RV64ZVFOFP8MIN: .attribute 5, "rv64i2p1_f2p2_zicsr2p0_zve32f1p0_zve32x1p0_zvfofp8min0p2_zvl32b1p0"
; RV64ZACAS: .attribute 5, "rv64i2p1_zaamo1p0_zacas1p0"
-; RV64ZALASR: .attribute 5, "rv64i2p1_zalasr0p1"
-; RV64ZALASRA: .attribute 5, "rv64i2p1_a2p1_zaamo1p0_zalasr0p1_zalrsc1p0"
+; RV64ZALASR: .attribute 5, "rv64i2p1_zalasr0p9"
+; RV64ZALASRA: .attribute 5, "rv64i2p1_a2p1_zaamo1p0_zalasr0p9_zalrsc1p0"
; RV64ZICFILP: .attribute 5, "rv64i2p1_zicfilp1p0_zicsr2p0"
; RV64ZABHA: .attribute 5, "rv64i2p1_zaamo1p0_zabha1p0"
; RV64ZVBC32E: .attribute 5, "rv64i2p1_zicsr2p0_zvbc32e0p7_zve32x1p0_zvl32b1p0"
diff --git a/llvm/test/CodeGen/RISCV/float-imm.ll b/llvm/test/CodeGen/RISCV/float-imm.ll
index e4e3454..610c72b 100644
--- a/llvm/test/CodeGen/RISCV/float-imm.ll
+++ b/llvm/test/CodeGen/RISCV/float-imm.ll
@@ -4,11 +4,10 @@
; RUN: llc -mtriple=riscv64 -mattr=+f -verify-machineinstrs < %s \
; RUN: -target-abi=lp64f | FileCheck %s
; RUN: llc -mtriple=riscv32 -mattr=+zfinx -verify-machineinstrs < %s \
-; RUN: -target-abi=ilp32 | FileCheck --check-prefixes=CHECKZFINX,RV32ZFINX %s
+; RUN: -target-abi=ilp32 | FileCheck --check-prefixes=CHECKZFINX %s
; RUN: llc -mtriple=riscv64 -mattr=+zfinx -verify-machineinstrs < %s \
-; RUN: -target-abi=lp64 | FileCheck --check-prefixes=CHECKZFINX,RV64ZFINX %s
+; RUN: -target-abi=lp64 | FileCheck --check-prefixes=CHECKZFINX %s
-; TODO: constant pool shouldn't be necessary for RV64IF.
define float @float_imm() nounwind {
; CHECK-LABEL: float_imm:
; CHECK: # %bb.0:
@@ -69,6 +68,3 @@ define float @float_negative_zero(ptr %pf) nounwind {
; CHECKZFINX-NEXT: ret
ret float -0.0
}
-;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
-; RV32ZFINX: {{.*}}
-; RV64ZFINX: {{.*}}
diff --git a/llvm/test/CodeGen/RISCV/half-imm.ll b/llvm/test/CodeGen/RISCV/half-imm.ll
index 1dc0da8c..ec1a7a4 100644
--- a/llvm/test/CodeGen/RISCV/half-imm.ll
+++ b/llvm/test/CodeGen/RISCV/half-imm.ll
@@ -5,22 +5,21 @@
; RUN: -target-abi lp64f < %s | FileCheck %s
; RUN: llc -mtriple=riscv32 -mattr=+zhinx -verify-machineinstrs \
; RUN: -target-abi ilp32 < %s \
-; RUN: | FileCheck -check-prefix=RV32IZHINX %s
+; RUN: | FileCheck -check-prefixes=CHECKIZHINX %s
; RUN: llc -mtriple=riscv64 -mattr=+zhinx -verify-machineinstrs \
; RUN: -target-abi lp64 < %s \
-; RUN: | FileCheck -check-prefix=RV64IZHINX %s
+; RUN: | FileCheck -check-prefixes=CHECKIZHINX %s
; RUN: llc -mtriple=riscv32 -mattr=+zfhmin -verify-machineinstrs \
; RUN: -target-abi ilp32f < %s | FileCheck -check-prefixes=CHECKIZFHMIN %s
; RUN: llc -mtriple=riscv64 -mattr=+zfhmin -verify-machineinstrs \
; RUN: -target-abi lp64f < %s | FileCheck -check-prefixes=CHECKIZFHMIN %s
; RUN: llc -mtriple=riscv32 -mattr=+zhinxmin -verify-machineinstrs \
; RUN: -target-abi ilp32 < %s \
-; RUN: | FileCheck -check-prefixes=CHECKIZHINXMIN,RV32IZHINXMIN %s
+; RUN: | FileCheck -check-prefixes=CHECKIZHINXMIN %s
; RUN: llc -mtriple=riscv64 -mattr=+zhinxmin -verify-machineinstrs \
; RUN: -target-abi lp64 < %s \
-; RUN: | FileCheck -check-prefixes=CHECKIZHINXMIN,RV64IZHINXMIN %s
+; RUN: | FileCheck -check-prefixes=CHECKIZHINXMIN %s
-; TODO: constant pool shouldn't be necessary for RV32IZfh and RV64IZfh
define half @half_imm() nounwind {
; CHECK-LABEL: half_imm:
; CHECK: # %bb.0:
@@ -29,19 +28,12 @@ define half @half_imm() nounwind {
; CHECK-NEXT: fmv.h.x fa0, a0
; CHECK-NEXT: ret
;
-; RV32IZHINX-LABEL: half_imm:
-; RV32IZHINX: # %bb.0:
-; RV32IZHINX-NEXT: lui a0, 4
-; RV32IZHINX-NEXT: addi a0, a0, 512
-; RV32IZHINX-NEXT: # kill: def $x10_h killed $x10_h killed $x10
-; RV32IZHINX-NEXT: ret
-;
-; RV64IZHINX-LABEL: half_imm:
-; RV64IZHINX: # %bb.0:
-; RV64IZHINX-NEXT: lui a0, 4
-; RV64IZHINX-NEXT: addi a0, a0, 512
-; RV64IZHINX-NEXT: # kill: def $x10_h killed $x10_h killed $x10
-; RV64IZHINX-NEXT: ret
+; CHECKIZHINX-LABEL: half_imm:
+; CHECKIZHINX: # %bb.0:
+; CHECKIZHINX-NEXT: lui a0, 4
+; CHECKIZHINX-NEXT: addi a0, a0, 512
+; CHECKIZHINX-NEXT: # kill: def $x10_h killed $x10_h killed $x10
+; CHECKIZHINX-NEXT: ret
;
; CHECKIZFHMIN-LABEL: half_imm:
; CHECKIZFHMIN: # %bb.0:
@@ -68,19 +60,12 @@ define half @half_imm_op(half %a) nounwind {
; CHECK-NEXT: fadd.h fa0, fa0, fa5
; CHECK-NEXT: ret
;
-; RV32IZHINX-LABEL: half_imm_op:
-; RV32IZHINX: # %bb.0:
-; RV32IZHINX-NEXT: li a1, 15
-; RV32IZHINX-NEXT: slli a1, a1, 10
-; RV32IZHINX-NEXT: fadd.h a0, a0, a1
-; RV32IZHINX-NEXT: ret
-;
-; RV64IZHINX-LABEL: half_imm_op:
-; RV64IZHINX: # %bb.0:
-; RV64IZHINX-NEXT: li a1, 15
-; RV64IZHINX-NEXT: slli a1, a1, 10
-; RV64IZHINX-NEXT: fadd.h a0, a0, a1
-; RV64IZHINX-NEXT: ret
+; CHECKIZHINX-LABEL: half_imm_op:
+; CHECKIZHINX: # %bb.0:
+; CHECKIZHINX-NEXT: li a1, 15
+; CHECKIZHINX-NEXT: slli a1, a1, 10
+; CHECKIZHINX-NEXT: fadd.h a0, a0, a1
+; CHECKIZHINX-NEXT: ret
;
; CHECKIZFHMIN-LABEL: half_imm_op:
; CHECKIZFHMIN: # %bb.0:
@@ -108,15 +93,10 @@ define half @half_positive_zero(ptr %pf) nounwind {
; CHECK-NEXT: fmv.h.x fa0, zero
; CHECK-NEXT: ret
;
-; RV32IZHINX-LABEL: half_positive_zero:
-; RV32IZHINX: # %bb.0:
-; RV32IZHINX-NEXT: li a0, 0
-; RV32IZHINX-NEXT: ret
-;
-; RV64IZHINX-LABEL: half_positive_zero:
-; RV64IZHINX: # %bb.0:
-; RV64IZHINX-NEXT: li a0, 0
-; RV64IZHINX-NEXT: ret
+; CHECKIZHINX-LABEL: half_positive_zero:
+; CHECKIZHINX: # %bb.0:
+; CHECKIZHINX-NEXT: li a0, 0
+; CHECKIZHINX-NEXT: ret
;
; CHECKIZFHMIN-LABEL: half_positive_zero:
; CHECKIZFHMIN: # %bb.0:
@@ -137,15 +117,10 @@ define half @half_negative_zero(ptr %pf) nounwind {
; CHECK-NEXT: fmv.h.x fa0, a0
; CHECK-NEXT: ret
;
-; RV32IZHINX-LABEL: half_negative_zero:
-; RV32IZHINX: # %bb.0:
-; RV32IZHINX-NEXT: lui a0, 1048568
-; RV32IZHINX-NEXT: ret
-;
-; RV64IZHINX-LABEL: half_negative_zero:
-; RV64IZHINX: # %bb.0:
-; RV64IZHINX-NEXT: lui a0, 1048568
-; RV64IZHINX-NEXT: ret
+; CHECKIZHINX-LABEL: half_negative_zero:
+; CHECKIZHINX: # %bb.0:
+; CHECKIZHINX-NEXT: lui a0, 1048568
+; CHECKIZHINX-NEXT: ret
;
; CHECKIZFHMIN-LABEL: half_negative_zero:
; CHECKIZFHMIN: # %bb.0:
@@ -159,6 +134,3 @@ define half @half_negative_zero(ptr %pf) nounwind {
; CHECKIZHINXMIN-NEXT: ret
ret half -0.0
}
-;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
-; RV32IZHINXMIN: {{.*}}
-; RV64IZHINXMIN: {{.*}}
diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/emptyblock.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/emptyblock.mir
index 021cb4c..8abe5c5 100644
--- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/emptyblock.mir
+++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/emptyblock.mir
@@ -8,7 +8,7 @@
--- |
%struct.DCT_InstanceTypeDef = type { ptr, i32, i32 }
-
+
; Function Attrs: nofree nounwind
define hidden arm_aapcs_vfpcc void @test(ptr nocapture readonly %S, ptr %pIn, ptr nocapture %pOut) {
entry:
@@ -41,7 +41,7 @@
%13 = call i32 @llvm.loop.decrement.reg.i32(i32 %8, i32 1)
%14 = icmp ne i32 %13, 0
br i1 %14, label %do.body, label %do.end
-
+
do.end: ; preds = %do.body
%15 = extractelement <4 x float> %11, i32 0
%16 = extractelement <4 x float> %11, i32 1
@@ -56,7 +56,7 @@
%sub4 = add i32 %1, -4
%cmp5201 = icmp ugt i32 %sub4, 1
br i1 %cmp5201, label %for.body.lr.ph, label %for.cond54.preheader
-
+
for.body.lr.ph: ; preds = %do.end
%scevgep = getelementptr float, ptr %pIn, i32 4
%20 = add i32 %0, 4
@@ -161,7 +161,7 @@
%63 = call i32 @llvm.loop.decrement.reg.i32(i32 %53, i32 1)
%64 = icmp ne i32 %63, 0
br i1 %64, label %do.body24, label %do.end33
-
+
do.end33: ; preds = %do.body24
%65 = bitcast ptr %lsr.iv27 to ptr
%66 = bitcast ptr %lsr.iv20 to ptr
@@ -254,7 +254,7 @@
%inc = add nuw i32 %k.1200, 1
%exitcond.not = icmp eq i32 %inc, %1
br i1 %exitcond.not, label %for.end72, label %for.body56
-
+
for.end72: ; preds = %do.end66, %for.cond54.preheader
ret void
}
@@ -428,28 +428,28 @@ body: |
renamable $lr = t2LoopDec killed renamable $lr, 1
t2LoopEnd renamable $lr, %bb.1, implicit-def dead $cpsr
tB %bb.2, 14 /* CC::al */, $noreg
-
+
bb.2.do.end:
successors: %bb.3(0x40000000), %bb.7(0x40000000)
liveins: $q0, $r2, $r3, $r4, $r5, $r11
-
- renamable $s4 = nnan ninf nsz arcp contract afn reassoc VADDS renamable $s0, renamable $s1, 14 /* CC::al */, $noreg
+
+ renamable $s4 = nnan ninf nsz arcp contract afn reassoc VADDS renamable $s0, renamable $s1, 14 /* CC::al */, $noreg, implicit $fpscr_rm
renamable $r0, dead $cpsr = tSUBi3 renamable $r3, 4, 14 /* CC::al */, $noreg
tSTRspi killed renamable $r3, $sp, 1, 14 /* CC::al */, $noreg :: (store (s32) into %stack.8)
- renamable $s4 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s4, renamable $s2, 14 /* CC::al */, $noreg
+ renamable $s4 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s4, renamable $s2, 14 /* CC::al */, $noreg, implicit $fpscr_rm
tSTRspi renamable $r0, $sp, 8, 14 /* CC::al */, $noreg :: (store (s32) into %stack.1)
- renamable $s0 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s4, killed renamable $s3, 14 /* CC::al */, $noreg, implicit $q0
+ renamable $s0 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s4, killed renamable $s3, 14 /* CC::al */, $noreg, implicit $q0, implicit $fpscr_rm
renamable $s2 = VLDRS renamable $r11, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.2)
tCMPi8 killed renamable $r0, 2, 14 /* CC::al */, $noreg, implicit-def $cpsr
renamable $r0 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
- renamable $s0 = nnan ninf nsz arcp contract afn reassoc VMULS killed renamable $s2, killed renamable $s0, 14 /* CC::al */, $noreg
+ renamable $s0 = nnan ninf nsz arcp contract afn reassoc VMULS killed renamable $s2, killed renamable $s0, 14 /* CC::al */, $noreg, implicit $fpscr_rm
VSTRS killed renamable $s0, renamable $r2, 0, 14 /* CC::al */, $noreg :: (store (s32) into %ir.pOut)
t2Bcc %bb.7, 3 /* CC::lo */, killed $cpsr
-
+
bb.3.for.body.lr.ph:
successors: %bb.4(0x80000000)
liveins: $r0, $r2, $r4, $r5, $r11
-
+
renamable $r6 = t2ADDri renamable $r5, 16, 14 /* CC::al */, $noreg, $noreg
renamable $r1, dead $cpsr = tSUBi3 renamable $r4, 4, 14 /* CC::al */, $noreg
tSTRspi killed renamable $r6, $sp, 4, 14 /* CC::al */, $noreg :: (store (s32) into %stack.5)
@@ -523,26 +523,26 @@ body: |
renamable $lr = t2LoopDec killed renamable $lr, 1
t2LoopEnd renamable $lr, %bb.5, implicit-def dead $cpsr
tB %bb.6, 14 /* CC::al */, $noreg
-
+
bb.6.do.end33:
successors: %bb.4(0x7c000000), %bb.7(0x04000000)
liveins: $q0, $q1, $q2, $q3, $r0, $r1, $r2, $r6, $r8, $r9, $r10, $r12
-
- renamable $s16 = nnan ninf nsz arcp contract afn reassoc VADDS renamable $s12, renamable $s13, 14 /* CC::al */, $noreg
- renamable $s18 = nnan ninf nsz arcp contract afn reassoc VADDS renamable $s8, renamable $s9, 14 /* CC::al */, $noreg
- renamable $s16 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s16, renamable $s14, 14 /* CC::al */, $noreg
- renamable $s18 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s18, renamable $s10, 14 /* CC::al */, $noreg
- renamable $s12 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s16, killed renamable $s15, 14 /* CC::al */, $noreg, implicit $q3
- renamable $s8 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s18, killed renamable $s11, 14 /* CC::al */, $noreg, implicit $q2
- renamable $s10 = nnan ninf nsz arcp contract afn reassoc VADDS renamable $s4, renamable $s5, 14 /* CC::al */, $noreg
- renamable $s14 = nnan ninf nsz arcp contract afn reassoc VADDS renamable $s0, renamable $s1, 14 /* CC::al */, $noreg
+
+ renamable $s16 = nnan ninf nsz arcp contract afn reassoc VADDS renamable $s12, renamable $s13, 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ renamable $s18 = nnan ninf nsz arcp contract afn reassoc VADDS renamable $s8, renamable $s9, 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ renamable $s16 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s16, renamable $s14, 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ renamable $s18 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s18, renamable $s10, 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ renamable $s12 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s16, killed renamable $s15, 14 /* CC::al */, $noreg, implicit $q3, implicit $fpscr_rm
+ renamable $s8 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s18, killed renamable $s11, 14 /* CC::al */, $noreg, implicit $q2, implicit $fpscr_rm
+ renamable $s10 = nnan ninf nsz arcp contract afn reassoc VADDS renamable $s4, renamable $s5, 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ renamable $s14 = nnan ninf nsz arcp contract afn reassoc VADDS renamable $s0, renamable $s1, 14 /* CC::al */, $noreg, implicit $fpscr_rm
renamable $r7 = tLDRspi $sp, 9, 14 /* CC::al */, $noreg :: (load (s32) from %stack.0)
- renamable $s10 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s10, renamable $s6, 14 /* CC::al */, $noreg
- renamable $s14 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s14, renamable $s2, 14 /* CC::al */, $noreg
+ renamable $s10 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s10, renamable $s6, 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ renamable $s14 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s14, renamable $s2, 14 /* CC::al */, $noreg, implicit $fpscr_rm
renamable $r3 = t2ADDrs renamable $r2, renamable $r0, 18, 14 /* CC::al */, $noreg, $noreg
renamable $r7 = t2ADDrs renamable $r2, killed renamable $r7, 18, 14 /* CC::al */, $noreg, $noreg
- renamable $s4 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s10, killed renamable $s7, 14 /* CC::al */, $noreg, implicit $q1
- renamable $s0 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s14, killed renamable $s3, 14 /* CC::al */, $noreg, implicit $q0
+ renamable $s4 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s10, killed renamable $s7, 14 /* CC::al */, $noreg, implicit $q1, implicit $fpscr_rm
+ renamable $s0 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s14, killed renamable $s3, 14 /* CC::al */, $noreg, implicit $q0, implicit $fpscr_rm
VSTRS killed renamable $s12, killed renamable $r3, 0, 14 /* CC::al */, $noreg :: (store (s32) into %ir.arrayidx37)
VSTRS killed renamable $s8, killed renamable $r7, 0, 14 /* CC::al */, $noreg :: (store (s32) into %ir.arrayidx42)
renamable $r3 = t2ADDrs renamable $r2, killed renamable $r8, 18, 14 /* CC::al */, $noreg, $noreg
@@ -597,7 +597,7 @@ body: |
bb.13:
successors: %bb.10(0x80000000)
liveins: $lr, $q0, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r11, $r12
-
+
bb.10.do.body59 (align 4):
successors: %bb.10(0x7c000000), %bb.11(0x04000000)
liveins: $lr, $q0, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r11, $r12
@@ -611,20 +611,20 @@ body: |
renamable $lr = t2LoopDec killed renamable $lr, 1
t2LoopEnd renamable $lr, %bb.10, implicit-def dead $cpsr
tB %bb.11, 14 /* CC::al */, $noreg
-
+
bb.11.do.end66:
successors: %bb.12(0x04000000), %bb.9(0x7c000000)
liveins: $q0, $r0, $r2, $r3, $r4, $r5, $r11, $r12
-
- renamable $s4 = nnan ninf nsz arcp contract afn reassoc VADDS renamable $s0, renamable $s1, 14 /* CC::al */, $noreg
+
+ renamable $s4 = nnan ninf nsz arcp contract afn reassoc VADDS renamable $s0, renamable $s1, 14 /* CC::al */, $noreg, implicit $fpscr_rm
renamable $r1 = t2ADDrs renamable $r2, renamable $r0, 18, 14 /* CC::al */, $noreg, $noreg
- renamable $s4 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s4, renamable $s2, 14 /* CC::al */, $noreg
+ renamable $s4 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s4, renamable $s2, 14 /* CC::al */, $noreg, implicit $fpscr_rm
renamable $r0, dead $cpsr = nuw tADDi8 killed renamable $r0, 1, 14 /* CC::al */, $noreg
- renamable $s0 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s4, killed renamable $s3, 14 /* CC::al */, $noreg, implicit $q0
+ renamable $s0 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s4, killed renamable $s3, 14 /* CC::al */, $noreg, implicit $q0, implicit $fpscr_rm
tCMPhir renamable $r0, renamable $r12, 14 /* CC::al */, $noreg, implicit-def $cpsr
VSTRS killed renamable $s0, killed renamable $r1, 0, 14 /* CC::al */, $noreg :: (store (s32) into %ir.arrayidx70)
tBcc %bb.9, 1 /* CC::ne */, killed $cpsr
-
+
bb.12.for.end72:
$sp = frame-destroy tADDspi $sp, 10, 14 /* CC::al */, $noreg
$sp = frame-destroy VLDMDIA_UPD $sp, 14 /* CC::al */, $noreg, def $d8, def $d9, def $d10, def $d11
diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-mov.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-mov.mir
index 31e88ea..85b826a 100644
--- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-mov.mir
+++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-mov.mir
@@ -185,15 +185,15 @@ body: |
successors: %bb.5(0x80000000)
liveins: $q0, $r0, $r1, $r2, $r4
- renamable $s4 = nnan ninf nsz VADDS renamable $s0, renamable $s1, 14, $noreg
+ renamable $s4 = nnan ninf nsz VADDS renamable $s0, renamable $s1, 14, $noreg, implicit $fpscr_rm
$lr = tMOVr $r4, 14, $noreg
$r3 = tMOVr $r1, 14, $noreg
- renamable $s4 = nnan ninf nsz VADDS renamable $s2, killed renamable $s4, 14, $noreg
- renamable $s0 = nnan ninf nsz VADDS killed renamable $s3, killed renamable $s4, 14, $noreg, implicit $q0
+ renamable $s4 = nnan ninf nsz VADDS renamable $s2, killed renamable $s4, 14, $noreg, implicit $fpscr_rm
+ renamable $s0 = nnan ninf nsz VADDS killed renamable $s3, killed renamable $s4, 14, $noreg, implicit $q0, implicit $fpscr_rm
$s2 = VMOVSR $r1, 14, $noreg
renamable $s2 = VUITOS killed renamable $s2, 14, $noreg
$lr = t2DoLoopStart killed $r4
- renamable $s4 = nnan ninf nsz VDIVS killed renamable $s0, killed renamable $s2, 14, $noreg
+ renamable $s4 = nnan ninf nsz VDIVS killed renamable $s0, killed renamable $s2, 14, $noreg, implicit $fpscr_rm
renamable $q0 = MVE_VMOVimmi32 0, 0, $noreg, $noreg, undef renamable $q0
bb.5:
@@ -215,13 +215,13 @@ body: |
bb.6:
liveins: $q0, $r1, $r2
- renamable $s4 = nnan ninf nsz VADDS renamable $s0, renamable $s1, 14, $noreg
+ renamable $s4 = nnan ninf nsz VADDS renamable $s0, renamable $s1, 14, $noreg, implicit $fpscr_rm
renamable $r0, dead $cpsr = tSUBi3 killed renamable $r1, 1, 14, $noreg
- renamable $s4 = nnan ninf nsz VADDS renamable $s2, killed renamable $s4, 14, $noreg
- renamable $s0 = nnan ninf nsz VADDS killed renamable $s3, killed renamable $s4, 14, $noreg, implicit $q0
+ renamable $s4 = nnan ninf nsz VADDS renamable $s2, killed renamable $s4, 14, $noreg, implicit $fpscr_rm
+ renamable $s0 = nnan ninf nsz VADDS killed renamable $s3, killed renamable $s4, 14, $noreg, implicit $q0, implicit $fpscr_rm
$s2 = VMOVSR killed $r0, 14, $noreg
renamable $s2 = VUITOS killed renamable $s2, 14, $noreg
- renamable $s0 = nnan ninf nsz VDIVS killed renamable $s0, killed renamable $s2, 14, $noreg
+ renamable $s0 = nnan ninf nsz VDIVS killed renamable $s0, killed renamable $s2, 14, $noreg, implicit $fpscr_rm
VSTRS killed renamable $s0, killed renamable $r2, 0, 14, $noreg
tPOP_RET 14, $noreg, def $r4, def $pc
diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/lstp-insertion-position.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/lstp-insertion-position.mir
index f5da7ac..780831c 100644
--- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/lstp-insertion-position.mir
+++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/lstp-insertion-position.mir
@@ -232,9 +232,9 @@ body: |
bb.3.middle.block:
liveins: $q1
- renamable $s0 = nnan ninf nsz arcp contract afn reassoc VADDS renamable $s6, renamable $s7, 14 /* CC::al */, $noreg
- renamable $s2 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s4, killed renamable $s5, 14 /* CC::al */, $noreg, implicit $q1
- renamable $s0 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s2, killed renamable $s0, 14 /* CC::al */, $noreg
+ renamable $s0 = nnan ninf nsz arcp contract afn reassoc VADDS renamable $s6, renamable $s7, 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ renamable $s2 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s4, killed renamable $s5, 14 /* CC::al */, $noreg, implicit $q1, implicit $fpscr_rm
+ renamable $s0 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s2, killed renamable $s0, 14 /* CC::al */, $noreg, implicit $fpscr_rm
$sp = frame-destroy t2LDMIA_UPD $sp, 14 /* CC::al */, $noreg, def $r7, def $lr
tBX_RET 14 /* CC::al */, $noreg, implicit killed $s0
@@ -376,9 +376,9 @@ body: |
bb.3.middle.block:
liveins: $q1
- renamable $s0 = nnan ninf nsz arcp contract afn reassoc VADDS renamable $s6, renamable $s7, 14 /* CC::al */, $noreg
- renamable $s2 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s4, killed renamable $s5, 14 /* CC::al */, $noreg, implicit $q1
- renamable $s0 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s2, killed renamable $s0, 14 /* CC::al */, $noreg
+ renamable $s0 = nnan ninf nsz arcp contract afn reassoc VADDS renamable $s6, renamable $s7, 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ renamable $s2 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s4, killed renamable $s5, 14 /* CC::al */, $noreg, implicit $q1, implicit $fpscr_rm
+ renamable $s0 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s2, killed renamable $s0, 14 /* CC::al */, $noreg, implicit $fpscr_rm
$sp = frame-destroy t2LDMIA_UPD $sp, 14 /* CC::al */, $noreg, def $r7, def $lr
tBX_RET 14 /* CC::al */, $noreg, implicit killed $s0
diff --git a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-after-dlstp.mir b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-after-dlstp.mir
index c331612..5dcd0a1 100644
--- a/llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-after-dlstp.mir
+++ b/llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-after-dlstp.mir
@@ -240,10 +240,10 @@ body: |
$s4 = VMOVSR $r1, 14 /* CC::al */, $noreg
$lr = tMOVr $r4, 14 /* CC::al */, $noreg
- renamable $s0 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s3, renamable $s3, 14 /* CC::al */, $noreg, implicit $q0
+ renamable $s0 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s3, renamable $s3, 14 /* CC::al */, $noreg, implicit $q0, implicit $fpscr_rm
$lr = t2DoLoopStart killed $r4
renamable $s4 = VUITOS killed renamable $s4, 14 /* CC::al */, $noreg
- renamable $s0 = nnan ninf nsz arcp contract afn reassoc VDIVS killed renamable $s0, killed renamable $s4, 14 /* CC::al */, $noreg
+ renamable $s0 = nnan ninf nsz arcp contract afn reassoc VDIVS killed renamable $s0, killed renamable $s4, 14 /* CC::al */, $noreg, implicit $fpscr_rm
renamable $r3 = VMOVRS killed renamable $s0, 14 /* CC::al */, $noreg
renamable $q0 = MVE_VMOVimmi32 0, 0, $noreg, $noreg, undef renamable $q0
renamable $q1 = MVE_VDUP32 killed renamable $r3, 0, $noreg, $noreg, undef renamable $q1
@@ -267,10 +267,10 @@ body: |
liveins: $q0, $r1, $r2
renamable $r0, dead $cpsr = tSUBi3 killed renamable $r1, 1, 14 /* CC::al */, $noreg
- renamable $s0 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s3, renamable $s3, 14 /* CC::al */, $noreg, implicit $q0
+ renamable $s0 = nnan ninf nsz arcp contract afn reassoc VADDS killed renamable $s3, renamable $s3, 14 /* CC::al */, $noreg, implicit $q0, implicit $fpscr_rm
$s2 = VMOVSR killed $r0, 14 /* CC::al */, $noreg
renamable $s2 = VUITOS killed renamable $s2, 14 /* CC::al */, $noreg
- renamable $s0 = nnan ninf nsz arcp contract afn reassoc VDIVS killed renamable $s0, killed renamable $s2, 14 /* CC::al */, $noreg
+ renamable $s0 = nnan ninf nsz arcp contract afn reassoc VDIVS killed renamable $s0, killed renamable $s2, 14 /* CC::al */, $noreg, implicit $fpscr_rm
VSTRS killed renamable $s0, killed renamable $r2, 0, 14 /* CC::al */, $noreg :: (store (s32) into %ir.pResult)
frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $pc
diff --git a/llvm/test/CodeGen/Thumb2/pipeliner-inlineasm.mir b/llvm/test/CodeGen/Thumb2/pipeliner-inlineasm.mir
index 5221205..d9d2f25 100644
--- a/llvm/test/CodeGen/Thumb2/pipeliner-inlineasm.mir
+++ b/llvm/test/CodeGen/Thumb2/pipeliner-inlineasm.mir
@@ -96,7 +96,7 @@ body: |
; CHECK-NEXT: bb.6.for.body:
; CHECK-NEXT: successors: %bb.7(0x80000000), %bb.8(0x00000000)
; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[VMULS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS3]], %30, 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VMULS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS3]], %30, 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: [[t2ADDri2:%[0-9]+]]:rgpr = t2ADDri [[COPY7]], 4, 14 /* CC::al */, $noreg, $noreg
; CHECK-NEXT: [[VLDRS4:%[0-9]+]]:spr = VLDRS [[COPY7]], 1, 14 /* CC::al */, $noreg :: (load unknown-size from %ir.scevgep7, align 4)
; CHECK-NEXT: [[t2ADDri3:%[0-9]+]]:rgpr = t2ADDri [[COPY6]], 4, 14 /* CC::al */, $noreg, $noreg
@@ -119,13 +119,13 @@ body: |
; CHECK-NEXT: [[PHI4:%[0-9]+]]:spr = PHI [[VLDRS5]], %bb.6, %47, %bb.7
; CHECK-NEXT: [[PHI5:%[0-9]+]]:spr = PHI %40, %bb.6, %55, %bb.7
; CHECK-NEXT: [[PHI6:%[0-9]+]]:spr = PHI [[VMULS]], %bb.6, %45, %bb.7
- ; CHECK-NEXT: [[VMULS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[PHI4]], [[PHI5]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VMULS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[PHI4]], [[PHI5]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: [[t2SUBri4:%[0-9]+]]:rgpr = t2SUBri [[PHI2]], 1, 14 /* CC::al */, $noreg, def $cpsr
; CHECK-NEXT: [[VLDRS6:%[0-9]+]]:spr = VLDRS [[PHI1]], 1, 14 /* CC::al */, $noreg :: (load unknown-size from %ir.scevgep3, align 4)
; CHECK-NEXT: [[VLDRS7:%[0-9]+]]:spr = VLDRS [[PHI]], 1, 14 /* CC::al */, $noreg :: (load unknown-size from %ir.scevgep7, align 4)
; CHECK-NEXT: [[t2ADDri4:%[0-9]+]]:rgpr = t2ADDri [[PHI]], 4, 14 /* CC::al */, $noreg, $noreg
; CHECK-NEXT: [[t2ADDri5:%[0-9]+]]:rgpr = t2ADDri [[PHI1]], 4, 14 /* CC::al */, $noreg, $noreg
- ; CHECK-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI6]], [[PHI3]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI6]], [[PHI3]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: [[COPY11:%[0-9]+]]:gpr = COPY [[t2ADDri4]]
; CHECK-NEXT: [[COPY12:%[0-9]+]]:gpr = COPY [[t2ADDri5]]
; CHECK-NEXT: [[COPY13:%[0-9]+]]:gpr = COPY [[t2SUBri4]]
@@ -140,7 +140,7 @@ body: |
; CHECK-NEXT: [[PHI8:%[0-9]+]]:spr = PHI [[VLDRS5]], %bb.6, [[VLDRS6]], %bb.7
; CHECK-NEXT: [[PHI9:%[0-9]+]]:spr = PHI %40, %bb.6, %55, %bb.7
; CHECK-NEXT: [[PHI10:%[0-9]+]]:spr = PHI [[VMULS]], %bb.6, [[VMULS1]], %bb.7
- ; CHECK-NEXT: [[VADDS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI10]], [[PHI7]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VADDS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI10]], [[PHI7]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.9:
; CHECK-NEXT: successors: %bb.4(0x80000000)
@@ -148,8 +148,8 @@ body: |
; CHECK-NEXT: [[PHI11:%[0-9]+]]:spr = PHI [[VLDRS1]], %bb.5, [[VADDS1]], %bb.8
; CHECK-NEXT: [[PHI12:%[0-9]+]]:spr = PHI [[VLDRS3]], %bb.5, [[PHI8]], %bb.8
; CHECK-NEXT: [[PHI13:%[0-9]+]]:spr = PHI %30, %bb.5, [[PHI9]], %bb.8
- ; CHECK-NEXT: [[VMULS2:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[PHI12]], [[PHI13]], 14 /* CC::al */, $noreg
- ; CHECK-NEXT: [[VADDS2:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[VMULS2]], [[PHI11]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VMULS2:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[PHI12]], [[PHI13]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ ; CHECK-NEXT: [[VADDS2:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[VMULS2]], [[PHI11]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: t2B %bb.4, 14 /* CC::al */, $noreg
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.4.for.end:
@@ -194,8 +194,8 @@ body: |
%20:rgpr = t2ADDri %3, 4, 14 /* CC::al */, $noreg, $noreg
%21:spr = VLDRS %3, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep3)
INLINEASM &nop, 0 /* attdialect */, 196618 /* regdef:SPR */, def %25, 2147483657 /* reguse tiedto:$0 */, %19(tied-def 3)
- %22:spr = nnan ninf nsz arcp contract afn reassoc VMULS killed %21, killed %25, 14 /* CC::al */, $noreg
- %6:spr = nnan ninf nsz arcp contract afn reassoc VADDS killed %22, %5, 14 /* CC::al */, $noreg
+ %22:spr = nnan ninf nsz arcp contract afn reassoc VMULS killed %21, killed %25, 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ %6:spr = nnan ninf nsz arcp contract afn reassoc VADDS killed %22, %5, 14 /* CC::al */, $noreg, implicit $fpscr_rm
%23:rgpr = t2SUBri %4, 1, 14 /* CC::al */, $noreg, def $cpsr
%7:gpr = COPY %23
%8:gpr = COPY %20
diff --git a/llvm/test/CodeGen/Thumb2/scavenge-lr.mir b/llvm/test/CodeGen/Thumb2/scavenge-lr.mir
index 5513bed..bfe55a5 100644
--- a/llvm/test/CodeGen/Thumb2/scavenge-lr.mir
+++ b/llvm/test/CodeGen/Thumb2/scavenge-lr.mir
@@ -147,10 +147,10 @@ body: |
$q5 = VLD1q64 $r3, 16, 14 /* CC::al */, $noreg :: (load (s128) from %ir.zzz..sroa_cast241, align 32)
$q1 = VMLAfq killed $q1, $q5, killed $q8, 14 /* CC::al */, $noreg
$s8 = VLDRS %const.0, 0, 14 /* CC::al */, $noreg :: (load (s32) from constant-pool)
- $s3 = VDIVS $s8, $s7, 14 /* CC::al */, $noreg, implicit-def $q0
- $s2 = VDIVS $s8, $s6, 14 /* CC::al */, $noreg, implicit killed $q0, implicit-def $q0
- $s1 = VDIVS $s8, $s5, 14 /* CC::al */, $noreg, implicit killed $q0, implicit-def $q0
- $s0 = VDIVS $s8, $s4, 14 /* CC::al */, $noreg, implicit killed $q1, implicit killed $q0, implicit-def $q0
+ $s3 = VDIVS $s8, $s7, 14 /* CC::al */, $noreg, implicit-def $q0, implicit $fpscr_rm
+ $s2 = VDIVS $s8, $s6, 14 /* CC::al */, $noreg, implicit killed $q0, implicit-def $q0, implicit $fpscr_rm
+ $s1 = VDIVS $s8, $s5, 14 /* CC::al */, $noreg, implicit killed $q0, implicit-def $q0, implicit $fpscr_rm
+ $s0 = VDIVS $s8, $s4, 14 /* CC::al */, $noreg, implicit killed $q1, implicit killed $q0, implicit-def $q0, implicit $fpscr_rm
$r7 = t2SUBri $r0, 64, 14 /* CC::al */, $noreg, $noreg
$q8 = VLD1q64 $r7, 16, 14 /* CC::al */, $noreg :: (load (s128) from %ir.yyy..sroa_cast244, align 32)
VSTMQIA $q8, %stack.1, 14 /* CC::al */, $noreg :: (store (s128) into %stack.1)
@@ -185,10 +185,10 @@ body: |
$r3 = VST1q32wb_fixed killed $r3, 16, killed $q10, 14 /* CC::al */, $noreg :: (store (s128) into %ir.zzz..sroa_cast241, align 32)
$q10 = VLD1q64 $r3, 16, 14 /* CC::al */, $noreg :: (load (s128) from %ir.zzz..sroa_cast241 + 16, basealign 32)
$q1 = VMLAfq killed $q1, $q10, killed $q8, 14 /* CC::al */, $noreg
- $s23 = VDIVS $s8, $s7, 14 /* CC::al */, $noreg, implicit-def $q5
- $s22 = VDIVS $s8, $s6, 14 /* CC::al */, $noreg, implicit killed $q5, implicit-def $q5
- $s21 = VDIVS $s8, $s5, 14 /* CC::al */, $noreg, implicit killed $q5, implicit-def $q5
- $s20 = VDIVS killed $s8, $s4, 14 /* CC::al */, $noreg, implicit killed $q1, implicit killed $q5, implicit-def $q5
+ $s23 = VDIVS $s8, $s7, 14 /* CC::al */, $noreg, implicit-def $q5, implicit $fpscr_rm
+ $s22 = VDIVS $s8, $s6, 14 /* CC::al */, $noreg, implicit killed $q5, implicit-def $q5, implicit $fpscr_rm
+ $s21 = VDIVS $s8, $s5, 14 /* CC::al */, $noreg, implicit killed $q5, implicit-def $q5, implicit $fpscr_rm
+ $s20 = VDIVS killed $s8, $s4, 14 /* CC::al */, $noreg, implicit killed $q1, implicit killed $q5, implicit-def $q5, implicit $fpscr_rm
VST1q64 killed $r5, 16, $q5, 14 /* CC::al */, $noreg :: (store (s128) into %ir.xxx..sroa_cast248 + 16, basealign 32)
VST1q64 killed $r6, 16, $q5, 14 /* CC::al */, $noreg :: (store (s128) into %ir.vvv..sroa_cast230 + 16, basealign 32)
$q8 = VLDMQIA %stack.0, 14 /* CC::al */, $noreg :: (load (s128) from %stack.0)
diff --git a/llvm/test/CodeGen/Thumb2/swp-exitbranchdir.mir b/llvm/test/CodeGen/Thumb2/swp-exitbranchdir.mir
index ba10045..20f044a 100644
--- a/llvm/test/CodeGen/Thumb2/swp-exitbranchdir.mir
+++ b/llvm/test/CodeGen/Thumb2/swp-exitbranchdir.mir
@@ -83,7 +83,7 @@ body: |
; CHECK-NEXT: [[VLDRS2:%[0-9]+]]:spr = VLDRS [[COPY4]], 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep7)
; CHECK-NEXT: [[t2ADDri1:%[0-9]+]]:rgpr = t2ADDri [[COPY3]], 4, 14 /* CC::al */, $noreg, $noreg
; CHECK-NEXT: [[VLDRS3:%[0-9]+]]:spr = VLDRS [[COPY3]], 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep3)
- ; CHECK-NEXT: [[VMULS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS3]], [[VLDRS2]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VMULS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS3]], [[VLDRS2]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: [[t2SUBri2:%[0-9]+]]:rgpr = t2SUBri [[COPY]], 1, 14 /* CC::al */, $noreg, def $cpsr
; CHECK-NEXT: [[COPY5:%[0-9]+]]:gprnopc = COPY [[t2SUBri2]]
; CHECK-NEXT: [[COPY6:%[0-9]+]]:gprnopc = COPY [[t2ADDri1]]
@@ -98,7 +98,7 @@ body: |
; CHECK-NEXT: [[VLDRS4:%[0-9]+]]:spr = VLDRS [[COPY7]], 1, 14 /* CC::al */, $noreg :: (load unknown-size from %ir.scevgep7, align 4)
; CHECK-NEXT: [[t2ADDri3:%[0-9]+]]:rgpr = t2ADDri [[COPY6]], 4, 14 /* CC::al */, $noreg, $noreg
; CHECK-NEXT: [[VLDRS5:%[0-9]+]]:spr = VLDRS [[COPY6]], 1, 14 /* CC::al */, $noreg :: (load unknown-size from %ir.scevgep3, align 4)
- ; CHECK-NEXT: [[VMULS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS5]], [[VLDRS4]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VMULS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS5]], [[VLDRS4]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: [[t2SUBri3:%[0-9]+]]:rgpr = t2SUBri [[COPY5]], 1, 14 /* CC::al */, $noreg, def $cpsr
; CHECK-NEXT: [[COPY8:%[0-9]+]]:gpr = COPY [[t2SUBri3]]
; CHECK-NEXT: [[COPY9:%[0-9]+]]:gpr = COPY [[t2ADDri3]]
@@ -115,7 +115,7 @@ body: |
; CHECK-NEXT: [[PHI3:%[0-9]+]]:spr = PHI [[VLDRS1]], %bb.6, %43, %bb.7
; CHECK-NEXT: [[PHI4:%[0-9]+]]:spr = PHI [[VMULS1]], %bb.6, %52, %bb.7
; CHECK-NEXT: [[PHI5:%[0-9]+]]:spr = PHI [[VMULS]], %bb.6, [[PHI4]], %bb.7
- ; CHECK-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI5]], [[PHI3]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI5]], [[PHI3]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: [[t2SUBri4:%[0-9]+]]:rgpr = t2SUBri [[PHI2]], 1, 14 /* CC::al */, $noreg, def $cpsr
; CHECK-NEXT: [[VLDRS6:%[0-9]+]]:spr = VLDRS [[PHI1]], 1, 14 /* CC::al */, $noreg :: (load unknown-size from %ir.scevgep3, align 4)
; CHECK-NEXT: [[VLDRS7:%[0-9]+]]:spr = VLDRS [[PHI]], 1, 14 /* CC::al */, $noreg :: (load unknown-size from %ir.scevgep7, align 4)
@@ -124,7 +124,7 @@ body: |
; CHECK-NEXT: [[COPY11:%[0-9]+]]:gpr = COPY [[t2ADDri4]]
; CHECK-NEXT: [[COPY12:%[0-9]+]]:gpr = COPY [[t2ADDri5]]
; CHECK-NEXT: [[COPY13:%[0-9]+]]:gpr = COPY [[t2SUBri4]]
- ; CHECK-NEXT: [[VMULS2:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS6]], [[VLDRS7]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VMULS2:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS6]], [[VLDRS7]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: t2Bcc %bb.8, 0 /* CC::eq */, $cpsr
; CHECK-NEXT: t2B %bb.7, 14 /* CC::al */, $noreg
; CHECK-NEXT: {{ $}}
@@ -134,14 +134,14 @@ body: |
; CHECK-NEXT: [[PHI6:%[0-9]+]]:spr = PHI [[VLDRS1]], %bb.6, [[VADDS]], %bb.7
; CHECK-NEXT: [[PHI7:%[0-9]+]]:spr = PHI [[VMULS1]], %bb.6, [[VMULS2]], %bb.7
; CHECK-NEXT: [[PHI8:%[0-9]+]]:spr = PHI [[VMULS]], %bb.6, [[PHI4]], %bb.7
- ; CHECK-NEXT: [[VADDS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI8]], [[PHI6]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VADDS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI8]], [[PHI6]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.9:
; CHECK-NEXT: successors: %bb.4(0x80000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[PHI9:%[0-9]+]]:spr = PHI [[VLDRS1]], %bb.5, [[VADDS1]], %bb.8
; CHECK-NEXT: [[PHI10:%[0-9]+]]:spr = PHI [[VMULS]], %bb.5, [[PHI7]], %bb.8
- ; CHECK-NEXT: [[VADDS2:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI10]], [[PHI9]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VADDS2:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI10]], [[PHI9]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: t2B %bb.4, 14 /* CC::al */, $noreg
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.4.for.end:
@@ -185,8 +185,8 @@ body: |
%19:spr = VLDRS %2, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep7)
%20:rgpr = t2ADDri %3, 4, 14 /* CC::al */, $noreg, $noreg
%21:spr = VLDRS %3, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep3)
- %22:spr = nnan ninf nsz arcp contract afn reassoc VMULS killed %21, killed %19, 14 /* CC::al */, $noreg
- %6:spr = nnan ninf nsz arcp contract afn reassoc VADDS killed %22, %5, 14 /* CC::al */, $noreg
+ %22:spr = nnan ninf nsz arcp contract afn reassoc VMULS killed %21, killed %19, 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ %6:spr = nnan ninf nsz arcp contract afn reassoc VADDS killed %22, %5, 14 /* CC::al */, $noreg, implicit $fpscr_rm
%23:rgpr = t2SUBri %4, 1, 14 /* CC::al */, $noreg, def $cpsr
%7:gpr = COPY %23
%8:gpr = COPY %20
diff --git a/llvm/test/CodeGen/Thumb2/swp-fixedii-le.mir b/llvm/test/CodeGen/Thumb2/swp-fixedii-le.mir
index 854c5b8..177c94e 100644
--- a/llvm/test/CodeGen/Thumb2/swp-fixedii-le.mir
+++ b/llvm/test/CodeGen/Thumb2/swp-fixedii-le.mir
@@ -84,7 +84,7 @@ body: |
; CHECK-NEXT: [[VLDRS2:%[0-9]+]]:spr = VLDRS [[COPY4]], 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep7)
; CHECK-NEXT: [[t2ADDri1:%[0-9]+]]:rgpr = t2ADDri [[COPY3]], 4, 14 /* CC::al */, $noreg, $noreg
; CHECK-NEXT: [[VLDRS3:%[0-9]+]]:spr = VLDRS [[COPY3]], 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep3)
- ; CHECK-NEXT: [[VMULS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS3]], [[VLDRS2]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VMULS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS3]], [[VLDRS2]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: [[COPY5:%[0-9]+]]:gprlr = COPY [[t2DoLoopStart]]
; CHECK-NEXT: [[t2LoopDec:%[0-9]+]]:gprlr = t2LoopDec [[COPY5]], 1
; CHECK-NEXT: [[COPY6:%[0-9]+]]:gpr = COPY [[t2LoopDec]]
@@ -110,8 +110,8 @@ body: |
; CHECK-NEXT: [[t2ADDri3:%[0-9]+]]:rgpr = t2ADDri [[PHI1]], 4, 14 /* CC::al */, $noreg, $noreg
; CHECK-NEXT: [[COPY10:%[0-9]+]]:gpr = COPY [[t2ADDri2]]
; CHECK-NEXT: [[COPY11:%[0-9]+]]:gpr = COPY [[t2ADDri3]]
- ; CHECK-NEXT: [[VMULS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS4]], [[VLDRS5]], 14 /* CC::al */, $noreg
- ; CHECK-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI4]], [[PHI3]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VMULS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS4]], [[VLDRS5]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ ; CHECK-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI4]], [[PHI3]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: [[COPY12:%[0-9]+]]:gpr = COPY [[t2LoopDec1]]
; CHECK-NEXT: t2LoopEnd [[t2LoopDec1]], %bb.6, implicit-def $cpsr
; CHECK-NEXT: t2B %bb.7, 14 /* CC::al */, $noreg
@@ -121,7 +121,7 @@ body: |
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[PHI5:%[0-9]+]]:spr = PHI [[VLDRS1]], %bb.5, [[VADDS]], %bb.6
; CHECK-NEXT: [[PHI6:%[0-9]+]]:spr = PHI [[VMULS]], %bb.5, [[VMULS1]], %bb.6
- ; CHECK-NEXT: [[VADDS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI6]], [[PHI5]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VADDS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI6]], [[PHI5]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: t2B %bb.4, 14 /* CC::al */, $noreg
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.4.for.end:
@@ -166,8 +166,8 @@ body: |
%19:spr = VLDRS %2, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep7)
%20:rgpr = t2ADDri %3, 4, 14 /* CC::al */, $noreg, $noreg
%21:spr = VLDRS %3, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep3)
- %22:spr = nnan ninf nsz arcp contract afn reassoc VMULS killed %21, killed %19, 14 /* CC::al */, $noreg
- %6:spr = nnan ninf nsz arcp contract afn reassoc VADDS killed %22, %5, 14 /* CC::al */, $noreg
+ %22:spr = nnan ninf nsz arcp contract afn reassoc VMULS killed %21, killed %19, 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ %6:spr = nnan ninf nsz arcp contract afn reassoc VADDS killed %22, %5, 14 /* CC::al */, $noreg, implicit $fpscr_rm
%42:gprlr = COPY %4
%23:gprlr = t2LoopDec %42:gprlr, 1
%7:gpr = COPY %23
diff --git a/llvm/test/CodeGen/Thumb2/swp-fixedii.mir b/llvm/test/CodeGen/Thumb2/swp-fixedii.mir
index dd02703..7939717 100644
--- a/llvm/test/CodeGen/Thumb2/swp-fixedii.mir
+++ b/llvm/test/CodeGen/Thumb2/swp-fixedii.mir
@@ -83,7 +83,7 @@ body: |
; CHECK-NEXT: [[VLDRS2:%[0-9]+]]:spr = VLDRS [[COPY4]], 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep7)
; CHECK-NEXT: [[t2ADDri1:%[0-9]+]]:rgpr = t2ADDri [[COPY3]], 4, 14 /* CC::al */, $noreg, $noreg
; CHECK-NEXT: [[VLDRS3:%[0-9]+]]:spr = VLDRS [[COPY3]], 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep3)
- ; CHECK-NEXT: [[VMULS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS3]], [[VLDRS2]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VMULS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS3]], [[VLDRS2]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: [[t2SUBri2:%[0-9]+]]:rgpr = t2SUBri [[COPY]], 1, 14 /* CC::al */, $noreg, def $cpsr
; CHECK-NEXT: [[COPY5:%[0-9]+]]:gprnopc = COPY [[t2SUBri2]]
; CHECK-NEXT: [[COPY6:%[0-9]+]]:gprnopc = COPY [[t2ADDri1]]
@@ -98,7 +98,7 @@ body: |
; CHECK-NEXT: [[VLDRS4:%[0-9]+]]:spr = VLDRS [[COPY7]], 1, 14 /* CC::al */, $noreg :: (load unknown-size from %ir.scevgep7, align 4)
; CHECK-NEXT: [[t2ADDri3:%[0-9]+]]:rgpr = t2ADDri [[COPY6]], 4, 14 /* CC::al */, $noreg, $noreg
; CHECK-NEXT: [[VLDRS5:%[0-9]+]]:spr = VLDRS [[COPY6]], 1, 14 /* CC::al */, $noreg :: (load unknown-size from %ir.scevgep3, align 4)
- ; CHECK-NEXT: [[VMULS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS5]], [[VLDRS4]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VMULS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS5]], [[VLDRS4]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: [[t2SUBri3:%[0-9]+]]:rgpr = t2SUBri [[COPY5]], 1, 14 /* CC::al */, $noreg, def $cpsr
; CHECK-NEXT: [[COPY8:%[0-9]+]]:gpr = COPY [[t2SUBri3]]
; CHECK-NEXT: [[COPY9:%[0-9]+]]:gpr = COPY [[t2ADDri3]]
@@ -115,7 +115,7 @@ body: |
; CHECK-NEXT: [[PHI3:%[0-9]+]]:spr = PHI [[VLDRS1]], %bb.6, %43, %bb.7
; CHECK-NEXT: [[PHI4:%[0-9]+]]:spr = PHI [[VMULS1]], %bb.6, %52, %bb.7
; CHECK-NEXT: [[PHI5:%[0-9]+]]:spr = PHI [[VMULS]], %bb.6, [[PHI4]], %bb.7
- ; CHECK-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI5]], [[PHI3]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI5]], [[PHI3]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: [[t2SUBri4:%[0-9]+]]:rgpr = t2SUBri [[PHI2]], 1, 14 /* CC::al */, $noreg, def $cpsr
; CHECK-NEXT: [[VLDRS6:%[0-9]+]]:spr = VLDRS [[PHI1]], 1, 14 /* CC::al */, $noreg :: (load unknown-size from %ir.scevgep3, align 4)
; CHECK-NEXT: [[VLDRS7:%[0-9]+]]:spr = VLDRS [[PHI]], 1, 14 /* CC::al */, $noreg :: (load unknown-size from %ir.scevgep7, align 4)
@@ -124,7 +124,7 @@ body: |
; CHECK-NEXT: [[COPY11:%[0-9]+]]:gpr = COPY [[t2ADDri4]]
; CHECK-NEXT: [[COPY12:%[0-9]+]]:gpr = COPY [[t2ADDri5]]
; CHECK-NEXT: [[COPY13:%[0-9]+]]:gpr = COPY [[t2SUBri4]]
- ; CHECK-NEXT: [[VMULS2:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS6]], [[VLDRS7]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VMULS2:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS6]], [[VLDRS7]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: t2Bcc %bb.7, 1 /* CC::ne */, $cpsr
; CHECK-NEXT: t2B %bb.8, 14 /* CC::al */, $noreg
; CHECK-NEXT: {{ $}}
@@ -134,14 +134,14 @@ body: |
; CHECK-NEXT: [[PHI6:%[0-9]+]]:spr = PHI [[VLDRS1]], %bb.6, [[VADDS]], %bb.7
; CHECK-NEXT: [[PHI7:%[0-9]+]]:spr = PHI [[VMULS1]], %bb.6, [[VMULS2]], %bb.7
; CHECK-NEXT: [[PHI8:%[0-9]+]]:spr = PHI [[VMULS]], %bb.6, [[PHI4]], %bb.7
- ; CHECK-NEXT: [[VADDS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI8]], [[PHI6]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VADDS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI8]], [[PHI6]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.9:
; CHECK-NEXT: successors: %bb.4(0x80000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[PHI9:%[0-9]+]]:spr = PHI [[VLDRS1]], %bb.5, [[VADDS1]], %bb.8
; CHECK-NEXT: [[PHI10:%[0-9]+]]:spr = PHI [[VMULS]], %bb.5, [[PHI7]], %bb.8
- ; CHECK-NEXT: [[VADDS2:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI10]], [[PHI9]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VADDS2:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI10]], [[PHI9]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: t2B %bb.4, 14 /* CC::al */, $noreg
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.4.for.end:
@@ -185,8 +185,8 @@ body: |
%19:spr = VLDRS %2, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep7)
%20:rgpr = t2ADDri %3, 4, 14 /* CC::al */, $noreg, $noreg
%21:spr = VLDRS %3, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep3)
- %22:spr = nnan ninf nsz arcp contract afn reassoc VMULS killed %21, killed %19, 14 /* CC::al */, $noreg
- %6:spr = nnan ninf nsz arcp contract afn reassoc VADDS killed %22, %5, 14 /* CC::al */, $noreg
+ %22:spr = nnan ninf nsz arcp contract afn reassoc VMULS killed %21, killed %19, 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ %6:spr = nnan ninf nsz arcp contract afn reassoc VADDS killed %22, %5, 14 /* CC::al */, $noreg, implicit $fpscr_rm
%23:rgpr = t2SUBri %4, 1, 14 /* CC::al */, $noreg, def $cpsr
%7:gpr = COPY %23
%8:gpr = COPY %20
diff --git a/llvm/test/CodeGen/Thumb2/swp-regpressure.mir b/llvm/test/CodeGen/Thumb2/swp-regpressure.mir
index 2bcb0c9..955b53df 100644
--- a/llvm/test/CodeGen/Thumb2/swp-regpressure.mir
+++ b/llvm/test/CodeGen/Thumb2/swp-regpressure.mir
@@ -148,8 +148,8 @@ body: |
; CHECK-NEXT: [[VLDRS2:%[0-9]+]]:spr = VLDRS [[PHI]], 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep7)
; CHECK-NEXT: [[t2ADDri1:%[0-9]+]]:rgpr = t2ADDri [[PHI1]], 4, 14 /* CC::al */, $noreg, $noreg
; CHECK-NEXT: [[VLDRS3:%[0-9]+]]:spr = VLDRS [[PHI1]], 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep3)
- ; CHECK-NEXT: [[VMULS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS3]], [[VLDRS2]], 14 /* CC::al */, $noreg
- ; CHECK-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[VMULS]], [[PHI3]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VMULS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS3]], [[VLDRS2]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ ; CHECK-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[VMULS]], [[PHI3]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: [[t2SUBri2:%[0-9]+]]:rgpr = t2SUBri [[PHI2]], 1, 14 /* CC::al */, $noreg, def $cpsr
; CHECK-NEXT: [[COPY5:%[0-9]+]]:gpr = COPY [[t2SUBri2]]
; CHECK-NEXT: [[COPY6:%[0-9]+]]:gpr = COPY [[t2ADDri1]]
@@ -236,8 +236,8 @@ body: |
%19:spr = VLDRS %2, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep7)
%20:rgpr = t2ADDri %3, 4, 14 /* CC::al */, $noreg, $noreg
%21:spr = VLDRS %3, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep3)
- %22:spr = nnan ninf nsz arcp contract afn reassoc VMULS killed %21, killed %19, 14 /* CC::al */, $noreg
- %6:spr = nnan ninf nsz arcp contract afn reassoc VADDS killed %22, %5, 14 /* CC::al */, $noreg
+ %22:spr = nnan ninf nsz arcp contract afn reassoc VMULS killed %21, killed %19, 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ %6:spr = nnan ninf nsz arcp contract afn reassoc VADDS killed %22, %5, 14 /* CC::al */, $noreg, implicit $fpscr_rm
%23:rgpr = t2SUBri %4, 1, 14 /* CC::al */, $noreg, def $cpsr
%7:gpr = COPY %23
%8:gpr = COPY %20
@@ -314,24 +314,24 @@ body: |
; CHECK-NEXT: [[t2SUBri2:%[0-9]+]]:rgpr = t2SUBri [[COPY]], 1, 14 /* CC::al */, $noreg, def $cpsr
; CHECK-NEXT: [[COPY5:%[0-9]+]]:gprnopc = COPY [[t2SUBri2]]
; CHECK-NEXT: [[COPY6:%[0-9]+]]:rgpr = COPY [[COPY4]]
- ; CHECK-NEXT: dead %66:rgpr = COPY [[COPY4]]
- ; CHECK-NEXT: dead %67:rgpr = COPY [[COPY4]]
- ; CHECK-NEXT: dead %68:rgpr = COPY [[COPY4]]
- ; CHECK-NEXT: dead %69:rgpr = COPY [[COPY4]]
- ; CHECK-NEXT: dead %70:rgpr = COPY [[COPY4]]
- ; CHECK-NEXT: dead %71:rgpr = COPY [[COPY4]]
- ; CHECK-NEXT: dead %72:rgpr = COPY [[COPY4]]
- ; CHECK-NEXT: dead %73:rgpr = COPY [[COPY4]]
- ; CHECK-NEXT: dead %74:rgpr = COPY [[COPY4]]
- ; CHECK-NEXT: dead %75:rgpr = COPY [[COPY4]]
- ; CHECK-NEXT: dead %76:rgpr = COPY [[COPY4]]
- ; CHECK-NEXT: dead %77:rgpr = COPY [[COPY4]]
- ; CHECK-NEXT: dead %78:rgpr = COPY [[COPY4]]
- ; CHECK-NEXT: dead %79:rgpr = COPY [[COPY4]]
- ; CHECK-NEXT: dead %80:rgpr = COPY [[COPY4]]
- ; CHECK-NEXT: dead %81:rgpr = COPY [[COPY4]]
- ; CHECK-NEXT: dead %82:rgpr = COPY [[COPY4]]
- ; CHECK-NEXT: dead %83:rgpr = COPY [[COPY4]]
+ ; CHECK-NEXT: dead [[COPY7:%[0-9]+]]:rgpr = COPY [[COPY4]]
+ ; CHECK-NEXT: dead [[COPY8:%[0-9]+]]:rgpr = COPY [[COPY4]]
+ ; CHECK-NEXT: dead [[COPY9:%[0-9]+]]:rgpr = COPY [[COPY4]]
+ ; CHECK-NEXT: dead [[COPY10:%[0-9]+]]:rgpr = COPY [[COPY4]]
+ ; CHECK-NEXT: dead [[COPY11:%[0-9]+]]:rgpr = COPY [[COPY4]]
+ ; CHECK-NEXT: dead [[COPY12:%[0-9]+]]:rgpr = COPY [[COPY4]]
+ ; CHECK-NEXT: dead [[COPY13:%[0-9]+]]:rgpr = COPY [[COPY4]]
+ ; CHECK-NEXT: dead [[COPY14:%[0-9]+]]:rgpr = COPY [[COPY4]]
+ ; CHECK-NEXT: dead [[COPY15:%[0-9]+]]:rgpr = COPY [[COPY4]]
+ ; CHECK-NEXT: dead [[COPY16:%[0-9]+]]:rgpr = COPY [[COPY4]]
+ ; CHECK-NEXT: dead [[COPY17:%[0-9]+]]:rgpr = COPY [[COPY4]]
+ ; CHECK-NEXT: dead [[COPY18:%[0-9]+]]:rgpr = COPY [[COPY4]]
+ ; CHECK-NEXT: dead [[COPY19:%[0-9]+]]:rgpr = COPY [[COPY4]]
+ ; CHECK-NEXT: dead [[COPY20:%[0-9]+]]:rgpr = COPY [[COPY4]]
+ ; CHECK-NEXT: dead [[COPY21:%[0-9]+]]:rgpr = COPY [[COPY4]]
+ ; CHECK-NEXT: dead [[COPY22:%[0-9]+]]:rgpr = COPY [[COPY4]]
+ ; CHECK-NEXT: dead [[COPY23:%[0-9]+]]:rgpr = COPY [[COPY4]]
+ ; CHECK-NEXT: dead [[COPY24:%[0-9]+]]:rgpr = COPY [[COPY4]]
; CHECK-NEXT: t2Bcc %bb.9, 0 /* CC::eq */, $cpsr
; CHECK-NEXT: t2B %bb.6, 14 /* CC::al */, $noreg
; CHECK-NEXT: {{ $}}
@@ -342,82 +342,82 @@ body: |
; CHECK-NEXT: [[VLDRS2:%[0-9]+]]:spr = VLDRS [[COPY4]], 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep7)
; CHECK-NEXT: [[t2ADDri1:%[0-9]+]]:rgpr = t2ADDri [[COPY3]], 4, 14 /* CC::al */, $noreg, $noreg
; CHECK-NEXT: [[VLDRS3:%[0-9]+]]:spr = VLDRS [[COPY3]], 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep3)
- ; CHECK-NEXT: [[VMULS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS3]], [[VLDRS2]], 14 /* CC::al */, $noreg
- ; CHECK-NEXT: [[COPY7:%[0-9]+]]:gpr = COPY [[t2ADDri1]]
- ; CHECK-NEXT: [[COPY8:%[0-9]+]]:gpr = COPY [[t2ADDri]]
+ ; CHECK-NEXT: [[VMULS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS3]], [[VLDRS2]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ ; CHECK-NEXT: [[COPY25:%[0-9]+]]:gpr = COPY [[t2ADDri1]]
+ ; CHECK-NEXT: [[COPY26:%[0-9]+]]:gpr = COPY [[t2ADDri]]
; CHECK-NEXT: [[t2SUBri3:%[0-9]+]]:rgpr = t2SUBri [[COPY5]], 1, 14 /* CC::al */, $noreg, def $cpsr
- ; CHECK-NEXT: [[COPY9:%[0-9]+]]:gpr = COPY [[t2SUBri3]]
- ; CHECK-NEXT: [[COPY10:%[0-9]+]]:rgpr = COPY [[COPY6]]
- ; CHECK-NEXT: dead %94:rgpr = COPY [[COPY6]]
- ; CHECK-NEXT: dead %95:rgpr = COPY [[COPY6]]
- ; CHECK-NEXT: dead %96:rgpr = COPY [[COPY6]]
- ; CHECK-NEXT: dead %97:rgpr = COPY [[COPY6]]
- ; CHECK-NEXT: dead %98:rgpr = COPY [[COPY6]]
- ; CHECK-NEXT: dead %99:rgpr = COPY [[COPY6]]
- ; CHECK-NEXT: dead %100:rgpr = COPY [[COPY6]]
- ; CHECK-NEXT: dead %101:rgpr = COPY [[COPY6]]
- ; CHECK-NEXT: dead %102:rgpr = COPY [[COPY6]]
- ; CHECK-NEXT: dead %103:rgpr = COPY [[COPY6]]
- ; CHECK-NEXT: dead %104:rgpr = COPY [[COPY6]]
- ; CHECK-NEXT: dead %105:rgpr = COPY [[COPY6]]
- ; CHECK-NEXT: dead %106:rgpr = COPY [[COPY6]]
- ; CHECK-NEXT: dead %107:rgpr = COPY [[COPY6]]
- ; CHECK-NEXT: dead %108:rgpr = COPY [[COPY6]]
- ; CHECK-NEXT: dead %109:rgpr = COPY [[COPY6]]
- ; CHECK-NEXT: dead %110:rgpr = COPY [[COPY6]]
- ; CHECK-NEXT: dead %111:rgpr = COPY [[COPY6]]
+ ; CHECK-NEXT: [[COPY27:%[0-9]+]]:gpr = COPY [[t2SUBri3]]
+ ; CHECK-NEXT: [[COPY28:%[0-9]+]]:rgpr = COPY [[COPY6]]
+ ; CHECK-NEXT: dead [[COPY29:%[0-9]+]]:rgpr = COPY [[COPY6]]
+ ; CHECK-NEXT: dead [[COPY30:%[0-9]+]]:rgpr = COPY [[COPY6]]
+ ; CHECK-NEXT: dead [[COPY31:%[0-9]+]]:rgpr = COPY [[COPY6]]
+ ; CHECK-NEXT: dead [[COPY32:%[0-9]+]]:rgpr = COPY [[COPY6]]
+ ; CHECK-NEXT: dead [[COPY33:%[0-9]+]]:rgpr = COPY [[COPY6]]
+ ; CHECK-NEXT: dead [[COPY34:%[0-9]+]]:rgpr = COPY [[COPY6]]
+ ; CHECK-NEXT: dead [[COPY35:%[0-9]+]]:rgpr = COPY [[COPY6]]
+ ; CHECK-NEXT: dead [[COPY36:%[0-9]+]]:rgpr = COPY [[COPY6]]
+ ; CHECK-NEXT: dead [[COPY37:%[0-9]+]]:rgpr = COPY [[COPY6]]
+ ; CHECK-NEXT: dead [[COPY38:%[0-9]+]]:rgpr = COPY [[COPY6]]
+ ; CHECK-NEXT: dead [[COPY39:%[0-9]+]]:rgpr = COPY [[COPY6]]
+ ; CHECK-NEXT: dead [[COPY40:%[0-9]+]]:rgpr = COPY [[COPY6]]
+ ; CHECK-NEXT: dead [[COPY41:%[0-9]+]]:rgpr = COPY [[COPY6]]
+ ; CHECK-NEXT: dead [[COPY42:%[0-9]+]]:rgpr = COPY [[COPY6]]
+ ; CHECK-NEXT: dead [[COPY43:%[0-9]+]]:rgpr = COPY [[COPY6]]
+ ; CHECK-NEXT: dead [[COPY44:%[0-9]+]]:rgpr = COPY [[COPY6]]
+ ; CHECK-NEXT: dead [[COPY45:%[0-9]+]]:rgpr = COPY [[COPY6]]
+ ; CHECK-NEXT: dead [[COPY46:%[0-9]+]]:rgpr = COPY [[COPY6]]
; CHECK-NEXT: t2Bcc %bb.8, 0 /* CC::eq */, $cpsr
; CHECK-NEXT: t2B %bb.7, 14 /* CC::al */, $noreg
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.7.for.body:
; CHECK-NEXT: successors: %bb.8(0x04000000), %bb.7(0x7c000000)
; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[PHI:%[0-9]+]]:gprnopc = PHI [[COPY8]], %bb.6, %116, %bb.7
- ; CHECK-NEXT: [[PHI1:%[0-9]+]]:gprnopc = PHI [[COPY7]], %bb.6, %117, %bb.7
- ; CHECK-NEXT: [[PHI2:%[0-9]+]]:gprnopc = PHI [[COPY9]], %bb.6, %140, %bb.7
+ ; CHECK-NEXT: [[PHI:%[0-9]+]]:gprnopc = PHI [[COPY26]], %bb.6, %116, %bb.7
+ ; CHECK-NEXT: [[PHI1:%[0-9]+]]:gprnopc = PHI [[COPY25]], %bb.6, %117, %bb.7
+ ; CHECK-NEXT: [[PHI2:%[0-9]+]]:gprnopc = PHI [[COPY27]], %bb.6, %140, %bb.7
; CHECK-NEXT: [[PHI3:%[0-9]+]]:spr = PHI [[VLDRS1]], %bb.6, %137, %bb.7
- ; CHECK-NEXT: [[PHI4:%[0-9]+]]:gprnopc = PHI [[COPY10]], %bb.6, %139, %bb.7
+ ; CHECK-NEXT: [[PHI4:%[0-9]+]]:gprnopc = PHI [[COPY28]], %bb.6, %139, %bb.7
; CHECK-NEXT: [[PHI5:%[0-9]+]]:spr = PHI [[VMULS]], %bb.6, %118, %bb.7
; CHECK-NEXT: [[VLDRS4:%[0-9]+]]:spr = VLDRS [[PHI1]], 1, 14 /* CC::al */, $noreg :: (load unknown-size from %ir.scevgep3, align 4)
; CHECK-NEXT: [[VLDRS5:%[0-9]+]]:spr = VLDRS [[PHI]], 1, 14 /* CC::al */, $noreg :: (load unknown-size from %ir.scevgep7, align 4)
; CHECK-NEXT: [[t2ADDri2:%[0-9]+]]:rgpr = t2ADDri [[PHI]], 4, 14 /* CC::al */, $noreg, $noreg
; CHECK-NEXT: [[t2ADDri3:%[0-9]+]]:rgpr = t2ADDri [[PHI1]], 4, 14 /* CC::al */, $noreg, $noreg
- ; CHECK-NEXT: [[COPY11:%[0-9]+]]:gpr = COPY [[t2ADDri2]]
- ; CHECK-NEXT: [[COPY12:%[0-9]+]]:gpr = COPY [[t2ADDri3]]
- ; CHECK-NEXT: [[VMULS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS4]], [[VLDRS5]], 14 /* CC::al */, $noreg
- ; CHECK-NEXT: dead %119:rgpr = COPY [[PHI4]]
- ; CHECK-NEXT: dead %120:rgpr = COPY [[PHI4]]
- ; CHECK-NEXT: dead %121:rgpr = COPY [[PHI4]]
- ; CHECK-NEXT: dead %122:rgpr = COPY [[PHI4]]
- ; CHECK-NEXT: dead %123:rgpr = COPY [[PHI4]]
- ; CHECK-NEXT: dead %124:rgpr = COPY [[PHI4]]
- ; CHECK-NEXT: dead %125:rgpr = COPY [[PHI4]]
- ; CHECK-NEXT: dead %126:rgpr = COPY [[PHI4]]
- ; CHECK-NEXT: dead %127:rgpr = COPY [[PHI4]]
- ; CHECK-NEXT: dead %128:rgpr = COPY [[PHI4]]
- ; CHECK-NEXT: dead %129:rgpr = COPY [[PHI4]]
- ; CHECK-NEXT: dead %130:rgpr = COPY [[PHI4]]
- ; CHECK-NEXT: dead %131:rgpr = COPY [[PHI4]]
- ; CHECK-NEXT: dead %132:rgpr = COPY [[PHI4]]
- ; CHECK-NEXT: dead %133:rgpr = COPY [[PHI4]]
- ; CHECK-NEXT: dead %134:rgpr = COPY [[PHI4]]
- ; CHECK-NEXT: dead %135:rgpr = COPY [[PHI4]]
- ; CHECK-NEXT: dead %136:rgpr = COPY [[PHI4]]
- ; CHECK-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI5]], [[PHI3]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[COPY47:%[0-9]+]]:gpr = COPY [[t2ADDri2]]
+ ; CHECK-NEXT: [[COPY48:%[0-9]+]]:gpr = COPY [[t2ADDri3]]
+ ; CHECK-NEXT: [[VMULS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS4]], [[VLDRS5]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ ; CHECK-NEXT: dead [[COPY49:%[0-9]+]]:rgpr = COPY [[PHI4]]
+ ; CHECK-NEXT: dead [[COPY50:%[0-9]+]]:rgpr = COPY [[PHI4]]
+ ; CHECK-NEXT: dead [[COPY51:%[0-9]+]]:rgpr = COPY [[PHI4]]
+ ; CHECK-NEXT: dead [[COPY52:%[0-9]+]]:rgpr = COPY [[PHI4]]
+ ; CHECK-NEXT: dead [[COPY53:%[0-9]+]]:rgpr = COPY [[PHI4]]
+ ; CHECK-NEXT: dead [[COPY54:%[0-9]+]]:rgpr = COPY [[PHI4]]
+ ; CHECK-NEXT: dead [[COPY55:%[0-9]+]]:rgpr = COPY [[PHI4]]
+ ; CHECK-NEXT: dead [[COPY56:%[0-9]+]]:rgpr = COPY [[PHI4]]
+ ; CHECK-NEXT: dead [[COPY57:%[0-9]+]]:rgpr = COPY [[PHI4]]
+ ; CHECK-NEXT: dead [[COPY58:%[0-9]+]]:rgpr = COPY [[PHI4]]
+ ; CHECK-NEXT: dead [[COPY59:%[0-9]+]]:rgpr = COPY [[PHI4]]
+ ; CHECK-NEXT: dead [[COPY60:%[0-9]+]]:rgpr = COPY [[PHI4]]
+ ; CHECK-NEXT: dead [[COPY61:%[0-9]+]]:rgpr = COPY [[PHI4]]
+ ; CHECK-NEXT: dead [[COPY62:%[0-9]+]]:rgpr = COPY [[PHI4]]
+ ; CHECK-NEXT: dead [[COPY63:%[0-9]+]]:rgpr = COPY [[PHI4]]
+ ; CHECK-NEXT: dead [[COPY64:%[0-9]+]]:rgpr = COPY [[PHI4]]
+ ; CHECK-NEXT: dead [[COPY65:%[0-9]+]]:rgpr = COPY [[PHI4]]
+ ; CHECK-NEXT: dead [[COPY66:%[0-9]+]]:rgpr = COPY [[PHI4]]
+ ; CHECK-NEXT: [[VADDS:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI5]], [[PHI3]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: [[t2SUBri4:%[0-9]+]]:rgpr = t2SUBri [[PHI2]], 1, 14 /* CC::al */, $noreg, def $cpsr
- ; CHECK-NEXT: [[COPY13:%[0-9]+]]:rgpr = COPY [[PHI4]]
- ; CHECK-NEXT: [[COPY14:%[0-9]+]]:gpr = COPY [[t2SUBri4]]
+ ; CHECK-NEXT: [[COPY67:%[0-9]+]]:rgpr = COPY [[PHI4]]
+ ; CHECK-NEXT: [[COPY68:%[0-9]+]]:gpr = COPY [[t2SUBri4]]
; CHECK-NEXT: t2Bcc %bb.7, 1 /* CC::ne */, $cpsr
; CHECK-NEXT: t2B %bb.8, 14 /* CC::al */, $noreg
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.8:
; CHECK-NEXT: successors: %bb.9(0x80000000)
; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: [[PHI6:%[0-9]+]]:gprnopc = PHI [[COPY8]], %bb.6, [[COPY11]], %bb.7
- ; CHECK-NEXT: [[PHI7:%[0-9]+]]:gprnopc = PHI [[COPY7]], %bb.6, [[COPY12]], %bb.7
+ ; CHECK-NEXT: [[PHI6:%[0-9]+]]:gprnopc = PHI [[COPY26]], %bb.6, [[COPY47]], %bb.7
+ ; CHECK-NEXT: [[PHI7:%[0-9]+]]:gprnopc = PHI [[COPY25]], %bb.6, [[COPY48]], %bb.7
; CHECK-NEXT: [[PHI8:%[0-9]+]]:spr = PHI [[VLDRS1]], %bb.6, [[VADDS]], %bb.7
; CHECK-NEXT: [[PHI9:%[0-9]+]]:spr = PHI [[VMULS]], %bb.6, [[VMULS1]], %bb.7
- ; CHECK-NEXT: [[VADDS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI9]], [[PHI8]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VADDS1:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[PHI9]], [[PHI8]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.9:
; CHECK-NEXT: successors: %bb.4(0x80000000)
@@ -427,8 +427,8 @@ body: |
; CHECK-NEXT: [[PHI12:%[0-9]+]]:spr = PHI [[VLDRS1]], %bb.5, [[VADDS1]], %bb.8
; CHECK-NEXT: [[VLDRS6:%[0-9]+]]:spr = VLDRS [[PHI10]], 1, 14 /* CC::al */, $noreg :: (load unknown-size from %ir.scevgep7, align 4)
; CHECK-NEXT: [[VLDRS7:%[0-9]+]]:spr = VLDRS [[PHI11]], 1, 14 /* CC::al */, $noreg :: (load unknown-size from %ir.scevgep3, align 4)
- ; CHECK-NEXT: [[VMULS2:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS7]], [[VLDRS6]], 14 /* CC::al */, $noreg
- ; CHECK-NEXT: [[VADDS2:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[VMULS2]], [[PHI12]], 14 /* CC::al */, $noreg
+ ; CHECK-NEXT: [[VMULS2:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VMULS [[VLDRS7]], [[VLDRS6]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ ; CHECK-NEXT: [[VADDS2:%[0-9]+]]:spr = nnan ninf nsz arcp contract afn reassoc VADDS [[VMULS2]], [[PHI12]], 14 /* CC::al */, $noreg, implicit $fpscr_rm
; CHECK-NEXT: t2B %bb.4, 14 /* CC::al */, $noreg
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.4.for.end:
@@ -491,8 +491,8 @@ body: |
%19:spr = VLDRS %2, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep7)
%20:rgpr = t2ADDri %3, 4, 14 /* CC::al */, $noreg, $noreg
%21:spr = VLDRS %3, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.scevgep3)
- %22:spr = nnan ninf nsz arcp contract afn reassoc VMULS killed %21, killed %19, 14 /* CC::al */, $noreg
- %6:spr = nnan ninf nsz arcp contract afn reassoc VADDS killed %22, %5, 14 /* CC::al */, $noreg
+ %22:spr = nnan ninf nsz arcp contract afn reassoc VMULS killed %21, killed %19, 14 /* CC::al */, $noreg, implicit $fpscr_rm
+ %6:spr = nnan ninf nsz arcp contract afn reassoc VADDS killed %22, %5, 14 /* CC::al */, $noreg, implicit $fpscr_rm
%23:rgpr = t2SUBri %4, 1, 14 /* CC::al */, $noreg, def $cpsr
%7:gpr = COPY %23
%8:gpr = COPY %20
diff --git a/llvm/test/CodeGen/WebAssembly/simd-setcc-reductions.ll b/llvm/test/CodeGen/WebAssembly/simd-setcc-reductions.ll
index 172ff53..e562c4a 100644
--- a/llvm/test/CodeGen/WebAssembly/simd-setcc-reductions.ll
+++ b/llvm/test/CodeGen/WebAssembly/simd-setcc-reductions.ll
@@ -132,4 +132,17 @@ define i32 @all_true_2_4_i32(<4 x i32> %v) {
ret i32 %conv3
}
+; Regression test for the intrinsic pattern matcher with nullary intrinsics
+define i64 @other_intrinsic() #0 {
+; CHECK-LABEL: other_intrinsic:
+; CHECK: .functype other_intrinsic () -> (i64)
+; CHECK-NEXT: # %bb.0: # %entry
+; CHECK-NEXT: global.get $push0=, __tls_align
+; CHECK-NEXT: return $pop0
+entry:
+ %0 = call i64 @llvm.wasm.tls.align.i64()
+ ret i64 %0
+}
+
+attributes #0 = { "target-features"="+atomics" }
diff --git a/llvm/test/DebugInfo/KeyInstructions/Generic/loop-unroll-runtime.ll b/llvm/test/DebugInfo/KeyInstructions/Generic/loop-unroll-runtime.ll
index d23afae..abcc566 100644
--- a/llvm/test/DebugInfo/KeyInstructions/Generic/loop-unroll-runtime.ll
+++ b/llvm/test/DebugInfo/KeyInstructions/Generic/loop-unroll-runtime.ll
@@ -5,7 +5,7 @@
;; Check atoms are remapped for runtime unrolling.
; CHECK: for.body.epil:
-; CHECK-NEXT: store i64 %indvars.iv.unr, ptr %p, align 4, !dbg [[G2R1:!.*]]
+; CHECK-NEXT: store i64 %indvars.iv.epil.init, ptr %p, align 4, !dbg [[G2R1:!.*]]
; CHECK: for.body.epil.1:
; CHECK-NEXT: store i64 %indvars.iv.next.epil, ptr %p, align 4, !dbg [[G3R1:!.*]]
diff --git a/llvm/test/DebugInfo/dwarf-complex-int.ll b/llvm/test/DebugInfo/dwarf-complex-int.ll
new file mode 100644
index 0000000..effd0ec
--- /dev/null
+++ b/llvm/test/DebugInfo/dwarf-complex-int.ll
@@ -0,0 +1,59 @@
+; REQUIRES: object-emission
+; RUN: %llc_dwarf %s -filetype=obj -o - | llvm-dwarfdump - | FileCheck %s
+
+;; https://github.com/llvm/llvm-project/issues/140362
+;; Don't assert when emitting a complex integer type in DWARF.
+
+;; C source:
+;; int g;
+;;
+;; void foo(_Complex short c) { __builtin_memmove(&g, (char *)&c, 2); }
+;;
+;; void bar() { foo(0); }
+
+; CHECK: DW_AT_type ([[complex:0x[0-9a-f]+]] "complex")
+
+; CHECK: [[complex]]: DW_TAG_base_type
+; CHECK-NEXT: DW_AT_name ("complex")
+; CHECK-NEXT: DW_AT_encoding (0x80)
+; CHECK-NEXT: DW_AT_byte_size (0x04)
+
+@g = dso_local local_unnamed_addr global i32 0, align 4, !dbg !0
+
+define dso_local void @bar() local_unnamed_addr !dbg !18 {
+entry:
+ #dbg_value(i32 0, !21, !DIExpression(), !27)
+ store i16 0, ptr @g, align 4, !dbg !29
+ ret void, !dbg !30
+}
+
+!llvm.dbg.cu = !{!2}
+!llvm.module.flags = !{!10, !11}
+!llvm.ident = !{!17}
+
+!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
+!1 = distinct !DIGlobalVariable(name: "g", scope: !2, file: !8, line: 1, type: !9, isLocal: false, isDefinition: true)
+!2 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !3, producer: "clang version 22.0.0git", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !4, globals: !7, splitDebugInlining: false, nameTableKind: None)
+!3 = !DIFile(filename: "/app/example.cpp", directory: "/app")
+!4 = !{!5}
+!5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 64)
+!6 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char)
+!7 = !{!0}
+!8 = !DIFile(filename: "example.cpp", directory: "/app")
+!9 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
+!10 = !{i32 7, !"Dwarf Version", i32 5}
+!11 = !{i32 2, !"Debug Info Version", i32 3}
+!17 = !{!"clang version 22.0.0git"}
+!18 = distinct !DISubprogram(name: "bar", linkageName: "bar()", scope: !8, file: !8, line: 5, type: !19, scopeLine: 5, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, keyInstructions: true)
+!19 = !DISubroutineType(types: !20)
+!20 = !{null}
+!21 = !DILocalVariable(name: "c", arg: 1, scope: !22, file: !8, line: 3, type: !25)
+!22 = distinct !DISubprogram(name: "foo", linkageName: "_ZL3fooCs", scope: !8, file: !8, line: 3, type: !23, scopeLine: 3, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !26, keyInstructions: true)
+!23 = !DISubroutineType(types: !24)
+!24 = !{null, !25}
+!25 = !DIBasicType(name: "complex", size: 32, encoding: 128)
+!26 = !{!21}
+!27 = !DILocation(line: 0, scope: !22, inlinedAt: !28)
+!28 = distinct !DILocation(line: 5, column: 14, scope: !18)
+!29 = !DILocation(line: 3, column: 37, scope: !22, inlinedAt: !28, atomGroup: 1, atomRank: 1)
+!30 = !DILocation(line: 5, column: 22, scope: !18, atomGroup: 1, atomRank: 1)
diff --git a/llvm/test/Instrumentation/AddressSanitizer/RISCV/asan-rvv-intrinsics.ll b/llvm/test/Instrumentation/AddressSanitizer/RISCV/asan-rvv-intrinsics.ll
index 919f16b..4b50094 100644
--- a/llvm/test/Instrumentation/AddressSanitizer/RISCV/asan-rvv-intrinsics.ll
+++ b/llvm/test/Instrumentation/AddressSanitizer/RISCV/asan-rvv-intrinsics.ll
@@ -180,7 +180,29 @@ define <vscale x 1 x i32> @test_vlseg2_nxv1i32(ptr %base, i64 %vl) sanitize_addr
; CHECK-LABEL: @test_vlseg2_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP24:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlseg2.triscv.vector.tuple_nxv4i8_2t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr [[BASE:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i64>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP8]], i64 8)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[TMP24:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlseg2.triscv.vector.tuple_nxv4i8_2t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr [[BASE]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP25:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[TMP24]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP25]]
;
@@ -194,7 +216,29 @@ define <vscale x 1 x i32> @test_vlseg2_mask_nxv1i32(ptr %base, i64 %vl, <vscale
; CHECK-LABEL: @test_vlseg2_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP24:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlseg2.mask.triscv.vector.tuple_nxv4i8_2t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr [[BASE:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i64>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP8]], i64 8)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[TMP24:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlseg2.mask.triscv.vector.tuple_nxv4i8_2t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr [[BASE]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP25:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[TMP24]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP25]]
;
@@ -212,7 +256,29 @@ define <vscale x 1 x i32> @test_vlseg3_nxv1i32(ptr %base, i64 %vl) sanitize_addr
; CHECK-LABEL: @test_vlseg3_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP36:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlseg3.triscv.vector.tuple_nxv4i8_3t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr [[BASE:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i96>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP8]], i64 12)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[TMP36:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlseg3.triscv.vector.tuple_nxv4i8_3t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr [[BASE]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP37:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[TMP36]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP37]]
;
@@ -226,7 +292,29 @@ define <vscale x 1 x i32> @test_vlseg3_mask_nxv1i32(ptr %base, i64 %vl, <vscale
; CHECK-LABEL: @test_vlseg3_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP36:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlseg3.mask.triscv.vector.tuple_nxv4i8_3t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr [[BASE:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i96>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP8]], i64 12)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[TMP36:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlseg3.mask.triscv.vector.tuple_nxv4i8_3t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr [[BASE]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP37:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[TMP36]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP37]]
;
@@ -244,7 +332,29 @@ define <vscale x 1 x i32> @test_vlseg4_nxv1i32(ptr %base, i64 %vl) sanitize_addr
; CHECK-LABEL: @test_vlseg4_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP48:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlseg4.triscv.vector.tuple_nxv4i8_4t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr [[BASE:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i128>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP8]], i64 16)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[TMP48:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlseg4.triscv.vector.tuple_nxv4i8_4t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr [[BASE]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP49:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[TMP48]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP49]]
;
@@ -258,7 +368,29 @@ define <vscale x 1 x i32> @test_vlseg4_mask_nxv1i32(ptr %base, i64 %vl, <vscale
; CHECK-LABEL: @test_vlseg4_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP48:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlseg4.mask.triscv.vector.tuple_nxv4i8_4t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr [[BASE:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i128>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP8]], i64 16)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[TMP48:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlseg4.mask.triscv.vector.tuple_nxv4i8_4t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr [[BASE]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP49:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[TMP48]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP49]]
;
@@ -276,7 +408,29 @@ define <vscale x 1 x i32> @test_vlseg5_nxv1i32(ptr %base, i64 %vl) sanitize_addr
; CHECK-LABEL: @test_vlseg5_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP60:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlseg5.triscv.vector.tuple_nxv4i8_5t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr [[BASE:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i160>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP8]], i64 20)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[TMP60:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlseg5.triscv.vector.tuple_nxv4i8_5t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr [[BASE]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP61:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[TMP60]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP61]]
;
@@ -290,7 +444,29 @@ define <vscale x 1 x i32> @test_vlseg5_mask_nxv1i32(ptr %base, i64 %vl, <vscale
; CHECK-LABEL: @test_vlseg5_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP60:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlseg5.mask.triscv.vector.tuple_nxv4i8_5t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr [[BASE:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i160>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP8]], i64 20)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[TMP60:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlseg5.mask.triscv.vector.tuple_nxv4i8_5t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr [[BASE]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP61:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[TMP60]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP61]]
;
@@ -308,7 +484,29 @@ define <vscale x 1 x i32> @test_vlseg6_nxv1i32(ptr %base, i64 %vl) sanitize_addr
; CHECK-LABEL: @test_vlseg6_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP72:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlseg6.triscv.vector.tuple_nxv4i8_6t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr [[BASE:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i192>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP8]], i64 24)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[TMP72:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlseg6.triscv.vector.tuple_nxv4i8_6t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr [[BASE]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP73:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[TMP72]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP73]]
;
@@ -322,7 +520,29 @@ define <vscale x 1 x i32> @test_vlseg6_mask_nxv1i32(ptr %base, i64 %vl, <vscale
; CHECK-LABEL: @test_vlseg6_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP72:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlseg6.mask.triscv.vector.tuple_nxv4i8_6t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr [[BASE:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i192>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP8]], i64 24)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[TMP72:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlseg6.mask.triscv.vector.tuple_nxv4i8_6t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr [[BASE]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP73:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[TMP72]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP73]]
;
@@ -340,7 +560,29 @@ define <vscale x 1 x i32> @test_vlseg7_nxv1i32(ptr %base, i64 %vl) sanitize_addr
; CHECK-LABEL: @test_vlseg7_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP84:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlseg7.triscv.vector.tuple_nxv4i8_7t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr [[BASE:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i224>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP8]], i64 28)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[TMP84:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlseg7.triscv.vector.tuple_nxv4i8_7t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr [[BASE]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP85:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[TMP84]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP85]]
;
@@ -354,7 +596,29 @@ define <vscale x 1 x i32> @test_vlseg7_mask_nxv1i32(ptr %base, i64 %vl, <vscale
; CHECK-LABEL: @test_vlseg7_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP84:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlseg7.mask.triscv.vector.tuple_nxv4i8_7t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr [[BASE:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i224>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP8]], i64 28)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[TMP84:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlseg7.mask.triscv.vector.tuple_nxv4i8_7t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr [[BASE]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP85:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[TMP84]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP85]]
;
@@ -372,7 +636,29 @@ define <vscale x 1 x i32> @test_vlseg8_nxv1i32(ptr %base, i64 %vl) sanitize_addr
; CHECK-LABEL: @test_vlseg8_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP96:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlseg8.triscv.vector.tuple_nxv4i8_8t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr [[BASE:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i256>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP8]], i64 32)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[TMP96:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlseg8.triscv.vector.tuple_nxv4i8_8t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr [[BASE]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP97:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[TMP96]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP97]]
;
@@ -386,7 +672,29 @@ define <vscale x 1 x i32> @test_vlseg8_mask_nxv1i32(ptr %base, i64 %vl, <vscale
; CHECK-LABEL: @test_vlseg8_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP96:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlseg8.mask.triscv.vector.tuple_nxv4i8_8t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr [[BASE:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i256>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP8]], i64 32)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[TMP96:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlseg8.mask.triscv.vector.tuple_nxv4i8_8t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr [[BASE]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP97:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[TMP96]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP97]]
;
@@ -404,7 +712,29 @@ define void @test_vsseg2_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>,
; CHECK-LABEL: @test_vsseg2_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsseg2.triscv.vector.tuple_nxv4i8_2t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i64>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP8]], i64 8)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: tail call void @llvm.riscv.vsseg2.triscv.vector.tuple_nxv4i8_2t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[VAL:%.*]], ptr [[BASE]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -416,7 +746,29 @@ define void @test_vsseg2_mask_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x
; CHECK-LABEL: @test_vsseg2_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsseg2.mask.triscv.vector.tuple_nxv4i8_2t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i64>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP8]], i64 8)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: tail call void @llvm.riscv.vsseg2.mask.triscv.vector.tuple_nxv4i8_2t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -432,7 +784,29 @@ define void @test_vsseg3_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>,
; CHECK-LABEL: @test_vsseg3_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsseg3.triscv.vector.tuple_nxv4i8_3t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i96>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP8]], i64 12)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: tail call void @llvm.riscv.vsseg3.triscv.vector.tuple_nxv4i8_3t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[VAL:%.*]], ptr [[BASE]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -444,7 +818,29 @@ define void @test_vsseg3_mask_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x
; CHECK-LABEL: @test_vsseg3_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsseg3.mask.triscv.vector.tuple_nxv4i8_3t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i96>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP8]], i64 12)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: tail call void @llvm.riscv.vsseg3.mask.triscv.vector.tuple_nxv4i8_3t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -460,7 +856,29 @@ define void @test_vsseg4_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>,
; CHECK-LABEL: @test_vsseg4_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsseg4.triscv.vector.tuple_nxv4i8_4t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i128>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP8]], i64 16)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: tail call void @llvm.riscv.vsseg4.triscv.vector.tuple_nxv4i8_4t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[VAL:%.*]], ptr [[BASE]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -472,7 +890,29 @@ define void @test_vsseg4_mask_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x
; CHECK-LABEL: @test_vsseg4_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsseg4.mask.triscv.vector.tuple_nxv4i8_4t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i128>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP8]], i64 16)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: tail call void @llvm.riscv.vsseg4.mask.triscv.vector.tuple_nxv4i8_4t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -488,7 +928,29 @@ define void @test_vsseg5_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>,
; CHECK-LABEL: @test_vsseg5_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsseg5.triscv.vector.tuple_nxv4i8_5t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i160>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP8]], i64 20)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: tail call void @llvm.riscv.vsseg5.triscv.vector.tuple_nxv4i8_5t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[VAL:%.*]], ptr [[BASE]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -500,7 +962,29 @@ define void @test_vsseg5_mask_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x
; CHECK-LABEL: @test_vsseg5_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsseg5.mask.triscv.vector.tuple_nxv4i8_5t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i160>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP8]], i64 20)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: tail call void @llvm.riscv.vsseg5.mask.triscv.vector.tuple_nxv4i8_5t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -516,7 +1000,29 @@ define void @test_vsseg6_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>,
; CHECK-LABEL: @test_vsseg6_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsseg6.triscv.vector.tuple_nxv4i8_6t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i192>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP8]], i64 24)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: tail call void @llvm.riscv.vsseg6.triscv.vector.tuple_nxv4i8_6t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[VAL:%.*]], ptr [[BASE]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -528,7 +1034,29 @@ define void @test_vsseg6_mask_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x
; CHECK-LABEL: @test_vsseg6_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsseg6.mask.triscv.vector.tuple_nxv4i8_6t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i192>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP8]], i64 24)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: tail call void @llvm.riscv.vsseg6.mask.triscv.vector.tuple_nxv4i8_6t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -544,7 +1072,29 @@ define void @test_vsseg7_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>,
; CHECK-LABEL: @test_vsseg7_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsseg7.triscv.vector.tuple_nxv4i8_7t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i224>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP8]], i64 28)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: tail call void @llvm.riscv.vsseg7.triscv.vector.tuple_nxv4i8_7t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[VAL:%.*]], ptr [[BASE]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -556,7 +1106,29 @@ define void @test_vsseg7_mask_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x
; CHECK-LABEL: @test_vsseg7_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsseg7.mask.triscv.vector.tuple_nxv4i8_7t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i224>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP8]], i64 28)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: tail call void @llvm.riscv.vsseg7.mask.triscv.vector.tuple_nxv4i8_7t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -572,7 +1144,29 @@ define void @test_vsseg8_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>,
; CHECK-LABEL: @test_vsseg8_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsseg8.triscv.vector.tuple_nxv4i8_8t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i256>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP8]], i64 32)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: tail call void @llvm.riscv.vsseg8.triscv.vector.tuple_nxv4i8_8t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[VAL:%.*]], ptr [[BASE]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -584,7 +1178,29 @@ define void @test_vsseg8_mask_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x
; CHECK-LABEL: @test_vsseg8_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsseg8.mask.triscv.vector.tuple_nxv4i8_8t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP10:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP9:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP9]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = getelementptr <vscale x 1 x i256>, ptr [[BASE:%.*]], i64 0, i64 [[IV]]
+; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP7]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP8]], i64 32)
+; CHECK-NEXT: br label [[TMP9]]
+; CHECK: 9:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: tail call void @llvm.riscv.vsseg8.mask.triscv.vector.tuple_nxv4i8_8t.p0.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -792,7 +1408,30 @@ define <vscale x 1 x i32> @test_vlsseg2_nxv1i32(ptr %base, i64 %offset, i64 %vl)
; CHECK-LABEL: @test_vlsseg2_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP24:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv4i8_2t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP9]], i64 8)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[TMP24:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv4i8_2t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr [[BASE]], i64 [[OFFSET]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP25:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[TMP24]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP25]]
;
@@ -806,7 +1445,30 @@ define <vscale x 1 x i32> @test_vlsseg2_mask_nxv1i32(ptr %base, i64 %offset, i64
; CHECK-LABEL: @test_vlsseg2_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP24:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv4i8_2t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP9]], i64 8)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[TMP24:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv4i8_2t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr [[BASE]], i64 [[OFFSET]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP25:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[TMP24]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP25]]
;
@@ -824,7 +1486,30 @@ define <vscale x 1 x i32> @test_vlsseg3_nxv1i32(ptr %base, i64 %offset, i64 %vl)
; CHECK-LABEL: @test_vlsseg3_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP36:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv4i8_3t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP9]], i64 12)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[TMP36:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv4i8_3t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr [[BASE]], i64 [[OFFSET]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP37:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[TMP36]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP37]]
;
@@ -838,7 +1523,30 @@ define <vscale x 1 x i32> @test_vlsseg3_mask_nxv1i32(ptr %base, i64 %offset, i64
; CHECK-LABEL: @test_vlsseg3_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP36:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv4i8_3t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP9]], i64 12)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[TMP36:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv4i8_3t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr [[BASE]], i64 [[OFFSET]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP37:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[TMP36]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP37]]
;
@@ -856,7 +1564,30 @@ define <vscale x 1 x i32> @test_vlsseg4_nxv1i32(ptr %base, i64 %offset, i64 %vl)
; CHECK-LABEL: @test_vlsseg4_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP48:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv4i8_4t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP9]], i64 16)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[TMP48:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv4i8_4t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr [[BASE]], i64 [[OFFSET]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP49:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[TMP48]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP49]]
;
@@ -870,7 +1601,30 @@ define <vscale x 1 x i32> @test_vlsseg4_mask_nxv1i32(ptr %base, i64 %offset, i64
; CHECK-LABEL: @test_vlsseg4_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP48:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv4i8_4t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP9]], i64 16)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[TMP48:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv4i8_4t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr [[BASE]], i64 [[OFFSET]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP49:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[TMP48]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP49]]
;
@@ -888,7 +1642,30 @@ define <vscale x 1 x i32> @test_vlsseg5_nxv1i32(ptr %base, i64 %offset, i64 %vl)
; CHECK-LABEL: @test_vlsseg5_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP60:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv4i8_5t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP9]], i64 20)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[TMP60:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv4i8_5t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr [[BASE]], i64 [[OFFSET]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP61:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[TMP60]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP61]]
;
@@ -902,7 +1679,30 @@ define <vscale x 1 x i32> @test_vlsseg5_mask_nxv1i32(ptr %base, i64 %offset, i64
; CHECK-LABEL: @test_vlsseg5_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP60:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv4i8_5t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP9]], i64 20)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[TMP60:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv4i8_5t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr [[BASE]], i64 [[OFFSET]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP61:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[TMP60]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP61]]
;
@@ -920,7 +1720,30 @@ define <vscale x 1 x i32> @test_vlsseg6_nxv1i32(ptr %base, i64 %offset, i64 %vl)
; CHECK-LABEL: @test_vlsseg6_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP72:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv4i8_6t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP9]], i64 24)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[TMP72:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv4i8_6t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr [[BASE]], i64 [[OFFSET]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP73:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[TMP72]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP73]]
;
@@ -934,7 +1757,30 @@ define <vscale x 1 x i32> @test_vlsseg6_mask_nxv1i32(ptr %base, i64 %offset, i64
; CHECK-LABEL: @test_vlsseg6_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP72:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv4i8_6t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP9]], i64 24)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[TMP72:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv4i8_6t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr [[BASE]], i64 [[OFFSET]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP73:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[TMP72]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP73]]
;
@@ -952,7 +1798,30 @@ define <vscale x 1 x i32> @test_vlsseg7_nxv1i32(ptr %base, i64 %offset, i64 %vl)
; CHECK-LABEL: @test_vlsseg7_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP84:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv4i8_7t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP9]], i64 28)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[TMP84:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv4i8_7t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr [[BASE]], i64 [[OFFSET]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP85:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[TMP84]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP85]]
;
@@ -966,7 +1835,30 @@ define <vscale x 1 x i32> @test_vlsseg7_mask_nxv1i32(ptr %base, i64 %offset, i64
; CHECK-LABEL: @test_vlsseg7_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP84:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv4i8_7t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP9]], i64 28)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[TMP84:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv4i8_7t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr [[BASE]], i64 [[OFFSET]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP85:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[TMP84]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP85]]
;
@@ -984,7 +1876,30 @@ define <vscale x 1 x i32> @test_vlsseg8_nxv1i32(ptr %base, i64 %offset, i64 %vl)
; CHECK-LABEL: @test_vlsseg8_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP96:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv4i8_8t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP9]], i64 32)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[TMP96:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv4i8_8t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr [[BASE]], i64 [[OFFSET]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP97:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[TMP96]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP97]]
;
@@ -998,7 +1913,30 @@ define <vscale x 1 x i32> @test_vlsseg8_mask_nxv1i32(ptr %base, i64 %offset, i64
; CHECK-LABEL: @test_vlsseg8_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP96:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv4i8_8t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP9]], i64 32)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[TMP96:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv4i8_8t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr [[BASE]], i64 [[OFFSET]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP97:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[TMP96]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP97]]
;
@@ -1016,7 +1954,30 @@ define void @test_vssseg2_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>
; CHECK-LABEL: @test_vssseg2_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vssseg2.triscv.vector.tuple_nxv4i8_2t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP9]], i64 8)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: tail call void @llvm.riscv.vssseg2.triscv.vector.tuple_nxv4i8_2t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[VAL:%.*]], ptr [[BASE]], i64 [[OFFSET]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -1028,7 +1989,30 @@ define void @test_vssseg2_mask_nxv1i32(target("riscv.vector.tuple", <vscale x 4
; CHECK-LABEL: @test_vssseg2_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vssseg2.mask.triscv.vector.tuple_nxv4i8_2t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP9]], i64 8)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: tail call void @llvm.riscv.vssseg2.mask.triscv.vector.tuple_nxv4i8_2t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[VAL:%.*]], ptr [[BASE]], i64 [[OFFSET]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -1044,7 +2028,30 @@ define void @test_vssseg3_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>
; CHECK-LABEL: @test_vssseg3_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vssseg3.triscv.vector.tuple_nxv4i8_3t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP9]], i64 12)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: tail call void @llvm.riscv.vssseg3.triscv.vector.tuple_nxv4i8_3t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[VAL:%.*]], ptr [[BASE]], i64 [[OFFSET]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -1056,7 +2063,30 @@ define void @test_vssseg3_mask_nxv1i32(target("riscv.vector.tuple", <vscale x 4
; CHECK-LABEL: @test_vssseg3_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vssseg3.mask.triscv.vector.tuple_nxv4i8_3t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP9]], i64 12)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: tail call void @llvm.riscv.vssseg3.mask.triscv.vector.tuple_nxv4i8_3t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[VAL:%.*]], ptr [[BASE]], i64 [[OFFSET]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -1072,7 +2102,30 @@ define void @test_vssseg4_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>
; CHECK-LABEL: @test_vssseg4_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vssseg4.triscv.vector.tuple_nxv4i8_4t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP9]], i64 16)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: tail call void @llvm.riscv.vssseg4.triscv.vector.tuple_nxv4i8_4t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[VAL:%.*]], ptr [[BASE]], i64 [[OFFSET]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -1084,7 +2137,30 @@ define void @test_vssseg4_mask_nxv1i32(target("riscv.vector.tuple", <vscale x 4
; CHECK-LABEL: @test_vssseg4_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vssseg4.mask.triscv.vector.tuple_nxv4i8_4t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP9]], i64 16)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: tail call void @llvm.riscv.vssseg4.mask.triscv.vector.tuple_nxv4i8_4t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[VAL:%.*]], ptr [[BASE]], i64 [[OFFSET]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -1100,7 +2176,30 @@ define void @test_vssseg5_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>
; CHECK-LABEL: @test_vssseg5_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vssseg5.triscv.vector.tuple_nxv4i8_5t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP9]], i64 20)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: tail call void @llvm.riscv.vssseg5.triscv.vector.tuple_nxv4i8_5t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[VAL:%.*]], ptr [[BASE]], i64 [[OFFSET]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -1112,7 +2211,30 @@ define void @test_vssseg5_mask_nxv1i32(target("riscv.vector.tuple", <vscale x 4
; CHECK-LABEL: @test_vssseg5_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vssseg5.mask.triscv.vector.tuple_nxv4i8_5t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP9]], i64 20)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: tail call void @llvm.riscv.vssseg5.mask.triscv.vector.tuple_nxv4i8_5t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[VAL:%.*]], ptr [[BASE]], i64 [[OFFSET]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -1128,7 +2250,30 @@ define void @test_vssseg6_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>
; CHECK-LABEL: @test_vssseg6_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vssseg6.triscv.vector.tuple_nxv4i8_6t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP9]], i64 24)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: tail call void @llvm.riscv.vssseg6.triscv.vector.tuple_nxv4i8_6t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[VAL:%.*]], ptr [[BASE]], i64 [[OFFSET]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -1140,7 +2285,30 @@ define void @test_vssseg6_mask_nxv1i32(target("riscv.vector.tuple", <vscale x 4
; CHECK-LABEL: @test_vssseg6_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vssseg6.mask.triscv.vector.tuple_nxv4i8_6t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP9]], i64 24)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: tail call void @llvm.riscv.vssseg6.mask.triscv.vector.tuple_nxv4i8_6t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[VAL:%.*]], ptr [[BASE]], i64 [[OFFSET]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -1156,7 +2324,30 @@ define void @test_vssseg7_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>
; CHECK-LABEL: @test_vssseg7_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vssseg7.triscv.vector.tuple_nxv4i8_7t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP9]], i64 28)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: tail call void @llvm.riscv.vssseg7.triscv.vector.tuple_nxv4i8_7t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[VAL:%.*]], ptr [[BASE]], i64 [[OFFSET]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -1168,7 +2359,30 @@ define void @test_vssseg7_mask_nxv1i32(target("riscv.vector.tuple", <vscale x 4
; CHECK-LABEL: @test_vssseg7_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vssseg7.mask.triscv.vector.tuple_nxv4i8_7t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP9]], i64 28)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: tail call void @llvm.riscv.vssseg7.mask.triscv.vector.tuple_nxv4i8_7t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[VAL:%.*]], ptr [[BASE]], i64 [[OFFSET]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -1184,7 +2398,30 @@ define void @test_vssseg8_nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>
; CHECK-LABEL: @test_vssseg8_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vssseg8.triscv.vector.tuple_nxv4i8_8t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP9]], i64 32)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: tail call void @llvm.riscv.vssseg8.triscv.vector.tuple_nxv4i8_8t.p0.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[VAL:%.*]], ptr [[BASE]], i64 [[OFFSET]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -1196,7 +2433,30 @@ define void @test_vssseg8_mask_nxv1i32(target("riscv.vector.tuple", <vscale x 4
; CHECK-LABEL: @test_vssseg8_mask_nxv1i32(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vssseg8.mask.triscv.vector.tuple_nxv4i8_8t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[VAL:%.*]], ptr [[BASE:%.*]], i64 [[OFFSET:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP11:%.*]]
+; CHECK: 2:
+; CHECK-NEXT: [[TMP3:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP4:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP3]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP2]] ], [ [[IV_NEXT:%.*]], [[TMP10:%.*]] ]
+; CHECK-NEXT: [[TMP5:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP5]], label [[TMP6:%.*]], label [[TMP10]]
+; CHECK: 6:
+; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[IV]], [[OFFSET:%.*]]
+; CHECK-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[BASE:%.*]], i64 [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = ptrtoint ptr [[TMP8]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP9]], i64 32)
+; CHECK-NEXT: br label [[TMP10]]
+; CHECK: 10:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP4]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: tail call void @llvm.riscv.vssseg8.mask.triscv.vector.tuple_nxv4i8_8t.p0.i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[VAL:%.*]], ptr [[BASE]], i64 [[OFFSET]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -1687,7 +2947,31 @@ define <vscale x 1 x i32> @test_vloxseg2_nxv1i32_nxv1i16(ptr %base, <vscale x 1
; CHECK-LABEL: @test_vloxseg2_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP25:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vloxseg2.triscv.vector.tuple_nxv4i8_2t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 8)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP25:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vloxseg2.triscv.vector.tuple_nxv4i8_2t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP26:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[TMP25]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP26]]
;
@@ -1701,7 +2985,31 @@ define <vscale x 1 x i32> @test_vloxseg2_mask_nxv1i32_nxv1i16(ptr %base, <vscale
; CHECK-LABEL: @test_vloxseg2_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP25:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vloxseg2.mask.triscv.vector.tuple_nxv4i8_2t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 8)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP25:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vloxseg2.mask.triscv.vector.tuple_nxv4i8_2t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP26:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[TMP25]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP26]]
;
@@ -1719,7 +3027,31 @@ define <vscale x 1 x i32> @test_vloxseg3_nxv1i32_nxv1i16(ptr %base, <vscale x 1
; CHECK-LABEL: @test_vloxseg3_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP37:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vloxseg3.triscv.vector.tuple_nxv4i8_3t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 12)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP37:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vloxseg3.triscv.vector.tuple_nxv4i8_3t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP38:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[TMP37]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP38]]
;
@@ -1733,7 +3065,31 @@ define <vscale x 1 x i32> @test_vloxseg3_mask_nxv1i32_nxv1i16(ptr %base, <vscale
; CHECK-LABEL: @test_vloxseg3_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP37:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vloxseg3.mask.triscv.vector.tuple_nxv4i8_3t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 12)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP37:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vloxseg3.mask.triscv.vector.tuple_nxv4i8_3t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP38:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[TMP37]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP38]]
;
@@ -1751,7 +3107,31 @@ define <vscale x 1 x i32> @test_vloxseg4_nxv1i32_nxv1i16(ptr %base, <vscale x 1
; CHECK-LABEL: @test_vloxseg4_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP49:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vloxseg4.triscv.vector.tuple_nxv4i8_4t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 16)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP49:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vloxseg4.triscv.vector.tuple_nxv4i8_4t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP50:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[TMP49]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP50]]
;
@@ -1765,7 +3145,31 @@ define <vscale x 1 x i32> @test_vloxseg4_mask_nxv1i32_nxv1i16(ptr %base, <vscale
; CHECK-LABEL: @test_vloxseg4_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP49:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vloxseg4.mask.triscv.vector.tuple_nxv4i8_4t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 16)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP49:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vloxseg4.mask.triscv.vector.tuple_nxv4i8_4t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP50:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[TMP49]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP50]]
;
@@ -1783,7 +3187,31 @@ define <vscale x 1 x i32> @test_vloxseg5_nxv1i32_nxv1i16(ptr %base, <vscale x 1
; CHECK-LABEL: @test_vloxseg5_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP61:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vloxseg5.triscv.vector.tuple_nxv4i8_5t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 20)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP61:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vloxseg5.triscv.vector.tuple_nxv4i8_5t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP62:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[TMP61]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP62]]
;
@@ -1797,7 +3225,31 @@ define <vscale x 1 x i32> @test_vloxseg5_mask_nxv1i32_nxv1i16(ptr %base, <vscale
; CHECK-LABEL: @test_vloxseg5_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP61:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vloxseg5.mask.triscv.vector.tuple_nxv4i8_5t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 20)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP61:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vloxseg5.mask.triscv.vector.tuple_nxv4i8_5t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP62:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[TMP61]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP62]]
;
@@ -1815,7 +3267,31 @@ define <vscale x 1 x i32> @test_vloxseg6_nxv1i32_nxv1i16(ptr %base, <vscale x 1
; CHECK-LABEL: @test_vloxseg6_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP73:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vloxseg6.triscv.vector.tuple_nxv4i8_6t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 24)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP73:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vloxseg6.triscv.vector.tuple_nxv4i8_6t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP74:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[TMP73]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP74]]
;
@@ -1829,7 +3305,31 @@ define <vscale x 1 x i32> @test_vloxseg6_mask_nxv1i32_nxv1i16(ptr %base, <vscale
; CHECK-LABEL: @test_vloxseg6_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP73:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vloxseg6.mask.triscv.vector.tuple_nxv4i8_6t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 24)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP73:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vloxseg6.mask.triscv.vector.tuple_nxv4i8_6t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP74:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[TMP73]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP74]]
;
@@ -1847,7 +3347,31 @@ define <vscale x 1 x i32> @test_vloxseg7_nxv1i32_nxv1i16(ptr %base, <vscale x 1
; CHECK-LABEL: @test_vloxseg7_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP85:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vloxseg7.triscv.vector.tuple_nxv4i8_7t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 28)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP85:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vloxseg7.triscv.vector.tuple_nxv4i8_7t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP86:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[TMP85]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP86]]
;
@@ -1861,7 +3385,31 @@ define <vscale x 1 x i32> @test_vloxseg7_mask_nxv1i32_nxv1i16(ptr %base, <vscale
; CHECK-LABEL: @test_vloxseg7_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP85:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vloxseg7.mask.triscv.vector.tuple_nxv4i8_7t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 28)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP85:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vloxseg7.mask.triscv.vector.tuple_nxv4i8_7t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP86:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[TMP85]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP86]]
;
@@ -1879,7 +3427,31 @@ define <vscale x 1 x i32> @test_vloxseg8_nxv1i32_nxv1i16(ptr %base, <vscale x 1
; CHECK-LABEL: @test_vloxseg8_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP97:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vloxseg8.triscv.vector.tuple_nxv4i8_8t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 32)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP97:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vloxseg8.triscv.vector.tuple_nxv4i8_8t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP98:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[TMP97]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP98]]
;
@@ -1893,7 +3465,31 @@ define <vscale x 1 x i32> @test_vloxseg8_mask_nxv1i32_nxv1i16(ptr %base, <vscale
; CHECK-LABEL: @test_vloxseg8_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP97:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vloxseg8.mask.triscv.vector.tuple_nxv4i8_8t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 32)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP97:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vloxseg8.mask.triscv.vector.tuple_nxv4i8_8t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP98:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[TMP97]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP98]]
;
@@ -1911,7 +3507,31 @@ define <vscale x 1 x i32> @test_vluxseg2_nxv1i32_nxv1i16(ptr %base, <vscale x 1
; CHECK-LABEL: @test_vluxseg2_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP25:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 8)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP25:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP26:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[TMP25]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP26]]
;
@@ -1925,7 +3545,31 @@ define <vscale x 1 x i32> @test_vluxseg2_mask_nxv1i32_nxv1i16(ptr %base, <vscale
; CHECK-LABEL: @test_vluxseg2_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP25:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 8)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP25:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP26:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[TMP25]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP26]]
;
@@ -1943,7 +3587,31 @@ define <vscale x 1 x i32> @test_vluxseg3_nxv1i32_nxv1i16(ptr %base, <vscale x 1
; CHECK-LABEL: @test_vluxseg3_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP37:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 12)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP37:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP38:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[TMP37]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP38]]
;
@@ -1957,7 +3625,31 @@ define <vscale x 1 x i32> @test_vluxseg3_mask_nxv1i32_nxv1i16(ptr %base, <vscale
; CHECK-LABEL: @test_vluxseg3_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP37:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 12)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP37:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP38:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[TMP37]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP38]]
;
@@ -1975,7 +3667,31 @@ define <vscale x 1 x i32> @test_vluxseg4_nxv1i32_nxv1i16(ptr %base, <vscale x 1
; CHECK-LABEL: @test_vluxseg4_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP49:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 16)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP49:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP50:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[TMP49]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP50]]
;
@@ -1989,7 +3705,31 @@ define <vscale x 1 x i32> @test_vluxseg4_mask_nxv1i32_nxv1i16(ptr %base, <vscale
; CHECK-LABEL: @test_vluxseg4_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP49:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 16)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP49:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP50:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[TMP49]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP50]]
;
@@ -2007,7 +3747,31 @@ define <vscale x 1 x i32> @test_vluxseg5_nxv1i32_nxv1i16(ptr %base, <vscale x 1
; CHECK-LABEL: @test_vluxseg5_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP61:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 20)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP61:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP62:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[TMP61]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP62]]
;
@@ -2021,7 +3785,31 @@ define <vscale x 1 x i32> @test_vluxseg5_mask_nxv1i32_nxv1i16(ptr %base, <vscale
; CHECK-LABEL: @test_vluxseg5_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP61:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 20)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP61:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP62:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[TMP61]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP62]]
;
@@ -2039,7 +3827,31 @@ define <vscale x 1 x i32> @test_vluxseg6_nxv1i32_nxv1i16(ptr %base, <vscale x 1
; CHECK-LABEL: @test_vluxseg6_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP73:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 24)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP73:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP74:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[TMP73]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP74]]
;
@@ -2053,7 +3865,31 @@ define <vscale x 1 x i32> @test_vluxseg6_mask_nxv1i32_nxv1i16(ptr %base, <vscale
; CHECK-LABEL: @test_vluxseg6_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP73:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 24)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP73:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP74:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[TMP73]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP74]]
;
@@ -2071,7 +3907,31 @@ define <vscale x 1 x i32> @test_vluxseg7_nxv1i32_nxv1i16(ptr %base, <vscale x 1
; CHECK-LABEL: @test_vluxseg7_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP85:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 28)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP85:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP86:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[TMP85]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP86]]
;
@@ -2085,7 +3945,31 @@ define <vscale x 1 x i32> @test_vluxseg7_mask_nxv1i32_nxv1i16(ptr %base, <vscale
; CHECK-LABEL: @test_vluxseg7_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP85:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 28)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP85:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP86:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[TMP85]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP86]]
;
@@ -2103,7 +3987,31 @@ define <vscale x 1 x i32> @test_vluxseg8_nxv1i32_nxv1i16(ptr %base, <vscale x 1
; CHECK-LABEL: @test_vluxseg8_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP97:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 32)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP97:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: [[TMP98:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[TMP97]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP98]]
;
@@ -2117,7 +4025,31 @@ define <vscale x 1 x i32> @test_vluxseg8_mask_nxv1i32_nxv1i16(ptr %base, <vscale
; CHECK-LABEL: @test_vluxseg8_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: [[TMP97:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 1, i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_loadN(i64 [[TMP10]], i64 32)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: [[TMP97:%.*]] = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) poison, ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 1, i64 5)
; CHECK-NEXT: [[TMP98:%.*]] = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[TMP97]], i32 1)
; CHECK-NEXT: ret <vscale x 1 x i32> [[TMP98]]
;
@@ -2135,7 +4067,31 @@ define void @test_vsoxseg2_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vscale
; CHECK-LABEL: @test_vsoxseg2_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg2.triscv.vector.tuple_nxv4i8_2t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 8)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg2.triscv.vector.tuple_nxv4i8_2t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2147,7 +4103,31 @@ define void @test_vsoxseg2_mask_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vs
; CHECK-LABEL: @test_vsoxseg2_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg2.mask.triscv.vector.tuple_nxv4i8_2t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 8)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg2.mask.triscv.vector.tuple_nxv4i8_2t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2163,7 +4143,31 @@ define void @test_vsoxseg3_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vscale
; CHECK-LABEL: @test_vsoxseg3_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg3.triscv.vector.tuple_nxv4i8_3t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 12)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg3.triscv.vector.tuple_nxv4i8_3t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2175,7 +4179,31 @@ define void @test_vsoxseg3_mask_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vs
; CHECK-LABEL: @test_vsoxseg3_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg3.mask.triscv.vector.tuple_nxv4i8_3t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 12)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg3.mask.triscv.vector.tuple_nxv4i8_3t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2191,7 +4219,31 @@ define void @test_vsoxseg4_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vscale
; CHECK-LABEL: @test_vsoxseg4_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg4.triscv.vector.tuple_nxv4i8_4t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 16)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg4.triscv.vector.tuple_nxv4i8_4t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2203,7 +4255,31 @@ define void @test_vsoxseg4_mask_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vs
; CHECK-LABEL: @test_vsoxseg4_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg4.mask.triscv.vector.tuple_nxv4i8_4t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 16)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg4.mask.triscv.vector.tuple_nxv4i8_4t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2219,7 +4295,31 @@ define void @test_vsoxseg5_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vscale
; CHECK-LABEL: @test_vsoxseg5_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg5.triscv.vector.tuple_nxv4i8_5t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 20)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg5.triscv.vector.tuple_nxv4i8_5t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2231,7 +4331,31 @@ define void @test_vsoxseg5_mask_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vs
; CHECK-LABEL: @test_vsoxseg5_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg5.mask.triscv.vector.tuple_nxv4i8_5t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 20)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg5.mask.triscv.vector.tuple_nxv4i8_5t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2247,7 +4371,31 @@ define void @test_vsoxseg6_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vscale
; CHECK-LABEL: @test_vsoxseg6_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg6.triscv.vector.tuple_nxv4i8_6t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 24)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg6.triscv.vector.tuple_nxv4i8_6t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2259,7 +4407,31 @@ define void @test_vsoxseg6_mask_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vs
; CHECK-LABEL: @test_vsoxseg6_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg6.mask.triscv.vector.tuple_nxv4i8_6t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 24)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg6.mask.triscv.vector.tuple_nxv4i8_6t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2275,7 +4447,31 @@ define void @test_vsoxseg7_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vscale
; CHECK-LABEL: @test_vsoxseg7_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg7.triscv.vector.tuple_nxv4i8_7t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 28)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg7.triscv.vector.tuple_nxv4i8_7t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2287,7 +4483,31 @@ define void @test_vsoxseg7_mask_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vs
; CHECK-LABEL: @test_vsoxseg7_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg7.mask.triscv.vector.tuple_nxv4i8_7t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 28)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg7.mask.triscv.vector.tuple_nxv4i8_7t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2303,7 +4523,31 @@ define void @test_vsoxseg8_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vscale
; CHECK-LABEL: @test_vsoxseg8_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg8.triscv.vector.tuple_nxv4i8_8t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 32)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg8.triscv.vector.tuple_nxv4i8_8t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2315,7 +4559,31 @@ define void @test_vsoxseg8_mask_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vs
; CHECK-LABEL: @test_vsoxseg8_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg8.mask.triscv.vector.tuple_nxv4i8_8t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 32)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg8.mask.triscv.vector.tuple_nxv4i8_8t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2331,7 +4599,31 @@ define void @test_vsuxseg2_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vscale
; CHECK-LABEL: @test_vsuxseg2_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsuxseg2.triscv.vector.tuple_nxv4i8_2t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 8)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsuxseg2.triscv.vector.tuple_nxv4i8_2t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2343,7 +4635,31 @@ define void @test_vsuxseg2_mask_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vs
; CHECK-LABEL: @test_vsuxseg2_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg2.mask.triscv.vector.tuple_nxv4i8_2t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 8)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg2.mask.triscv.vector.tuple_nxv4i8_2t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2359,7 +4675,31 @@ define void @test_vsuxseg3_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vscale
; CHECK-LABEL: @test_vsuxseg3_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsuxseg3.triscv.vector.tuple_nxv4i8_3t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 12)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsuxseg3.triscv.vector.tuple_nxv4i8_3t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2371,7 +4711,31 @@ define void @test_vsuxseg3_mask_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vs
; CHECK-LABEL: @test_vsuxseg3_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg3.mask.triscv.vector.tuple_nxv4i8_3t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 12)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg3.mask.triscv.vector.tuple_nxv4i8_3t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2387,7 +4751,31 @@ define void @test_vsuxseg4_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vscale
; CHECK-LABEL: @test_vsuxseg4_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsuxseg4.triscv.vector.tuple_nxv4i8_4t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 16)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsuxseg4.triscv.vector.tuple_nxv4i8_4t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2399,7 +4787,31 @@ define void @test_vsuxseg4_mask_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vs
; CHECK-LABEL: @test_vsuxseg4_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg4.mask.triscv.vector.tuple_nxv4i8_4t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 16)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg4.mask.triscv.vector.tuple_nxv4i8_4t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2415,7 +4827,31 @@ define void @test_vsuxseg5_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vscale
; CHECK-LABEL: @test_vsuxseg5_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsuxseg5.triscv.vector.tuple_nxv4i8_5t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 20)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsuxseg5.triscv.vector.tuple_nxv4i8_5t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2427,7 +4863,31 @@ define void @test_vsuxseg5_mask_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vs
; CHECK-LABEL: @test_vsuxseg5_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg5.mask.triscv.vector.tuple_nxv4i8_5t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 20)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg5.mask.triscv.vector.tuple_nxv4i8_5t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2443,7 +4903,31 @@ define void @test_vsuxseg6_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vscale
; CHECK-LABEL: @test_vsuxseg6_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsuxseg6.triscv.vector.tuple_nxv4i8_6t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 24)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsuxseg6.triscv.vector.tuple_nxv4i8_6t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2455,7 +4939,31 @@ define void @test_vsuxseg6_mask_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vs
; CHECK-LABEL: @test_vsuxseg6_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg6.mask.triscv.vector.tuple_nxv4i8_6t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 24)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg6.mask.triscv.vector.tuple_nxv4i8_6t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2471,7 +4979,31 @@ define void @test_vsuxseg7_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vscale
; CHECK-LABEL: @test_vsuxseg7_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsuxseg7.triscv.vector.tuple_nxv4i8_7t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 28)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsuxseg7.triscv.vector.tuple_nxv4i8_7t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2483,7 +5015,31 @@ define void @test_vsuxseg7_mask_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vs
; CHECK-LABEL: @test_vsuxseg7_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg7.mask.triscv.vector.tuple_nxv4i8_7t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 28)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg7.mask.triscv.vector.tuple_nxv4i8_7t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2499,7 +5055,31 @@ define void @test_vsuxseg8_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vscale
; CHECK-LABEL: @test_vsuxseg8_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsuxseg8.triscv.vector.tuple_nxv4i8_8t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> splat (i1 true), i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 32)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsuxseg8.triscv.vector.tuple_nxv4i8_8t.p0.nxv1i16.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
@@ -2511,7 +5091,31 @@ define void @test_vsuxseg8_mask_nxv1i32_nxv1i16(target("riscv.vector.tuple", <vs
; CHECK-LABEL: @test_vsuxseg8_mask_nxv1i32_nxv1i16(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__asan_shadow_memory_dynamic_address, align 8
-; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg8.mask.triscv.vector.tuple_nxv4i8_8t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[VAL:%.*]], ptr [[BASE:%.*]], <vscale x 1 x i16> [[INDEX:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]], i64 5)
+; CHECK-NEXT: [[TMP1:%.*]] = zext <vscale x 1 x i16> [[INDEX:%.*]] to <vscale x 1 x i64>
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[BASE:%.*]], <vscale x 1 x i64> [[TMP1]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp ne i64 [[VL:%.*]], 0
+; CHECK-NEXT: br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP12:%.*]]
+; CHECK: 4:
+; CHECK-NEXT: [[TMP5:%.*]] = call i64 @llvm.vscale.i64()
+; CHECK-NEXT: [[TMP6:%.*]] = call i64 @llvm.umin.i64(i64 [[VL]], i64 [[TMP5]])
+; CHECK-NEXT: br label [[DOTSPLIT:%.*]]
+; CHECK: .split:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[TMP4]] ], [ [[IV_NEXT:%.*]], [[TMP11:%.*]] ]
+; CHECK-NEXT: [[TMP7:%.*]] = extractelement <vscale x 1 x i1> [[MASK:%.*]], i64 [[IV]]
+; CHECK-NEXT: br i1 [[TMP7]], label [[TMP8:%.*]], label [[TMP11]]
+; CHECK: 8:
+; CHECK-NEXT: [[TMP9:%.*]] = extractelement <vscale x 1 x ptr> [[TMP2]], i64 [[IV]]
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[TMP9]] to i64
+; CHECK-NEXT: call void @__asan_storeN(i64 [[TMP10]], i64 32)
+; CHECK-NEXT: br label [[TMP11]]
+; CHECK: 11:
+; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
+; CHECK-NEXT: [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP6]]
+; CHECK-NEXT: br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
+; CHECK: .split.split:
+; CHECK-NEXT: br label [[TMP12]]
+; CHECK: 12:
+; CHECK-NEXT: tail call void @llvm.riscv.vsoxseg8.mask.triscv.vector.tuple_nxv4i8_8t.p0.nxv1i16.nxv1i1.i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) [[VAL:%.*]], ptr [[BASE]], <vscale x 1 x i16> [[INDEX]], <vscale x 1 x i1> [[MASK]], i64 [[VL]], i64 5)
; CHECK-NEXT: ret void
;
entry:
diff --git a/llvm/test/Instrumentation/AllocToken/basic.ll b/llvm/test/Instrumentation/AllocToken/basic.ll
new file mode 100644
index 0000000..099d37d
--- /dev/null
+++ b/llvm/test/Instrumentation/AllocToken/basic.ll
@@ -0,0 +1,98 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
+; RUN: opt < %s -passes=inferattrs,alloc-token -alloc-token-mode=increment -S | FileCheck %s
+
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+
+declare ptr @malloc(i64)
+declare ptr @calloc(i64, i64)
+declare ptr @realloc(ptr, i64)
+declare ptr @_Znwm(i64)
+declare ptr @_Znam(i64)
+declare void @free(ptr)
+declare void @_ZdlPv(ptr)
+declare i32 @foobar(i64)
+
+; Test basic allocation call rewriting
+define ptr @test_basic_rewriting() sanitize_alloc_token {
+; CHECK-LABEL: define ptr @test_basic_rewriting(
+; CHECK-SAME: ) #[[ATTR5:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = call ptr @__alloc_token_malloc(i64 64, i64 0)
+; CHECK-NEXT: [[TMP1:%.*]] = call ptr @__alloc_token_calloc(i64 8, i64 8, i64 1)
+; CHECK-NEXT: [[TMP2:%.*]] = call ptr @__alloc_token_realloc(ptr [[TMP0]], i64 128, i64 2)
+; CHECK-NEXT: ret ptr [[TMP2]]
+;
+entry:
+ %ptr1 = call ptr @malloc(i64 64)
+ %ptr2 = call ptr @calloc(i64 8, i64 8)
+ %ptr3 = call ptr @realloc(ptr %ptr1, i64 128)
+ ret ptr %ptr3
+}
+
+; Test C++ operator rewriting
+define ptr @test_cpp_operators() sanitize_alloc_token {
+; CHECK-LABEL: define ptr @test_cpp_operators(
+; CHECK-SAME: ) #[[ATTR5]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = call ptr @__alloc_token__Znwm(i64 32, i64 3)
+; CHECK-NEXT: [[TMP1:%.*]] = call ptr @__alloc_token__Znam(i64 64, i64 4)
+; CHECK-NEXT: ret ptr [[TMP0]]
+;
+entry:
+ %ptr1 = call ptr @_Znwm(i64 32)
+ %ptr2 = call ptr @_Znam(i64 64)
+ ret ptr %ptr1
+}
+
+; Functions without sanitize_alloc_token do not get instrumented
+define ptr @without_attribute() {
+; CHECK-LABEL: define ptr @without_attribute() {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[PTR:%.*]] = call ptr @malloc(i64 16)
+; CHECK-NEXT: ret ptr [[PTR]]
+;
+entry:
+ %ptr = call ptr @malloc(i64 16)
+ ret ptr %ptr
+}
+
+; Test that free/delete are untouched
+define void @test_free_untouched(ptr %ptr) sanitize_alloc_token {
+; CHECK-LABEL: define void @test_free_untouched(
+; CHECK-SAME: ptr [[PTR:%.*]]) #[[ATTR5]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: call void @free(ptr [[PTR]])
+; CHECK-NEXT: call void @_ZdlPv(ptr [[PTR]])
+; CHECK-NEXT: ret void
+;
+entry:
+ call void @free(ptr %ptr)
+ call void @_ZdlPv(ptr %ptr)
+ ret void
+}
+
+; Non-allocation functions are untouched
+define i32 @no_allocations(i32 %x) sanitize_alloc_token {
+; CHECK-LABEL: define i32 @no_allocations(
+; CHECK-SAME: i32 [[X:%.*]]) #[[ATTR5]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[RESULT:%.*]] = call i32 @foobar(i64 42)
+; CHECK-NEXT: ret i32 [[RESULT]]
+;
+entry:
+ %result = call i32 @foobar(i64 42)
+ ret i32 %result
+}
+
+; Test that tail calls are preserved
+define ptr @test_tail_call_preserved() sanitize_alloc_token {
+; CHECK-LABEL: define ptr @test_tail_call_preserved(
+; CHECK-SAME: ) #[[ATTR5]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = tail call ptr @__alloc_token_malloc(i64 42, i64 5)
+; CHECK-NEXT: ret ptr [[TMP0]]
+;
+entry:
+ %result = tail call ptr @malloc(i64 42)
+ ret ptr %result
+}
diff --git a/llvm/test/Instrumentation/AllocToken/basic32.ll b/llvm/test/Instrumentation/AllocToken/basic32.ll
new file mode 100644
index 0000000..944a452
--- /dev/null
+++ b/llvm/test/Instrumentation/AllocToken/basic32.ll
@@ -0,0 +1,31 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
+; RUN: opt < %s -passes=inferattrs,alloc-token -alloc-token-mode=increment -S | FileCheck %s
+
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128"
+
+declare ptr @malloc(i32)
+declare ptr @_Znwm(i32)
+
+define ptr @test_basic_rewriting() sanitize_alloc_token {
+; CHECK-LABEL: define ptr @test_basic_rewriting(
+; CHECK-SAME: ) #[[ATTR2:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = call ptr @__alloc_token_malloc(i32 64, i32 0)
+; CHECK-NEXT: ret ptr [[TMP0]]
+;
+entry:
+ %ptr1 = call ptr @malloc(i32 64)
+ ret ptr %ptr1
+}
+
+define ptr @test_cpp_operators() sanitize_alloc_token {
+; CHECK-LABEL: define ptr @test_cpp_operators(
+; CHECK-SAME: ) #[[ATTR2]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = call ptr @__alloc_token__Znwm(i32 32, i32 1)
+; CHECK-NEXT: ret ptr [[TMP0]]
+;
+entry:
+ %ptr1 = call ptr @_Znwm(i32 32)
+ ret ptr %ptr1
+}
diff --git a/llvm/test/Instrumentation/AllocToken/extralibfuncs.ll b/llvm/test/Instrumentation/AllocToken/extralibfuncs.ll
new file mode 100644
index 0000000..5f08552
--- /dev/null
+++ b/llvm/test/Instrumentation/AllocToken/extralibfuncs.ll
@@ -0,0 +1,44 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
+; Test for special libfuncs not automatically considered allocation functions.
+;
+; RUN: opt < %s -passes=inferattrs,alloc-token -S | FileCheck %s
+
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+
+declare {ptr, i64} @__size_returning_new(i64)
+
+define ptr @test_extra_libfuncs() sanitize_alloc_token {
+; CHECK-LABEL: define ptr @test_extra_libfuncs(
+; CHECK-SAME: ) #[[ATTR1:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = call { ptr, i64 } @__alloc_token___size_returning_new(i64 10, i64 2689373973731826898), !alloc_token [[META0:![0-9]+]]
+; CHECK-NEXT: [[PTR1:%.*]] = extractvalue { ptr, i64 } [[TMP0]], 0
+; CHECK-NEXT: ret ptr [[PTR1]]
+;
+entry:
+ %srn = call {ptr, i64} @__size_returning_new(i64 10), !alloc_token !0
+ %ptr1 = extractvalue {ptr, i64} %srn, 0
+ ret ptr %ptr1
+}
+
+declare ptr @_Znwm(i64) nobuiltin allocsize(0)
+declare ptr @_Znam(i64) nobuiltin allocsize(0)
+
+define ptr @test_replaceable_new() sanitize_alloc_token {
+; CHECK-LABEL: define ptr @test_replaceable_new(
+; CHECK-SAME: ) #[[ATTR1]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = call ptr @__alloc_token__Znwm(i64 32, i64 2689373973731826898), !alloc_token [[META0]]
+; CHECK-NEXT: [[TMP1:%.*]] = call ptr @__alloc_token__Znam(i64 64, i64 2689373973731826898), !alloc_token [[META0]]
+; CHECK-NEXT: ret ptr [[TMP0]]
+;
+entry:
+ %ptr1 = call ptr @_Znwm(i64 32), !alloc_token !0
+ %ptr2 = call ptr @_Znam(i64 64), !alloc_token !0
+ ret ptr %ptr1
+}
+
+!0 = !{!"int"}
+;.
+; CHECK: [[META0]] = !{!"int"}
+;.
diff --git a/llvm/test/Instrumentation/AllocToken/fast.ll b/llvm/test/Instrumentation/AllocToken/fast.ll
new file mode 100644
index 0000000..19a3ef6
--- /dev/null
+++ b/llvm/test/Instrumentation/AllocToken/fast.ll
@@ -0,0 +1,42 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
+; RUN: opt < %s -passes=inferattrs,alloc-token -alloc-token-mode=increment -alloc-token-fast-abi -alloc-token-max=3 -S | FileCheck %s
+
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+
+declare ptr @malloc(i64)
+declare ptr @calloc(i64, i64)
+declare ptr @realloc(ptr, i64)
+declare ptr @_Znwm(i64)
+declare ptr @_Znam(i64)
+
+; Test basic allocation call rewriting
+define ptr @test_basic_rewriting() sanitize_alloc_token {
+; CHECK-LABEL: define ptr @test_basic_rewriting(
+; CHECK-SAME: ) #[[ATTR4:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[PTR1:%.*]] = call ptr @__alloc_token_0_malloc(i64 64)
+; CHECK-NEXT: [[PTR2:%.*]] = call ptr @__alloc_token_1_calloc(i64 8, i64 8)
+; CHECK-NEXT: [[PTR3:%.*]] = call ptr @__alloc_token_2_realloc(ptr [[PTR1]], i64 128)
+; CHECK-NEXT: ret ptr [[PTR3]]
+;
+entry:
+ %ptr1 = call ptr @malloc(i64 64)
+ %ptr2 = call ptr @calloc(i64 8, i64 8)
+ %ptr3 = call ptr @realloc(ptr %ptr1, i64 128)
+ ret ptr %ptr3
+}
+
+; Test C++ operator rewriting
+define ptr @test_cpp_operators() sanitize_alloc_token {
+; CHECK-LABEL: define ptr @test_cpp_operators(
+; CHECK-SAME: ) #[[ATTR4]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[PTR1:%.*]] = call ptr @__alloc_token_0__Znwm(i64 32)
+; CHECK-NEXT: [[PTR2:%.*]] = call ptr @__alloc_token_1__Znam(i64 64)
+; CHECK-NEXT: ret ptr [[PTR1]]
+;
+entry:
+ %ptr1 = call ptr @_Znwm(i64 32)
+ %ptr2 = call ptr @_Znam(i64 64)
+ ret ptr %ptr1
+}
diff --git a/llvm/test/Instrumentation/AllocToken/ignore.ll b/llvm/test/Instrumentation/AllocToken/ignore.ll
new file mode 100644
index 0000000..b92a920
--- /dev/null
+++ b/llvm/test/Instrumentation/AllocToken/ignore.ll
@@ -0,0 +1,29 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
+; Test for all allocation functions that should be ignored by default.
+;
+; RUN: opt < %s -passes=inferattrs,alloc-token -S | FileCheck %s
+
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+
+declare ptr @strdup(ptr)
+declare ptr @__strdup(ptr)
+declare ptr @strndup(ptr, i64)
+declare ptr @__strndup(ptr, i64)
+
+define ptr @test_ignored_allocation_functions(ptr %ptr) sanitize_alloc_token {
+; CHECK-LABEL: define ptr @test_ignored_allocation_functions(
+; CHECK-SAME: ptr [[PTR:%.*]]) #[[ATTR2:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[PTR1:%.*]] = call ptr @strdup(ptr [[PTR]])
+; CHECK-NEXT: [[PTR2:%.*]] = call ptr @__strdup(ptr [[PTR]])
+; CHECK-NEXT: [[PTR3:%.*]] = call ptr @strndup(ptr [[PTR]], i64 42)
+; CHECK-NEXT: [[PTR4:%.*]] = call ptr @__strndup(ptr [[PTR]], i64 42)
+; CHECK-NEXT: ret ptr [[PTR1]]
+;
+entry:
+ %ptr1 = call ptr @strdup(ptr %ptr)
+ %ptr2 = call ptr @__strdup(ptr %ptr)
+ %ptr3 = call ptr @strndup(ptr %ptr, i64 42)
+ %ptr4 = call ptr @__strndup(ptr %ptr, i64 42)
+ ret ptr %ptr1
+}
diff --git a/llvm/test/Instrumentation/AllocToken/invoke.ll b/llvm/test/Instrumentation/AllocToken/invoke.ll
new file mode 100644
index 0000000..347c99a
--- /dev/null
+++ b/llvm/test/Instrumentation/AllocToken/invoke.ll
@@ -0,0 +1,123 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
+; RUN: opt < %s -passes=inferattrs,alloc-token -alloc-token-mode=increment -S | FileCheck %s
+
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+
+define ptr @test_invoke_malloc() sanitize_alloc_token personality ptr @__gxx_personality_v0 {
+; CHECK-LABEL: define ptr @test_invoke_malloc(
+; CHECK-SAME: ) #[[ATTR0:[0-9]+]] personality ptr @__gxx_personality_v0 {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = invoke ptr @__alloc_token_malloc(i64 64, i64 0)
+; CHECK-NEXT: to label %[[NORMAL:.*]] unwind label %[[CLEANUP:.*]]
+; CHECK: [[NORMAL]]:
+; CHECK-NEXT: ret ptr [[TMP0]]
+; CHECK: [[CLEANUP]]:
+; CHECK-NEXT: [[LP:%.*]] = landingpad { ptr, i32 }
+; CHECK-NEXT: cleanup
+; CHECK-NEXT: ret ptr null
+;
+entry:
+ %ptr = invoke ptr @malloc(i64 64) to label %normal unwind label %cleanup
+
+normal:
+ ret ptr %ptr
+
+cleanup:
+ %lp = landingpad { ptr, i32 } cleanup
+ ret ptr null
+}
+
+define ptr @test_invoke_operator_new() sanitize_alloc_token personality ptr @__gxx_personality_v0 {
+; CHECK-LABEL: define ptr @test_invoke_operator_new(
+; CHECK-SAME: ) #[[ATTR0]] personality ptr @__gxx_personality_v0 {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = invoke ptr @__alloc_token__Znwm(i64 32, i64 1)
+; CHECK-NEXT: to label %[[NORMAL:.*]] unwind label %[[CLEANUP:.*]]
+; CHECK: [[NORMAL]]:
+; CHECK-NEXT: ret ptr [[TMP0]]
+; CHECK: [[CLEANUP]]:
+; CHECK-NEXT: [[LP:%.*]] = landingpad { ptr, i32 }
+; CHECK-NEXT: cleanup
+; CHECK-NEXT: ret ptr null
+;
+entry:
+ %ptr = invoke ptr @_Znwm(i64 32) to label %normal unwind label %cleanup
+
+normal:
+ ret ptr %ptr
+
+cleanup:
+ %lp = landingpad { ptr, i32 } cleanup
+ ret ptr null
+}
+
+; Test complex exception flow with multiple invoke allocations
+define ptr @test_complex_invoke_flow() sanitize_alloc_token personality ptr @__gxx_personality_v0 {
+; CHECK-LABEL: define ptr @test_complex_invoke_flow(
+; CHECK-SAME: ) #[[ATTR0]] personality ptr @__gxx_personality_v0 {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = invoke ptr @__alloc_token_malloc(i64 16, i64 2)
+; CHECK-NEXT: to label %[[FIRST_OK:.*]] unwind label %[[CLEANUP1:.*]]
+; CHECK: [[FIRST_OK]]:
+; CHECK-NEXT: [[TMP1:%.*]] = invoke ptr @__alloc_token__Znwm(i64 32, i64 3)
+; CHECK-NEXT: to label %[[SECOND_OK:.*]] unwind label %[[CLEANUP2:.*]]
+; CHECK: [[SECOND_OK]]:
+; CHECK-NEXT: ret ptr [[TMP0]]
+; CHECK: [[CLEANUP1]]:
+; CHECK-NEXT: [[LP1:%.*]] = landingpad { ptr, i32 }
+; CHECK-NEXT: cleanup
+; CHECK-NEXT: ret ptr null
+; CHECK: [[CLEANUP2]]:
+; CHECK-NEXT: [[LP2:%.*]] = landingpad { ptr, i32 }
+; CHECK-NEXT: cleanup
+; CHECK-NEXT: ret ptr null
+;
+entry:
+ %ptr1 = invoke ptr @malloc(i64 16) to label %first_ok unwind label %cleanup1
+
+first_ok:
+ %ptr2 = invoke ptr @_Znwm(i64 32) to label %second_ok unwind label %cleanup2
+
+second_ok:
+ ret ptr %ptr1
+
+cleanup1:
+ %lp1 = landingpad { ptr, i32 } cleanup
+ ret ptr null
+
+cleanup2:
+ %lp2 = landingpad { ptr, i32 } cleanup
+ ret ptr null
+}
+
+; Test mixed call/invoke
+define ptr @test_mixed_call_invoke() sanitize_alloc_token personality ptr @__gxx_personality_v0 {
+; CHECK-LABEL: define ptr @test_mixed_call_invoke(
+; CHECK-SAME: ) #[[ATTR0]] personality ptr @__gxx_personality_v0 {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = call ptr @__alloc_token_malloc(i64 8, i64 4)
+; CHECK-NEXT: [[TMP1:%.*]] = invoke ptr @__alloc_token_malloc(i64 16, i64 5)
+; CHECK-NEXT: to label %[[NORMAL:.*]] unwind label %[[CLEANUP:.*]]
+; CHECK: [[NORMAL]]:
+; CHECK-NEXT: ret ptr [[TMP0]]
+; CHECK: [[CLEANUP]]:
+; CHECK-NEXT: [[LP:%.*]] = landingpad { ptr, i32 }
+; CHECK-NEXT: cleanup
+; CHECK-NEXT: ret ptr null
+;
+entry:
+ %ptr1 = call ptr @malloc(i64 8)
+
+ %ptr2 = invoke ptr @malloc(i64 16) to label %normal unwind label %cleanup
+
+normal:
+ ret ptr %ptr1
+
+cleanup:
+ %lp = landingpad { ptr, i32 } cleanup
+ ret ptr null
+}
+
+declare ptr @malloc(i64)
+declare ptr @_Znwm(i64)
+declare i32 @__gxx_personality_v0(...)
diff --git a/llvm/test/Instrumentation/AllocToken/nonlibcalls.ll b/llvm/test/Instrumentation/AllocToken/nonlibcalls.ll
new file mode 100644
index 0000000..e023ab6b
--- /dev/null
+++ b/llvm/test/Instrumentation/AllocToken/nonlibcalls.ll
@@ -0,0 +1,85 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
+; RUN: opt < %s -passes=inferattrs,alloc-token -alloc-token-mode=increment -alloc-token-extended -S | FileCheck %s
+
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+
+declare ptr @malloc(i64)
+declare ptr @custom_malloc(i64)
+declare ptr @kmalloc(i64, i64)
+
+define ptr @test_libcall() sanitize_alloc_token {
+; CHECK-LABEL: define ptr @test_libcall(
+; CHECK-SAME: ) #[[ATTR1:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = call ptr @__alloc_token_malloc(i64 64, i64 0)
+; CHECK-NEXT: ret ptr [[TMP0]]
+;
+entry:
+ %ptr1 = call ptr @malloc(i64 64)
+ ret ptr %ptr1
+}
+
+define ptr @test_libcall_hint() sanitize_alloc_token {
+; CHECK-LABEL: define ptr @test_libcall_hint(
+; CHECK-SAME: ) #[[ATTR1]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = call ptr @__alloc_token_malloc(i64 64, i64 1), !alloc_token [[META0:![0-9]+]]
+; CHECK-NEXT: ret ptr [[TMP0]]
+;
+entry:
+ %ptr1 = call ptr @malloc(i64 64), !alloc_token !0
+ ret ptr %ptr1
+}
+
+define ptr @test_nonlibcall_nohint() sanitize_alloc_token {
+; CHECK-LABEL: define ptr @test_nonlibcall_nohint(
+; CHECK-SAME: ) #[[ATTR1]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[PTR1:%.*]] = call ptr @custom_malloc(i64 8)
+; CHECK-NEXT: [[PTR2:%.*]] = call ptr @kmalloc(i64 32, i64 0)
+; CHECK-NEXT: ret ptr [[PTR1]]
+;
+entry:
+ %ptr1 = call ptr @custom_malloc(i64 8)
+ %ptr2 = call ptr @kmalloc(i64 32, i64 0)
+ ret ptr %ptr1
+}
+
+define ptr @test_nonlibcall_hint() sanitize_alloc_token {
+; CHECK-LABEL: define ptr @test_nonlibcall_hint(
+; CHECK-SAME: ) #[[ATTR1]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = call ptr @__alloc_token_custom_malloc(i64 8, i64 2), !alloc_token [[META0]]
+; CHECK-NEXT: [[TMP1:%.*]] = call ptr @__alloc_token_kmalloc(i64 32, i64 0, i64 3), !alloc_token [[META0]]
+; CHECK-NEXT: [[TMP2:%.*]] = call ptr @__alloc_token_custom_malloc(i64 64, i64 4), !alloc_token [[META0]]
+; CHECK-NEXT: [[TMP3:%.*]] = call ptr @__alloc_token_kmalloc(i64 128, i64 2, i64 5), !alloc_token [[META0]]
+; CHECK-NEXT: ret ptr [[TMP0]]
+;
+entry:
+ %ptr1 = call ptr @custom_malloc(i64 8), !alloc_token !0
+ %ptr2 = call ptr @kmalloc(i64 32, i64 0), !alloc_token !0
+ %ptr3 = call ptr @custom_malloc(i64 64), !alloc_token !0
+ %ptr4 = call ptr @kmalloc(i64 128, i64 2), !alloc_token !0
+ ret ptr %ptr1
+}
+
+; Functions without sanitize_alloc_token do not get instrumented
+define ptr @without_attribute() {
+; CHECK-LABEL: define ptr @without_attribute() {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[PTR1:%.*]] = call ptr @malloc(i64 64), !alloc_token [[META0]]
+; CHECK-NEXT: [[PTR2:%.*]] = call ptr @custom_malloc(i64 8), !alloc_token [[META0]]
+; CHECK-NEXT: [[PTR3:%.*]] = call ptr @kmalloc(i64 32, i64 0), !alloc_token [[META0]]
+; CHECK-NEXT: ret ptr [[PTR1]]
+;
+entry:
+ %ptr1 = call ptr @malloc(i64 64), !alloc_token !0
+ %ptr2 = call ptr @custom_malloc(i64 8), !alloc_token !0
+ %ptr3 = call ptr @kmalloc(i64 32, i64 0), !alloc_token !0
+ ret ptr %ptr1
+}
+
+!0 = !{!"int"}
+;.
+; CHECK: [[META0]] = !{!"int"}
+;.
diff --git a/llvm/test/Instrumentation/AllocToken/remark.ll b/llvm/test/Instrumentation/AllocToken/remark.ll
new file mode 100644
index 0000000..a2404526
--- /dev/null
+++ b/llvm/test/Instrumentation/AllocToken/remark.ll
@@ -0,0 +1,38 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
+; RUN: opt < %s -passes=inferattrs,alloc-token -pass-remarks=alloc-token -S 2>&1 | FileCheck %s
+
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+
+declare ptr @malloc(i64)
+
+; CHECK-NOT: remark: <unknown>:0:0: Call to 'malloc' in 'test_has_metadata' without source-level type token
+; CHECK: remark: <unknown>:0:0: Call to 'malloc' in 'test_no_metadata' without source-level type token
+
+define ptr @test_has_metadata() sanitize_alloc_token {
+; CHECK-LABEL: define ptr @test_has_metadata(
+; CHECK-SAME: ) #[[ATTR1:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = call ptr @__alloc_token_malloc(i64 64, i64 2689373973731826898), !alloc_token [[META0:![0-9]+]]
+; CHECK-NEXT: ret ptr [[TMP0]]
+;
+entry:
+ %ptr1 = call ptr @malloc(i64 64), !alloc_token !0
+ ret ptr %ptr1
+}
+
+define ptr @test_no_metadata() sanitize_alloc_token {
+; CHECK-LABEL: define ptr @test_no_metadata(
+; CHECK-SAME: ) #[[ATTR1]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = call ptr @__alloc_token_malloc(i64 32, i64 0)
+; CHECK-NEXT: ret ptr [[TMP0]]
+;
+entry:
+ %ptr1 = call ptr @malloc(i64 32)
+ ret ptr %ptr1
+}
+
+!0 = !{!"int"}
+;.
+; CHECK: [[META0]] = !{!"int"}
+;.
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/abilist_aggregate.ll b/llvm/test/Instrumentation/DataFlowSanitizer/abilist_aggregate.ll
index 2cf5771..3cab62b 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/abilist_aggregate.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/abilist_aggregate.ll
@@ -13,7 +13,7 @@ define {i1, i7} @functional({i32, i1} %a, [2 x i7] %b) {
define {i1, i7} @call_functional({i32, i1} %a, [2 x i7] %b) {
; CHECK-LABEL: @call_functional.dfsan
- ; CHECK-NEXT: %[[#REG:]] = load [2 x i8], ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN:2]]
+ ; CHECK-NEXT: %[[#REG:]] = load [2 x i8], ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN:2]]
; CHECK-NEXT: %[[#REG+1]] = load { i8, i8 }, ptr @__dfsan_arg_tls, align [[ALIGN]]
; CHECK-NEXT: %[[#REG+2]] = extractvalue { i8, i8 } %[[#REG+1]], 0
; CHECK-NEXT: %[[#REG+3]] = extractvalue { i8, i8 } %[[#REG+1]], 1
@@ -68,7 +68,7 @@ define {i1, i7} @call_uninstrumented({i32, i1} %a, [2 x i7] %b) {
define {i1, i7} @call_custom_with_ret({i32, i1} %a, [2 x i7] %b) {
; CHECK: @call_custom_with_ret.dfsan
; CHECK: %labelreturn = alloca i8, align 1
- ; CHECK: [[B:%.*]] = load [2 x i8], ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN:2]]
+ ; CHECK: [[B:%.*]] = load [2 x i8], ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN:2]]
; CHECK: [[A:%.*]] = load { i8, i8 }, ptr @__dfsan_arg_tls, align [[ALIGN]]
; CHECK: [[A0:%.*]] = extractvalue { i8, i8 } [[A]], 0
; CHECK: [[A1:%.*]] = extractvalue { i8, i8 } [[A]], 1
@@ -89,7 +89,7 @@ define {i1, i7} @call_custom_with_ret({i32, i1} %a, [2 x i7] %b) {
define void @call_custom_without_ret({i32, i1} %a, [2 x i7] %b) {
; CHECK: @call_custom_without_ret.dfsan
- ; CHECK: [[B:%.*]] = load [2 x i8], ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN:2]]
+ ; CHECK: [[B:%.*]] = load [2 x i8], ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN:2]]
; CHECK: [[A:%.*]] = load { i8, i8 }, ptr @__dfsan_arg_tls, align [[ALIGN]]
; CHECK: [[A0:%.*]] = extractvalue { i8, i8 } [[A]], 0
; CHECK: [[A1:%.*]] = extractvalue { i8, i8 } [[A]], 1
@@ -105,7 +105,7 @@ define void @call_custom_without_ret({i32, i1} %a, [2 x i7] %b) {
define void @call_custom_varg({i32, i1} %a, [2 x i7] %b) {
; CHECK: @call_custom_varg.dfsan
- ; CHECK: [[B:%.*]] = load [2 x i8], ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN:2]]
+ ; CHECK: [[B:%.*]] = load [2 x i8], ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN:2]]
; CHECK: %labelva = alloca [1 x i8], align 1
; CHECK: [[A:%.*]] = load { i8, i8 }, ptr @__dfsan_arg_tls, align [[ALIGN]]
; CHECK: [[A0:%.*]] = extractvalue { i8, i8 } [[A]], 0
@@ -126,7 +126,7 @@ define void @call_custom_varg({i32, i1} %a, [2 x i7] %b) {
define {i1, i7} @call_custom_cb({i32, i1} %a, [2 x i7] %b) {
; CHECK: define { i1, i7 } @call_custom_cb.dfsan({ i32, i1 } %a, [2 x i7] %b) {
; CHECK: %labelreturn = alloca i8, align 1
- ; CHECK: [[B:%.*]] = load [2 x i8], ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN:2]]
+ ; CHECK: [[B:%.*]] = load [2 x i8], ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN:2]]
; CHECK: [[A:%.*]] = load { i8, i8 }, ptr @__dfsan_arg_tls, align [[ALIGN]]
; CHECK: [[A0:%.*]] = extractvalue { i8, i8 } [[A]], 0
; CHECK: [[A1:%.*]] = extractvalue { i8, i8 } [[A]], 1
@@ -153,7 +153,7 @@ define {i1, i7} @custom_cb(ptr %cb, {i32, i1} %a, [2 x i7] %b) {
define {i1, i7} @cb({i32, i1} %a, [2 x i7] %b) {
; CHECK: define { i1, i7 } @cb.dfsan({ i32, i1 } %a, [2 x i7] %b)
- ; CHECK: [[BL:%.*]] = load [2 x i8], ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN:2]]
+ ; CHECK: [[BL:%.*]] = load [2 x i8], ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN:2]]
; CHECK: [[AL:%.*]] = load { i8, i8 }, ptr @__dfsan_arg_tls, align [[ALIGN]]
; CHECK: [[AL1:%.*]] = extractvalue { i8, i8 } [[AL]], 1
; CHECK: [[BL0:%.*]] = extractvalue [2 x i8] [[BL]], 0
@@ -180,8 +180,8 @@ define ptr @ret_custom() {
; COMM: TODO simplify the expression [[#mul(2,SBYTES) + max(SBYTES,2)]] to
; COMM: [[#mul(3,SBYTES)]], if shadow-tls-alignment is updated to match shadow
; COMM: width bytes.
-; CHECK: [[B:%.*]] = load [2 x i8], ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 4) to ptr), align [[ALIGN:2]]
-; CHECK: [[A:%.*]] = load { i8, i8 }, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN]]
+; CHECK: [[B:%.*]] = load [2 x i8], ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 4), align [[ALIGN:2]]
+; CHECK: [[A:%.*]] = load { i8, i8 }, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN]]
; CHECK: [[CB:%.*]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN]]
; CHECK: [[A0:%.*]] = extractvalue { i8, i8 } [[A]], 0
; CHECK: [[A1:%.*]] = extractvalue { i8, i8 } [[A]], 1
@@ -198,7 +198,7 @@ define ptr @ret_custom() {
define {i1, i7} @custom_with_ret({i32, i1} %a, [2 x i7] %b) {
; CHECK: define linkonce_odr { i1, i7 } @"dfsw$custom_with_ret"({ i32, i1 } %0, [2 x i7] %1)
; CHECK: %labelreturn = alloca i8, align 1
- ; CHECK: [[B:%.*]] = load [2 x i8], ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN:2]]
+ ; CHECK: [[B:%.*]] = load [2 x i8], ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN:2]]
; CHECK: [[A:%.*]] = load { i8, i8 }, ptr @__dfsan_arg_tls, align [[ALIGN]]
; CHECK: [[A0:%.*]] = extractvalue { i8, i8 } [[A]], 0
; CHECK: [[A1:%.*]] = extractvalue { i8, i8 } [[A]], 1
@@ -221,7 +221,7 @@ define {i1, i7} @custom_with_ret({i32, i1} %a, [2 x i7] %b) {
define void @custom_without_ret({i32, i1} %a, [2 x i7] %b) {
; CHECK: define linkonce_odr void @"dfsw$custom_without_ret"({ i32, i1 } %0, [2 x i7] %1)
- ; CHECK: [[B:%.*]] = load [2 x i8], ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN:2]]
+ ; CHECK: [[B:%.*]] = load [2 x i8], ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN:2]]
; CHECK: [[A:%.*]] = load { i8, i8 }, ptr @__dfsan_arg_tls, align [[ALIGN]]
; CHECK: [[A0:%.*]] = extractvalue { i8, i8 } [[A]], 0
; CHECK: [[A1:%.*]] = extractvalue { i8, i8 } [[A]], 1
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/arith.ll b/llvm/test/Instrumentation/DataFlowSanitizer/arith.ll
index 8c9eb5f..b474383 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/arith.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/arith.ll
@@ -1,73 +1,86 @@
-; RUN: opt < %s -passes=dfsan -S | FileCheck %s
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt < %s -passes=dfsan -dfsan-add-global-name-suffix=0 -S | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
define i8 @add(i8 %a, i8 %b) {
- ; CHECK: @add.dfsan
- ; CHECK-DAG: %[[#ALABEL:]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN:2]]
- ; CHECK-DAG: %[[#BLABEL:]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN]]
- ; CHECK: %[[#UNION:]] = or i8 %[[#ALABEL]], %[[#BLABEL]]
- ; CHECK: %c = add i8 %a, %b
- ; CHECK: store i8 %[[#UNION]], ptr @__dfsan_retval_tls, align [[ALIGN]]
- ; CHECK: ret i8 %c
+; CHECK-LABEL: define i8 @add(
+; CHECK-SAME: i8 [[A:%.*]], i8 [[B:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; CHECK-NEXT: [[TMP2:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[TMP3:%.*]] = or i8 [[TMP2]], [[TMP1]]
+; CHECK-NEXT: [[C:%.*]] = add i8 [[A]], [[B]]
+; CHECK-NEXT: store i8 [[TMP3]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: ret i8 [[C]]
+;
%c = add i8 %a, %b
ret i8 %c
}
define i8 @sub(i8 %a, i8 %b) {
- ; CHECK: @sub.dfsan
- ; CHECK: load{{.*}}__dfsan_arg_tls
- ; CHECK: load{{.*}}__dfsan_arg_tls
- ; CHECK: or i8
- ; CHECK: %c = sub i8 %a, %b
- ; CHECK: store{{.*}}__dfsan_retval_tls
- ; CHECK: ret i8 %c
+; CHECK-LABEL: define i8 @sub(
+; CHECK-SAME: i8 [[A:%.*]], i8 [[B:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; CHECK-NEXT: [[TMP2:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[TMP3:%.*]] = or i8 [[TMP2]], [[TMP1]]
+; CHECK-NEXT: [[C:%.*]] = sub i8 [[A]], [[B]]
+; CHECK-NEXT: store i8 [[TMP3]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: ret i8 [[C]]
+;
%c = sub i8 %a, %b
ret i8 %c
}
define i8 @mul(i8 %a, i8 %b) {
- ; CHECK: @mul.dfsan
- ; CHECK: load{{.*}}__dfsan_arg_tls
- ; CHECK: load{{.*}}__dfsan_arg_tls
- ; CHECK: or i8
- ; CHECK: %c = mul i8 %a, %b
- ; CHECK: store{{.*}}__dfsan_retval_tls
- ; CHECK: ret i8 %c
+; CHECK-LABEL: define i8 @mul(
+; CHECK-SAME: i8 [[A:%.*]], i8 [[B:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; CHECK-NEXT: [[TMP2:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[TMP3:%.*]] = or i8 [[TMP2]], [[TMP1]]
+; CHECK-NEXT: [[C:%.*]] = mul i8 [[A]], [[B]]
+; CHECK-NEXT: store i8 [[TMP3]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: ret i8 [[C]]
+;
%c = mul i8 %a, %b
ret i8 %c
}
define i8 @sdiv(i8 %a, i8 %b) {
- ; CHECK: @sdiv.dfsan
- ; CHECK: load{{.*}}__dfsan_arg_tls
- ; CHECK: load{{.*}}__dfsan_arg_tls
- ; CHECK: or i8
- ; CHECK: %c = sdiv i8 %a, %b
- ; CHECK: store{{.*}}__dfsan_retval_tls
- ; CHECK: ret i8 %c
+; CHECK-LABEL: define i8 @sdiv(
+; CHECK-SAME: i8 [[A:%.*]], i8 [[B:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; CHECK-NEXT: [[TMP2:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[TMP3:%.*]] = or i8 [[TMP2]], [[TMP1]]
+; CHECK-NEXT: [[C:%.*]] = sdiv i8 [[A]], [[B]]
+; CHECK-NEXT: store i8 [[TMP3]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: ret i8 [[C]]
+;
%c = sdiv i8 %a, %b
ret i8 %c
}
define i8 @udiv(i8 %a, i8 %b) {
- ; CHECK: @udiv.dfsan
- ; CHECK: load{{.*}}__dfsan_arg_tls
- ; CHECK: load{{.*}}__dfsan_arg_tls
- ; CHECK: or i8
- ; CHECK: %c = udiv i8 %a, %b
- ; CHECK: store{{.*}}__dfsan_retval_tls
- ; CHECK: ret i8 %c
+; CHECK-LABEL: define i8 @udiv(
+; CHECK-SAME: i8 [[A:%.*]], i8 [[B:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; CHECK-NEXT: [[TMP2:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[TMP3:%.*]] = or i8 [[TMP2]], [[TMP1]]
+; CHECK-NEXT: [[C:%.*]] = udiv i8 [[A]], [[B]]
+; CHECK-NEXT: store i8 [[TMP3]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: ret i8 [[C]]
+;
%c = udiv i8 %a, %b
ret i8 %c
}
define double @fneg(double %a) {
- ; CHECK: @fneg.dfsan
- ; CHECK: load{{.*}}__dfsan_arg_tls
- ; CHECK: %c = fneg double %a
- ; CHECK: store{{.*}}__dfsan_retval_tls
- ; CHECK: ret double %c
+; CHECK-LABEL: define double @fneg(
+; CHECK-SAME: double [[A:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[C:%.*]] = fneg double [[A]]
+; CHECK-NEXT: store i8 [[TMP1]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: ret double [[C]]
+;
%c = fneg double %a
ret double %c
}
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/array.ll b/llvm/test/Instrumentation/DataFlowSanitizer/array.ll
index 5642edc..14468c1 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/array.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/array.ll
@@ -158,7 +158,7 @@ define i1 @extract_array([4 x i1] %a) {
define [4 x i1] @insert_array([4 x i1] %a, i1 %e2) {
; NO_COMBINE_LOAD_PTR: @insert_array.dfsan
; NO_COMBINE_LOAD_PTR: [[EM:%.*]] = load i8, ptr
- ; NO_COMBINE_LOAD_PTR-SAME: inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 4) to ptr), align [[ALIGN:2]]
+ ; NO_COMBINE_LOAD_PTR-SAME: getelementptr (i8, ptr @__dfsan_arg_tls, i64 4), align [[ALIGN:2]]
; NO_COMBINE_LOAD_PTR: [[AM:%.*]] = load [4 x i8], ptr @__dfsan_arg_tls, align [[ALIGN]]
; NO_COMBINE_LOAD_PTR: [[AM1:%.*]] = insertvalue [4 x i8] [[AM]], i8 [[EM]], 0
; NO_COMBINE_LOAD_PTR: store [4 x i8] [[AM1]], ptr @__dfsan_retval_tls, align [[ALIGN]]
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/dfsan-pass-second-run.ll b/llvm/test/Instrumentation/DataFlowSanitizer/dfsan-pass-second-run.ll
index 7da647b..7f49c14 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/dfsan-pass-second-run.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/dfsan-pass-second-run.ll
@@ -5,7 +5,7 @@ target triple = "x86_64-unknown-linux-gnu"
define i8 @add(i8 %a, i8 %b) {
; CHECK: @add.dfsan
; CHECK-DAG: %[[#ALABEL:]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN:2]]
- ; CHECK-DAG: %[[#BLABEL:]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN]]
+ ; CHECK-DAG: %[[#BLABEL:]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN]]
; CHECK: %[[#UNION:]] = or i8 %[[#ALABEL]], %[[#BLABEL]]
; CHECK: %c = add i8 %a, %b
; CHECK: store i8 %[[#UNION]], ptr @__dfsan_retval_tls, align [[ALIGN]]
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/dont_combine_offset_labels_on_gep.ll b/llvm/test/Instrumentation/DataFlowSanitizer/dont_combine_offset_labels_on_gep.ll
index 997681b..7574346 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/dont_combine_offset_labels_on_gep.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/dont_combine_offset_labels_on_gep.ll
@@ -1,19 +1,26 @@
-; RUN: opt < %s -passes=dfsan -dfsan-combine-offset-labels-on-gep=false -S | FileCheck %s
-; RUN: opt < %s -passes=dfsan -dfsan-combine-offset-labels-on-gep=false -dfsan-track-origins=1 -S | FileCheck %s --check-prefixes=CHECK,CHECK_ORIGIN
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt < %s -passes=dfsan -dfsan-combine-offset-labels-on-gep=false -dfsan-add-global-name-suffix=0 -S | FileCheck %s
+; RUN: opt < %s -passes=dfsan -dfsan-combine-offset-labels-on-gep=false -dfsan-track-origins=1 -dfsan-add-global-name-suffix=0 -S | FileCheck %s --check-prefix=CHECK_ORIGIN
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
-; CHECK: @__dfsan_arg_tls = external thread_local(initialexec) global [[TLS_ARR:\[100 x i64\]]]
-; CHECK: @__dfsan_retval_tls = external thread_local(initialexec) global [[TLS_ARR]]
define ptr @gepop(ptr %p, i32 %a, i32 %b, i32 %c) {
- ; CHECK: @gepop.dfsan
- ; CHECK_ORIGIN: %[[#PO:]] = load i32, ptr @__dfsan_arg_origin_tls, align [[ALIGN_O:4]]
- ; CHECK: %[[#PS:]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN_S:2]]
- ; CHECK: %e = getelementptr [10 x [20 x i32]], ptr %p, i32 %a, i32 %b, i32 %c
- ; CHECK: store i8 %[[#PS]], ptr @__dfsan_retval_tls, align [[ALIGN_S]]
- ; CHECK_ORIGIN: store i32 %[[#PO]], ptr @__dfsan_retval_origin_tls, align [[ALIGN_O]]
-
+; CHECK-LABEL: define ptr @gepop(
+; CHECK-SAME: ptr [[P:%.*]], i32 [[A:%.*]], i32 [[B:%.*]], i32 [[C:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[E:%.*]] = getelementptr [10 x [20 x i32]], ptr [[P]], i32 [[A]], i32 [[B]], i32 [[C]]
+; CHECK-NEXT: store i8 [[TMP1]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: ret ptr [[E]]
+;
+; CHECK_ORIGIN-LABEL: define ptr @gepop(
+; CHECK_ORIGIN-SAME: ptr [[P:%.*]], i32 [[A:%.*]], i32 [[B:%.*]], i32 [[C:%.*]]) {
+; CHECK_ORIGIN-NEXT: [[TMP1:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
+; CHECK_ORIGIN-NEXT: [[TMP2:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK_ORIGIN-NEXT: [[E:%.*]] = getelementptr [10 x [20 x i32]], ptr [[P]], i32 [[A]], i32 [[B]], i32 [[C]]
+; CHECK_ORIGIN-NEXT: store i8 [[TMP2]], ptr @__dfsan_retval_tls, align 2
+; CHECK_ORIGIN-NEXT: store i32 [[TMP1]], ptr @__dfsan_retval_origin_tls, align 4
+; CHECK_ORIGIN-NEXT: ret ptr [[E]]
+;
%e = getelementptr [10 x [20 x i32]], ptr %p, i32 %a, i32 %b, i32 %c
ret ptr %e
}
-
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/origin_abilist.ll b/llvm/test/Instrumentation/DataFlowSanitizer/origin_abilist.ll
index 031fd1c..fbcdb3d 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/origin_abilist.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/origin_abilist.ll
@@ -114,7 +114,7 @@ define void @call_custom_without_ret(i32 %a, i32 %b) {
; CHECK: @call_custom_without_ret.dfsan
; CHECK: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
; CHECK: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
- ; CHECK: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
+ ; CHECK: [[BS:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
; CHECK: [[AS:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
; CHECK: call void @__dfso_custom_without_ret(i32 %a, i32 %b, i8 zeroext [[AS]], i8 zeroext [[BS]], i32 zeroext [[AO]], i32 zeroext [[BO]])
; CHECK-NEXT: ret void
@@ -129,7 +129,7 @@ define i32 @call_custom_with_ret(i32 %a, i32 %b) {
; CHECK: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
; CHECK: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
; CHECK: %labelreturn = alloca i8, align 1
- ; CHECK: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
+ ; CHECK: [[BS:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
; CHECK: [[AS:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
; CHECK: {{.*}} = call i32 @__dfso_custom_with_ret(i32 %a, i32 %b, i8 zeroext [[AS]], i8 zeroext [[BS]], ptr %labelreturn, i32 zeroext [[AO]], i32 zeroext [[BO]], ptr %originreturn)
; CHECK: [[RS:%.*]] = load i8, ptr %labelreturn, align 1
@@ -147,7 +147,7 @@ define void @call_custom_varg_without_ret(i32 %a, i32 %b) {
; CHECK: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
; CHECK: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
; CHECK: %labelva = alloca [1 x i8], align 1
- ; CHECK: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
+ ; CHECK: [[BS:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
; CHECK: [[AS:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
; CHECK: [[VS0:%.*]] = getelementptr inbounds nuw [1 x i8], ptr %labelva, i32 0, i32 0
; CHECK: store i8 [[AS]], ptr [[VS0]], align 1
@@ -170,7 +170,7 @@ define i32 @call_custom_varg_with_ret(i32 %a, i32 %b) {
; CHECK: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls
; CHECK: %labelreturn = alloca i8, align 1
; CHECK: %labelva = alloca [1 x i8], align 1
- ; CHECK: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
+ ; CHECK: [[BS:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
; CHECK: [[AS:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
; CHECK: [[VS0:%.*]] = getelementptr inbounds nuw [1 x i8], ptr %labelva, i32 0, i32 0
; CHECK: store i8 [[BS]], ptr [[VS0]], align 1
@@ -194,7 +194,7 @@ define i32 @call_custom_cb_with_ret(i32 %a, i32 %b) {
; CHECK: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
; CHECK: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
; CHECK: %labelreturn = alloca i8, align 1
- ; CHECK: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
+ ; CHECK: [[BS:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
; CHECK: [[AS:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
; CHECK: {{.*}} = call i32 @__dfso_custom_cb_with_ret(ptr @cb_with_ret.dfsan, i32 %a, i32 %b, i8 zeroext 0, i8 zeroext [[AS]], i8 zeroext [[BS]], ptr %labelreturn, i32 zeroext 0, i32 zeroext [[AO]], i32 zeroext [[BO]], ptr %originreturn)
; CHECK: [[RS:%.*]] = load i8, ptr %labelreturn, align 1
@@ -210,7 +210,7 @@ define void @call_custom_cb_without_ret(i32 %a, i32 %b) {
; CHECK-LABEL: @call_custom_cb_without_ret.dfsan
; CHECK: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
; CHECK: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
- ; CHECK: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
+ ; CHECK: [[BS:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
; CHECK: [[AS:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
; CHECK: call void @__dfso_custom_cb_without_ret(ptr @cb_without_ret.dfsan, i32 %a, i32 %b, i8 zeroext 0, i8 zeroext [[AS]], i8 zeroext [[BS]], i32 zeroext 0, i32 zeroext [[AO]], i32 zeroext [[BO]])
; CHECK-NEXT: ret void
@@ -228,7 +228,7 @@ define void @call_custom_cb_without_ret(i32 %a, i32 %b) {
; CHECK: define linkonce_odr void @"dfso$custom_without_ret"(i32 %0, i32 %1)
; CHECK: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
; CHECK-NEXT: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
-; CHECK-NEXT: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
+; CHECK-NEXT: [[BS:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
; CHECK-NEXT: [[AS:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
; CHECK-NEXT: call void @__dfso_custom_without_ret(i32 %0, i32 %1, i8 zeroext [[AS]], i8 zeroext [[BS]], i32 zeroext [[AO]], i32 zeroext [[BO]])
; CHECK-NEXT: ret void
@@ -238,7 +238,7 @@ define void @call_custom_cb_without_ret(i32 %a, i32 %b) {
; CHECK-NEXT: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
; CHECK-NEXT: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
; CHECK-NEXT: %labelreturn = alloca i8, align 1
-; CHECK-NEXT: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
+; CHECK-NEXT: [[BS:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
; CHECK-NEXT: [[AS:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
; CHECK-NEXT: [[R:%.*]] = call i32 @__dfso_custom_with_ret(i32 %0, i32 %1, i8 zeroext [[AS]], i8 zeroext [[BS]], ptr %labelreturn, i32 zeroext [[AO]], i32 zeroext [[BO]], ptr %originreturn)
; CHECK-NEXT: [[RS:%.*]] = load i8, ptr %labelreturn, align 1
@@ -261,8 +261,8 @@ define void @call_custom_cb_without_ret(i32 %a, i32 %b) {
; CHECK-NEXT: [[AO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
; CHECK-NEXT: [[CO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
; CHECK-NEXT: %labelreturn = alloca i8, align 1
-; CHECK-NEXT: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 4) to ptr), align 2
-; CHECK-NEXT: [[AS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
+; CHECK-NEXT: [[BS:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 4), align 2
+; CHECK-NEXT: [[AS:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
; CHECK-NEXT: [[CS:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
; CHECK-NEXT: [[R:%.*]] = call i32 @__dfso_custom_cb_with_ret(ptr %0, i32 %1, i32 %2, i8 zeroext [[CS]], i8 zeroext [[AS]], i8 zeroext [[BS]], ptr %labelreturn, i32 zeroext [[CO]], i32 zeroext [[AO]], i32 zeroext [[BO]], ptr %originreturn)
; CHECK-NEXT: [[RS:%.*]] = load i8, ptr %labelreturn, align 1
@@ -275,8 +275,8 @@ define void @call_custom_cb_without_ret(i32 %a, i32 %b) {
; CHECK: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 2), align 4
; CHECK-NEXT: [[AO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
; CHECK-NEXT: [[CO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
-; CHECK-NEXT: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 4) to ptr), align 2
-; CHECK-NEXT: [[AS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
+; CHECK-NEXT: [[BS:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 4), align 2
+; CHECK-NEXT: [[AS:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
; CHECK-NEXT: [[CS:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
; CHECK-NEXT: call void @__dfso_custom_cb_without_ret(ptr %0, i32 %1, i32 %2, i8 zeroext [[CS]], i8 zeroext [[AS]], i8 zeroext [[BS]], i32 zeroext [[CO]], i32 zeroext [[AO]], i32 zeroext [[BO]])
; CHECK-NEXT: ret void
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/origin_cached_shadows.ll b/llvm/test/Instrumentation/DataFlowSanitizer/origin_cached_shadows.ll
index cb9a306e..194a193 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/origin_cached_shadows.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/origin_cached_shadows.ll
@@ -1,4 +1,5 @@
-; RUN: opt < %s -passes=dfsan -dfsan-track-origins=1 -S | FileCheck %s
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt < %s -passes=dfsan -dfsan-track-origins=1 -dfsan-add-global-name-suffix=0 -S | FileCheck %s
;
; %i13 and %i15 have the same key in shadow cache. They should not reuse the same
; shadow because their blocks do not dominate each other. Origin tracking
@@ -7,43 +8,129 @@
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
-; CHECK: @__dfsan_arg_tls = external thread_local(initialexec) global [[TLS_ARR:\[100 x i64\]]]
define void @cached_shadows(double %arg) {
- ; CHECK: @cached_shadows.dfsan
- ; CHECK: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align
- ; CHECK: [[AS:%.*]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN:2]]
- ; CHECK: [[L1:.+]]:
- ; CHECK: {{.*}} = phi i8
- ; CHECK: {{.*}} = phi i32
- ; CHECK: {{.*}} = phi double [ 3.000000e+00
- ; CHECK: [[S_L1:%.*]] = phi i8 [ 0, %[[L0:.*]] ], [ [[S_L7:%.*]], %[[L7:.*]] ]
- ; CHECK: [[O_L1:%.*]] = phi i32 [ 0, %[[L0]] ], [ [[O_L7:%.*]], %[[L7]] ]
- ; CHECK: [[V_L1:%.*]] = phi double [ 4.000000e+00, %[[L0]] ], [ [[V_L7:%.*]], %[[L7]] ]
- ; CHECK: br i1 {{%.+}}, label %[[L2:.*]], label %[[L4:.*]]
- ; CHECK: [[L2]]:
- ; CHECK: br i1 {{%.+}}, label %[[L3:.+]], label %[[L7]]
- ; CHECK: [[L3]]:
- ; CHECK: [[S_L3:%.*]] = or i8
- ; CHECK: [[AS_NE_L3:%.*]] = icmp ne i8 [[AS]], 0
- ; CHECK: [[O_L3:%.*]] = select i1 [[AS_NE_L3]], i32 %{{[0-9]+}}, i32 [[O_L1]]
- ; CHECK: [[V_L3:%.*]] = fsub double [[V_L1]], %{{.+}}
- ; CHECK: br label %[[L7]]
- ; CHECK: [[L4]]:
- ; CHECK: br i1 %_dfscmp, label %[[L5:.+]], label %[[L6:.+]],
- ; CHECK: [[L5]]:
- ; CHECK: br label %[[L6]]
- ; CHECK: [[L6]]:
- ; CHECK: [[S_L6:%.*]] = or i8
- ; CHECK: [[AS_NE_L6:%.*]] = icmp ne i8 [[AS]], 0
- ; CHECK: [[O_L6:%.*]] = select i1 [[AS_NE_L6]], i32 [[AO]], i32 [[O_L1]]
- ; CHECK: [[V_L6:%.*]] = fadd double [[V_L1]], %{{.+}}
- ; CHECK: br label %[[L7]]
- ; CHECK: [[L7]]:
- ; CHECK: [[S_L7]] = phi i8 [ [[S_L3]], %[[L3]] ], [ [[S_L1]], %[[L2]] ], [ [[S_L6]], %[[L6]] ]
- ; CHECK: [[O_L7]] = phi i32 [ [[O_L3]], %[[L3]] ], [ [[O_L1]], %[[L2]] ], [ [[O_L6]], %[[L6]] ]
- ; CHECK: [[V_L7]] = phi double [ [[V_L3]], %[[L3]] ], [ [[V_L1]], %[[L2]] ], [ [[V_L6]], %[[L6]] ]
- ; CHECK: br i1 %{{.+}}, label %[[L1]], label %[[L8:.+]]
- ; CHECK: [[L8]]:
+; CHECK-LABEL: define void @cached_shadows(
+; CHECK-SAME: double [[ARG:%.*]]) {
+; CHECK-NEXT: [[BB:.*]]:
+; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
+; CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[I:%.*]] = alloca double, align 8
+; CHECK-NEXT: [[I1:%.*]] = alloca double, align 8
+; CHECK-NEXT: [[I2:%.*]] = bitcast ptr [[I]] to ptr
+; CHECK-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[I]] to i64
+; CHECK-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
+; CHECK-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
+; CHECK-NEXT: store i64 0, ptr [[TMP4]], align 1
+; CHECK-NEXT: store volatile double 1.000000e+00, ptr [[I]], align 8
+; CHECK-NEXT: [[I3:%.*]] = bitcast ptr [[I1]] to ptr
+; CHECK-NEXT: [[TMP5:%.*]] = ptrtoint ptr [[I1]] to i64
+; CHECK-NEXT: [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080
+; CHECK-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr
+; CHECK-NEXT: store i64 0, ptr [[TMP7]], align 1
+; CHECK-NEXT: store volatile double 2.000000e+00, ptr [[I1]], align 8
+; CHECK-NEXT: br label %[[BB4:.*]]
+; CHECK: [[BB4]]:
+; CHECK-NEXT: [[TMP8:%.*]] = phi i8 [ 0, %[[BB]] ], [ [[TMP76:%.*]], %[[BB16:.*]] ]
+; CHECK-NEXT: [[TMP9:%.*]] = phi i32 [ 0, %[[BB]] ], [ [[TMP77:%.*]], %[[BB16]] ]
+; CHECK-NEXT: [[I5:%.*]] = phi double [ 3.000000e+00, %[[BB]] ], [ [[I17:%.*]], %[[BB16]] ]
+; CHECK-NEXT: [[TMP10:%.*]] = phi i8 [ 0, %[[BB]] ], [ [[TMP78:%.*]], %[[BB16]] ]
+; CHECK-NEXT: [[TMP11:%.*]] = phi i32 [ 0, %[[BB]] ], [ [[TMP79:%.*]], %[[BB16]] ]
+; CHECK-NEXT: [[I6:%.*]] = phi double [ 4.000000e+00, %[[BB]] ], [ [[I18:%.*]], %[[BB16]] ]
+; CHECK-NEXT: [[TMP12:%.*]] = ptrtoint ptr [[I1]] to i64
+; CHECK-NEXT: [[TMP13:%.*]] = xor i64 [[TMP12]], 87960930222080
+; CHECK-NEXT: [[TMP14:%.*]] = inttoptr i64 [[TMP13]] to ptr
+; CHECK-NEXT: [[TMP15:%.*]] = add i64 [[TMP13]], 17592186044416
+; CHECK-NEXT: [[TMP16:%.*]] = inttoptr i64 [[TMP15]] to ptr
+; CHECK-NEXT: [[TMP17:%.*]] = load i32, ptr [[TMP16]], align 8
+; CHECK-NEXT: [[TMP18:%.*]] = load i64, ptr [[TMP14]], align 1
+; CHECK-NEXT: [[TMP19:%.*]] = shl i64 [[TMP18]], 32
+; CHECK-NEXT: [[TMP20:%.*]] = getelementptr i32, ptr [[TMP16]], i64 1
+; CHECK-NEXT: [[TMP21:%.*]] = load i32, ptr [[TMP20]], align 8
+; CHECK-NEXT: [[TMP22:%.*]] = lshr i64 [[TMP18]], 32
+; CHECK-NEXT: [[TMP23:%.*]] = or i64 [[TMP18]], [[TMP22]]
+; CHECK-NEXT: [[TMP24:%.*]] = lshr i64 [[TMP23]], 16
+; CHECK-NEXT: [[TMP25:%.*]] = or i64 [[TMP23]], [[TMP24]]
+; CHECK-NEXT: [[TMP26:%.*]] = lshr i64 [[TMP25]], 8
+; CHECK-NEXT: [[TMP27:%.*]] = or i64 [[TMP25]], [[TMP26]]
+; CHECK-NEXT: [[TMP28:%.*]] = trunc i64 [[TMP27]] to i8
+; CHECK-NEXT: [[TMP29:%.*]] = icmp ne i64 [[TMP19]], 0
+; CHECK-NEXT: [[TMP30:%.*]] = select i1 [[TMP29]], i32 [[TMP17]], i32 [[TMP21]]
+; CHECK-NEXT: [[I7:%.*]] = load volatile double, ptr [[I1]], align 8
+; CHECK-NEXT: [[I8:%.*]] = fcmp une double [[I7]], 0.000000e+00
+; CHECK-NEXT: [[TMP31:%.*]] = ptrtoint ptr [[I1]] to i64
+; CHECK-NEXT: [[TMP32:%.*]] = xor i64 [[TMP31]], 87960930222080
+; CHECK-NEXT: [[TMP33:%.*]] = inttoptr i64 [[TMP32]] to ptr
+; CHECK-NEXT: [[TMP34:%.*]] = add i64 [[TMP32]], 17592186044416
+; CHECK-NEXT: [[TMP35:%.*]] = inttoptr i64 [[TMP34]] to ptr
+; CHECK-NEXT: [[TMP36:%.*]] = load i32, ptr [[TMP35]], align 8
+; CHECK-NEXT: [[TMP37:%.*]] = load i64, ptr [[TMP33]], align 1
+; CHECK-NEXT: [[TMP38:%.*]] = shl i64 [[TMP37]], 32
+; CHECK-NEXT: [[TMP39:%.*]] = getelementptr i32, ptr [[TMP35]], i64 1
+; CHECK-NEXT: [[TMP40:%.*]] = load i32, ptr [[TMP39]], align 8
+; CHECK-NEXT: [[TMP41:%.*]] = lshr i64 [[TMP37]], 32
+; CHECK-NEXT: [[TMP42:%.*]] = or i64 [[TMP37]], [[TMP41]]
+; CHECK-NEXT: [[TMP43:%.*]] = lshr i64 [[TMP42]], 16
+; CHECK-NEXT: [[TMP44:%.*]] = or i64 [[TMP42]], [[TMP43]]
+; CHECK-NEXT: [[TMP45:%.*]] = lshr i64 [[TMP44]], 8
+; CHECK-NEXT: [[TMP46:%.*]] = or i64 [[TMP44]], [[TMP45]]
+; CHECK-NEXT: [[TMP47:%.*]] = trunc i64 [[TMP46]] to i8
+; CHECK-NEXT: [[TMP48:%.*]] = icmp ne i64 [[TMP38]], 0
+; CHECK-NEXT: [[TMP49:%.*]] = select i1 [[TMP48]], i32 [[TMP36]], i32 [[TMP40]]
+; CHECK-NEXT: [[I9:%.*]] = load volatile double, ptr [[I1]], align 8
+; CHECK-NEXT: br i1 [[I8]], label %[[BB10:.*]], label %[[BB14:.*]]
+; CHECK: [[BB10]]:
+; CHECK-NEXT: [[I11:%.*]] = fcmp une double [[I9]], 0.000000e+00
+; CHECK-NEXT: br i1 [[I11]], label %[[BB12:.*]], label %[[BB16]]
+; CHECK: [[BB12]]:
+; CHECK-NEXT: [[TMP50:%.*]] = or i8 [[TMP10]], [[TMP1]]
+; CHECK-NEXT: [[TMP51:%.*]] = icmp ne i8 [[TMP1]], 0
+; CHECK-NEXT: [[TMP52:%.*]] = select i1 [[TMP51]], i32 [[TMP0]], i32 [[TMP11]]
+; CHECK-NEXT: [[I13:%.*]] = fsub double [[I6]], [[ARG]]
+; CHECK-NEXT: br label %[[BB16]]
+; CHECK: [[BB14]]:
+; CHECK-NEXT: [[TMP53:%.*]] = ptrtoint ptr [[I]] to i64
+; CHECK-NEXT: [[TMP54:%.*]] = xor i64 [[TMP53]], 87960930222080
+; CHECK-NEXT: [[TMP55:%.*]] = inttoptr i64 [[TMP54]] to ptr
+; CHECK-NEXT: [[TMP56:%.*]] = add i64 [[TMP54]], 17592186044416
+; CHECK-NEXT: [[TMP57:%.*]] = inttoptr i64 [[TMP56]] to ptr
+; CHECK-NEXT: [[TMP58:%.*]] = insertelement <8 x i8> poison, i8 [[TMP47]], i32 0
+; CHECK-NEXT: [[TMP59:%.*]] = insertelement <8 x i8> [[TMP58]], i8 [[TMP47]], i32 1
+; CHECK-NEXT: [[TMP60:%.*]] = insertelement <8 x i8> [[TMP59]], i8 [[TMP47]], i32 2
+; CHECK-NEXT: [[TMP61:%.*]] = insertelement <8 x i8> [[TMP60]], i8 [[TMP47]], i32 3
+; CHECK-NEXT: [[TMP62:%.*]] = insertelement <8 x i8> [[TMP61]], i8 [[TMP47]], i32 4
+; CHECK-NEXT: [[TMP63:%.*]] = insertelement <8 x i8> [[TMP62]], i8 [[TMP47]], i32 5
+; CHECK-NEXT: [[TMP64:%.*]] = insertelement <8 x i8> [[TMP63]], i8 [[TMP47]], i32 6
+; CHECK-NEXT: [[TMP65:%.*]] = insertelement <8 x i8> [[TMP64]], i8 [[TMP47]], i32 7
+; CHECK-NEXT: [[TMP66:%.*]] = getelementptr <8 x i8>, ptr [[TMP55]], i32 0
+; CHECK-NEXT: store <8 x i8> [[TMP65]], ptr [[TMP66]], align 1
+; CHECK-NEXT: [[_DFSCMP:%.*]] = icmp ne i8 [[TMP47]], 0
+; CHECK-NEXT: br i1 [[_DFSCMP]], label %[[BB67:.*]], label %[[BB72:.*]], !prof [[PROF1:![0-9]+]]
+; CHECK: [[BB67]]:
+; CHECK-NEXT: [[TMP68:%.*]] = call i32 @__dfsan_chain_origin(i32 [[TMP49]])
+; CHECK-NEXT: [[TMP69:%.*]] = zext i32 [[TMP68]] to i64
+; CHECK-NEXT: [[TMP70:%.*]] = shl i64 [[TMP69]], 32
+; CHECK-NEXT: [[TMP71:%.*]] = or i64 [[TMP69]], [[TMP70]]
+; CHECK-NEXT: store i64 [[TMP71]], ptr [[TMP57]], align 8
+; CHECK-NEXT: br label %[[BB72]]
+; CHECK: [[BB72]]:
+; CHECK-NEXT: store volatile double [[I9]], ptr [[I]], align 8
+; CHECK-NEXT: [[TMP73:%.*]] = or i8 [[TMP10]], [[TMP1]]
+; CHECK-NEXT: [[TMP74:%.*]] = icmp ne i8 [[TMP1]], 0
+; CHECK-NEXT: [[TMP75:%.*]] = select i1 [[TMP74]], i32 [[TMP0]], i32 [[TMP11]]
+; CHECK-NEXT: [[I15:%.*]] = fadd double [[I6]], [[ARG]]
+; CHECK-NEXT: br label %[[BB16]]
+; CHECK: [[BB16]]:
+; CHECK-NEXT: [[TMP76]] = phi i8 [ [[TMP10]], %[[BB12]] ], [ [[TMP8]], %[[BB10]] ], [ [[TMP10]], %[[BB72]] ]
+; CHECK-NEXT: [[TMP77]] = phi i32 [ [[TMP11]], %[[BB12]] ], [ [[TMP9]], %[[BB10]] ], [ [[TMP11]], %[[BB72]] ]
+; CHECK-NEXT: [[I17]] = phi double [ [[I6]], %[[BB12]] ], [ [[I5]], %[[BB10]] ], [ [[I6]], %[[BB72]] ]
+; CHECK-NEXT: [[TMP78]] = phi i8 [ [[TMP50]], %[[BB12]] ], [ [[TMP10]], %[[BB10]] ], [ [[TMP73]], %[[BB72]] ]
+; CHECK-NEXT: [[TMP79]] = phi i32 [ [[TMP52]], %[[BB12]] ], [ [[TMP11]], %[[BB10]] ], [ [[TMP75]], %[[BB72]] ]
+; CHECK-NEXT: [[I18]] = phi double [ [[I13]], %[[BB12]] ], [ [[I6]], %[[BB10]] ], [ [[I15]], %[[BB72]] ]
+; CHECK-NEXT: [[I19:%.*]] = fcmp olt double [[I17]], 9.900000e+01
+; CHECK-NEXT: br i1 [[I19]], label %[[BB4]], label %[[BB20:.*]]
+; CHECK: [[BB20]]:
+; CHECK-NEXT: ret void
+;
bb:
%i = alloca double, align 8
%i1 = alloca double, align 8
@@ -83,3 +170,6 @@ bb16: ; preds = %bb14, %bb12, %bb10
bb20: ; preds = %bb16
ret void
}
+;.
+; CHECK: [[PROF1]] = !{!"branch_weights", i32 1, i32 1048575}
+;.
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/origin_call.ll b/llvm/test/Instrumentation/DataFlowSanitizer/origin_call.ll
index 5ee9927..9e8d015 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/origin_call.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/origin_call.ll
@@ -37,8 +37,8 @@ i1 %a200
define i1 @param_overflow(i1 %a) {
; CHECK: @param_overflow.dfsan
; CHECK: store i32 %1, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 199), align 4
- ; CHECK-NEXT: store i8 %2, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 398) to ptr), align 2
- ; CHECK-NEXT: store i8 %2, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 400) to ptr), align 2
+ ; CHECK-NEXT: store i8 %2, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 398), align 2
+ ; CHECK-NEXT: store i8 %2, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 400), align 2
; CHECK-NEXT: %r = call i1 @arg_overflow.dfsan
; CHECK: %_dfsret_o = load i32, ptr @__dfsan_retval_origin_tls, align 4
; CHECK: store i32 %_dfsret_o, ptr @__dfsan_retval_origin_tls, align 4
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/origin_load.ll b/llvm/test/Instrumentation/DataFlowSanitizer/origin_load.ll
index 0c84c79..a0c642a 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/origin_load.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/origin_load.ll
@@ -93,7 +93,7 @@ define i16 @load16(i1 %i, ptr %p) {
; CHECK-LABEL: @load16.dfsan
; COMBINE_LOAD_PTR-NEXT: %[[#PO:]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
- ; COMBINE_LOAD_PTR-NEXT: %[[#PS:]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN]]
+ ; COMBINE_LOAD_PTR-NEXT: %[[#PS:]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN]]
; CHECK-NEXT: %[[#INTP:]] = ptrtoint ptr %p to i64
; CHECK-NEXT: %[[#SHADOW_OFFSET:]] = xor i64 %[[#INTP]], [[#MASK]]
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/origin_mem_intrinsic.ll b/llvm/test/Instrumentation/DataFlowSanitizer/origin_mem_intrinsic.ll
index f8adb01..f4f3cb5 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/origin_mem_intrinsic.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/origin_mem_intrinsic.ll
@@ -1,4 +1,5 @@
-; RUN: opt < %s -passes=dfsan -dfsan-track-origins=1 -S | FileCheck %s
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt < %s -passes=dfsan -dfsan-track-origins=1 -dfsan-add-global-name-suffix=0 -S | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
@@ -7,32 +8,54 @@ declare void @llvm.memmove.p0.p0.i32(ptr, ptr, i32, i1)
declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i1)
define void @memcpy(ptr %d, ptr %s, i32 %l) {
- ; CHECK: @memcpy.dfsan
- ; CHECK: [[L64:%.*]] = zext i32 %l to i64
- ; CHECK: call void @__dfsan_mem_origin_transfer(ptr %d, ptr %s, i64 [[L64]])
- ; CHECK: call void @llvm.memcpy.p0.p0.i32(ptr align 1 {{.*}}, ptr align 1 {{.*}}, i32 {{.*}}, i1 false)
- ; CHECK: call void @llvm.memcpy.p0.p0.i32(ptr %d, ptr %s, i32 %l, i1 false)
-
+; CHECK-LABEL: define void @memcpy(
+; CHECK-SAME: ptr [[D:%.*]], ptr [[S:%.*]], i32 [[L:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = zext i32 [[L]] to i64
+; CHECK-NEXT: call void @__dfsan_mem_origin_transfer(ptr [[D]], ptr [[S]], i64 [[TMP1]])
+; CHECK-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[D]] to i64
+; CHECK-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
+; CHECK-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
+; CHECK-NEXT: [[TMP5:%.*]] = ptrtoint ptr [[S]] to i64
+; CHECK-NEXT: [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080
+; CHECK-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr
+; CHECK-NEXT: [[TMP8:%.*]] = mul i32 [[L]], 1
+; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i32(ptr align 1 [[TMP4]], ptr align 1 [[TMP7]], i32 [[TMP8]], i1 false)
+; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i32(ptr [[D]], ptr [[S]], i32 [[L]], i1 false)
+; CHECK-NEXT: ret void
+;
call void @llvm.memcpy.p0.p0.i32(ptr %d, ptr %s, i32 %l, i1 0)
ret void
}
define void @memmove(ptr %d, ptr %s, i32 %l) {
- ; CHECK: @memmove.dfsan
- ; CHECK: [[L64:%.*]] = zext i32 %l to i64
- ; CHECK: call void @__dfsan_mem_origin_transfer(ptr %d, ptr %s, i64 [[L64]])
- ; CHECK: call void @llvm.memmove.p0.p0.i32(ptr align 1 {{.*}}, ptr align 1 {{.*}}, i32 {{.*}}, i1 false)
- ; CHECK: call void @llvm.memmove.p0.p0.i32(ptr %d, ptr %s, i32 %l, i1 false)
-
+; CHECK-LABEL: define void @memmove(
+; CHECK-SAME: ptr [[D:%.*]], ptr [[S:%.*]], i32 [[L:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = zext i32 [[L]] to i64
+; CHECK-NEXT: call void @__dfsan_mem_origin_transfer(ptr [[D]], ptr [[S]], i64 [[TMP1]])
+; CHECK-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[D]] to i64
+; CHECK-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
+; CHECK-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
+; CHECK-NEXT: [[TMP5:%.*]] = ptrtoint ptr [[S]] to i64
+; CHECK-NEXT: [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080
+; CHECK-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr
+; CHECK-NEXT: [[TMP8:%.*]] = mul i32 [[L]], 1
+; CHECK-NEXT: call void @llvm.memmove.p0.p0.i32(ptr align 1 [[TMP4]], ptr align 1 [[TMP7]], i32 [[TMP8]], i1 false)
+; CHECK-NEXT: call void @llvm.memmove.p0.p0.i32(ptr [[D]], ptr [[S]], i32 [[L]], i1 false)
+; CHECK-NEXT: ret void
+;
call void @llvm.memmove.p0.p0.i32(ptr %d, ptr %s, i32 %l, i1 0)
ret void
}
define void @memset(ptr %p, i8 %v) {
- ; CHECK: @memset.dfsan
- ; CHECK: [[O:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
- ; CHECK: [[S:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN:2]]
- ; CHECK: call void @__dfsan_set_label(i8 [[S]], i32 [[O]], ptr %p, i64 1)
+; CHECK-LABEL: define void @memset(
+; CHECK-SAME: ptr [[P:%.*]], i8 [[V:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
+; CHECK-NEXT: [[TMP2:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; CHECK-NEXT: call void @__dfsan_set_label(i8 [[TMP2]], i32 [[TMP1]], ptr [[P]], i64 1)
+; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr [[P]], i8 [[V]], i64 1, i1 true)
+; CHECK-NEXT: ret void
+;
call void @llvm.memset.p0.i64(ptr %p, i8 %v, i64 1, i1 1)
ret void
-} \ No newline at end of file
+}
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/origin_other_ops.ll b/llvm/test/Instrumentation/DataFlowSanitizer/origin_other_ops.ll
index 3b10204..f409143 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/origin_other_ops.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/origin_other_ops.ll
@@ -1,140 +1,200 @@
-; RUN: opt < %s -passes=dfsan -dfsan-track-origins=1 -S | FileCheck %s
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt < %s -passes=dfsan -dfsan-track-origins=1 -dfsan-add-global-name-suffix=0 -S | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
-; CHECK: @__dfsan_arg_tls = external thread_local(initialexec) global [[TLS_ARR:\[100 x i64\]]]
-; CHECK: @__dfsan_retval_tls = external thread_local(initialexec) global [[TLS_ARR]]
define float @unop(float %f) {
- ; CHECK: @unop.dfsan
- ; CHECK: [[FO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
- ; CHECK: store i32 [[FO]], ptr @__dfsan_retval_origin_tls, align 4
-
+; CHECK-LABEL: define float @unop(
+; CHECK-SAME: float [[F:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
+; CHECK-NEXT: [[TMP2:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[R:%.*]] = fneg float [[F]]
+; CHECK-NEXT: store i8 [[TMP2]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: store i32 [[TMP1]], ptr @__dfsan_retval_origin_tls, align 4
+; CHECK-NEXT: ret float [[R]]
+;
%r = fneg float %f
ret float %r
}
define i1 @binop(i1 %a, i1 %b) {
- ; CHECK: @binop.dfsan
- ; CHECK: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
- ; CHECK: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
- ; CHECK: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
- ; CHECK: [[NE:%.*]] = icmp ne i8 [[BS]], 0
- ; CHECK: [[MO:%.*]] = select i1 [[NE]], i32 [[BO]], i32 [[AO]]
- ; CHECK: store i32 [[MO]], ptr @__dfsan_retval_origin_tls, align 4
-
+; CHECK-LABEL: define i1 @binop(
+; CHECK-SAME: i1 [[A:%.*]], i1 [[B:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
+; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
+; CHECK-NEXT: [[TMP3:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; CHECK-NEXT: [[TMP4:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[TMP5:%.*]] = or i8 [[TMP4]], [[TMP3]]
+; CHECK-NEXT: [[TMP6:%.*]] = icmp ne i8 [[TMP3]], 0
+; CHECK-NEXT: [[TMP7:%.*]] = select i1 [[TMP6]], i32 [[TMP1]], i32 [[TMP2]]
+; CHECK-NEXT: [[R:%.*]] = add i1 [[A]], [[B]]
+; CHECK-NEXT: store i8 [[TMP5]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: store i32 [[TMP7]], ptr @__dfsan_retval_origin_tls, align 4
+; CHECK-NEXT: ret i1 [[R]]
+;
%r = add i1 %a, %b
ret i1 %r
}
define i8 @castop(ptr %p) {
- ; CHECK: @castop.dfsan
- ; CHECK: [[PO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
- ; CHECK: store i32 [[PO]], ptr @__dfsan_retval_origin_tls, align 4
-
+; CHECK-LABEL: define i8 @castop(
+; CHECK-SAME: ptr [[P:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
+; CHECK-NEXT: [[TMP2:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[R:%.*]] = ptrtoint ptr [[P]] to i8
+; CHECK-NEXT: store i8 [[TMP2]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: store i32 [[TMP1]], ptr @__dfsan_retval_origin_tls, align 4
+; CHECK-NEXT: ret i8 [[R]]
+;
%r = ptrtoint ptr %p to i8
ret i8 %r
}
define i1 @cmpop(i1 %a, i1 %b) {
- ; CHECK: @cmpop.dfsan
- ; CHECK: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
- ; CHECK: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
- ; CHECK: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
- ; CHECK: [[NE:%.*]] = icmp ne i8 [[BS]], 0
- ; CHECK: [[MO:%.*]] = select i1 [[NE]], i32 [[BO]], i32 [[AO]]
- ; CHECK: store i32 [[MO]], ptr @__dfsan_retval_origin_tls, align 4
-
+; CHECK-LABEL: define i1 @cmpop(
+; CHECK-SAME: i1 [[A:%.*]], i1 [[B:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
+; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
+; CHECK-NEXT: [[TMP3:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; CHECK-NEXT: [[TMP4:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[TMP5:%.*]] = or i8 [[TMP4]], [[TMP3]]
+; CHECK-NEXT: [[TMP6:%.*]] = icmp ne i8 [[TMP3]], 0
+; CHECK-NEXT: [[TMP7:%.*]] = select i1 [[TMP6]], i32 [[TMP1]], i32 [[TMP2]]
+; CHECK-NEXT: [[R:%.*]] = icmp eq i1 [[A]], [[B]]
+; CHECK-NEXT: store i8 [[TMP5]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: store i32 [[TMP7]], ptr @__dfsan_retval_origin_tls, align 4
+; CHECK-NEXT: ret i1 [[R]]
+;
%r = icmp eq i1 %a, %b
ret i1 %r
}
define ptr @gepop(ptr %p, i32 %a, i32 %b, i32 %c) {
- ; CHECK: @gepop.dfsan
- ; CHECK: [[CO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 3), align 4
- ; CHECK: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 2), align 4
- ; CHECK: [[AO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
- ; CHECK: [[PO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
- ; CHECK: [[CS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 6) to ptr), align 2
- ; CHECK: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 4) to ptr), align 2
- ; CHECK: [[AS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
- ; CHECK: [[AS_NE:%.*]] = icmp ne i8 [[AS]], 0
- ; CHECK: [[APO:%.*]] = select i1 [[AS_NE]], i32 [[AO]], i32 [[PO]]
- ; CHECK: [[BS_NE:%.*]] = icmp ne i8 [[BS]], 0
- ; CHECK: [[ABPO:%.*]] = select i1 [[BS_NE]], i32 [[BO]], i32 [[APO]]
- ; CHECK: [[CS_NE:%.*]] = icmp ne i8 [[CS]], 0
- ; CHECK: [[ABCPO:%.*]] = select i1 [[CS_NE]], i32 [[CO]], i32 [[ABPO]]
- ; CHECK: store i32 [[ABCPO]], ptr @__dfsan_retval_origin_tls, align 4
-
+; CHECK-LABEL: define ptr @gepop(
+; CHECK-SAME: ptr [[P:%.*]], i32 [[A:%.*]], i32 [[B:%.*]], i32 [[C:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 3), align 4
+; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 2), align 4
+; CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
+; CHECK-NEXT: [[TMP4:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
+; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 6), align 2
+; CHECK-NEXT: [[TMP6:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 4), align 2
+; CHECK-NEXT: [[TMP7:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; CHECK-NEXT: [[TMP8:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[TMP9:%.*]] = or i8 [[TMP8]], [[TMP7]]
+; CHECK-NEXT: [[TMP10:%.*]] = or i8 [[TMP9]], [[TMP6]]
+; CHECK-NEXT: [[TMP11:%.*]] = or i8 [[TMP10]], [[TMP5]]
+; CHECK-NEXT: [[TMP12:%.*]] = icmp ne i8 [[TMP7]], 0
+; CHECK-NEXT: [[TMP13:%.*]] = select i1 [[TMP12]], i32 [[TMP3]], i32 [[TMP4]]
+; CHECK-NEXT: [[TMP14:%.*]] = icmp ne i8 [[TMP6]], 0
+; CHECK-NEXT: [[TMP15:%.*]] = select i1 [[TMP14]], i32 [[TMP2]], i32 [[TMP13]]
+; CHECK-NEXT: [[TMP16:%.*]] = icmp ne i8 [[TMP5]], 0
+; CHECK-NEXT: [[TMP17:%.*]] = select i1 [[TMP16]], i32 [[TMP1]], i32 [[TMP15]]
+; CHECK-NEXT: [[E:%.*]] = getelementptr [10 x [20 x i32]], ptr [[P]], i32 [[A]], i32 [[B]], i32 [[C]]
+; CHECK-NEXT: store i8 [[TMP11]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: store i32 [[TMP17]], ptr @__dfsan_retval_origin_tls, align 4
+; CHECK-NEXT: ret ptr [[E]]
+;
%e = getelementptr [10 x [20 x i32]], ptr %p, i32 %a, i32 %b, i32 %c
ret ptr %e
}
define i32 @eeop(<4 x i32> %a, i32 %b) {
- ; CHECK: @eeop.dfsan
- ; CHECK: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
- ; CHECK: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
- ; CHECK: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
- ; CHECK: [[NE:%.*]] = icmp ne i8 [[BS]], 0
- ; CHECK: [[MO:%.*]] = select i1 [[NE]], i32 [[BO]], i32 [[AO]]
- ; CHECK: store i32 [[MO]], ptr @__dfsan_retval_origin_tls, align 4
-
+; CHECK-LABEL: define i32 @eeop(
+; CHECK-SAME: <4 x i32> [[A:%.*]], i32 [[B:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
+; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
+; CHECK-NEXT: [[TMP3:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; CHECK-NEXT: [[TMP4:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[TMP5:%.*]] = or i8 [[TMP4]], [[TMP3]]
+; CHECK-NEXT: [[TMP6:%.*]] = icmp ne i8 [[TMP3]], 0
+; CHECK-NEXT: [[TMP7:%.*]] = select i1 [[TMP6]], i32 [[TMP1]], i32 [[TMP2]]
+; CHECK-NEXT: [[E:%.*]] = extractelement <4 x i32> [[A]], i32 [[B]]
+; CHECK-NEXT: store i8 [[TMP5]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: store i32 [[TMP7]], ptr @__dfsan_retval_origin_tls, align 4
+; CHECK-NEXT: ret i32 [[E]]
+;
%e = extractelement <4 x i32> %a, i32 %b
ret i32 %e
}
define <4 x i32> @ieop(<4 x i32> %p, i32 %a, i32 %b) {
- ; CHECK: @ieop.dfsan
- ; CHECK: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 2), align 4
- ; CHECK: [[AO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
- ; CHECK: [[PO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
- ; CHECK: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 4) to ptr), align 2
- ; CHECK: [[AS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
- ; CHECK: [[AS_NE:%.*]] = icmp ne i8 [[AS]], 0
- ; CHECK: [[APO:%.*]] = select i1 [[AS_NE]], i32 [[AO]], i32 [[PO]]
- ; CHECK: [[BS_NE:%.*]] = icmp ne i8 [[BS]], 0
- ; CHECK: [[ABPO:%.*]] = select i1 [[BS_NE]], i32 [[BO]], i32 [[APO]]
- ; CHECK: store i32 [[ABPO]], ptr @__dfsan_retval_origin_tls, align 4
-
+; CHECK-LABEL: define <4 x i32> @ieop(
+; CHECK-SAME: <4 x i32> [[P:%.*]], i32 [[A:%.*]], i32 [[B:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 2), align 4
+; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
+; CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
+; CHECK-NEXT: [[TMP4:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 4), align 2
+; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; CHECK-NEXT: [[TMP6:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[TMP7:%.*]] = or i8 [[TMP6]], [[TMP5]]
+; CHECK-NEXT: [[TMP8:%.*]] = or i8 [[TMP7]], [[TMP4]]
+; CHECK-NEXT: [[TMP9:%.*]] = icmp ne i8 [[TMP5]], 0
+; CHECK-NEXT: [[TMP10:%.*]] = select i1 [[TMP9]], i32 [[TMP2]], i32 [[TMP3]]
+; CHECK-NEXT: [[TMP11:%.*]] = icmp ne i8 [[TMP4]], 0
+; CHECK-NEXT: [[TMP12:%.*]] = select i1 [[TMP11]], i32 [[TMP1]], i32 [[TMP10]]
+; CHECK-NEXT: [[E:%.*]] = insertelement <4 x i32> [[P]], i32 [[A]], i32 [[B]]
+; CHECK-NEXT: store i8 [[TMP8]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: store i32 [[TMP12]], ptr @__dfsan_retval_origin_tls, align 4
+; CHECK-NEXT: ret <4 x i32> [[E]]
+;
%e = insertelement <4 x i32> %p, i32 %a, i32 %b
ret <4 x i32> %e
}
define <4 x i32> @svop(<4 x i32> %a, <4 x i32> %b) {
- ; CHECK: @svop.dfsan
- ; CHECK: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
- ; CHECK: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
- ; CHECK: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
- ; CHECK: [[NE:%.*]] = icmp ne i8 [[BS]], 0
- ; CHECK: [[MO:%.*]] = select i1 [[NE]], i32 [[BO]], i32 [[AO]]
- ; CHECK: store i32 [[MO]], ptr @__dfsan_retval_origin_tls, align 4
-
+; CHECK-LABEL: define <4 x i32> @svop(
+; CHECK-SAME: <4 x i32> [[A:%.*]], <4 x i32> [[B:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
+; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
+; CHECK-NEXT: [[TMP3:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; CHECK-NEXT: [[TMP4:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[TMP5:%.*]] = or i8 [[TMP4]], [[TMP3]]
+; CHECK-NEXT: [[TMP6:%.*]] = icmp ne i8 [[TMP3]], 0
+; CHECK-NEXT: [[TMP7:%.*]] = select i1 [[TMP6]], i32 [[TMP1]], i32 [[TMP2]]
+; CHECK-NEXT: [[E:%.*]] = shufflevector <4 x i32> [[A]], <4 x i32> [[B]], <4 x i32> <i32 0, i32 4, i32 1, i32 5>
+; CHECK-NEXT: store i8 [[TMP5]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: store i32 [[TMP7]], ptr @__dfsan_retval_origin_tls, align 4
+; CHECK-NEXT: ret <4 x i32> [[E]]
+;
%e = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
ret <4 x i32> %e
-}
+}
define i32 @evop({i32, float} %a) {
- ; CHECK: @evop.dfsan
- ; CHECK: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
- ; CHECK: store i32 [[AO]], ptr @__dfsan_retval_origin_tls, align 4
-
+; CHECK-LABEL: define i32 @evop(
+; CHECK-SAME: { i32, float } [[A:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
+; CHECK-NEXT: [[TMP2:%.*]] = load { i8, i8 }, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[TMP3:%.*]] = extractvalue { i8, i8 } [[TMP2]], 0
+; CHECK-NEXT: [[E:%.*]] = extractvalue { i32, float } [[A]], 0
+; CHECK-NEXT: store i8 [[TMP3]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: store i32 [[TMP1]], ptr @__dfsan_retval_origin_tls, align 4
+; CHECK-NEXT: ret i32 [[E]]
+;
%e = extractvalue {i32, float} %a, 0
ret i32 %e
}
+; COMM: TODO simplify the expression 4 to
+; COMM: 6, if shadow-tls-alignment is updated to match shadow
define {i32, {float, float}} @ivop({i32, {float, float}} %a, {float, float} %b) {
- ; CHECK: @ivop.dfsan
- ; CHECK: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
- ; CHECK: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
- ; COMM: TODO simplify the expression 4 to
- ; COMM: 6, if shadow-tls-alignment is updated to match shadow
- ; CHECK: [[BS:%.*]] = load { i8, i8 }, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 4) to ptr), align 2
- ; CHECK: [[BS0:%.*]] = extractvalue { i8, i8 } [[BS]], 0
- ; CHECK: [[BS1:%.*]] = extractvalue { i8, i8 } [[BS]], 1
- ; CHECK: [[BS01:%.*]] = or i8 [[BS0]], [[BS1]]
- ; CHECK: [[NE:%.*]] = icmp ne i8 [[BS01]], 0
- ; CHECK: [[MO:%.*]] = select i1 [[NE]], i32 [[BO]], i32 [[AO]]
- ; CHECK: store i32 [[MO]], ptr @__dfsan_retval_origin_tls, align 4
-
+; CHECK-LABEL: define { i32, { float, float } } @ivop(
+; CHECK-SAME: { i32, { float, float } } [[A:%.*]], { float, float } [[B:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
+; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
+; CHECK-NEXT: [[TMP3:%.*]] = load { i8, i8 }, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 4), align 2
+; CHECK-NEXT: [[TMP4:%.*]] = load { i8, { i8, i8 } }, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[TMP5:%.*]] = insertvalue { i8, { i8, i8 } } [[TMP4]], { i8, i8 } [[TMP3]], 1
+; CHECK-NEXT: [[TMP6:%.*]] = extractvalue { i8, i8 } [[TMP3]], 0
+; CHECK-NEXT: [[TMP7:%.*]] = extractvalue { i8, i8 } [[TMP3]], 1
+; CHECK-NEXT: [[TMP8:%.*]] = or i8 [[TMP6]], [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = icmp ne i8 [[TMP8]], 0
+; CHECK-NEXT: [[TMP10:%.*]] = select i1 [[TMP9]], i32 [[TMP1]], i32 [[TMP2]]
+; CHECK-NEXT: [[E:%.*]] = insertvalue { i32, { float, float } } [[A]], { float, float } [[B]], 1
+; CHECK-NEXT: store { i8, { i8, i8 } } [[TMP5]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: store i32 [[TMP10]], ptr @__dfsan_retval_origin_tls, align 4
+; CHECK-NEXT: ret { i32, { float, float } } [[E]]
+;
%e = insertvalue {i32, {float, float}} %a, {float, float} %b, 1
ret {i32, {float, float}} %e
}
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/origin_phi.ll b/llvm/test/Instrumentation/DataFlowSanitizer/origin_phi.ll
index e98dd2b..b69c383 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/origin_phi.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/origin_phi.ll
@@ -1,41 +1,50 @@
-; RUN: opt < %s -passes=dfsan -dfsan-track-origins=1 -S | FileCheck %s
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt < %s -passes=dfsan -dfsan-track-origins=1 -dfsan-add-global-name-suffix=0 -S | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
-; CHECK: @__dfsan_arg_tls = external thread_local(initialexec) global [[TLS_ARR:\[100 x i64\]]]
define i32 @phiop(i32 %a, i32 %b, i1 %c) {
- ; CHECK: @phiop.dfsan
- ; CHECK: entry:
- ; CHECK: [[BO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
- ; CHECK: [[AO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
- ; CHECK: [[BS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN:2]]
- ; CHECK: [[AS:%.*]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN]]
- ; CHECK: br i1 %c, label %next, label %done
- ; CHECK: next:
- ; CHECK: br i1 %c, label %T, label %F
- ; CHECK: T:
- ; CHECK: [[BS_NE:%.*]] = icmp ne i8 [[BS]], 0
- ; CHECK: [[BAO_T:%.*]] = select i1 [[BS_NE]], i32 [[BO]], i32 [[AO]]
- ; CHECK: br label %done
- ; CHECK: F:
- ; CHECK: [[AS_NE:%.*]] = icmp ne i8 [[AS]], 0
- ; CHECK: [[BAO_F:%.*]] = select i1 [[AS_NE]], i32 [[AO]], i32 [[BO]]
- ; CHECK: br label %done
- ; CHECK: done:
- ; CHECK: [[PO:%.*]] = phi i32 [ [[BAO_T]], %T ], [ [[BAO_F]], %F ], [ [[AO]], %entry ]
- ; CHECK: store i32 [[PO]], ptr @__dfsan_retval_origin_tls, align 4
-
+; CHECK-LABEL: define i32 @phiop(
+; CHECK-SAME: i32 [[A:%.*]], i32 [[B:%.*]], i1 [[C:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*]]:
+; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
+; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
+; CHECK-NEXT: [[TMP2:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; CHECK-NEXT: [[TMP3:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: br i1 [[C]], label %[[NEXT:.*]], label %[[DONE:.*]]
+; CHECK: [[NEXT]]:
+; CHECK-NEXT: br i1 [[C]], label %[[T:.*]], label %[[F:.*]]
+; CHECK: [[T]]:
+; CHECK-NEXT: [[TMP4:%.*]] = or i8 [[TMP3]], [[TMP2]]
+; CHECK-NEXT: [[TMP5:%.*]] = icmp ne i8 [[TMP2]], 0
+; CHECK-NEXT: [[TMP6:%.*]] = select i1 [[TMP5]], i32 [[TMP0]], i32 [[TMP1]]
+; CHECK-NEXT: [[SUM:%.*]] = add i32 [[A]], [[B]]
+; CHECK-NEXT: br label %[[DONE]]
+; CHECK: [[F]]:
+; CHECK-NEXT: [[TMP7:%.*]] = or i8 [[TMP2]], [[TMP3]]
+; CHECK-NEXT: [[TMP8:%.*]] = icmp ne i8 [[TMP3]], 0
+; CHECK-NEXT: [[TMP9:%.*]] = select i1 [[TMP8]], i32 [[TMP1]], i32 [[TMP0]]
+; CHECK-NEXT: [[DIFF:%.*]] = sub i32 [[B]], [[A]]
+; CHECK-NEXT: br label %[[DONE]]
+; CHECK: [[DONE]]:
+; CHECK-NEXT: [[TMP10:%.*]] = phi i8 [ [[TMP4]], %[[T]] ], [ [[TMP7]], %[[F]] ], [ [[TMP3]], %[[ENTRY]] ]
+; CHECK-NEXT: [[TMP11:%.*]] = phi i32 [ [[TMP6]], %[[T]] ], [ [[TMP9]], %[[F]] ], [ [[TMP1]], %[[ENTRY]] ]
+; CHECK-NEXT: [[R:%.*]] = phi i32 [ [[SUM]], %[[T]] ], [ [[DIFF]], %[[F]] ], [ [[A]], %[[ENTRY]] ]
+; CHECK-NEXT: store i8 [[TMP10]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: store i32 [[TMP11]], ptr @__dfsan_retval_origin_tls, align 4
+; CHECK-NEXT: ret i32 [[R]]
+;
entry:
br i1 %c, label %next, label %done
-next:
- br i1 %c, label %T, label %F
+next:
+ br i1 %c, label %T, label %F
T:
- %sum = add i32 %a, %b
+ %sum = add i32 %a, %b
br label %done
F:
- %diff = sub i32 %b, %a
+ %diff = sub i32 %b, %a
br label %done
done:
%r = phi i32 [%sum, %T], [%diff, %F], [%a, %entry]
ret i32 %r
-} \ No newline at end of file
+}
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/origin_select.ll b/llvm/test/Instrumentation/DataFlowSanitizer/origin_select.ll
index 133bf22..2839897 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/origin_select.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/origin_select.ll
@@ -48,7 +48,7 @@ define <4 x i8> @select8v(<4 x i1> %c, <4 x i8> %t, <4 x i8> %f) {
; TRACK_CONTROL_FLOW: [[CO:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
; TRACK_CONTROL_FLOW: [[FO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 2), align 4
; TRACK_CONTROL_FLOW: [[TO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
- ; TRACK_CONTROL_FLOW: [[FS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 4) to ptr), align 2
+ ; TRACK_CONTROL_FLOW: [[FS:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 4), align 2
; TRACK_CONTROL_FLOW: [[CS:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
; TRACK_CONTROL_FLOW: [[FS_NE:%.*]] = icmp ne i8 [[FS]], 0
; TRACK_CONTROL_FLOW: [[FTO:%.*]] = select i1 [[FS_NE]], i32 [[FO]], i32 [[TO]]
@@ -59,11 +59,11 @@ define <4 x i8> @select8v(<4 x i1> %c, <4 x i8> %t, <4 x i8> %f) {
; NO_TRACK_CONTROL_FLOW: @select8v.dfsan
; NO_TRACK_CONTROL_FLOW: [[FO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 2), align 4
; NO_TRACK_CONTROL_FLOW: [[TO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
- ; NO_TRACK_CONTROL_FLOW: [[FS:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 4) to ptr), align 2
+ ; NO_TRACK_CONTROL_FLOW: [[FS:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 4), align 2
; NO_TRACK_CONTROL_FLOW: [[FS_NE:%.*]] = icmp ne i8 [[FS]], 0
; NO_TRACK_CONTROL_FLOW: [[FTO:%.*]] = select i1 [[FS_NE]], i32 [[FO]], i32 [[TO]]
; NO_TRACK_CONTROL_FLOW: store i32 [[FTO]], ptr @__dfsan_retval_origin_tls, align 4
%a = select <4 x i1> %c, <4 x i8> %t, <4 x i8> %f
ret <4 x i8> %a
-} \ No newline at end of file
+}
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/origin_store.ll b/llvm/test/Instrumentation/DataFlowSanitizer/origin_store.ll
index 0b0ba40..55b0a01 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/origin_store.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/origin_store.ll
@@ -75,7 +75,7 @@ define void @store64_align8(ptr %p, i64 %a) {
; COMBINE_STORE_PTR-NEXT: %[[#PS:]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN]]
; CHECK-NEXT: %[[#AO:]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
- ; CHECK-NEXT: %[[#AS:]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN]]
+ ; CHECK-NEXT: %[[#AS:]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN]]
; COMBINE_STORE_PTR-NEXT: %[[#AS:]] = or i8 %[[#AS]], %[[#PS]]
; COMBINE_STORE_PTR-NEXT: %[[#NE:]] = icmp ne i8 %[[#PS]], 0
@@ -104,7 +104,7 @@ define void @store64_align2(ptr %p, i64 %a) {
; COMBINE_STORE_PTR-NEXT: %[[#PS:]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN]]
; CHECK-NEXT: %[[#AO:]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
- ; CHECK-NEXT: %[[#AS:]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN]]
+ ; CHECK-NEXT: %[[#AS:]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN]]
; COMBINE_STORE_PTR-NEXT: %[[#AS:]] = or i8 %[[#AS]], %[[#PS]]
; COMBINE_STORE_PTR-NEXT: %[[#NE:]] = icmp ne i8 %[[#PS]], 0
@@ -131,7 +131,7 @@ define void @store96_align8(ptr %p, i96 %a) {
; COMBINE_STORE_PTR-NEXT: %[[#PS:]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN]]
; CHECK-NEXT: %[[#AO:]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
- ; CHECK-NEXT: %[[#AS:]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN]]
+ ; CHECK-NEXT: %[[#AS:]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN]]
; COMBINE_STORE_PTR-NEXT: %[[#AS:]] = or i8 %[[#AS]], %[[#PS]]
; COMBINE_STORE_PTR-NEXT: %[[#NE:]] = icmp ne i8 %[[#PS]], 0
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/origin_store_threshold.ll b/llvm/test/Instrumentation/DataFlowSanitizer/origin_store_threshold.ll
index 3630ebc..8b526f1 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/origin_store_threshold.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/origin_store_threshold.ll
@@ -1,16 +1,37 @@
-; RUN: opt < %s -passes=dfsan -dfsan-track-origins=1 -dfsan-instrument-with-call-threshold=0 -S | FileCheck %s
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt < %s -passes=dfsan -dfsan-track-origins=1 -dfsan-instrument-with-call-threshold=0 -dfsan-add-global-name-suffix=0 -S | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
define void @store_threshold(ptr %p, [2 x i64] %a) {
- ; CHECK: @store_threshold.dfsan
- ; CHECK: [[AO:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
- ; CHECK: [[AS:%.*]] = load [2 x i8], ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
- ; CHECK: [[AS0:%.*]] = extractvalue [2 x i8] [[AS]], 0
- ; CHECK: [[AS1:%.*]] = extractvalue [2 x i8] [[AS]], 1
- ; CHECK: [[AS01:%.*]] = or i8 [[AS0]], [[AS1]]
- ; CHECK: call void @__dfsan_maybe_store_origin(i8 [[AS01]], ptr %p, i64 16, i32 [[AO]])
- ; CHECK: store [2 x i64] %a, ptr %p, align 8
+; CHECK-LABEL: define void @store_threshold(
+; CHECK-SAME: ptr [[P:%.*]], [2 x i64] [[A:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 4
+; CHECK-NEXT: [[TMP2:%.*]] = load [2 x i8], ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; CHECK-NEXT: [[TMP3:%.*]] = extractvalue [2 x i8] [[TMP2]], 0
+; CHECK-NEXT: [[TMP4:%.*]] = extractvalue [2 x i8] [[TMP2]], 1
+; CHECK-NEXT: [[TMP5:%.*]] = or i8 [[TMP3]], [[TMP4]]
+; CHECK-NEXT: [[TMP6:%.*]] = ptrtoint ptr [[P]] to i64
+; CHECK-NEXT: [[TMP7:%.*]] = xor i64 [[TMP6]], 87960930222080
+; CHECK-NEXT: [[TMP8:%.*]] = inttoptr i64 [[TMP7]] to ptr
+; CHECK-NEXT: [[TMP9:%.*]] = add i64 [[TMP7]], 17592186044416
+; CHECK-NEXT: [[TMP10:%.*]] = inttoptr i64 [[TMP9]] to ptr
+; CHECK-NEXT: [[TMP11:%.*]] = insertelement <8 x i8> poison, i8 [[TMP5]], i32 0
+; CHECK-NEXT: [[TMP12:%.*]] = insertelement <8 x i8> [[TMP11]], i8 [[TMP5]], i32 1
+; CHECK-NEXT: [[TMP13:%.*]] = insertelement <8 x i8> [[TMP12]], i8 [[TMP5]], i32 2
+; CHECK-NEXT: [[TMP14:%.*]] = insertelement <8 x i8> [[TMP13]], i8 [[TMP5]], i32 3
+; CHECK-NEXT: [[TMP15:%.*]] = insertelement <8 x i8> [[TMP14]], i8 [[TMP5]], i32 4
+; CHECK-NEXT: [[TMP16:%.*]] = insertelement <8 x i8> [[TMP15]], i8 [[TMP5]], i32 5
+; CHECK-NEXT: [[TMP17:%.*]] = insertelement <8 x i8> [[TMP16]], i8 [[TMP5]], i32 6
+; CHECK-NEXT: [[TMP18:%.*]] = insertelement <8 x i8> [[TMP17]], i8 [[TMP5]], i32 7
+; CHECK-NEXT: [[TMP19:%.*]] = getelementptr <8 x i8>, ptr [[TMP8]], i32 0
+; CHECK-NEXT: store <8 x i8> [[TMP18]], ptr [[TMP19]], align 1
+; CHECK-NEXT: [[TMP20:%.*]] = getelementptr <8 x i8>, ptr [[TMP8]], i32 1
+; CHECK-NEXT: store <8 x i8> [[TMP18]], ptr [[TMP20]], align 1
+; CHECK-NEXT: call void @__dfsan_maybe_store_origin(i8 [[TMP5]], ptr [[P]], i64 16, i32 [[TMP1]])
+; CHECK-NEXT: store [2 x i64] [[A]], ptr [[P]], align 8
+; CHECK-NEXT: ret void
+;
store [2 x i64] %a, ptr %p
ret void
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/origin_track_load.ll b/llvm/test/Instrumentation/DataFlowSanitizer/origin_track_load.ll
index b93d2eb..f967ccf 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/origin_track_load.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/origin_track_load.ll
@@ -1,27 +1,26 @@
-; RUN: opt < %s -passes=dfsan -dfsan-track-origins=2 -S | FileCheck %s
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt < %s -passes=dfsan -dfsan-track-origins=2 -dfsan-add-global-name-suffix=0 -S | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
define i64 @load64(ptr %p) {
- ; CHECK-LABEL: @load64.dfsan
-
- ; CHECK-NEXT: %[[#PO:]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
- ; CHECK-NEXT: %[[#PS:]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN:2]]
-
- ; CHECK-NEXT: %[[#LABEL_ORIGIN:]] = call zeroext i64 @__dfsan_load_label_and_origin(ptr %p, i64 8)
- ; CHECK-NEXT: %[[#LABEL_ORIGIN_H32:]] = lshr i64 %[[#LABEL_ORIGIN]], 32
- ; CHECK-NEXT: %[[#LABEL:]] = trunc i64 %[[#LABEL_ORIGIN_H32]] to i8
- ; CHECK-NEXT: %[[#ORIGIN:]] = trunc i64 %[[#LABEL_ORIGIN]] to i32
- ; CHECK-NEXT: %[[#ORIGIN_CHAINED:]] = call i32 @__dfsan_chain_origin_if_tainted(i8 %[[#LABEL]], i32 %[[#ORIGIN]])
-
- ; CHECK-NEXT: %[[#LABEL:]] = or i8 %[[#LABEL]], %[[#PS]]
- ; CHECK-NEXT: %[[#NZ:]] = icmp ne i8 %[[#PS]], 0
- ; CHECK-NEXT: %[[#ORIGIN_SEL:]] = select i1 %[[#NZ]], i32 %[[#PO]], i32 %[[#ORIGIN_CHAINED]]
-
- ; CHECK-NEXT: %a = load i64, ptr %p
- ; CHECK-NEXT: store i8 %[[#LABEL]], ptr @__dfsan_retval_tls, align [[ALIGN]]
- ; CHECK-NEXT: store i32 %[[#ORIGIN_SEL]], ptr @__dfsan_retval_origin_tls, align 4
-
+; CHECK-LABEL: define i64 @load64(
+; CHECK-SAME: ptr [[P:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr @__dfsan_arg_origin_tls, align 4
+; CHECK-NEXT: [[TMP2:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[TMP3:%.*]] = call zeroext i64 @__dfsan_load_label_and_origin(ptr [[P]], i64 8)
+; CHECK-NEXT: [[TMP4:%.*]] = lshr i64 [[TMP3]], 32
+; CHECK-NEXT: [[TMP5:%.*]] = trunc i64 [[TMP4]] to i8
+; CHECK-NEXT: [[TMP6:%.*]] = trunc i64 [[TMP3]] to i32
+; CHECK-NEXT: [[TMP7:%.*]] = call i32 @__dfsan_chain_origin_if_tainted(i8 [[TMP5]], i32 [[TMP6]])
+; CHECK-NEXT: [[TMP8:%.*]] = or i8 [[TMP5]], [[TMP2]]
+; CHECK-NEXT: [[TMP9:%.*]] = icmp ne i8 [[TMP2]], 0
+; CHECK-NEXT: [[TMP10:%.*]] = select i1 [[TMP9]], i32 [[TMP1]], i32 [[TMP7]]
+; CHECK-NEXT: [[A:%.*]] = load i64, ptr [[P]], align 8
+; CHECK-NEXT: store i8 [[TMP8]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: store i32 [[TMP10]], ptr @__dfsan_retval_origin_tls, align 4
+; CHECK-NEXT: ret i64 [[A]]
+;
%a = load i64, ptr %p
ret i64 %a
}
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/phi.ll b/llvm/test/Instrumentation/DataFlowSanitizer/phi.ll
index 592d3eb..ecf0d9c8 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/phi.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/phi.ll
@@ -1,26 +1,41 @@
-; RUN: opt < %s -passes=dfsan -S | FileCheck %s
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt < %s -passes=dfsan -dfsan-add-global-name-suffix=0 -S | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
define {i32, i32} @test({i32, i32} %a, i1 %c) {
- ; CHECK: %[[#AL:]] = load { i8, i8 }, ptr @__dfsan_arg_tls, align [[ALIGN:2]]
- ; CHECK: %[[#AL0:]] = insertvalue { i8, i8 } %[[#AL]], i8 0, 0
- ; CHECK: %[[#AL1:]] = insertvalue { i8, i8 } %[[#AL]], i8 0, 1
- ; CHECK: %[[#PL:]] = phi { i8, i8 } [ %[[#AL0]], %T ], [ %[[#AL1]], %F ]
- ; CHECK: store { i8, i8 } %[[#PL]], ptr @__dfsan_retval_tls, align [[ALIGN]]
+; CHECK-LABEL: define { i32, i32 } @test(
+; CHECK-SAME: { i32, i32 } [[A:%.*]], i1 [[C:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = load { i8, i8 }, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: br i1 [[C]], label %[[T:.*]], label %[[F:.*]]
+; CHECK: [[T]]:
+; CHECK-NEXT: [[TMP1:%.*]] = insertvalue { i8, i8 } [[TMP0]], i8 0, 0
+; CHECK-NEXT: [[AT:%.*]] = insertvalue { i32, i32 } [[A]], i32 1, 0
+; CHECK-NEXT: br label %[[DONE:.*]]
+; CHECK: [[F]]:
+; CHECK-NEXT: [[TMP2:%.*]] = insertvalue { i8, i8 } [[TMP0]], i8 0, 1
+; CHECK-NEXT: [[AF:%.*]] = insertvalue { i32, i32 } [[A]], i32 1, 1
+; CHECK-NEXT: br label %[[DONE]]
+; CHECK: [[DONE]]:
+; CHECK-NEXT: [[TMP3:%.*]] = phi { i8, i8 } [ [[TMP1]], %[[T]] ], [ [[TMP2]], %[[F]] ]
+; CHECK-NEXT: [[B:%.*]] = phi { i32, i32 } [ [[AT]], %[[T]] ], [ [[AF]], %[[F]] ]
+; CHECK-NEXT: store { i8, i8 } [[TMP3]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: ret { i32, i32 } [[B]]
+;
entry:
br i1 %c, label %T, label %F
-
+
T:
%at = insertvalue {i32, i32} %a, i32 1, 0
br label %done
-
+
F:
%af = insertvalue {i32, i32} %a, i32 1, 1
br label %done
-
+
done:
%b = phi {i32, i32} [%at, %T], [%af, %F]
- ret {i32, i32} %b
+ ret {i32, i32} %b
}
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/select.ll b/llvm/test/Instrumentation/DataFlowSanitizer/select.ll
index 5056616..005648b 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/select.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/select.ll
@@ -1,74 +1,81 @@
-; RUN: opt < %s -passes=dfsan -dfsan-track-select-control-flow=true -S | FileCheck %s --check-prefixes=CHECK,TRACK_CF
-; RUN: opt < %s -passes=dfsan -dfsan-track-select-control-flow=false -S | FileCheck %s --check-prefixes=CHECK,NO_TRACK_CF
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt < %s -passes=dfsan -dfsan-track-select-control-flow=true -dfsan-add-global-name-suffix=0 -S | FileCheck %s --check-prefixes=CHECK,TRACK_CF
+; RUN: opt < %s -passes=dfsan -dfsan-track-select-control-flow=false -dfsan-add-global-name-suffix=0 -S | FileCheck %s --check-prefixes=CHECK,NO_TRACK_CF
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
-; CHECK: @__dfsan_arg_tls = external thread_local(initialexec) global [[TLS_ARR:\[100 x i64\]]]
-; CHECK: @__dfsan_retval_tls = external thread_local(initialexec) global [[TLS_ARR]]
define i8 @select8(i1 %c, i8 %t, i8 %f) {
- ; TRACK_CF: @select8.dfsan
- ; TRACK_CF: %[[#R:]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 4) to ptr), align [[ALIGN:2]]
- ; TRACK_CF: %[[#R+1]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN]]
- ; TRACK_CF: %[[#R+2]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN]]
- ; TRACK_CF: %[[#R+3]] = select i1 %c, i8 %[[#R+1]], i8 %[[#R]]
- ; TRACK_CF: %[[#RO:]] = or i8 %[[#R+2]], %[[#R+3]]
- ; TRACK_CF: %a = select i1 %c, i8 %t, i8 %f
- ; TRACK_CF: store i8 %[[#RO]], ptr @__dfsan_retval_tls, align [[ALIGN]]
- ; TRACK_CF: ret i8 %a
-
- ; NO_TRACK_CF: @select8.dfsan
- ; NO_TRACK_CF: %[[#R:]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 4) to ptr), align [[ALIGN:2]]
- ; NO_TRACK_CF: %[[#R+1]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN]]
- ; NO_TRACK_CF: %[[#R+2]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN]]
- ; NO_TRACK_CF: %[[#R+3]] = select i1 %c, i8 %[[#R+1]], i8 %[[#R]]
- ; NO_TRACK_CF: %a = select i1 %c, i8 %t, i8 %f
- ; NO_TRACK_CF: store i8 %[[#R+3]], ptr @__dfsan_retval_tls, align [[ALIGN]]
- ; NO_TRACK_CF: ret i8 %a
-
+; TRACK_CF-LABEL: define i8 @select8(
+; TRACK_CF-SAME: i1 [[C:%.*]], i8 [[T:%.*]], i8 [[F:%.*]]) {
+; TRACK_CF-NEXT: [[TMP1:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 4), align 2
+; TRACK_CF-NEXT: [[TMP2:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; TRACK_CF-NEXT: [[TMP3:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; TRACK_CF-NEXT: [[TMP4:%.*]] = select i1 [[C]], i8 [[TMP2]], i8 [[TMP1]]
+; TRACK_CF-NEXT: [[TMP5:%.*]] = or i8 [[TMP3]], [[TMP4]]
+; TRACK_CF-NEXT: [[A:%.*]] = select i1 [[C]], i8 [[T]], i8 [[F]]
+; TRACK_CF-NEXT: store i8 [[TMP5]], ptr @__dfsan_retval_tls, align 2
+; TRACK_CF-NEXT: ret i8 [[A]]
+;
+; NO_TRACK_CF-LABEL: define i8 @select8(
+; NO_TRACK_CF-SAME: i1 [[C:%.*]], i8 [[T:%.*]], i8 [[F:%.*]]) {
+; NO_TRACK_CF-NEXT: [[TMP1:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 4), align 2
+; NO_TRACK_CF-NEXT: [[TMP2:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; NO_TRACK_CF-NEXT: [[TMP3:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; NO_TRACK_CF-NEXT: [[TMP4:%.*]] = select i1 [[C]], i8 [[TMP2]], i8 [[TMP1]]
+; NO_TRACK_CF-NEXT: [[A:%.*]] = select i1 [[C]], i8 [[T]], i8 [[F]]
+; NO_TRACK_CF-NEXT: store i8 [[TMP4]], ptr @__dfsan_retval_tls, align 2
+; NO_TRACK_CF-NEXT: ret i8 [[A]]
+;
%a = select i1 %c, i8 %t, i8 %f
ret i8 %a
}
define i8 @select8e(i1 %c, i8 %tf) {
- ; TRACK_CF: @select8e.dfsan
- ; TRACK_CF: %[[#R:]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN]]
- ; TRACK_CF: %[[#R+1]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN]]
- ; TRACK_CF: %[[#RO:]] = or i8 %[[#R+1]], %[[#R]]
- ; TRACK_CF: %a = select i1 %c, i8 %tf, i8 %tf
- ; TRACK_CF: store i8 %[[#RO]], ptr @__dfsan_retval_tls, align [[ALIGN]]
- ; TRACK_CF: ret i8 %a
-
- ; NO_TRACK_CF: @select8e.dfsan
- ; NO_TRACK_CF: %[[#R:]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN]]
- ; NO_TRACK_CF: %[[#R+1]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN]]
- ; NO_TRACK_CF: %a = select i1 %c, i8 %tf, i8 %tf
- ; NO_TRACK_CF: store i8 %[[#R]], ptr @__dfsan_retval_tls, align [[ALIGN]]
- ; NO_TRACK_CF: ret i8 %a
-
+; TRACK_CF-LABEL: define i8 @select8e(
+; TRACK_CF-SAME: i1 [[C:%.*]], i8 [[TF:%.*]]) {
+; TRACK_CF-NEXT: [[TMP1:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; TRACK_CF-NEXT: [[TMP2:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; TRACK_CF-NEXT: [[TMP3:%.*]] = or i8 [[TMP2]], [[TMP1]]
+; TRACK_CF-NEXT: [[A:%.*]] = select i1 [[C]], i8 [[TF]], i8 [[TF]]
+; TRACK_CF-NEXT: store i8 [[TMP3]], ptr @__dfsan_retval_tls, align 2
+; TRACK_CF-NEXT: ret i8 [[A]]
+;
+; NO_TRACK_CF-LABEL: define i8 @select8e(
+; NO_TRACK_CF-SAME: i1 [[C:%.*]], i8 [[TF:%.*]]) {
+; NO_TRACK_CF-NEXT: [[TMP1:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; NO_TRACK_CF-NEXT: [[TMP2:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; NO_TRACK_CF-NEXT: [[A:%.*]] = select i1 [[C]], i8 [[TF]], i8 [[TF]]
+; NO_TRACK_CF-NEXT: store i8 [[TMP1]], ptr @__dfsan_retval_tls, align 2
+; NO_TRACK_CF-NEXT: ret i8 [[A]]
+;
%a = select i1 %c, i8 %tf, i8 %tf
ret i8 %a
}
define <4 x i8> @select8v(<4 x i1> %c, <4 x i8> %t, <4 x i8> %f) {
- ; TRACK_CF: @select8v.dfsan
- ; TRACK_CF: %[[#R:]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 4) to ptr), align [[ALIGN:2]]
- ; TRACK_CF: %[[#R+1]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN]]
- ; TRACK_CF: %[[#R+2]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN]]
- ; TRACK_CF: %[[#R+3]] = or i8 %[[#R+1]], %[[#R]]
- ; TRACK_CF: %[[#RO:]] = or i8 %[[#R+2]], %[[#R+3]]
- ; TRACK_CF: %a = select <4 x i1> %c, <4 x i8> %t, <4 x i8> %f
- ; TRACK_CF: store i8 %[[#RO]], ptr @__dfsan_retval_tls, align [[ALIGN]]
- ; TRACK_CF: ret <4 x i8> %a
-
- ; NO_TRACK_CF: @select8v.dfsan
- ; NO_TRACK_CF: %[[#R:]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 4) to ptr), align [[ALIGN:2]]
- ; NO_TRACK_CF: %[[#R+1]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN]]
- ; NO_TRACK_CF: %[[#R+2]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN]]
- ; NO_TRACK_CF: %[[#RO:]] = or i8 %[[#R+1]], %[[#R]]
- ; NO_TRACK_CF: %a = select <4 x i1> %c, <4 x i8> %t, <4 x i8> %f
- ; NO_TRACK_CF: store i8 %[[#RO]], ptr @__dfsan_retval_tls, align [[ALIGN]]
- ; NO_TRACK_CF: ret <4 x i8> %a
-
+; TRACK_CF-LABEL: define <4 x i8> @select8v(
+; TRACK_CF-SAME: <4 x i1> [[C:%.*]], <4 x i8> [[T:%.*]], <4 x i8> [[F:%.*]]) {
+; TRACK_CF-NEXT: [[TMP1:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 4), align 2
+; TRACK_CF-NEXT: [[TMP2:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; TRACK_CF-NEXT: [[TMP3:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; TRACK_CF-NEXT: [[TMP4:%.*]] = or i8 [[TMP2]], [[TMP1]]
+; TRACK_CF-NEXT: [[TMP5:%.*]] = or i8 [[TMP3]], [[TMP4]]
+; TRACK_CF-NEXT: [[A:%.*]] = select <4 x i1> [[C]], <4 x i8> [[T]], <4 x i8> [[F]]
+; TRACK_CF-NEXT: store i8 [[TMP5]], ptr @__dfsan_retval_tls, align 2
+; TRACK_CF-NEXT: ret <4 x i8> [[A]]
+;
+; NO_TRACK_CF-LABEL: define <4 x i8> @select8v(
+; NO_TRACK_CF-SAME: <4 x i1> [[C:%.*]], <4 x i8> [[T:%.*]], <4 x i8> [[F:%.*]]) {
+; NO_TRACK_CF-NEXT: [[TMP1:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 4), align 2
+; NO_TRACK_CF-NEXT: [[TMP2:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; NO_TRACK_CF-NEXT: [[TMP3:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; NO_TRACK_CF-NEXT: [[TMP4:%.*]] = or i8 [[TMP2]], [[TMP1]]
+; NO_TRACK_CF-NEXT: [[A:%.*]] = select <4 x i1> [[C]], <4 x i8> [[T]], <4 x i8> [[F]]
+; NO_TRACK_CF-NEXT: store i8 [[TMP4]], ptr @__dfsan_retval_tls, align 2
+; NO_TRACK_CF-NEXT: ret <4 x i8> [[A]]
+;
%a = select <4 x i1> %c, <4 x i8> %t, <4 x i8> %f
ret <4 x i8> %a
}
+;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
+; CHECK: {{.*}}
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/store.ll b/llvm/test/Instrumentation/DataFlowSanitizer/store.ll
index bc2a70e..1c8ab65 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/store.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/store.ll
@@ -16,7 +16,7 @@ define void @store0({} %v, ptr %p) {
define void @store8(i8 %v, ptr %p) {
; CHECK-LABEL: @store8.dfsan
; NO_COMBINE_PTR_LABEL: load i8, ptr @__dfsan_arg_tls
- ; COMBINE_PTR_LABEL: load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
+ ; COMBINE_PTR_LABEL: load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
; COMBINE_PTR_LABEL: load i8, ptr @__dfsan_arg_tls
; COMBINE_PTR_LABEL: or i8
@@ -35,7 +35,7 @@ define void @store8(i8 %v, ptr %p) {
define void @store16(i16 %v, ptr %p) {
; CHECK-LABEL: @store16.dfsan
; NO_COMBINE_PTR_LABEL: load i8, ptr @__dfsan_arg_tls
- ; COMBINE_PTR_LABEL: load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
+ ; COMBINE_PTR_LABEL: load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
; COMBINE_PTR_LABEL: load i8, ptr @__dfsan_arg_tls
; COMBINE_PTR_LABEL: or i8
; CHECK: ptrtoint ptr {{.*}} i64
@@ -55,7 +55,7 @@ define void @store16(i16 %v, ptr %p) {
define void @store32(i32 %v, ptr %p) {
; CHECK-LABEL: @store32.dfsan
; NO_COMBINE_PTR_LABEL: load i8, ptr @__dfsan_arg_tls
- ; COMBINE_PTR_LABEL: load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
+ ; COMBINE_PTR_LABEL: load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
; COMBINE_PTR_LABEL: load i8, ptr @__dfsan_arg_tls
; COMBINE_PTR_LABEL: or i8
; CHECK: ptrtoint ptr {{.*}} i64
@@ -79,7 +79,7 @@ define void @store32(i32 %v, ptr %p) {
define void @store64(i64 %v, ptr %p) {
; CHECK-LABEL: @store64.dfsan
; NO_COMBINE_PTR_LABEL: load i8, ptr @__dfsan_arg_tls
- ; COMBINE_PTR_LABEL: load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align 2
+ ; COMBINE_PTR_LABEL: load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
; COMBINE_PTR_LABEL: load i8, ptr @__dfsan_arg_tls
; COMBINE_PTR_LABEL: or i8
; CHECK: ptrtoint ptr {{.*}} i64
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/struct.ll b/llvm/test/Instrumentation/DataFlowSanitizer/struct.ll
index 8069d28..9b4a350 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/struct.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/struct.ll
@@ -56,15 +56,15 @@ define {i1, i32} @load_global_struct() {
define {i1, i32} @select_struct(i1 %c, {i1, i32} %a, {i1, i32} %b) {
; NO_SELECT_CONTROL: @select_struct.dfsan
- ; NO_SELECT_CONTROL: [[B:%.*]] = load { i8, i8 }, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 4) to ptr), align [[ALIGN:2]]
- ; NO_SELECT_CONTROL: [[A:%.*]] = load { i8, i8 }, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN]]
+ ; NO_SELECT_CONTROL: [[B:%.*]] = load { i8, i8 }, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 4), align [[ALIGN:2]]
+ ; NO_SELECT_CONTROL: [[A:%.*]] = load { i8, i8 }, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN]]
; NO_SELECT_CONTROL: [[C:%.*]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN]]
; NO_SELECT_CONTROL: [[S:%.*]] = select i1 %c, { i8, i8 } [[A]], { i8, i8 } [[B]]
; NO_SELECT_CONTROL: store { i8, i8 } [[S]], ptr @__dfsan_retval_tls, align [[ALIGN]]
; FAST: @select_struct.dfsan
- ; FAST: %[[#R:]] = load { i8, i8 }, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 4) to ptr), align [[ALIGN:2]]
- ; FAST: %[[#R+1]] = load { i8, i8 }, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN]]
+ ; FAST: %[[#R:]] = load { i8, i8 }, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 4), align [[ALIGN:2]]
+ ; FAST: %[[#R+1]] = load { i8, i8 }, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN]]
; FAST: %[[#R+2]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN]]
; FAST: %[[#R+3]] = select i1 %c, { i8, i8 } %[[#R+1]], { i8, i8 } %[[#R]]
; FAST: %[[#R+4]] = extractvalue { i8, i8 } %[[#R+3]], 0
@@ -81,7 +81,7 @@ define {i1, i32} @select_struct(i1 %c, {i1, i32} %a, {i1, i32} %b) {
define { i32, i32 } @asm_struct(i32 %0, i32 %1) {
; FAST: @asm_struct.dfsan
- ; FAST: [[E1:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN:2]]
+ ; FAST: [[E1:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN:2]]
; FAST: [[E0:%.*]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN]]
; FAST: [[E01:%.*]] = or i8 [[E0]], [[E1]]
; FAST: [[S0:%.*]] = insertvalue { i8, i8 } undef, i8 [[E01]], 0
@@ -111,7 +111,7 @@ define i1 @extract_struct({i1, i5} %s) {
define {i1, i5} @insert_struct({i1, i5} %s, i5 %e1) {
; FAST: @insert_struct.dfsan
- ; FAST: [[EM:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN:2]]
+ ; FAST: [[EM:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN:2]]
; FAST: [[SM:%.*]] = load { i8, i8 }, ptr @__dfsan_arg_tls, align [[ALIGN]]
; FAST: [[SM1:%.*]] = insertvalue { i8, i8 } [[SM]], i8 [[EM]], 1
; FAST: store { i8, i8 } [[SM1]], ptr @__dfsan_retval_tls, align [[ALIGN]]
@@ -138,7 +138,7 @@ define {i1, i1} @load_struct(ptr %p) {
define void @store_struct(ptr %p, {i1, i1} %s) {
; FAST: @store_struct.dfsan
- ; FAST: [[S:%.*]] = load { i8, i8 }, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN:2]]
+ ; FAST: [[S:%.*]] = load { i8, i8 }, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN:2]]
; FAST: [[E0:%.*]] = extractvalue { i8, i8 } [[S]], 0
; FAST: [[E1:%.*]] = extractvalue { i8, i8 } [[S]], 1
; FAST: [[E:%.*]] = or i8 [[E0]], [[E1]]
@@ -153,7 +153,7 @@ define void @store_struct(ptr %p, {i1, i1} %s) {
; COMBINE_STORE_PTR: @store_struct.dfsan
; COMBINE_STORE_PTR: [[PL:%.*]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN:2]]
- ; COMBINE_STORE_PTR: [[SL:%.*]] = load { i8, i8 }, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN]]
+ ; COMBINE_STORE_PTR: [[SL:%.*]] = load { i8, i8 }, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN]]
; COMBINE_STORE_PTR: [[SL0:%.*]] = extractvalue { i8, i8 } [[SL]], 0
; COMBINE_STORE_PTR: [[SL1:%.*]] = extractvalue { i8, i8 } [[SL]], 1
; COMBINE_STORE_PTR: [[SL01:%.*]] = or i8 [[SL0]], [[SL1]]
@@ -215,7 +215,7 @@ define i1 @extract_struct_of_aggregate31(%StructOfAggr %s) {
define %StructOfAggr @insert_struct_of_aggregate11(%StructOfAggr %s, i2 %e11) {
; FAST: @insert_struct_of_aggregate11.dfsan
- ; FAST: [[E11:%.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 8) to ptr), align [[ALIGN:2]]
+ ; FAST: [[E11:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 8), align [[ALIGN:2]]
; FAST: [[S:%.*]] = load { i8, [4 x i8], i8, { i8, i8 } }, ptr @__dfsan_arg_tls, align [[ALIGN]]
; FAST: [[S1:%.*]] = insertvalue { i8, [4 x i8], i8, { i8, i8 } } [[S]], i8 [[E11]], 1, 1
; FAST: store { i8, [4 x i8], i8, { i8, i8 } } [[S1]], ptr @__dfsan_retval_tls, align [[ALIGN]]
@@ -239,12 +239,12 @@ declare %StructOfAggr @fun_with_many_aggr_args(<2 x i7> %v, [2 x i5] %a, {i3, i3
define %StructOfAggr @call_many_aggr_args(<2 x i7> %v, [2 x i5] %a, {i3, i3} %s) {
; FAST: @call_many_aggr_args.dfsan
- ; FAST: [[S:%.*]] = load { i8, i8 }, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 4) to ptr), align [[ALIGN:2]]
- ; FAST: [[A:%.*]] = load [2 x i8], ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN]]
+ ; FAST: [[S:%.*]] = load { i8, i8 }, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 4), align [[ALIGN:2]]
+ ; FAST: [[A:%.*]] = load [2 x i8], ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN]]
; FAST: [[V:%.*]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN]]
; FAST: store i8 [[V]], ptr @__dfsan_arg_tls, align [[ALIGN]]
- ; FAST: store [2 x i8] [[A]], ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN]]
- ; FAST: store { i8, i8 } [[S]], ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 4) to ptr), align [[ALIGN]]
+ ; FAST: store [2 x i8] [[A]], ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align [[ALIGN]]
+ ; FAST: store { i8, i8 } [[S]], ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 4), align [[ALIGN]]
; FAST: %_dfsret = load { i8, [4 x i8], i8, { i8, i8 } }, ptr @__dfsan_retval_tls, align [[ALIGN]]
; FAST: store { i8, [4 x i8], i8, { i8, i8 } } %_dfsret, ptr @__dfsan_retval_tls, align [[ALIGN]]
diff --git a/llvm/test/Instrumentation/DataFlowSanitizer/vector.ll b/llvm/test/Instrumentation/DataFlowSanitizer/vector.ll
index 64052d6..0580c18 100644
--- a/llvm/test/Instrumentation/DataFlowSanitizer/vector.ll
+++ b/llvm/test/Instrumentation/DataFlowSanitizer/vector.ll
@@ -1,19 +1,43 @@
-; RUN: opt < %s -passes=dfsan -S | FileCheck %s
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt < %s -passes=dfsan -dfsan-add-global-name-suffix=0 -S | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
define <4 x i4> @pass_vector(<4 x i4> %v) {
- ; CHECK-LABEL: @pass_vector.dfsan
- ; CHECK-NEXT: %[[#REG:]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN:2]]
- ; CHECK-NEXT: store i8 %[[#REG]], ptr @__dfsan_retval_tls, align [[ALIGN]]
- ; CHECK-NEXT: ret <4 x i4> %v
+; CHECK-LABEL: define <4 x i4> @pass_vector(
+; CHECK-SAME: <4 x i4> [[V:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: store i8 [[TMP1]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: ret <4 x i4> [[V]]
+;
ret <4 x i4> %v
}
define void @load_update_store_vector(ptr %p) {
- ; CHECK-LABEL: @load_update_store_vector.dfsan
- ; CHECK: {{.*}} = load i8, ptr @__dfsan_arg_tls, align 2
-
+; CHECK-LABEL: define void @load_update_store_vector(
+; CHECK-SAME: ptr [[P:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
+; CHECK-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
+; CHECK-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
+; CHECK-NEXT: [[TMP5:%.*]] = getelementptr i8, ptr [[TMP4]], i64 1
+; CHECK-NEXT: [[TMP6:%.*]] = load i8, ptr [[TMP4]], align 1
+; CHECK-NEXT: [[TMP7:%.*]] = load i8, ptr [[TMP5]], align 1
+; CHECK-NEXT: [[TMP8:%.*]] = or i8 [[TMP6]], [[TMP7]]
+; CHECK-NEXT: [[TMP9:%.*]] = or i8 [[TMP8]], [[TMP1]]
+; CHECK-NEXT: [[V:%.*]] = load <4 x i4>, ptr [[P]], align 2
+; CHECK-NEXT: [[E2:%.*]] = extractelement <4 x i4> [[V]], i32 2
+; CHECK-NEXT: [[V1:%.*]] = insertelement <4 x i4> [[V]], i4 [[E2]], i32 0
+; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[P]] to i64
+; CHECK-NEXT: [[TMP11:%.*]] = xor i64 [[TMP10]], 87960930222080
+; CHECK-NEXT: [[TMP12:%.*]] = inttoptr i64 [[TMP11]] to ptr
+; CHECK-NEXT: [[TMP13:%.*]] = getelementptr i8, ptr [[TMP12]], i32 0
+; CHECK-NEXT: store i8 [[TMP9]], ptr [[TMP13]], align 1
+; CHECK-NEXT: [[TMP14:%.*]] = getelementptr i8, ptr [[TMP12]], i32 1
+; CHECK-NEXT: store i8 [[TMP9]], ptr [[TMP14]], align 1
+; CHECK-NEXT: store <4 x i4> [[V1]], ptr [[P]], align 2
+; CHECK-NEXT: ret void
+;
%v = load <4 x i4>, ptr %p
%e2 = extractelement <4 x i4> %v, i32 2
%v1 = insertelement <4 x i4> %v, i4 %e2, i32 0
@@ -22,36 +46,37 @@ define void @load_update_store_vector(ptr %p) {
}
define <4 x i1> @icmp_vector(<4 x i8> %a, <4 x i8> %b) {
- ; CHECK-LABEL: @icmp_vector.dfsan
- ; CHECK-NEXT: %[[B:.*]] = load i8, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__dfsan_arg_tls to i64), i64 2) to ptr), align [[ALIGN:2]]
- ; CHECK-NEXT: %[[A:.*]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN]]
- ; CHECK: %[[L:.*]] = or i8 %[[A]], %[[B]]
-
- ; CHECK: %r = icmp eq <4 x i8> %a, %b
- ; CHECK: store i8 %[[L]], ptr @__dfsan_retval_tls, align [[ALIGN]]
- ; CHECK: ret <4 x i1> %r
-
+; CHECK-LABEL: define <4 x i1> @icmp_vector(
+; CHECK-SAME: <4 x i8> [[A:%.*]], <4 x i8> [[B:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 2
+; CHECK-NEXT: [[TMP2:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[TMP3:%.*]] = or i8 [[TMP2]], [[TMP1]]
+; CHECK-NEXT: [[R:%.*]] = icmp eq <4 x i8> [[A]], [[B]]
+; CHECK-NEXT: store i8 [[TMP3]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: ret <4 x i1> [[R]]
+;
%r = icmp eq <4 x i8> %a, %b
ret <4 x i1> %r
}
define <2 x i32> @const_vector() {
- ; CHECK-LABEL: @const_vector.dfsan
- ; CHECK-NEXT: store i8 0, ptr @__dfsan_retval_tls, align 2
- ; CHECK-NEXT: ret <2 x i32> <i32 42, i32 11>
-
+; CHECK-LABEL: define <2 x i32> @const_vector() {
+; CHECK-NEXT: store i8 0, ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: ret <2 x i32> <i32 42, i32 11>
+;
ret <2 x i32> < i32 42, i32 11 >
}
define <4 x i4> @call_vector(<4 x i4> %v) {
- ; CHECK-LABEL: @call_vector.dfsan
- ; CHECK-NEXT: %[[V:.*]] = load i8, ptr @__dfsan_arg_tls, align [[ALIGN:2]]
- ; CHECK-NEXT: store i8 %[[V]], ptr @__dfsan_arg_tls, align [[ALIGN]]
- ; CHECK-NEXT: %r = call <4 x i4> @pass_vector.dfsan(<4 x i4> %v)
- ; CHECK-NEXT: %_dfsret = load i8, ptr @__dfsan_retval_tls, align [[ALIGN]]
- ; CHECK-NEXT: store i8 %_dfsret, ptr @__dfsan_retval_tls, align [[ALIGN]]
- ; CHECK-NEXT: ret <4 x i4> %r
-
+; CHECK-LABEL: define <4 x i4> @call_vector(
+; CHECK-SAME: <4 x i4> [[V:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: store i8 [[TMP1]], ptr @__dfsan_arg_tls, align 2
+; CHECK-NEXT: [[R:%.*]] = call <4 x i4> @pass_vector(<4 x i4> [[V]])
+; CHECK-NEXT: [[_DFSRET:%.*]] = load i8, ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: store i8 [[_DFSRET]], ptr @__dfsan_retval_tls, align 2
+; CHECK-NEXT: ret <4 x i4> [[R]]
+;
%r = call <4 x i4> @pass_vector(<4 x i4> %v)
ret <4 x i4> %r
}
diff --git a/llvm/test/MC/RISCV/attribute-arch.s b/llvm/test/MC/RISCV/attribute-arch.s
index b8cd6de..111616d 100644
--- a/llvm/test/MC/RISCV/attribute-arch.s
+++ b/llvm/test/MC/RISCV/attribute-arch.s
@@ -420,8 +420,8 @@
.attribute arch, "rv32ia_zacas1p0"
# CHECK: attribute 5, "rv32i2p1_a2p1_zaamo1p0_zacas1p0_zalrsc1p0"
-.attribute arch, "rv32izalasr0p1"
-# CHECK: attribute 5, "rv32i2p1_zalasr0p1"
+.attribute arch, "rv32izalasr0p9"
+# CHECK: attribute 5, "rv32i2p1_zalasr0p9"
.attribute arch, "rv32i_xcvalu"
# CHECK: attribute 5, "rv32i2p1_xcvalu1p0"
diff --git a/llvm/test/TableGen/RuntimeLibcallEmitter-calling-conv.td b/llvm/test/TableGen/RuntimeLibcallEmitter-calling-conv.td
index 7ec70b7..98a376b 100644
--- a/llvm/test/TableGen/RuntimeLibcallEmitter-calling-conv.td
+++ b/llvm/test/TableGen/RuntimeLibcallEmitter-calling-conv.td
@@ -48,39 +48,79 @@ def MSP430LibraryWithCondCC : SystemRuntimeLibrary<isMSP430,
// CHECK-NEXT: Entry = DefaultCC;
// CHECK-NEXT: }
// CHECK-EMPTY:
-// CHECK-NEXT: setLibcallImpl(RTLIB::MALLOC, RTLIB::impl_malloc); // malloc
+// CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
+// CHECK-NEXT: {RTLIB::MALLOC, RTLIB::impl_malloc}, // malloc
+// CHECK-NEXT: };
// CHECK-EMPTY:
-// CHECK-NEXT: setLibcallImpl(RTLIB::SDIVREM_I8, RTLIB::impl___divmodqi4); // __divmodqi4
-// CHECK-NEXT: setLibcallImplCallingConv(RTLIB::impl___divmodqi4, CallingConv::AVR_BUILTIN);
-// CHECK-NEXT: setLibcallImpl(RTLIB::UDIVREM_I16, RTLIB::impl___udivmodhi4); // __udivmodhi4
-// CHECK-NEXT: setLibcallImplCallingConv(RTLIB::impl___udivmodhi4, CallingConv::AVR_BUILTIN);
+// CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls) {
+// CHECK-NEXT: setLibcallImpl(Func, Impl);
+// CHECK-NEXT: }
+// CHECK-EMPTY:
+// CHECK-NEXT: static const LibcallImplPair LibraryCalls_AlwaysAvailable_AVR_BUILTIN[] = {
+// CHECK-NEXT: {RTLIB::SDIVREM_I8, RTLIB::impl___divmodqi4}, // __divmodqi4
+// CHECK-NEXT: {RTLIB::UDIVREM_I16, RTLIB::impl___udivmodhi4}, // __udivmodhi4
+// CHECK-NEXT: };
+// CHECK-EMPTY:
+// CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls_AlwaysAvailable_AVR_BUILTIN) {
+// CHECK-NEXT: setLibcallImpl(Func, Impl);
+// CHECK-NEXT: setLibcallImplCallingConv(Impl, CallingConv::AVR_BUILTIN);
+// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: return;
// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: if (TT.getArch() == Triple::avr) {
-// CHECK-NEXT: setLibcallImpl(RTLIB::MALLOC, RTLIB::impl_malloc); // malloc
+// CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
+// CHECK-NEXT: {RTLIB::MALLOC, RTLIB::impl_malloc}, // malloc
+// CHECK-NEXT: };
+// CHECK-EMPTY:
+// CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls) {
+// CHECK-NEXT: setLibcallImpl(Func, Impl);
+// CHECK-NEXT: }
// CHECK-EMPTY:
-// CHECK-NEXT: setLibcallImpl(RTLIB::SDIVREM_I8, RTLIB::impl___divmodqi4); // __divmodqi4
-// CHECK-NEXT: setLibcallImplCallingConv(RTLIB::impl___divmodqi4, CallingConv::AVR_BUILTIN);
-// CHECK-NEXT: setLibcallImpl(RTLIB::UDIVREM_I16, RTLIB::impl___udivmodhi4); // __udivmodhi4
-// CHECK-NEXT: setLibcallImplCallingConv(RTLIB::impl___udivmodhi4, CallingConv::AVR_BUILTIN);
+// CHECK-NEXT: static const LibcallImplPair LibraryCalls_AlwaysAvailable_AVR_BUILTIN[] = {
+// CHECK-NEXT: {RTLIB::SDIVREM_I8, RTLIB::impl___divmodqi4}, // __divmodqi4
+// CHECK-NEXT: {RTLIB::UDIVREM_I16, RTLIB::impl___udivmodhi4}, // __udivmodhi4
+// CHECK-NEXT: };
+// CHECK-EMPTY:
+// CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls_AlwaysAvailable_AVR_BUILTIN) {
+// CHECK-NEXT: setLibcallImpl(Func, Impl);
+// CHECK-NEXT: setLibcallImplCallingConv(Impl, CallingConv::AVR_BUILTIN);
+// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: return;
// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: if (TT.getArch() == Triple::msp430) {
-// CHECK-NEXT: setLibcallImpl(RTLIB::MALLOC, RTLIB::impl_malloc); // malloc
+// CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
+// CHECK-NEXT: {RTLIB::MALLOC, RTLIB::impl_malloc}, // malloc
+// CHECK-NEXT: };
+// CHECK-EMPTY:
+// CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls) {
+// CHECK-NEXT: setLibcallImpl(Func, Impl);
+// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: if ( isFoo() ) {
-// CHECK-NEXT: setLibcallImpl(RTLIB::SDIVREM_I8, RTLIB::impl___divmodqi4); // __divmodqi4
-// CHECK-NEXT: setLibcallImplCallingConv(RTLIB::impl___divmodqi4, CallingConv::AVR_BUILTIN);
+// CHECK-NEXT: static const LibcallImplPair LibraryCalls_anonymous_3_AVR_BUILTIN[] = {
+// CHECK-NEXT: {RTLIB::SDIVREM_I8, RTLIB::impl___divmodqi4}, // __divmodqi4
+// CHECK-NEXT: };
+// CHECK-EMPTY:
+// CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls_anonymous_3_AVR_BUILTIN) {
+// CHECK-NEXT: setLibcallImpl(Func, Impl);
+// CHECK-NEXT: setLibcallImplCallingConv(Impl, CallingConv::AVR_BUILTIN);
+// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: if ( isBar() ) {
-// CHECK-NEXT: setLibcallImpl(RTLIB::UDIVREM_I16, RTLIB::impl___udivmodhi4); // __udivmodhi4
-// CHECK-NEXT: setLibcallImplCallingConv(RTLIB::impl___udivmodhi4, CallingConv::MSP430_BUILTIN);
+// CHECK-NEXT: static const LibcallImplPair LibraryCalls_anonymous_5_MSP430_BUILTIN[] = {
+// CHECK-NEXT: {RTLIB::UDIVREM_I16, RTLIB::impl___udivmodhi4}, // __udivmodhi4
+// CHECK-NEXT: };
+// CHECK-EMPTY:
+// CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls_anonymous_5_MSP430_BUILTIN) {
+// CHECK-NEXT: setLibcallImpl(Func, Impl);
+// CHECK-NEXT: setLibcallImplCallingConv(Impl, CallingConv::MSP430_BUILTIN);
+// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: }
// CHECK-EMPTY:
diff --git a/llvm/test/TableGen/RuntimeLibcallEmitter-conflict-warning.td b/llvm/test/TableGen/RuntimeLibcallEmitter-conflict-warning.td
index 112c33e..136c81b 100644
--- a/llvm/test/TableGen/RuntimeLibcallEmitter-conflict-warning.td
+++ b/llvm/test/TableGen/RuntimeLibcallEmitter-conflict-warning.td
@@ -25,7 +25,9 @@ def dup1 : RuntimeLibcallImpl<ANOTHER_DUP>;
// func_a and func_b both provide SOME_FUNC.
// CHECK: if (isTargetArchA()) {
-// CHECK-NEXT: setLibcallImpl(RTLIB::SOME_FUNC, RTLIB::impl_func_b); // func_b
+// CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
+// CHECK-NEXT: {RTLIB::SOME_FUNC, RTLIB::impl_func_b}, // func_b
+// CHECK-NEXT: };
// ERR: :[[@LINE+1]]:5: warning: conflicting implementations for libcall SOME_FUNC: func_b, func_a
def TheSystemLibraryA : SystemRuntimeLibrary<isTargetArchA,
@@ -33,8 +35,10 @@ def TheSystemLibraryA : SystemRuntimeLibrary<isTargetArchA,
>;
// CHECK: if (isTargetArchB()) {
-// CHECK-NEXT: setLibcallImpl(RTLIB::OTHER_FUNC, RTLIB::impl_other_func); // other_func
-// CHECK-NEXT: setLibcallImpl(RTLIB::SOME_FUNC, RTLIB::impl_func_a); // func_a
+// CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
+// CHECK-NEXT: {RTLIB::OTHER_FUNC, RTLIB::impl_other_func}, // other_func
+// CHECK-NEXT: {RTLIB::SOME_FUNC, RTLIB::impl_func_a}, // func_a
+// CHECK-NEXT: };
// ERR: :[[@LINE+1]]:5: warning: conflicting implementations for libcall SOME_FUNC: func_a, func_b
def TheSystemLibraryB : SystemRuntimeLibrary<isTargetArchB,
@@ -42,9 +46,11 @@ def TheSystemLibraryB : SystemRuntimeLibrary<isTargetArchB,
>;
// CHECK: if (isTargetArchC()) {
-// CHECK-NEXT: setLibcallImpl(RTLIB::ANOTHER_DUP, RTLIB::impl_dup1); // dup1
-// CHECK-NEXT: setLibcallImpl(RTLIB::OTHER_FUNC, RTLIB::impl_other_func); // other_func
-// CHECK-NEXT: setLibcallImpl(RTLIB::SOME_FUNC, RTLIB::impl_func_a); // func_a
+// CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
+// CHECK-NEXT: {RTLIB::ANOTHER_DUP, RTLIB::impl_dup1}, // dup1
+// CHECK-NEXT: {RTLIB::OTHER_FUNC, RTLIB::impl_other_func}, // other_func
+// CHECK-NEXT: {RTLIB::SOME_FUNC, RTLIB::impl_func_a}, // func_a
+// CHECK-NEXT: };
// ERR: :[[@LINE+3]]:5: warning: conflicting implementations for libcall ANOTHER_DUP: dup1, dup0
// ERR: :[[@LINE+2]]:5: warning: conflicting implementations for libcall SOME_FUNC: func_a, func_b
diff --git a/llvm/test/TableGen/RuntimeLibcallEmitter.td b/llvm/test/TableGen/RuntimeLibcallEmitter.td
index f4577f8..c336fee 100644
--- a/llvm/test/TableGen/RuntimeLibcallEmitter.td
+++ b/llvm/test/TableGen/RuntimeLibcallEmitter.td
@@ -190,20 +190,42 @@ def BlahLibrary : SystemRuntimeLibrary<isBlahArch, (add calloc, LibraryWithCondi
// CHECK-NEXT: }
// CHECK: void llvm::RTLIB::RuntimeLibcallsInfo::setTargetRuntimeLibcallSets(const llvm::Triple &TT, ExceptionHandling ExceptionModel, FloatABI::ABIType FloatABI, EABI EABIVersion, StringRef ABIName) {
+// CHECK-NEXT: struct LibcallImplPair {
+// CHECK-NEXT: RTLIB::Libcall Func;
+// CHECK-NEXT: RTLIB::LibcallImpl Impl;
+// CHECK-NEXT: };
// CHECK-EMPTY:
// CHECK-NEXT: if (TT.getArch() == Triple::blah) {
-// CHECK-NEXT: setLibcallImpl(RTLIB::BZERO, RTLIB::impl_bzero); // bzero
-// CHECK-NEXT: setLibcallImpl(RTLIB::CALLOC, RTLIB::impl_calloc); // calloc
-// CHECK-NEXT: setLibcallImpl(RTLIB::SQRT_F128, RTLIB::impl_sqrtl_f128); // sqrtl
+// CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
+// CHECK-NEXT: {RTLIB::BZERO, RTLIB::impl_bzero}, // bzero
+// CHECK-NEXT: {RTLIB::CALLOC, RTLIB::impl_calloc}, // calloc
+// CHECK-NEXT: {RTLIB::SQRT_F128, RTLIB::impl_sqrtl_f128}, // sqrtl
+// CHECK-NEXT: };
+// CHECK-EMPTY:
+// CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls) {
+// CHECK-NEXT: setLibcallImpl(Func, Impl);
+// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: if (TT.hasCompilerRT()) {
-// CHECK-NEXT: setLibcallImpl(RTLIB::SHL_I32, RTLIB::impl___ashlsi3); // __ashlsi3
-// CHECK-NEXT: setLibcallImpl(RTLIB::SRL_I64, RTLIB::impl___lshrdi3); // __lshrdi3
+// CHECK-NEXT: static const LibcallImplPair LibraryCalls_hasCompilerRT[] = {
+// CHECK-NEXT: {RTLIB::SHL_I32, RTLIB::impl___ashlsi3}, // __ashlsi3
+// CHECK-NEXT: {RTLIB::SRL_I64, RTLIB::impl___lshrdi3}, // __lshrdi3
+// CHECK-NEXT: };
+// CHECK-EMPTY:
+// CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls_hasCompilerRT) {
+// CHECK-NEXT: setLibcallImpl(Func, Impl);
+// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: if (TT.getOS() == Triple::bar) {
-// CHECK-NEXT: setLibcallImpl(RTLIB::MEMSET, RTLIB::impl____memset); // ___memset
+// CHECK-NEXT: static const LibcallImplPair LibraryCalls_isBarOS[] = {
+// CHECK-NEXT: {RTLIB::MEMSET, RTLIB::impl____memset}, // ___memset
+// CHECK-NEXT: };
+// CHECK-EMPTY:
+// CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls_isBarOS) {
+// CHECK-NEXT: setLibcallImpl(Func, Impl);
+// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: }
// CHECK-EMPTY:
@@ -211,19 +233,37 @@ def BlahLibrary : SystemRuntimeLibrary<isBlahArch, (add calloc, LibraryWithCondi
// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: if (TT.getArch() == Triple::buzz) {
-// CHECK-NEXT: setLibcallImpl(RTLIB::SHL_I32, RTLIB::impl___ashlsi3); // __ashlsi3
-// CHECK-NEXT: setLibcallImpl(RTLIB::SQRT_F80, RTLIB::impl_sqrtl_f80); // sqrtl
-// CHECK-NEXT: setLibcallImpl(RTLIB::SRL_I64, RTLIB::impl___lshrdi3); // __lshrdi3
+// CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
+// CHECK-NEXT: {RTLIB::SHL_I32, RTLIB::impl___ashlsi3}, // __ashlsi3
+// CHECK-NEXT: {RTLIB::SQRT_F80, RTLIB::impl_sqrtl_f80}, // sqrtl
+// CHECK-NEXT: {RTLIB::SRL_I64, RTLIB::impl___lshrdi3}, // __lshrdi3
+// CHECK-NEXT: };
+// CHECK-EMPTY:
+// CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls) {
+// CHECK-NEXT: setLibcallImpl(Func, Impl);
+// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: return;
// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: if (TT.getArch() == Triple::foo) {
-// CHECK-NEXT: setLibcallImpl(RTLIB::BZERO, RTLIB::impl_bzero); // bzero
-// CHECK-NEXT: setLibcallImpl(RTLIB::SQRT_F128, RTLIB::impl_sqrtl_f128); // sqrtl
+// CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
+// CHECK-NEXT: {RTLIB::BZERO, RTLIB::impl_bzero}, // bzero
+// CHECK-NEXT: {RTLIB::SQRT_F128, RTLIB::impl_sqrtl_f128}, // sqrtl
+// CHECK-NEXT: };
+// CHECK-EMPTY:
+// CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls) {
+// CHECK-NEXT: setLibcallImpl(Func, Impl);
+// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: if (TT.getOS() == Triple::bar) {
-// CHECK-NEXT: setLibcallImpl(RTLIB::MEMSET, RTLIB::impl____memset); // ___memset
+// CHECK-NEXT: static const LibcallImplPair LibraryCalls_isBarOS[] = {
+// CHECK-NEXT: {RTLIB::MEMSET, RTLIB::impl____memset}, // ___memset
+// CHECK-NEXT: };
+// CHECK-EMPTY:
+// CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls_isBarOS) {
+// CHECK-NEXT: setLibcallImpl(Func, Impl);
+// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: }
// CHECK-EMPTY:
@@ -231,10 +271,16 @@ def BlahLibrary : SystemRuntimeLibrary<isBlahArch, (add calloc, LibraryWithCondi
// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: if (TT.getArch() == Triple::simple) {
-// CHECK-NEXT: setLibcallImpl(RTLIB::CALLOC, RTLIB::impl_calloc); // calloc
-// CHECK-NEXT: setLibcallImpl(RTLIB::SHL_I32, RTLIB::impl___ashlsi3); // __ashlsi3
-// CHECK-NEXT: setLibcallImpl(RTLIB::SQRT_F80, RTLIB::impl_sqrtl_f80); // sqrtl
-// CHECK-NEXT: setLibcallImpl(RTLIB::SRL_I64, RTLIB::impl___lshrdi3); // __lshrdi3
+// CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
+// CHECK-NEXT: {RTLIB::CALLOC, RTLIB::impl_calloc}, // calloc
+// CHECK-NEXT: {RTLIB::SHL_I32, RTLIB::impl___ashlsi3}, // __ashlsi3
+// CHECK-NEXT: {RTLIB::SQRT_F80, RTLIB::impl_sqrtl_f80}, // sqrtl
+// CHECK-NEXT: {RTLIB::SRL_I64, RTLIB::impl___lshrdi3}, // __lshrdi3
+// CHECK-NEXT: };
+// CHECK-EMPTY:
+// CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls) {
+// CHECK-NEXT: setLibcallImpl(Func, Impl);
+// CHECK-NEXT: }
// CHECK-EMPTY:
// CHECK-NEXT: return;
// CHECK-NEXT: }
diff --git a/llvm/test/Transforms/DFAJumpThreading/dfa-jump-threading-analysis.ll b/llvm/test/Transforms/DFAJumpThreading/dfa-jump-threading-analysis.ll
index e7b7dff..4173c32 100644
--- a/llvm/test/Transforms/DFAJumpThreading/dfa-jump-threading-analysis.ll
+++ b/llvm/test/Transforms/DFAJumpThreading/dfa-jump-threading-analysis.ll
@@ -1,11 +1,12 @@
; REQUIRES: asserts
; RUN: opt -S -passes=dfa-jump-threading -debug-only=dfa-jump-threading -disable-output %s 2>&1 | FileCheck %s
+; RUN: opt -S -passes=dfa-jump-threading -print-prof-data %s -o - | FileCheck %s --check-prefix=PROFILE
; This test checks that the analysis identifies all threadable paths in a
; simple CFG. A threadable path includes a list of basic blocks, the exit
; state, and the block that determines the next state.
; < path of BBs that form a cycle > [ state, determinator ]
-define i32 @test1(i32 %num) {
+define i32 @test1(i32 %num) !prof !0{
; CHECK: < case2 for.inc for.body > [ 1, for.inc ]
; CHECK-NEXT: < for.inc for.body > [ 1, for.inc ]
; CHECK-NEXT: < case1 for.inc for.body > [ 2, for.inc ]
@@ -25,8 +26,11 @@ case1:
br label %for.inc
case2:
+ ; PROFILE-LABEL: @test1
+ ; PROFILE-LABEL: case2:
+ ; PROFILE: br i1 %cmp, label %for.inc.jt1, label %sel.si.unfold.false.jt2, !prof !1 ; !1 = !{!"branch_weights", i32 3, i32 5}
%cmp = icmp eq i32 %count, 50
- %sel = select i1 %cmp, i32 1, i32 2
+ %sel = select i1 %cmp, i32 1, i32 2, !prof !1
br label %for.inc
for.inc:
@@ -182,7 +186,7 @@ bb66: ; preds = %bb59
}
; Value %init is not predictable but it's okay since it is the value initial to the switch.
-define i32 @initial.value.positive1(i32 %init) {
+define i32 @initial.value.positive1(i32 %init) !prof !0 {
; CHECK: < loop.1.backedge loop.1 loop.2 loop.3 > [ 1, loop.1 ]
; CHECK-NEXT: < case4 loop.1.backedge state.1.be2.si.unfold.false loop.1 loop.2 loop.3 > [ 2, loop.1.backedge ]
; CHECK-NEXT: < case2 loop.1.backedge state.1.be2.si.unfold.false loop.1 loop.2 loop.3 > [ 4, loop.1.backedge ]
@@ -241,3 +245,6 @@ infloop.i:
exit:
ret i32 0
}
+
+!0 = !{!"function_entry_count", i32 10}
+!1 = !{!"branch_weights", i32 3, i32 5}
diff --git a/llvm/test/Transforms/DFAJumpThreading/dfa-jump-threading-transform.ll b/llvm/test/Transforms/DFAJumpThreading/dfa-jump-threading-transform.ll
index ad05684..092c854 100644
--- a/llvm/test/Transforms/DFAJumpThreading/dfa-jump-threading-transform.ll
+++ b/llvm/test/Transforms/DFAJumpThreading/dfa-jump-threading-transform.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals
; RUN: opt -S -passes=dfa-jump-threading %s | FileCheck %s
; These tests check that the DFA jump threading transformation is applied
@@ -301,7 +301,7 @@ end:
ret void
}
-define void @pr106083_invalidBBarg_fold(i1 %cmp1, i1 %cmp2, i1 %not, ptr %d) {
+define void @pr106083_invalidBBarg_fold(i1 %cmp1, i1 %cmp2, i1 %not, ptr %d) !prof !0 {
; CHECK-LABEL: @pr106083_invalidBBarg_fold(
; CHECK-NEXT: bb:
; CHECK-NEXT: br label [[BB1:%.*]]
@@ -310,7 +310,7 @@ define void @pr106083_invalidBBarg_fold(i1 %cmp1, i1 %cmp2, i1 %not, ptr %d) {
; CHECK-NEXT: br i1 [[NOT:%.*]], label [[BB7_JT0]], label [[BB2:%.*]]
; CHECK: BB2:
; CHECK-NEXT: store i16 0, ptr [[D:%.*]], align 2
-; CHECK-NEXT: br i1 [[CMP2:%.*]], label [[BB7:%.*]], label [[SPEC_SELECT_SI_UNFOLD_FALSE_JT0:%.*]]
+; CHECK-NEXT: br i1 [[CMP2:%.*]], label [[BB7:%.*]], label [[SPEC_SELECT_SI_UNFOLD_FALSE_JT0:%.*]], !prof [[PROF1:![0-9]+]]
; CHECK: spec.select.si.unfold.false:
; CHECK-NEXT: br label [[BB9]]
; CHECK: spec.select.si.unfold.false.jt0:
@@ -357,7 +357,7 @@ BB1: ; preds = %BB1.backedge, %BB7,
BB2: ; preds = %BB1
store i16 0, ptr %d, align 2
- %spec.select = select i1 %cmp2, i32 %sel, i32 0
+ %spec.select = select i1 %cmp2, i32 %sel, i32 0, !prof !1
br label %BB7
BB7: ; preds = %BB2, %BB1
@@ -444,3 +444,10 @@ select.unfold: ; preds = %bb1, %.loopexit6
bb2: ; preds = %select.unfold
unreachable
}
+
+!0 = !{!"function_entry_count", i32 10}
+!1 = !{!"branch_weights", i32 3, i32 5}
+;.
+; CHECK: [[META0:![0-9]+]] = !{!"function_entry_count", i32 10}
+; CHECK: [[PROF1]] = !{!"branch_weights", i32 3, i32 5}
+;.
diff --git a/llvm/test/Transforms/GVN/2011-07-07-MatchIntrinsicExtract.ll b/llvm/test/Transforms/GVN/2011-07-07-MatchIntrinsicExtract.ll
index b139e07..acd0317 100644
--- a/llvm/test/Transforms/GVN/2011-07-07-MatchIntrinsicExtract.ll
+++ b/llvm/test/Transforms/GVN/2011-07-07-MatchIntrinsicExtract.ll
@@ -1,9 +1,19 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=gvn -S | FileCheck %s
-;
%0 = type { i64, i1 }
define i64 @test1(i64 %a, i64 %b) nounwind ssp {
+; CHECK-LABEL: define i64 @test1(
+; CHECK-SAME: i64 [[A:%.*]], i64 [[B:%.*]]) #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 [[A]], i64 [[B]])
+; CHECK-NEXT: [[TMP1:%.*]] = extractvalue { i64, i1 } [[TMP0]], 0
+; CHECK-NEXT: [[TMP2:%.*]] = insertvalue [[TMP0]] poison, i64 [[TMP1]], 0
+; CHECK-NEXT: [[TMP3:%.*]] = extractvalue { i64, i1 } [[TMP0]], 1
+; CHECK-NEXT: [[TMP4:%.*]] = insertvalue [[TMP0]] [[TMP2]], i1 [[TMP3]], 1
+; CHECK-NEXT: ret i64 [[TMP1]]
+;
entry:
%uadd = tail call %0 @llvm.uadd.with.overflow.i64(i64 %a, i64 %b)
%uadd.0 = extractvalue %0 %uadd, 0
@@ -11,11 +21,17 @@ entry:
ret i64 %add1
}
-; CHECK-LABEL: @test1(
-; CHECK-NOT: add1
-; CHECK: ret
-
define i64 @test2(i64 %a, i64 %b) nounwind ssp {
+; CHECK-LABEL: define i64 @test2(
+; CHECK-SAME: i64 [[A:%.*]], i64 [[B:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = call { i64, i1 } @llvm.usub.with.overflow.i64(i64 [[A]], i64 [[B]])
+; CHECK-NEXT: [[TMP1:%.*]] = extractvalue { i64, i1 } [[TMP0]], 0
+; CHECK-NEXT: [[TMP2:%.*]] = insertvalue [[TMP0]] poison, i64 [[TMP1]], 0
+; CHECK-NEXT: [[TMP3:%.*]] = extractvalue { i64, i1 } [[TMP0]], 1
+; CHECK-NEXT: [[TMP4:%.*]] = insertvalue [[TMP0]] [[TMP2]], i1 [[TMP3]], 1
+; CHECK-NEXT: ret i64 [[TMP1]]
+;
entry:
%usub = tail call %0 @llvm.usub.with.overflow.i64(i64 %a, i64 %b)
%usub.0 = extractvalue %0 %usub, 0
@@ -23,11 +39,17 @@ entry:
ret i64 %sub1
}
-; CHECK-LABEL: @test2(
-; CHECK-NOT: sub1
-; CHECK: ret
-
define i64 @test3(i64 %a, i64 %b) nounwind ssp {
+; CHECK-LABEL: define i64 @test3(
+; CHECK-SAME: i64 [[A:%.*]], i64 [[B:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 [[A]], i64 [[B]])
+; CHECK-NEXT: [[TMP1:%.*]] = extractvalue { i64, i1 } [[TMP0]], 0
+; CHECK-NEXT: [[TMP2:%.*]] = insertvalue [[TMP0]] poison, i64 [[TMP1]], 0
+; CHECK-NEXT: [[TMP3:%.*]] = extractvalue { i64, i1 } [[TMP0]], 1
+; CHECK-NEXT: [[TMP4:%.*]] = insertvalue [[TMP0]] [[TMP2]], i1 [[TMP3]], 1
+; CHECK-NEXT: ret i64 [[TMP1]]
+;
entry:
%umul = tail call %0 @llvm.umul.with.overflow.i64(i64 %a, i64 %b)
%umul.0 = extractvalue %0 %umul, 0
@@ -35,11 +57,17 @@ entry:
ret i64 %mul1
}
-; CHECK-LABEL: @test3(
-; CHECK-NOT: mul1
-; CHECK: ret
-
define i64 @test4(i64 %a, i64 %b) nounwind ssp {
+; CHECK-LABEL: define i64 @test4(
+; CHECK-SAME: i64 [[A:%.*]], i64 [[B:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 [[A]], i64 [[B]])
+; CHECK-NEXT: [[TMP1:%.*]] = extractvalue { i64, i1 } [[TMP0]], 0
+; CHECK-NEXT: [[TMP2:%.*]] = insertvalue [[TMP0]] poison, i64 [[TMP1]], 0
+; CHECK-NEXT: [[TMP3:%.*]] = extractvalue { i64, i1 } [[TMP0]], 1
+; CHECK-NEXT: [[TMP4:%.*]] = insertvalue [[TMP0]] [[TMP2]], i1 [[TMP3]], 1
+; CHECK-NEXT: ret i64 [[TMP1]]
+;
entry:
%sadd = tail call %0 @llvm.sadd.with.overflow.i64(i64 %a, i64 %b)
%sadd.0 = extractvalue %0 %sadd, 0
@@ -47,11 +75,17 @@ entry:
ret i64 %add1
}
-; CHECK-LABEL: @test4(
-; CHECK-NOT: add1
-; CHECK: ret
-
define i64 @test5(i64 %a, i64 %b) nounwind ssp {
+; CHECK-LABEL: define i64 @test5(
+; CHECK-SAME: i64 [[A:%.*]], i64 [[B:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = call { i64, i1 } @llvm.ssub.with.overflow.i64(i64 [[A]], i64 [[B]])
+; CHECK-NEXT: [[TMP1:%.*]] = extractvalue { i64, i1 } [[TMP0]], 0
+; CHECK-NEXT: [[TMP2:%.*]] = insertvalue [[TMP0]] poison, i64 [[TMP1]], 0
+; CHECK-NEXT: [[TMP3:%.*]] = extractvalue { i64, i1 } [[TMP0]], 1
+; CHECK-NEXT: [[TMP4:%.*]] = insertvalue [[TMP0]] [[TMP2]], i1 [[TMP3]], 1
+; CHECK-NEXT: ret i64 [[TMP1]]
+;
entry:
%ssub = tail call %0 @llvm.ssub.with.overflow.i64(i64 %a, i64 %b)
%ssub.0 = extractvalue %0 %ssub, 0
@@ -59,11 +93,17 @@ entry:
ret i64 %sub1
}
-; CHECK-LABEL: @test5(
-; CHECK-NOT: sub1
-; CHECK: ret
-
define i64 @test6(i64 %a, i64 %b) nounwind ssp {
+; CHECK-LABEL: define i64 @test6(
+; CHECK-SAME: i64 [[A:%.*]], i64 [[B:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 [[A]], i64 [[B]])
+; CHECK-NEXT: [[TMP1:%.*]] = extractvalue { i64, i1 } [[TMP0]], 0
+; CHECK-NEXT: [[TMP2:%.*]] = insertvalue [[TMP0]] poison, i64 [[TMP1]], 0
+; CHECK-NEXT: [[TMP3:%.*]] = extractvalue { i64, i1 } [[TMP0]], 1
+; CHECK-NEXT: [[TMP4:%.*]] = insertvalue [[TMP0]] [[TMP2]], i1 [[TMP3]], 1
+; CHECK-NEXT: ret i64 [[TMP1]]
+;
entry:
%smul = tail call %0 @llvm.smul.with.overflow.i64(i64 %a, i64 %b)
%smul.0 = extractvalue %0 %smul, 0
@@ -71,10 +111,6 @@ entry:
ret i64 %mul1
}
-; CHECK-LABEL: @test6(
-; CHECK-NOT: mul1
-; CHECK: ret
-
declare void @exit(i32) noreturn
declare %0 @llvm.uadd.with.overflow.i64(i64, i64) nounwind readnone
declare %0 @llvm.usub.with.overflow.i64(i64, i64) nounwind readnone
@@ -82,4 +118,3 @@ declare %0 @llvm.umul.with.overflow.i64(i64, i64) nounwind readnone
declare %0 @llvm.sadd.with.overflow.i64(i64, i64) nounwind readnone
declare %0 @llvm.ssub.with.overflow.i64(i64, i64) nounwind readnone
declare %0 @llvm.smul.with.overflow.i64(i64, i64) nounwind readnone
-
diff --git a/llvm/test/Transforms/GVN/2011-09-07-TypeIdFor.ll b/llvm/test/Transforms/GVN/2011-09-07-TypeIdFor.ll
index 01cc3164..52e6a8e 100644
--- a/llvm/test/Transforms/GVN/2011-09-07-TypeIdFor.ll
+++ b/llvm/test/Transforms/GVN/2011-09-07-TypeIdFor.ll
@@ -1,4 +1,6 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=gvn -S | FileCheck %s
+
%struct.__fundamental_type_info_pseudo = type { %struct.__type_info_pseudo }
%struct.__type_info_pseudo = type { ptr, ptr }
@@ -18,26 +20,70 @@ declare void @__cxa_end_catch()
declare i32 @__gxx_personality_v0(i32, i64, ptr, ptr)
define void @_Z3foov() uwtable personality ptr @__gxx_personality_v0 {
+; CHECK-LABEL: define void @_Z3foov(
+; CHECK-SAME: ) #[[ATTR1:[0-9]+]] personality ptr @__gxx_personality_v0 {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: invoke void @_Z4barv()
+; CHECK-NEXT: to label %[[RETURN:.*]] unwind label %[[LPAD:.*]]
+; CHECK: [[LPAD]]:
+; CHECK-NEXT: [[TMP0:%.*]] = landingpad { ptr, i32 }
+; CHECK-NEXT: catch ptr @_ZTIi
+; CHECK-NEXT: catch ptr @_ZTIb
+; CHECK-NEXT: catch ptr @_ZTIi
+; CHECK-NEXT: catch ptr @_ZTIb
+; CHECK-NEXT: [[EXC_PTR2_I:%.*]] = extractvalue { ptr, i32 } [[TMP0]], 0
+; CHECK-NEXT: [[FILTER3_I:%.*]] = extractvalue { ptr, i32 } [[TMP0]], 1
+; CHECK-NEXT: [[TYPEID_I:%.*]] = tail call i32 @llvm.eh.typeid.for.p0(ptr @_ZTIi)
+; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[FILTER3_I]], [[TYPEID_I]]
+; CHECK-NEXT: br i1 [[TMP1]], label %[[PPAD:.*]], label %[[NEXT:.*]]
+; CHECK: [[NEXT]]:
+; CHECK-NEXT: [[TYPEID1_I:%.*]] = tail call i32 @llvm.eh.typeid.for.p0(ptr @_ZTIb)
+; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[FILTER3_I]], [[TYPEID1_I]]
+; CHECK-NEXT: br i1 [[TMP2]], label %[[PPAD2:.*]], label %[[NEXT2:.*]]
+; CHECK: [[PPAD]]:
+; CHECK-NEXT: [[TMP3:%.*]] = tail call ptr @__cxa_begin_catch(ptr [[EXC_PTR2_I]]) #[[ATTR0:[0-9]+]]
+; CHECK-NEXT: tail call void @__cxa_end_catch() #[[ATTR0]]
+; CHECK-NEXT: br label %[[RETURN]]
+; CHECK: [[PPAD2]]:
+; CHECK-NEXT: [[D_2073_5_I:%.*]] = tail call ptr @__cxa_begin_catch(ptr [[EXC_PTR2_I]]) #[[ATTR0]]
+; CHECK-NEXT: tail call void @__cxa_end_catch() #[[ATTR0]]
+; CHECK-NEXT: br label %[[RETURN]]
+; CHECK: [[NEXT2]]:
+; CHECK-NEXT: call void @_Z7cleanupv()
+; CHECK-NEXT: br i1 false, label %[[PPAD3:.*]], label %[[NEXT3:.*]]
+; CHECK: [[NEXT3]]:
+; CHECK-NEXT: br i1 false, label %[[PPAD4:.*]], label %[[UNWIND:.*]]
+; CHECK: [[UNWIND]]:
+; CHECK-NEXT: resume { ptr, i32 } [[TMP0]]
+; CHECK: [[PPAD3]]:
+; CHECK-NEXT: [[TMP4:%.*]] = tail call ptr @__cxa_begin_catch(ptr [[EXC_PTR2_I]]) #[[ATTR0]]
+; CHECK-NEXT: tail call void @__cxa_end_catch() #[[ATTR0]]
+; CHECK-NEXT: br label %[[RETURN]]
+; CHECK: [[PPAD4]]:
+; CHECK-NEXT: [[D_2080_5:%.*]] = tail call ptr @__cxa_begin_catch(ptr [[EXC_PTR2_I]]) #[[ATTR0]]
+; CHECK-NEXT: tail call void @__cxa_end_catch() #[[ATTR0]]
+; CHECK-NEXT: br label %[[RETURN]]
+; CHECK: [[RETURN]]:
+; CHECK-NEXT: ret void
+;
entry:
invoke void @_Z4barv()
- to label %return unwind label %lpad
+ to label %return unwind label %lpad
lpad: ; preds = %entry
%0 = landingpad { ptr, i32 }
- catch ptr @_ZTIi
- catch ptr @_ZTIb
- catch ptr @_ZTIi
- catch ptr @_ZTIb
+ catch ptr @_ZTIi
+ catch ptr @_ZTIb
+ catch ptr @_ZTIi
+ catch ptr @_ZTIb
%exc_ptr2.i = extractvalue { ptr, i32 } %0, 0
%filter3.i = extractvalue { ptr, i32 } %0, 1
%typeid.i = tail call i32 @llvm.eh.typeid.for(ptr @_ZTIi)
-; CHECK: call i32 @llvm.eh.typeid.for
%1 = icmp eq i32 %filter3.i, %typeid.i
br i1 %1, label %ppad, label %next
next: ; preds = %lpad
%typeid1.i = tail call i32 @llvm.eh.typeid.for(ptr @_ZTIb)
-; CHECK: call i32 @llvm.eh.typeid.for
%2 = icmp eq i32 %filter3.i, %typeid1.i
br i1 %2, label %ppad2, label %next2
@@ -54,7 +100,6 @@ ppad2: ; preds = %next
next2: ; preds = %next
call void @_Z7cleanupv()
%typeid = tail call i32 @llvm.eh.typeid.for(ptr @_ZTIi)
-; CHECK-NOT: call i32 @llvm.eh.typeid.for
%4 = icmp eq i32 %filter3.i, %typeid
br i1 %4, label %ppad3, label %next3
diff --git a/llvm/test/Transforms/GVN/2012-05-22-PreCrash.ll b/llvm/test/Transforms/GVN/2012-05-22-PreCrash.ll
index 28b7178..205dff7 100644
--- a/llvm/test/Transforms/GVN/2012-05-22-PreCrash.ll
+++ b/llvm/test/Transforms/GVN/2012-05-22-PreCrash.ll
@@ -1,7 +1,35 @@
-; RUN: opt < %s -passes=gvn
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt < %s -passes=gvn -S | FileCheck %s
+
; PR12858
define void @fn5(i16 signext %p1, i8 signext %p2, i1 %arg) nounwind uwtable {
+; CHECK-LABEL: define void @fn5(
+; CHECK-SAME: i16 signext [[P1:%.*]], i8 signext [[P2:%.*]], i1 [[ARG:%.*]]) #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: br i1 [[ARG]], label %[[IF_ELSE:.*]], label %[[IF_THEN:.*]]
+; CHECK: [[IF_THEN]]:
+; CHECK-NEXT: [[DOTPRE:%.*]] = sext i16 [[P1]] to i32
+; CHECK-NEXT: br label %[[IF_END:.*]]
+; CHECK: [[IF_ELSE]]:
+; CHECK-NEXT: [[CONV:%.*]] = sext i16 [[P1]] to i32
+; CHECK-NEXT: br label %[[IF_END]]
+; CHECK: [[IF_END]]:
+; CHECK-NEXT: [[CONV1_PRE_PHI:%.*]] = phi i32 [ [[CONV]], %[[IF_ELSE]] ], [ [[DOTPRE]], %[[IF_THEN]] ]
+; CHECK-NEXT: br i1 [[ARG]], label %[[IF_THEN3:.*]], label %[[IF_ELSE4:.*]]
+; CHECK: [[IF_THEN3]]:
+; CHECK-NEXT: [[DOTPRE1:%.*]] = sext i8 [[P2]] to i32
+; CHECK-NEXT: br label %[[IF_END12:.*]]
+; CHECK: [[IF_ELSE4]]:
+; CHECK-NEXT: [[CONV7:%.*]] = sext i8 [[P2]] to i32
+; CHECK-NEXT: [[CMP8:%.*]] = icmp eq i32 [[CONV1_PRE_PHI]], [[CONV7]]
+; CHECK-NEXT: br i1 [[CMP8]], label %[[IF_THEN10:.*]], label %[[IF_END12]]
+; CHECK: [[IF_THEN10]]:
+; CHECK-NEXT: br label %[[IF_END12]]
+; CHECK: [[IF_END12]]:
+; CHECK-NEXT: [[CONV13_PRE_PHI:%.*]] = phi i32 [ [[CONV7]], %[[IF_THEN10]] ], [ [[CONV7]], %[[IF_ELSE4]] ], [ [[DOTPRE1]], %[[IF_THEN3]] ]
+; CHECK-NEXT: ret void
+;
entry:
br i1 %arg, label %if.else, label %if.then
diff --git a/llvm/test/Transforms/GVN/2016-08-30-MaskedScatterGather-inseltpoison.ll b/llvm/test/Transforms/GVN/2016-08-30-MaskedScatterGather-inseltpoison.ll
index c2b123b..aeb3de9 100644
--- a/llvm/test/Transforms/GVN/2016-08-30-MaskedScatterGather-inseltpoison.ll
+++ b/llvm/test/Transforms/GVN/2016-08-30-MaskedScatterGather-inseltpoison.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=gvn -S | FileCheck %s
declare void @llvm.masked.scatter.v2i32.v2p0(<2 x i32> , <2 x ptr> , i32 , <2 x i1> )
@@ -5,14 +6,29 @@ declare <2 x i32> @llvm.masked.gather.v2i32.v2p0(<2 x ptr>, i32, <2 x i1>, <2 x
; This test ensures that masked scatter and gather operations, which take vectors of pointers,
; do not have pointer aliasing ignored when being processed.
-; No scatter/gather calls should end up eliminated
-; CHECK: llvm.masked.gather
-; CHECK: llvm.masked.gather
-; CHECK: llvm.masked.scatter
-; CHECK: llvm.masked.gather
-; CHECK: llvm.masked.scatter
-; CHECK: llvm.masked.gather
+; No scatter/gather calls should end up eliminated.
+
define spir_kernel void @test(<2 x ptr> %in1, <2 x ptr> %in2, ptr %out) {
+; CHECK-LABEL: define spir_kernel void @test(
+; CHECK-SAME: <2 x ptr> [[IN1:%.*]], <2 x ptr> [[IN2:%.*]], ptr [[OUT:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP_0:%.*]] = alloca i32, align 4
+; CHECK-NEXT: [[TMP_1:%.*]] = alloca i32, align 4
+; CHECK-NEXT: [[TMP_I:%.*]] = insertelement <2 x ptr> poison, ptr [[TMP_0]], i32 0
+; CHECK-NEXT: [[TMP:%.*]] = insertelement <2 x ptr> [[TMP_I]], ptr [[TMP_1]], i32 1
+; CHECK-NEXT: [[IN1_V:%.*]] = call <2 x i32> @llvm.masked.gather.v2i32.v2p0(<2 x ptr> [[IN1]], i32 1, <2 x i1> splat (i1 true), <2 x i32> undef)
+; CHECK-NEXT: [[IN2_V:%.*]] = call <2 x i32> @llvm.masked.gather.v2i32.v2p0(<2 x ptr> [[IN2]], i32 1, <2 x i1> splat (i1 true), <2 x i32> undef)
+; CHECK-NEXT: call void @llvm.masked.scatter.v2i32.v2p0(<2 x i32> [[IN1_V]], <2 x ptr> [[TMP]], i32 1, <2 x i1> splat (i1 true))
+; CHECK-NEXT: [[TMP_V_0:%.*]] = call <2 x i32> @llvm.masked.gather.v2i32.v2p0(<2 x ptr> [[TMP]], i32 1, <2 x i1> splat (i1 true), <2 x i32> undef)
+; CHECK-NEXT: call void @llvm.masked.scatter.v2i32.v2p0(<2 x i32> [[IN2_V]], <2 x ptr> [[TMP]], i32 1, <2 x i1> splat (i1 true))
+; CHECK-NEXT: [[TMP_V_1:%.*]] = call <2 x i32> @llvm.masked.gather.v2i32.v2p0(<2 x ptr> [[TMP]], i32 1, <2 x i1> splat (i1 true), <2 x i32> undef)
+; CHECK-NEXT: [[TMP_V_1_0:%.*]] = extractelement <2 x i32> [[TMP_V_1]], i32 0
+; CHECK-NEXT: [[TMP_V_1_1:%.*]] = extractelement <2 x i32> [[TMP_V_1]], i32 1
+; CHECK-NEXT: store i32 [[TMP_V_1_0]], ptr [[OUT]], align 4
+; CHECK-NEXT: [[OUT_1:%.*]] = getelementptr i32, ptr [[OUT]], i32 1
+; CHECK-NEXT: store i32 [[TMP_V_1_1]], ptr [[OUT_1]], align 4
+; CHECK-NEXT: ret void
+;
entry:
; Just some temporary storage
%tmp.0 = alloca i32
diff --git a/llvm/test/Transforms/GVN/2016-08-30-MaskedScatterGather.ll b/llvm/test/Transforms/GVN/2016-08-30-MaskedScatterGather.ll
index e18f388..4c00060 100644
--- a/llvm/test/Transforms/GVN/2016-08-30-MaskedScatterGather.ll
+++ b/llvm/test/Transforms/GVN/2016-08-30-MaskedScatterGather.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=gvn -S | FileCheck %s
declare void @llvm.masked.scatter.v2i32.v2p0(<2 x i32> , <2 x ptr> , i32 , <2 x i1> )
@@ -5,14 +6,29 @@ declare <2 x i32> @llvm.masked.gather.v2i32.v2p0(<2 x ptr>, i32, <2 x i1>, <2 x
; This test ensures that masked scatter and gather operations, which take vectors of pointers,
; do not have pointer aliasing ignored when being processed.
-; No scatter/gather calls should end up eliminated
-; CHECK: llvm.masked.gather
-; CHECK: llvm.masked.gather
-; CHECK: llvm.masked.scatter
-; CHECK: llvm.masked.gather
-; CHECK: llvm.masked.scatter
-; CHECK: llvm.masked.gather
+; No scatter/gather calls should end up eliminated.
+
define spir_kernel void @test(<2 x ptr> %in1, <2 x ptr> %in2, ptr %out) {
+; CHECK-LABEL: define spir_kernel void @test(
+; CHECK-SAME: <2 x ptr> [[IN1:%.*]], <2 x ptr> [[IN2:%.*]], ptr [[OUT:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP_0:%.*]] = alloca i32, align 4
+; CHECK-NEXT: [[TMP_1:%.*]] = alloca i32, align 4
+; CHECK-NEXT: [[TMP_I:%.*]] = insertelement <2 x ptr> undef, ptr [[TMP_0]], i32 0
+; CHECK-NEXT: [[TMP:%.*]] = insertelement <2 x ptr> [[TMP_I]], ptr [[TMP_1]], i32 1
+; CHECK-NEXT: [[IN1_V:%.*]] = call <2 x i32> @llvm.masked.gather.v2i32.v2p0(<2 x ptr> [[IN1]], i32 1, <2 x i1> splat (i1 true), <2 x i32> undef)
+; CHECK-NEXT: [[IN2_V:%.*]] = call <2 x i32> @llvm.masked.gather.v2i32.v2p0(<2 x ptr> [[IN2]], i32 1, <2 x i1> splat (i1 true), <2 x i32> undef)
+; CHECK-NEXT: call void @llvm.masked.scatter.v2i32.v2p0(<2 x i32> [[IN1_V]], <2 x ptr> [[TMP]], i32 1, <2 x i1> splat (i1 true))
+; CHECK-NEXT: [[TMP_V_0:%.*]] = call <2 x i32> @llvm.masked.gather.v2i32.v2p0(<2 x ptr> [[TMP]], i32 1, <2 x i1> splat (i1 true), <2 x i32> undef)
+; CHECK-NEXT: call void @llvm.masked.scatter.v2i32.v2p0(<2 x i32> [[IN2_V]], <2 x ptr> [[TMP]], i32 1, <2 x i1> splat (i1 true))
+; CHECK-NEXT: [[TMP_V_1:%.*]] = call <2 x i32> @llvm.masked.gather.v2i32.v2p0(<2 x ptr> [[TMP]], i32 1, <2 x i1> splat (i1 true), <2 x i32> undef)
+; CHECK-NEXT: [[TMP_V_1_0:%.*]] = extractelement <2 x i32> [[TMP_V_1]], i32 0
+; CHECK-NEXT: [[TMP_V_1_1:%.*]] = extractelement <2 x i32> [[TMP_V_1]], i32 1
+; CHECK-NEXT: store i32 [[TMP_V_1_0]], ptr [[OUT]], align 4
+; CHECK-NEXT: [[OUT_1:%.*]] = getelementptr i32, ptr [[OUT]], i32 1
+; CHECK-NEXT: store i32 [[TMP_V_1_1]], ptr [[OUT_1]], align 4
+; CHECK-NEXT: ret void
+;
entry:
; Just some temporary storage
%tmp.0 = alloca i32
diff --git a/llvm/test/Transforms/GVN/MemdepMiscompile.ll b/llvm/test/Transforms/GVN/MemdepMiscompile.ll
index cb9b011..7c8accb 100644
--- a/llvm/test/Transforms/GVN/MemdepMiscompile.ll
+++ b/llvm/test/Transforms/GVN/MemdepMiscompile.ll
@@ -1,4 +1,6 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=gvn -S | FileCheck %s
+
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
target triple = "x86_64-apple-macosx10.7.0"
@@ -7,14 +9,38 @@ target triple = "x86_64-apple-macosx10.7.0"
; Make sure we do not replace load %shouldExit in while.cond.backedge
; with a phi node where the value from while.body is 0.
define i32 @test() nounwind ssp {
+; CHECK-LABEL: define i32 @test(
+; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[SHOULDEXIT:%.*]] = alloca i32, align 4
+; CHECK-NEXT: [[TASKSIDLE:%.*]] = alloca i32, align 4
+; CHECK-NEXT: store i32 0, ptr [[SHOULDEXIT]], align 4
+; CHECK-NEXT: store i32 0, ptr [[TASKSIDLE]], align 4
+; CHECK-NEXT: call void @CTestInitialize(ptr [[TASKSIDLE]]) #[[ATTR1:[0-9]+]]
+; CHECK-NEXT: br i1 true, label %[[WHILE_BODY_LR_PH:.*]], label %[[ENTRY_WHILE_END_CRIT_EDGE:.*]]
+; CHECK: [[ENTRY_WHILE_END_CRIT_EDGE]]:
+; CHECK-NEXT: br label %[[WHILE_END:.*]]
+; CHECK: [[WHILE_BODY_LR_PH]]:
+; CHECK-NEXT: br label %[[WHILE_BODY:.*]]
+; CHECK: [[WHILE_BODY]]:
+; CHECK-NEXT: call void @RunInMode(i32 100) #[[ATTR1]]
+; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[TASKSIDLE]], align 4
+; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i32 [[TMP0]], 0
+; CHECK-NEXT: br i1 [[TOBOOL]], label %[[WHILE_COND_BACKEDGE:.*]], label %[[IF_THEN:.*]]
+; CHECK: [[IF_THEN]]:
+; CHECK-NEXT: store i32 0, ptr [[TASKSIDLE]], align 4
+; CHECK-NEXT: call void @TimerCreate(ptr [[SHOULDEXIT]]) #[[ATTR1]]
+; CHECK-NEXT: br label %[[WHILE_COND_BACKEDGE]]
+; CHECK: [[WHILE_COND_BACKEDGE]]:
+; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[SHOULDEXIT]], align 4
+; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[TMP1]], 0
+; CHECK-NEXT: br i1 [[CMP]], label %[[WHILE_BODY]], label %[[WHILE_COND_WHILE_END_CRIT_EDGE:.*]]
+; CHECK: [[WHILE_COND_WHILE_END_CRIT_EDGE]]:
+; CHECK-NEXT: br label %[[WHILE_END]]
+; CHECK: [[WHILE_END]]:
+; CHECK-NEXT: ret i32 0
+;
entry:
-; CHECK: test()
-; CHECK: while.body:
-; CHECK: call void @RunInMode
-; CHECK: br i1 %tobool, label %while.cond.backedge, label %if.then
-; CHECK: while.cond.backedge:
-; CHECK: load i32, ptr %shouldExit
-; CHECK: br i1 %cmp, label %while.body
%shouldExit = alloca i32, align 4
%tasksIdle = alloca i32, align 4
store i32 0, ptr %shouldExit, align 4
diff --git a/llvm/test/Transforms/GVN/basic-undef-test.ll b/llvm/test/Transforms/GVN/basic-undef-test.ll
index d12c3db..459ef25 100644
--- a/llvm/test/Transforms/GVN/basic-undef-test.ll
+++ b/llvm/test/Transforms/GVN/basic-undef-test.ll
@@ -1,15 +1,22 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S < %s | FileCheck %s
-; ModuleID = 'test3.ll'
+
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
+; RLE over the second load.
define i32 @main(ptr %foo) {
+; CHECK-LABEL: define i32 @main(
+; CHECK-SAME: ptr [[FOO:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[FOO]], align 4
+; CHECK-NEXT: store i32 5, ptr undef, align 4
+; CHECK-NEXT: [[TMP1:%.*]] = add i32 [[TMP0]], [[TMP0]]
+; CHECK-NEXT: ret i32 [[TMP1]]
+;
entry:
-; CHECK: load i32, ptr %foo, align 4
%0 = load i32, ptr %foo, align 4
store i32 5, ptr undef, align 4
-; CHECK-NOT: load i32, ptr %foo, align 4
%1 = load i32, ptr %foo, align 4
-; CHECK: add i32 %0, %0
%2 = add i32 %0, %1
ret i32 %2
}
diff --git a/llvm/test/Transforms/GVN/bitcast-of-call.ll b/llvm/test/Transforms/GVN/bitcast-of-call.ll
index 6c4e8d2..3f40085 100644
--- a/llvm/test/Transforms/GVN/bitcast-of-call.ll
+++ b/llvm/test/Transforms/GVN/bitcast-of-call.ll
@@ -1,13 +1,20 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=gvn -S | FileCheck %s
+
; PR2213
define ptr @f(ptr %x) {
+; CHECK-LABEL: define ptr @f(
+; CHECK-SAME: ptr [[X:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP:%.*]] = call ptr @m(i32 12)
+; CHECK-NEXT: ret ptr [[TMP]]
+;
entry:
- %tmp = call ptr @m( i32 12 ) ; <ptr> [#uses=2]
- %tmp1 = bitcast ptr %tmp to ptr ; <ptr> [#uses=0]
- %tmp2 = bitcast ptr %tmp to ptr ; <ptr> [#uses=0]
-; CHECK-NOT: %tmp2
- ret ptr %tmp2
+ %tmp = call ptr @m(i32 12) ; <ptr> [#uses=2]
+ %tmp1 = bitcast ptr %tmp to ptr ; <ptr> [#uses=0]
+ %tmp2 = bitcast ptr %tmp to ptr ; <ptr> [#uses=0]
+ ret ptr %tmp2
}
declare ptr @m(i32)
diff --git a/llvm/test/Transforms/GVN/br-identical.ll b/llvm/test/Transforms/GVN/br-identical.ll
index 9997e01..5266889 100644
--- a/llvm/test/Transforms/GVN/br-identical.ll
+++ b/llvm/test/Transforms/GVN/br-identical.ll
@@ -1,8 +1,32 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S -o - %s | FileCheck %s
; If a branch has two identical successors, we cannot declare either dead.
-
define void @widget(i1 %p) {
+; CHECK-LABEL: define void @widget(
+; CHECK-SAME: i1 [[P:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*]]:
+; CHECK-NEXT: br label %[[BB2:.*]]
+; CHECK: [[BB2]]:
+; CHECK-NEXT: [[T1:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[T2:%.*]], %[[BB7:.*]] ]
+; CHECK-NEXT: [[T2]] = add i64 [[T1]], 1
+; CHECK-NEXT: [[T3:%.*]] = icmp ult i64 0, [[T2]]
+; CHECK-NEXT: br i1 [[T3]], label %[[BB3:.*]], label %[[BB4:.*]]
+; CHECK: [[BB3]]:
+; CHECK-NEXT: [[T4:%.*]] = call i64 @f()
+; CHECK-NEXT: br label %[[BB4]]
+; CHECK: [[BB4]]:
+; CHECK-NEXT: [[FOO:%.*]] = phi i64 [ [[T4]], %[[BB3]] ], [ 0, %[[BB2]] ]
+; CHECK-NEXT: br i1 [[P]], label %[[BB5:.*]], label %[[BB6:.*]]
+; CHECK: [[BB5]]:
+; CHECK-NEXT: br i1 true, label %[[BB7]], label %[[BB7]]
+; CHECK: [[BB6]]:
+; CHECK-NEXT: br i1 true, label %[[BB7]], label %[[BB7]]
+; CHECK: [[BB7]]:
+; CHECK-NEXT: br i1 [[P]], label %[[BB2]], label %[[BB8:.*]]
+; CHECK: [[BB8]]:
+; CHECK-NEXT: ret void
+;
entry:
br label %bb2
@@ -17,7 +41,6 @@ bb3:
br label %bb4
bb4:
- ; CHECK-NOT: phi {{.*}} undef
%foo = phi i64 [ %t4, %bb3 ], [ 0, %bb2 ]
br i1 %p, label %bb5, label %bb6
diff --git a/llvm/test/Transforms/GVN/calls-nonlocal.ll b/llvm/test/Transforms/GVN/calls-nonlocal.ll
index e891545..4340d57 100644
--- a/llvm/test/Transforms/GVN/calls-nonlocal.ll
+++ b/llvm/test/Transforms/GVN/calls-nonlocal.ll
@@ -1,75 +1,78 @@
-; Two occurrences of strlen should be zapped.
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=gvn -S | FileCheck %s
+
+; Two occurrences of strlen should be zapped.
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
target triple = "i386-apple-darwin9"
define i32 @test(i32 %g, ptr %P) nounwind {
+; CHECK-LABEL: define i32 @test(
+; CHECK-SAME: i32 [[G:%.*]], ptr [[P:%.*]]) #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP2:%.*]] = call i32 @strlen(ptr [[P]]) #[[ATTR1:[0-9]+]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[TMP2]], 100
+; CHECK-NEXT: [[TMP34:%.*]] = zext i1 [[TMP3]] to i8
+; CHECK-NEXT: br i1 [[TMP3]], label %[[BB:.*]], label %[[BB6:.*]]
+; CHECK: [[BB]]:
+; CHECK-NEXT: br label %[[BB27:.*]]
+; CHECK: [[BB6]]:
+; CHECK-NEXT: [[TMP8:%.*]] = add i32 [[G]], 42
+; CHECK-NEXT: br i1 false, label %[[BB14:.*]], label %[[BB16:.*]]
+; CHECK: [[BB14]]:
+; CHECK-NEXT: br label %[[BB27]]
+; CHECK: [[BB16]]:
+; CHECK-NEXT: [[TMP18:%.*]] = mul i32 [[TMP8]], 2
+; CHECK-NEXT: br i1 false, label %[[BB24:.*]], label %[[BB26:.*]]
+; CHECK: [[BB24]]:
+; CHECK-NEXT: br label %[[BB27]]
+; CHECK: [[BB26]]:
+; CHECK-NEXT: br label %[[BB27]]
+; CHECK: [[BB27]]:
+; CHECK-NEXT: [[TMP_0:%.*]] = phi i32 [ 11, %[[BB26]] ], [ poison, %[[BB24]] ], [ poison, %[[BB14]] ], [ [[G]], %[[BB]] ]
+; CHECK-NEXT: ret i32 [[TMP_0]]
+;
entry:
- %tmp2 = call i32 @strlen( ptr %P ) nounwind readonly ; <i32> [#uses=1]
- %tmp3 = icmp eq i32 %tmp2, 100 ; <i1> [#uses=1]
- %tmp34 = zext i1 %tmp3 to i8 ; <i8> [#uses=1]
- %toBool = icmp ne i8 %tmp34, 0 ; <i1> [#uses=1]
- br i1 %toBool, label %bb, label %bb6
+ %tmp2 = call i32 @strlen( ptr %P ) nounwind readonly ; <i32> [#uses=1]
+ %tmp3 = icmp eq i32 %tmp2, 100 ; <i1> [#uses=1]
+ %tmp34 = zext i1 %tmp3 to i8 ; <i8> [#uses=1]
+ %toBool = icmp ne i8 %tmp34, 0 ; <i1> [#uses=1]
+ br i1 %toBool, label %bb, label %bb6
bb: ; preds = %entry
- br label %bb27
+ br label %bb27
bb6: ; preds = %entry
- %tmp8 = add i32 %g, 42 ; <i32> [#uses=2]
- %tmp10 = call i32 @strlen( ptr %P ) nounwind readonly ; <i32> [#uses=1]
- %tmp11 = icmp eq i32 %tmp10, 100 ; <i1> [#uses=1]
- %tmp1112 = zext i1 %tmp11 to i8 ; <i8> [#uses=1]
- %toBool13 = icmp ne i8 %tmp1112, 0 ; <i1> [#uses=1]
- br i1 %toBool13, label %bb14, label %bb16
+ %tmp8 = add i32 %g, 42 ; <i32> [#uses=2]
+ %tmp10 = call i32 @strlen( ptr %P ) nounwind readonly ; <i32> [#uses=1]
+ %tmp11 = icmp eq i32 %tmp10, 100 ; <i1> [#uses=1]
+ %tmp1112 = zext i1 %tmp11 to i8 ; <i8> [#uses=1]
+ %toBool13 = icmp ne i8 %tmp1112, 0 ; <i1> [#uses=1]
+ br i1 %toBool13, label %bb14, label %bb16
bb14: ; preds = %bb6
- br label %bb27
+ br label %bb27
bb16: ; preds = %bb6
- %tmp18 = mul i32 %tmp8, 2 ; <i32> [#uses=1]
- %tmp20 = call i32 @strlen( ptr %P ) nounwind readonly ; <i32> [#uses=1]
- %tmp21 = icmp eq i32 %tmp20, 100 ; <i1> [#uses=1]
- %tmp2122 = zext i1 %tmp21 to i8 ; <i8> [#uses=1]
- %toBool23 = icmp ne i8 %tmp2122, 0 ; <i1> [#uses=1]
- br i1 %toBool23, label %bb24, label %bb26
+ %tmp18 = mul i32 %tmp8, 2 ; <i32> [#uses=1]
+ %tmp20 = call i32 @strlen( ptr %P ) nounwind readonly ; <i32> [#uses=1]
+ %tmp21 = icmp eq i32 %tmp20, 100 ; <i1> [#uses=1]
+ %tmp2122 = zext i1 %tmp21 to i8 ; <i8> [#uses=1]
+ %toBool23 = icmp ne i8 %tmp2122, 0 ; <i1> [#uses=1]
+ br i1 %toBool23, label %bb24, label %bb26
bb24: ; preds = %bb16
- br label %bb27
+ br label %bb27
bb26: ; preds = %bb16
- br label %bb27
+ br label %bb27
bb27: ; preds = %bb26, %bb24, %bb14, %bb
- %tmp.0 = phi i32 [ 11, %bb26 ], [ %tmp18, %bb24 ], [ %tmp8, %bb14 ], [ %g, %bb ] ; <i32> [#uses=1]
- br label %return
+ %tmp.0 = phi i32 [ 11, %bb26 ], [ %tmp18, %bb24 ], [ %tmp8, %bb14 ], [ %g, %bb ] ; <i32> [#uses=1]
+ br label %return
return: ; preds = %bb27
- ret i32 %tmp.0
+ ret i32 %tmp.0
}
-; CHECK: define i32 @test(i32 %g, ptr %P) #0 {
-; CHECK: entry:
-; CHECK: %tmp2 = call i32 @strlen(ptr %P) #1
-; CHECK: %tmp3 = icmp eq i32 %tmp2, 100
-; CHECK: %tmp34 = zext i1 %tmp3 to i8
-; CHECK: br i1 %tmp3, label %bb, label %bb6
-; CHECK: bb:
-; CHECK: br label %bb27
-; CHECK: bb6:
-; CHECK: %tmp8 = add i32 %g, 42
-; CHECK: br i1 false, label %bb14, label %bb16
-; CHECK: bb14:
-; CHECK: br label %bb27
-; CHECK: bb16:
-; CHECK: %tmp18 = mul i32 %tmp8, 2
-; CHECK: br i1 false, label %bb24, label %bb26
-; CHECK: bb24:
-; CHECK: br label %bb27
-; CHECK: bb26:
-; CHECK: br label %bb27
-; CHECK: bb27:
-; CHECK: %tmp.0 = phi i32 [ 11, %bb26 ], [ poison, %bb24 ], [ poison, %bb14 ], [ %g, %bb ]
-; CHECK: ret i32 %tmp.0
-; CHECK: }
-declare i32 @strlen(ptr) nounwind readonly
+declare i32 @strlen(ptr) nounwind readonly
diff --git a/llvm/test/Transforms/GVN/calls-readonly.ll b/llvm/test/Transforms/GVN/calls-readonly.ll
index b4855e4..2fb5621 100644
--- a/llvm/test/Transforms/GVN/calls-readonly.ll
+++ b/llvm/test/Transforms/GVN/calls-readonly.ll
@@ -1,10 +1,28 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=gvn -S | FileCheck %s
+
; Should delete the second call to strlen even though the intervening strchr call exists.
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
target triple = "i386-apple-darwin7"
define ptr @test(ptr %P, ptr %Q, i32 %x, i32 %y) nounwind readonly {
+; CHECK-LABEL: define ptr @test(
+; CHECK-SAME: ptr [[P:%.*]], ptr [[Q:%.*]], i32 [[X:%.*]], i32 [[Y:%.*]]) #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*]]:
+; CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @strlen(ptr [[P]]), !prof [[PROF0:![0-9]+]]
+; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[TMP0]], 0
+; CHECK-NEXT: br i1 [[TMP1]], label %[[BB:.*]], label %[[BB1:.*]]
+; CHECK: [[BB]]:
+; CHECK-NEXT: [[TMP2:%.*]] = sdiv i32 [[X]], [[Y]]
+; CHECK-NEXT: br label %[[BB1]]
+; CHECK: [[BB1]]:
+; CHECK-NEXT: [[X_ADDR_0:%.*]] = phi i32 [ [[TMP2]], %[[BB]] ], [ [[X]], %[[ENTRY]] ]
+; CHECK-NEXT: [[TMP3:%.*]] = tail call ptr @strchr(ptr [[Q]], i32 97)
+; CHECK-NEXT: [[TMP4:%.*]] = add i32 [[X_ADDR_0]], [[TMP0]]
+; CHECK-NEXT: [[TMP5:%.*]] = getelementptr i8, ptr [[TMP3]], i32 [[X_ADDR_0]]
+; CHECK-NEXT: ret ptr [[TMP5]]
+;
entry:
%0 = tail call i32 @strlen(ptr %P), !prof !0 ; <i32> [#uses=2]
%1 = icmp eq i32 %0, 0 ; <i1> [#uses=1]
@@ -24,21 +42,6 @@ bb1: ; preds = %bb, %entry
ret ptr %6
}
-; CHECK: define ptr @test(ptr %P, ptr %Q, i32 %x, i32 %y) #0 {
-; CHECK: entry:
-; CHECK-NEXT: %0 = tail call i32 @strlen(ptr %P), !prof !0
-; CHECK-NEXT: %1 = icmp eq i32 %0, 0
-; CHECK-NEXT: br i1 %1, label %bb, label %bb1
-; CHECK: bb:
-; CHECK-NEXT: %2 = sdiv i32 %x, %y
-; CHECK-NEXT: br label %bb1
-; CHECK: bb1:
-; CHECK-NEXT: %x_addr.0 = phi i32 [ %2, %bb ], [ %x, %entry ]
-; CHECK-NEXT: %3 = tail call ptr @strchr(ptr %Q, i32 97)
-; CHECK-NEXT: %4 = add i32 %x_addr.0, %0
-; CHECK-NEXT: %5 = getelementptr i8, ptr %3, i32 %x_addr.0
-; CHECK-NEXT: ret ptr %5
-; CHECK: }
declare i32 @strlen(ptr) nounwind readonly
@@ -46,3 +49,6 @@ declare ptr @strchr(ptr, i32) nounwind readonly
!0 = !{!"branch_weights", i32 95}
!1 = !{!"branch_weights", i32 95}
+;.
+; CHECK: [[PROF0]] = !{!"branch_weights", i64 190}
+;.
diff --git a/llvm/test/Transforms/GVN/cond_br.ll b/llvm/test/Transforms/GVN/cond_br.ll
index fb84b62..10ee3a0 100644
--- a/llvm/test/Transforms/GVN/cond_br.ll
+++ b/llvm/test/Transforms/GVN/cond_br.ll
@@ -1,12 +1,25 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S < %s | FileCheck %s
+
@y = external global i32
@z = external global i32
; Function Attrs: nounwind ssp uwtable
define void @foo(i32 %x) {
-; CHECK: @foo(i32 %x)
-; CHECK: %.pre = load i32, ptr @y
-; CHECK: call void @bar(i32 %.pre)
+; CHECK-LABEL: define void @foo(
+; CHECK-SAME: i32 [[X:%.*]]) {
+; CHECK-NEXT: [[DOTPRE:%.*]] = load i32, ptr @y, align 4
+; CHECK-NEXT: br i1 false, label %[[IF_THEN:.*]], label %[[ENTRY_IF_END_CRIT_EDGE:.*]]
+; CHECK: [[ENTRY_IF_END_CRIT_EDGE]]:
+; CHECK-NEXT: br label %[[IF_END:.*]]
+; CHECK: [[IF_THEN]]:
+; CHECK-NEXT: [[ADD:%.*]] = add nsw i32 [[X]], 3
+; CHECK-NEXT: store i32 [[ADD]], ptr @y, align 4
+; CHECK-NEXT: br label %[[IF_END]]
+; CHECK: [[IF_END]]:
+; CHECK-NEXT: tail call void @bar(i32 [[DOTPRE]])
+; CHECK-NEXT: ret void
+;
%t = sub i32 %x, %x
%.pre = load i32, ptr @y, align 4
@@ -28,9 +41,22 @@ if.end: ; preds = %entry.if.end_crit_e
}
define void @foo2(i32 %x) {
-; CHECK: @foo2(i32 %x)
-; CHECK: %.pre = load i32, ptr @y
-; CHECK: tail call void @bar(i32 %.pre)
+; CHECK-LABEL: define void @foo2(
+; CHECK-SAME: i32 [[X:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[DOTPRE:%.*]] = load i32, ptr @y, align 4
+; CHECK-NEXT: br i1 false, label %[[IF_THEN:.*]], label %[[IF_ELSE:.*]]
+; CHECK: [[IF_THEN]]:
+; CHECK-NEXT: [[ADD:%.*]] = add nsw i32 [[X]], 3
+; CHECK-NEXT: store i32 [[ADD]], ptr @y, align 4
+; CHECK-NEXT: br label %[[IF_END:.*]]
+; CHECK: [[IF_ELSE]]:
+; CHECK-NEXT: store i32 1, ptr @z, align 4
+; CHECK-NEXT: br label %[[IF_END]]
+; CHECK: [[IF_END]]:
+; CHECK-NEXT: tail call void @bar(i32 [[DOTPRE]])
+; CHECK-NEXT: ret void
+;
entry:
%t = sub i32 %x, %x
%.pre = load i32, ptr @y, align 4
diff --git a/llvm/test/Transforms/GVN/cond_br2.ll b/llvm/test/Transforms/GVN/cond_br2.ll
index ff80328..6ceec95 100644
--- a/llvm/test/Transforms/GVN/cond_br2.ll
+++ b/llvm/test/Transforms/GVN/cond_br2.ll
@@ -1,4 +1,6 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S < %s | FileCheck %s
+
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
%"class.llvm::SmallVector" = type { %"class.llvm::SmallVectorImpl", [1 x %"union.llvm::SmallVectorBase::U"] }
@@ -10,10 +12,77 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
; Function Attrs: ssp uwtable
define void @_Z4testv() #0 personality ptr @__gxx_personality_v0 {
-; CHECK: @_Z4testv()
-; CHECK: invoke.cont:
-; CHECK: br i1 true, label %new.notnull.i11, label %if.end.i14
-; CHECK: Retry.i10:
+; CHECK-LABEL: define void @_Z4testv(
+; CHECK-SAME: ) #[[ATTR0:[0-9]+]] personality ptr @__gxx_personality_v0 {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[SV:%.*]] = alloca %"class.llvm::SmallVector", align 16
+; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[SV]]) #[[ATTR4:[0-9]+]]
+; CHECK-NEXT: [[FIRSTEL_I_I_I_I_I_I:%.*]] = getelementptr inbounds %"class.llvm::SmallVector", ptr [[SV]], i64 0, i32 0, i32 0, i32 0, i32 0, i32 3
+; CHECK-NEXT: store ptr [[FIRSTEL_I_I_I_I_I_I]], ptr [[SV]], align 16, !tbaa [[ANYPTR_TBAA0:![0-9]+]]
+; CHECK-NEXT: [[ENDX_I_I_I_I_I_I:%.*]] = getelementptr inbounds %"class.llvm::SmallVector", ptr [[SV]], i64 0, i32 0, i32 0, i32 0, i32 0, i32 1
+; CHECK-NEXT: store ptr [[FIRSTEL_I_I_I_I_I_I]], ptr [[ENDX_I_I_I_I_I_I]], align 8, !tbaa [[ANYPTR_TBAA0]]
+; CHECK-NEXT: [[CAPACITYX_I_I_I_I_I_I:%.*]] = getelementptr inbounds %"class.llvm::SmallVector", ptr [[SV]], i64 0, i32 0, i32 0, i32 0, i32 0, i32 2
+; CHECK-NEXT: [[ADD_PTR_I_I_I_I2_I_I:%.*]] = getelementptr inbounds %"union.llvm::SmallVectorBase::U", ptr [[FIRSTEL_I_I_I_I_I_I]], i64 2
+; CHECK-NEXT: store ptr [[ADD_PTR_I_I_I_I2_I_I]], ptr [[CAPACITYX_I_I_I_I_I_I]], align 16, !tbaa [[ANYPTR_TBAA0]]
+; CHECK-NEXT: br i1 true, label %[[RETRY_I:.*]], label %[[IF_END_I:.*]]
+; CHECK: [[RETRY_I]]:
+; CHECK-NEXT: br i1 false, label %[[RETRY_I_INVOKE_CONT_CRIT_EDGE:.*]], label %[[NEW_NOTNULL_I:.*]]
+; CHECK: [[RETRY_I_INVOKE_CONT_CRIT_EDGE]]:
+; CHECK-NEXT: br label %[[INVOKE_CONT:.*]]
+; CHECK: [[NEW_NOTNULL_I]]:
+; CHECK-NEXT: store i32 1, ptr [[FIRSTEL_I_I_I_I_I_I]], align 4, !tbaa [[INT_TBAA4:![0-9]+]]
+; CHECK-NEXT: br label %[[INVOKE_CONT]]
+; CHECK: [[IF_END_I]]:
+; CHECK-NEXT: invoke void @_ZN4llvm15SmallVectorBase8grow_podEmm(ptr [[SV]], i64 0, i64 4)
+; CHECK-NEXT: to [[DOTNOEXC:label %.*]] unwind label %[[LPAD:.*]]
+; CHECK: [[_NOEXC:.*:]]
+; CHECK-NEXT: [[DOTPRE_I:%.*]] = load ptr, ptr [[ENDX_I_I_I_I_I_I]], align 8, !tbaa [[ANYPTR_TBAA0]]
+; CHECK-NEXT: br label %[[RETRY_I]]
+; CHECK: [[INVOKE_CONT]]:
+; CHECK-NEXT: [[ADD_PTR_I:%.*]] = getelementptr inbounds i8, ptr [[FIRSTEL_I_I_I_I_I_I]], i64 4
+; CHECK-NEXT: store ptr [[ADD_PTR_I]], ptr [[ENDX_I_I_I_I_I_I]], align 8, !tbaa [[ANYPTR_TBAA0]]
+; CHECK-NEXT: br i1 true, label %[[NEW_NOTNULL_I11:.*]], label %[[IF_END_I14:.*]]
+; CHECK: [[RETRY_I10:.*]]:
+; CHECK-NEXT: [[DOTPRE_I13:%.*]] = load ptr, ptr [[ENDX_I_I_I_I_I_I]], align 8, !tbaa [[ANYPTR_TBAA0]]
+; CHECK-NEXT: [[NEW_ISNULL_I9:%.*]] = icmp eq ptr [[DOTPRE_I13]], null
+; CHECK-NEXT: br i1 [[NEW_ISNULL_I9]], label %[[RETRY_I10_INVOKE_CONT2_CRIT_EDGE:.*]], label %[[RETRY_I10_NEW_NOTNULL_I11_CRIT_EDGE:.*]]
+; CHECK: [[RETRY_I10_NEW_NOTNULL_I11_CRIT_EDGE]]:
+; CHECK-NEXT: br label %[[NEW_NOTNULL_I11]]
+; CHECK: [[RETRY_I10_INVOKE_CONT2_CRIT_EDGE]]:
+; CHECK-NEXT: br label %[[INVOKE_CONT2:.*]]
+; CHECK: [[NEW_NOTNULL_I11]]:
+; CHECK-NEXT: store i32 2, ptr [[ADD_PTR_I]], align 4, !tbaa [[INT_TBAA4]]
+; CHECK-NEXT: br label %[[INVOKE_CONT2]]
+; CHECK: [[IF_END_I14]]:
+; CHECK-NEXT: invoke void @_ZN4llvm15SmallVectorBase8grow_podEmm(ptr [[SV]], i64 0, i64 4)
+; CHECK-NEXT: to label %[[RETRY_I10]] unwind label %[[LPAD]]
+; CHECK: [[INVOKE_CONT2]]:
+; CHECK-NEXT: [[ADD_PTR_I12:%.*]] = getelementptr inbounds i8, ptr [[ADD_PTR_I]], i64 4
+; CHECK-NEXT: store ptr [[ADD_PTR_I12]], ptr [[ENDX_I_I_I_I_I_I]], align 8, !tbaa [[ANYPTR_TBAA0]]
+; CHECK-NEXT: invoke void @_Z1gRN4llvm11SmallVectorIiLj8EEE(ptr [[SV]])
+; CHECK-NEXT: to label %[[INVOKE_CONT3:.*]] unwind label %[[LPAD]]
+; CHECK: [[INVOKE_CONT3]]:
+; CHECK-NEXT: [[TMP0:%.*]] = load ptr, ptr [[SV]], align 16, !tbaa [[ANYPTR_TBAA0]]
+; CHECK-NEXT: [[CMP_I_I_I_I19:%.*]] = icmp eq ptr [[TMP0]], [[FIRSTEL_I_I_I_I_I_I]]
+; CHECK-NEXT: br i1 [[CMP_I_I_I_I19]], label %[[_ZN4LLVM11SMALLVECTORIILJ8EED1EV_EXIT21:.*]], label %[[IF_THEN_I_I_I20:.*]]
+; CHECK: [[IF_THEN_I_I_I20]]:
+; CHECK-NEXT: call void @free(ptr [[TMP0]]) #[[ATTR4]]
+; CHECK-NEXT: br label %[[_ZN4LLVM11SMALLVECTORIILJ8EED1EV_EXIT21]]
+; CHECK: [[_ZN4LLVM11SMALLVECTORIILJ8EED1EV_EXIT21]]:
+; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[SV]]) #[[ATTR4]]
+; CHECK-NEXT: ret void
+; CHECK: [[LPAD]]:
+; CHECK-NEXT: [[TMP1:%.*]] = landingpad { ptr, i32 }
+; CHECK-NEXT: cleanup
+; CHECK-NEXT: [[TMP2:%.*]] = load ptr, ptr [[SV]], align 16, !tbaa [[ANYPTR_TBAA0]]
+; CHECK-NEXT: [[CMP_I_I_I_I:%.*]] = icmp eq ptr [[TMP2]], [[FIRSTEL_I_I_I_I_I_I]]
+; CHECK-NEXT: br i1 [[CMP_I_I_I_I]], label %[[EH_RESUME:.*]], label %[[IF_THEN_I_I_I:.*]]
+; CHECK: [[IF_THEN_I_I_I]]:
+; CHECK-NEXT: call void @free(ptr [[TMP2]]) #[[ATTR4]]
+; CHECK-NEXT: br label %[[EH_RESUME]]
+; CHECK: [[EH_RESUME]]:
+; CHECK-NEXT: resume { ptr, i32 } [[TMP1]]
+;
entry:
%sv = alloca %"class.llvm::SmallVector", align 16
@@ -42,7 +111,7 @@ new.notnull.i: ; preds = %Retry.i
if.end.i: ; preds = %entry
invoke void @_ZN4llvm15SmallVectorBase8grow_podEmm(ptr %sv, i64 0, i64 4)
- to label %.noexc unwind label %lpad
+ to label %.noexc unwind label %lpad
.noexc: ; preds = %if.end.i
%.pre.i = load ptr, ptr %EndX.i, align 8, !tbaa !4
@@ -67,14 +136,14 @@ new.notnull.i11: ; preds = %invoke.cont, %Retry
if.end.i14: ; preds = %invoke.cont
invoke void @_ZN4llvm15SmallVectorBase8grow_podEmm(ptr %sv, i64 0, i64 4)
- to label %Retry.i10 unwind label %lpad
+ to label %Retry.i10 unwind label %lpad
invoke.cont2: ; preds = %new.notnull.i11, %Retry.i10
%4 = phi ptr [ null, %Retry.i10 ], [ %3, %new.notnull.i11 ]
%add.ptr.i12 = getelementptr inbounds i8, ptr %4, i64 4
store ptr %add.ptr.i12, ptr %EndX.i, align 8, !tbaa !4
invoke void @_Z1gRN4llvm11SmallVectorIiLj8EEE(ptr %sv)
- to label %invoke.cont3 unwind label %lpad
+ to label %invoke.cont3 unwind label %lpad
invoke.cont3: ; preds = %invoke.cont2
%5 = load ptr, ptr %sv, align 16, !tbaa !4
@@ -91,7 +160,7 @@ _ZN4llvm11SmallVectorIiLj8EED1Ev.exit21: ; preds = %invoke.cont3, %if.t
lpad: ; preds = %if.end.i14, %if.end.i, %invoke.cont2
%6 = landingpad { ptr, i32 }
- cleanup
+ cleanup
%7 = load ptr, ptr %sv, align 16, !tbaa !4
%cmp.i.i.i.i = icmp eq ptr %7, %FirstEl.i.i.i.i.i.i
br i1 %cmp.i.i.i.i, label %eh.resume, label %if.then.i.i.i
@@ -130,3 +199,11 @@ attributes #3 = { nounwind "less-precise-fpmad"="false" "frame-pointer"="all" "n
!3 = !{!"int", !1}
!4 = !{!0, !0, i64 0}
!5 = !{!3, !3, i64 0}
+;.
+; CHECK: [[ANYPTR_TBAA0]] = !{[[META1:![0-9]+]], [[META1]], i64 0}
+; CHECK: [[META1]] = !{!"any pointer", [[META2:![0-9]+]]}
+; CHECK: [[META2]] = !{!"omnipotent char", [[META3:![0-9]+]]}
+; CHECK: [[META3]] = !{!"Simple C/C++ TBAA"}
+; CHECK: [[INT_TBAA4]] = !{[[META5:![0-9]+]], [[META5]], i64 0}
+; CHECK: [[META5]] = !{!"int", [[META2]]}
+;.
diff --git a/llvm/test/Transforms/GVN/crash-no-aa.ll b/llvm/test/Transforms/GVN/crash-no-aa.ll
index 10e6374..f396c10 100644
--- a/llvm/test/Transforms/GVN/crash-no-aa.ll
+++ b/llvm/test/Transforms/GVN/crash-no-aa.ll
@@ -1,10 +1,19 @@
-; RUN: opt -disable-basic-aa -passes=gvn -S < %s
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt -disable-basic-aa -passes=gvn -S -o - < %s | FileCheck %s
+
+; PR5744
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
target triple = "x86_64-unknown-freebsd8.0"
-; PR5744
define i32 @test1(ptr %P) {
+; CHECK-LABEL: define i32 @test1(
+; CHECK-SAME: ptr [[P:%.*]]) {
+; CHECK-NEXT: store i16 42, ptr [[P]], align 2
+; CHECK-NEXT: [[P3:%.*]] = getelementptr { i16, i32 }, ptr [[P]], i32 0, i32 1
+; CHECK-NEXT: [[V:%.*]] = load i32, ptr [[P3]], align 4
+; CHECK-NEXT: ret i32 [[V]]
+;
%P2 = getelementptr {i16, i32}, ptr %P, i32 0, i32 0
store i16 42, ptr %P2
diff --git a/llvm/test/Transforms/GVN/critical-edge-split-failure.ll b/llvm/test/Transforms/GVN/critical-edge-split-failure.ll
index 8eac5fe..40ebe14 100644
--- a/llvm/test/Transforms/GVN/critical-edge-split-failure.ll
+++ b/llvm/test/Transforms/GVN/critical-edge-split-failure.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S -o - %s | FileCheck %s
%struct.sk_buff = type opaque
@@ -10,6 +11,31 @@
declare void @llvm.assume(i1 noundef)
define dso_local void @l2tp_recv_dequeue() local_unnamed_addr {
+; CHECK-LABEL: define dso_local void @l2tp_recv_dequeue() local_unnamed_addr {
+; CHECK-NEXT: [[ENTRY:.*]]:
+; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr @l2tp_recv_dequeue_session, align 4
+; CHECK-NEXT: [[CONV:%.*]] = sext i32 [[TMP0]] to i64
+; CHECK-NEXT: [[TMP1:%.*]] = inttoptr i64 [[CONV]] to ptr
+; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr @l2tp_recv_dequeue_session_2, align 4
+; CHECK-NEXT: [[TOBOOL_NOT:%.*]] = icmp eq i32 [[TMP2]], 0
+; CHECK-NEXT: br label %[[FOR_COND:.*]]
+; CHECK: [[FOR_COND]]:
+; CHECK-NEXT: [[STOREMERGE:%.*]] = phi ptr [ [[TMP1]], %[[ENTRY]] ], [ null, %[[IF_END:.*]] ]
+; CHECK-NEXT: store ptr [[STOREMERGE]], ptr @l2tp_recv_dequeue_skb, align 8
+; CHECK-NEXT: br i1 [[TOBOOL_NOT]], label %[[IF_END]], label %[[IF_THEN:.*]]
+; CHECK: [[IF_THEN]]:
+; CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr [[STOREMERGE]], align 4
+; CHECK-NEXT: store i32 [[TMP3]], ptr @l2tp_recv_dequeue_session_0, align 4
+; CHECK-NEXT: callbr void asm sideeffect "", "!i,~{dirflag},~{fpsr},~{flags}"()
+; CHECK-NEXT: to label %[[ASM_FALLTHROUGH_I:.*]] [label %if.end]
+; CHECK: [[ASM_FALLTHROUGH_I]]:
+; CHECK-NEXT: br label %[[IF_END]]
+; CHECK: [[IF_END]]:
+; CHECK-NEXT: [[TMP4:%.*]] = load i32, ptr [[STOREMERGE]], align 4
+; CHECK-NEXT: [[TOBOOL2_NOT:%.*]] = icmp eq i32 [[TMP4]], 0
+; CHECK-NEXT: tail call void @llvm.assume(i1 [[TOBOOL2_NOT]])
+; CHECK-NEXT: br label %[[FOR_COND]]
+;
entry:
%0 = load i32, ptr @l2tp_recv_dequeue_session, align 4
%conv = sext i32 %0 to i64
@@ -29,10 +55,8 @@ if.then: ; preds = %for.cond
; Splitting the critical edge from if.then to if.end will fail, but should not
; cause an infinite loop in GVN. If we can one day split edges of callbr
; indirect targets, great!
-; CHECK: callbr void asm sideeffect "", "!i,~{dirflag},~{fpsr},~{flags}"()
-; CHECK-NEXT: to label %asm.fallthrough.i [label %if.end]
callbr void asm sideeffect "", "!i,~{dirflag},~{fpsr},~{flags}"()
- to label %asm.fallthrough.i [label %if.end]
+ to label %asm.fallthrough.i [label %if.end]
asm.fallthrough.i: ; preds = %if.then
br label %if.end
@@ -43,4 +67,3 @@ if.end: ; preds = %asm.fallthrough.i,
tail call void @llvm.assume(i1 %tobool2.not)
br label %for.cond
}
-
diff --git a/llvm/test/Transforms/GVN/dbg-redundant-load.ll b/llvm/test/Transforms/GVN/dbg-redundant-load.ll
index 1ba4e8b..094467e 100644
--- a/llvm/test/Transforms/GVN/dbg-redundant-load.ll
+++ b/llvm/test/Transforms/GVN/dbg-redundant-load.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S < %s | FileCheck %s
; Check that the redundant load from %if.then is removed.
@@ -6,15 +7,21 @@
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
-; CHECK: @test_redundant_load(
-; CHECK-LABEL: entry:
-; CHECK-NEXT: load i32, ptr %Y, align 4, !dbg ![[LOC:[0-9]+]]
-; CHECK-LABEL: if.then:
-; CHECK-NOT: load
-; CHECK-LABEL: if.end:
-; CHECK: ![[LOC]] = !DILocation(line: 3, scope: !{{.*}})
-
define i32 @test_redundant_load(i32 %X, ptr %Y) !dbg !6 {
+; CHECK-LABEL: define i32 @test_redundant_load(
+; CHECK-SAME: i32 [[X:%.*]], ptr [[Y:%.*]]) !dbg [[DBG6:![0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*]]:
+; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[Y]], align 4, !dbg [[DBG8:![0-9]+]]
+; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[X]], -1, !dbg [[DBG9:![0-9]+]]
+; CHECK-NEXT: br i1 [[CMP]], label %[[IF_THEN:.*]], label %[[IF_END:.*]], !dbg [[DBG9]]
+; CHECK: [[IF_THEN]]:
+; CHECK-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP0]], [[TMP0]], !dbg [[DBG10:![0-9]+]]
+; CHECK-NEXT: call void @foo(), !dbg [[DBG11:![0-9]+]]
+; CHECK-NEXT: br label %[[IF_END]], !dbg [[DBG12:![0-9]+]]
+; CHECK: [[IF_END]]:
+; CHECK-NEXT: [[RESULT_0:%.*]] = phi i32 [ [[ADD]], %[[IF_THEN]] ], [ [[TMP0]], %[[ENTRY]] ]
+; CHECK-NEXT: ret i32 [[RESULT_0]], !dbg [[DBG13:![0-9]+]]
+;
entry:
%0 = load i32, ptr %Y, align 4, !dbg !8
%cmp = icmp sgt i32 %X, -1, !dbg !9
@@ -50,3 +57,16 @@ declare void @foo()
!11 = !DILocation(line: 7, scope: !6)
!12 = !DILocation(line: 8, scope: !6)
!13 = !DILocation(line: 10, scope: !6)
+;.
+; CHECK: [[META0:![0-9]+]] = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: [[META1:![0-9]+]], isOptimized: false, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: [[META2:![0-9]+]])
+; CHECK: [[META1]] = !DIFile(filename: "test.cpp", directory: "")
+; CHECK: [[META2]] = !{}
+; CHECK: [[DBG6]] = distinct !DISubprogram(name: "test_redundant_load", scope: [[META1]], file: [[META1]], line: 2, type: [[META7:![0-9]+]], scopeLine: 2, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: [[META0]], retainedNodes: [[META2]])
+; CHECK: [[META7]] = !DISubroutineType(types: [[META2]])
+; CHECK: [[DBG8]] = !DILocation(line: 3, scope: [[DBG6]])
+; CHECK: [[DBG9]] = !DILocation(line: 5, scope: [[DBG6]])
+; CHECK: [[DBG10]] = !DILocation(line: 6, scope: [[DBG6]])
+; CHECK: [[DBG11]] = !DILocation(line: 7, scope: [[DBG6]])
+; CHECK: [[DBG12]] = !DILocation(line: 8, scope: [[DBG6]])
+; CHECK: [[DBG13]] = !DILocation(line: 10, scope: [[DBG6]])
+;.
diff --git a/llvm/test/Transforms/GVN/fake-use-constprop.ll b/llvm/test/Transforms/GVN/fake-use-constprop.ll
index 0e7ca10..85b7dc3 100644
--- a/llvm/test/Transforms/GVN/fake-use-constprop.ll
+++ b/llvm/test/Transforms/GVN/fake-use-constprop.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S < %s | FileCheck %s
;
; The Global Value Numbering pass (GVN) propagates boolean values
@@ -33,11 +34,20 @@
;; GVN should propagate a constant value through to a regular call, but not to
;; a fake use, which should continue to track the original value.
-; CHECK: %[[CONV_VAR:[a-zA-Z0-9]+]] = fptosi
-; CHECK: call {{.+}} @bees(i8 0)
-; CHECK: call {{.+}} @llvm.fake.use(i8 %[[CONV_VAR]])
define i32 @foo(float %f) optdebug {
+; CHECK-LABEL: define i32 @foo(
+; CHECK-SAME: float [[F:%.*]]) #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT: [[CONV:%.*]] = fptosi float [[F]] to i8
+; CHECK-NEXT: [[TOBOOL3:%.*]] = icmp eq i8 [[CONV]], 0
+; CHECK-NEXT: br i1 [[TOBOOL3]], label %[[IF_END:.*]], label %[[LAB:.*]]
+; CHECK: [[IF_END]]:
+; CHECK-NEXT: tail call void (...) @bees(i8 0)
+; CHECK-NEXT: tail call void (...) @llvm.fake.use(i8 [[CONV]])
+; CHECK-NEXT: br label %[[LAB]]
+; CHECK: [[LAB]]:
+; CHECK-NEXT: ret i32 1
+;
%conv = fptosi float %f to i8
%tobool3 = icmp eq i8 %conv, 0
br i1 %tobool3, label %if.end, label %lab
diff --git a/llvm/test/Transforms/GVN/flags.ll b/llvm/test/Transforms/GVN/flags.ll
index 2e5aeed..3777e14 100644
--- a/llvm/test/Transforms/GVN/flags.ll
+++ b/llvm/test/Transforms/GVN/flags.ll
@@ -1,8 +1,17 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S < %s | FileCheck %s
declare void @use(i1)
define void @test1(float %x, float %y) {
+; CHECK-LABEL: define void @test1(
+; CHECK-SAME: float [[X:%.*]], float [[Y:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq float [[Y]], [[X]]
+; CHECK-NEXT: call void @use(i1 [[CMP1]])
+; CHECK-NEXT: call void @use(i1 [[CMP1]])
+; CHECK-NEXT: ret void
+;
entry:
%cmp1 = fcmp nnan oeq float %y, %x
%cmp2 = fcmp oeq float %x, %y
@@ -10,9 +19,3 @@ entry:
call void @use(i1 %cmp2)
ret void
}
-
-; CHECK-LABEL: define void @test1(
-; CHECK: %[[cmp:.*]] = fcmp oeq float %y, %x
-; CHECK-NEXT: call void @use(i1 %[[cmp]])
-; CHECK-NEXT: call void @use(i1 %[[cmp]])
-; CHECK-NEXT: ret void
diff --git a/llvm/test/Transforms/GVN/fold-const-expr.ll b/llvm/test/Transforms/GVN/fold-const-expr.ll
index 9e1129e..edbfcda 100644
--- a/llvm/test/Transforms/GVN/fold-const-expr.ll
+++ b/llvm/test/Transforms/GVN/fold-const-expr.ll
@@ -1,12 +1,24 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt -passes=gvn -S < %s | FileCheck %s
+
; GVN failed to do constant expression folding and expanded
; them unfolded in many places, producing exponentially large const
; expressions. As a result, the compilation never fisished.
; This test checks that we are folding constant expression
; PR 28418
-; RUN: opt -passes=gvn -S < %s | FileCheck %s
%2 = type { i32, i32, i32, i32, i32 }
define i32 @_Z16vector3util_mainv(i32 %x, i32 %y) {
+; CHECK-LABEL: define i32 @_Z16vector3util_mainv(
+; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = alloca [[TMP0:%.*]], align 4
+; CHECK-NEXT: [[TMP114:%.*]] = getelementptr inbounds [[TMP0]], ptr [[TMP1]], i64 0, i32 1
+; CHECK-NEXT: store <4 x i32> <i32 234567891, i32 345678912, i32 456789123, i32 0>, ptr [[TMP114]], align 4
+; CHECK-NEXT: store i32 310393545, ptr [[TMP114]], align 4
+; CHECK-NEXT: store i32 -383584258, ptr [[TMP114]], align 4
+; CHECK-NEXT: store i32 -57163022, ptr [[TMP114]], align 4
+; CHECK-NEXT: ret i32 0
+;
%tmp1 = alloca %2, align 4
%tmp114 = getelementptr inbounds %2, ptr %tmp1, i64 0, i32 1
store <4 x i32> <i32 234567891, i32 345678912, i32 456789123, i32 0>, ptr %tmp114, align 4
@@ -37,7 +49,6 @@ define i32 @_Z16vector3util_mainv(i32 %x, i32 %y) {
%tmp1739 = shl i32 %tmp1738, 22
%tmp1740 = xor i32 %tmp1739, %tmp1738
store i32 %tmp1740, ptr %tmp1683, align 4
-; CHECK: store i32 310393545, ptr %tmp114, align 4
%tmp1756 = getelementptr inbounds %2, ptr %tmp1, i64 0, i32 1
%tmp1761 = load i32, ptr %tmp1756, align 4
%tmp1766 = shl i32 %tmp1761, 5
@@ -65,7 +76,6 @@ define i32 @_Z16vector3util_mainv(i32 %x, i32 %y) {
%tmp1812 = shl i32 %tmp1811, 22
%tmp1813 = xor i32 %tmp1812, %tmp1811
store i32 %tmp1813, ptr %tmp1756, align 4
-; CHECK: store i32 -383584258, ptr %tmp114, align 4
%tmp2645 = getelementptr inbounds %2, ptr %tmp1, i64 0, i32 1
%tmp2650 = load i32, ptr %tmp2645, align 4
%tmp2655 = shl i32 %tmp2650, 5
@@ -93,6 +103,5 @@ define i32 @_Z16vector3util_mainv(i32 %x, i32 %y) {
%tmp2701 = shl i32 %tmp2700, 22
%tmp2702 = xor i32 %tmp2701, %tmp2700
store i32 %tmp2702, ptr %tmp2645, align 4
-; CHECK: store i32 -57163022, ptr %tmp114, align 4
ret i32 0
}
diff --git a/llvm/test/Transforms/GVN/fpmath.ll b/llvm/test/Transforms/GVN/fpmath.ll
index 970dd89..2069faa 100644
--- a/llvm/test/Transforms/GVN/fpmath.ll
+++ b/llvm/test/Transforms/GVN/fpmath.ll
@@ -1,10 +1,13 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S < %s | FileCheck %s
define double @test1(double %x, double %y) {
-; CHECK: @test1(double %x, double %y)
-; CHECK: %add1 = fadd double %x, %y
-; CHECK-NOT: fpmath
-; CHECK: %foo = fadd double %add1, %add1
+; CHECK-LABEL: define double @test1(
+; CHECK-SAME: double [[X:%.*]], double [[Y:%.*]]) {
+; CHECK-NEXT: [[ADD1:%.*]] = fadd double [[X]], [[Y]]
+; CHECK-NEXT: [[FOO:%.*]] = fadd double [[ADD1]], [[ADD1]]
+; CHECK-NEXT: ret double [[FOO]]
+;
%add1 = fadd double %x, %y, !fpmath !0
%add2 = fadd double %x, %y
%foo = fadd double %add1, %add2
@@ -12,9 +15,12 @@ define double @test1(double %x, double %y) {
}
define double @test2(double %x, double %y) {
-; CHECK: @test2(double %x, double %y)
-; CHECK: %add1 = fadd double %x, %y, !fpmath !0
-; CHECK: %foo = fadd double %add1, %add1
+; CHECK-LABEL: define double @test2(
+; CHECK-SAME: double [[X:%.*]], double [[Y:%.*]]) {
+; CHECK-NEXT: [[ADD1:%.*]] = fadd double [[X]], [[Y]], !fpmath [[META0:![0-9]+]]
+; CHECK-NEXT: [[FOO:%.*]] = fadd double [[ADD1]], [[ADD1]]
+; CHECK-NEXT: ret double [[FOO]]
+;
%add1 = fadd double %x, %y, !fpmath !0
%add2 = fadd double %x, %y, !fpmath !0
%foo = fadd double %add1, %add2
@@ -22,9 +28,12 @@ define double @test2(double %x, double %y) {
}
define double @test3(double %x, double %y) {
-; CHECK: @test3(double %x, double %y)
-; CHECK: %add1 = fadd double %x, %y, !fpmath !1
-; CHECK: %foo = fadd double %add1, %add1
+; CHECK-LABEL: define double @test3(
+; CHECK-SAME: double [[X:%.*]], double [[Y:%.*]]) {
+; CHECK-NEXT: [[ADD1:%.*]] = fadd double [[X]], [[Y]], !fpmath [[META1:![0-9]+]]
+; CHECK-NEXT: [[FOO:%.*]] = fadd double [[ADD1]], [[ADD1]]
+; CHECK-NEXT: ret double [[FOO]]
+;
%add1 = fadd double %x, %y, !fpmath !1
%add2 = fadd double %x, %y, !fpmath !0
%foo = fadd double %add1, %add2
@@ -32,9 +41,12 @@ define double @test3(double %x, double %y) {
}
define double @test4(double %x, double %y) {
-; CHECK: @test4(double %x, double %y)
-; CHECK: %add1 = fadd double %x, %y, !fpmath !1
-; CHECK: %foo = fadd double %add1, %add1
+; CHECK-LABEL: define double @test4(
+; CHECK-SAME: double [[X:%.*]], double [[Y:%.*]]) {
+; CHECK-NEXT: [[ADD1:%.*]] = fadd double [[X]], [[Y]], !fpmath [[META1]]
+; CHECK-NEXT: [[FOO:%.*]] = fadd double [[ADD1]], [[ADD1]]
+; CHECK-NEXT: ret double [[FOO]]
+;
%add1 = fadd double %x, %y, !fpmath !0
%add2 = fadd double %x, %y, !fpmath !1
%foo = fadd double %add1, %add2
@@ -42,9 +54,12 @@ define double @test4(double %x, double %y) {
}
define double @test5(double %x, double %y) {
-; CHECK: @test5(double %x, double %y)
-; CHECK: %neg1 = fneg double %x, !fpmath !1
-; CHECK: %foo = fadd double %neg1, %neg1
+; CHECK-LABEL: define double @test5(
+; CHECK-SAME: double [[X:%.*]], double [[Y:%.*]]) {
+; CHECK-NEXT: [[NEG1:%.*]] = fneg double [[X]], !fpmath [[META1]]
+; CHECK-NEXT: [[FOO:%.*]] = fadd double [[NEG1]], [[NEG1]]
+; CHECK-NEXT: ret double [[FOO]]
+;
%neg1 = fneg double %x, !fpmath !0
%neg2 = fneg double %x, !fpmath !1
%foo = fadd double %neg1, %neg2
@@ -53,3 +68,7 @@ define double @test5(double %x, double %y) {
!0 = !{ float 5.0 }
!1 = !{ float 2.5 }
+;.
+; CHECK: [[META0]] = !{float 5.000000e+00}
+; CHECK: [[META1]] = !{float 2.500000e+00}
+;.
diff --git a/llvm/test/Transforms/GVN/funclet.ll b/llvm/test/Transforms/GVN/funclet.ll
index 8ef4c96..34ed78f 100644
--- a/llvm/test/Transforms/GVN/funclet.ll
+++ b/llvm/test/Transforms/GVN/funclet.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S < %s | FileCheck %s
target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
target triple = "i686-pc-windows-msvc"
@@ -8,13 +9,35 @@ target triple = "i686-pc-windows-msvc"
@"_TI1?AUA@@" = external constant %eh.ThrowInfo
define i8 @f() personality ptr @__CxxFrameHandler3 {
+; CHECK-LABEL: define i8 @f() personality ptr @__CxxFrameHandler3 {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[B:%.*]] = alloca i8, align 1
+; CHECK-NEXT: [[C:%.*]] = alloca i8, align 1
+; CHECK-NEXT: store i8 42, ptr [[B]], align 1
+; CHECK-NEXT: store i8 13, ptr [[C]], align 1
+; CHECK-NEXT: invoke void @_CxxThrowException(ptr [[B]], ptr nonnull @"_TI1?AUA@@")
+; CHECK-NEXT: to label %[[UNREACHABLE:.*]] unwind label %[[CATCH_DISPATCH:.*]]
+; CHECK: [[CATCH_DISPATCH]]:
+; CHECK-NEXT: [[CS1:%.*]] = catchswitch within none [label %catch] unwind to caller
+; CHECK: [[CATCH:.*:]]
+; CHECK-NEXT: [[CATCHPAD:%.*]] = catchpad within [[CS1]] [ptr null, i32 64, ptr null]
+; CHECK-NEXT: store i8 5, ptr [[B]], align 1
+; CHECK-NEXT: catchret from [[CATCHPAD]] to label %[[TRY_CONT:.*]]
+; CHECK: [[TRY_CONT]]:
+; CHECK-NEXT: [[LOAD_B:%.*]] = load i8, ptr [[B]], align 1
+; CHECK-NEXT: [[LOAD_C:%.*]] = load i8, ptr [[C]], align 1
+; CHECK-NEXT: [[ADD:%.*]] = add i8 [[LOAD_B]], [[LOAD_C]]
+; CHECK-NEXT: ret i8 [[ADD]]
+; CHECK: [[UNREACHABLE]]:
+; CHECK-NEXT: unreachable
+;
entry:
%b = alloca i8
%c = alloca i8
store i8 42, ptr %b
store i8 13, ptr %c
invoke void @_CxxThrowException(ptr %b, ptr nonnull @"_TI1?AUA@@")
- to label %unreachable unwind label %catch.dispatch
+ to label %unreachable unwind label %catch.dispatch
catch.dispatch: ; preds = %entry
%cs1 = catchswitch within none [label %catch] unwind to caller
@@ -33,11 +56,6 @@ try.cont: ; preds = %catch
unreachable: ; preds = %entry
unreachable
}
-; CHECK-LABEL: define i8 @f(
-; CHECK: %[[load_b:.*]] = load i8, ptr %b
-; CHECK-NEXT: %[[load_c:.*]] = load i8, ptr %c
-; CHECK-NEXT: %[[add:.*]] = add i8 %[[load_b]], %[[load_c]]
-; CHECK-NEXT: ret i8 %[[add]]
declare i32 @__CxxFrameHandler3(...)
diff --git a/llvm/test/Transforms/GVN/int_sideeffect.ll b/llvm/test/Transforms/GVN/int_sideeffect.ll
index 513533a..8754cc0 100644
--- a/llvm/test/Transforms/GVN/int_sideeffect.ll
+++ b/llvm/test/Transforms/GVN/int_sideeffect.ll
@@ -1,38 +1,56 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -S < %s -passes=gvn | FileCheck %s
declare void @llvm.sideeffect()
; Store-to-load forwarding across a @llvm.sideeffect.
-
-; CHECK-LABEL: s2l
-; CHECK-NOT: load
define float @s2l(ptr %p) {
- store float 0.0, ptr %p
- call void @llvm.sideeffect()
- %t = load float, ptr %p
- ret float %t
+; CHECK-LABEL: define float @s2l(
+; CHECK-SAME: ptr [[P:%.*]]) {
+; CHECK-NEXT: store float 0.000000e+00, ptr [[P]], align 4
+; CHECK-NEXT: call void @llvm.sideeffect()
+; CHECK-NEXT: ret float 0.000000e+00
+;
+ store float 0.0, ptr %p
+ call void @llvm.sideeffect()
+ %t = load float, ptr %p
+ ret float %t
}
; Redundant load elimination across a @llvm.sideeffect.
-
-; CHECK-LABEL: rle
-; CHECK: load
-; CHECK-NOT: load
define float @rle(ptr %p) {
- %r = load float, ptr %p
- call void @llvm.sideeffect()
- %s = load float, ptr %p
- %t = fadd float %r, %s
- ret float %t
+; CHECK-LABEL: define float @rle(
+; CHECK-SAME: ptr [[P:%.*]]) {
+; CHECK-NEXT: [[R:%.*]] = load float, ptr [[P]], align 4
+; CHECK-NEXT: call void @llvm.sideeffect()
+; CHECK-NEXT: [[T:%.*]] = fadd float [[R]], [[R]]
+; CHECK-NEXT: ret float [[T]]
+;
+ %r = load float, ptr %p
+ call void @llvm.sideeffect()
+ %s = load float, ptr %p
+ %t = fadd float %r, %s
+ ret float %t
}
; LICM across a @llvm.sideeffect.
-
-; CHECK-LABEL: licm
-; CHECK: load
-; CHECK: loop:
-; CHECK-NOT: load
define float @licm(i64 %n, ptr nocapture readonly %p) #0 {
+; CHECK-LABEL: define float @licm(
+; CHECK-SAME: i64 [[N:%.*]], ptr readonly captures(none) [[P:%.*]]) {
+; CHECK-NEXT: [[BB0:.*]]:
+; CHECK-NEXT: [[T3_PRE:%.*]] = load float, ptr [[P]], align 4
+; CHECK-NEXT: br label %[[LOOP:.*]]
+; CHECK: [[LOOP]]:
+; CHECK-NEXT: [[I:%.*]] = phi i64 [ 0, %[[BB0]] ], [ [[T5:%.*]], %[[LOOP]] ]
+; CHECK-NEXT: [[SUM:%.*]] = phi float [ 0.000000e+00, %[[BB0]] ], [ [[T4:%.*]], %[[LOOP]] ]
+; CHECK-NEXT: call void @llvm.sideeffect()
+; CHECK-NEXT: [[T4]] = fadd float [[SUM]], [[T3_PRE]]
+; CHECK-NEXT: [[T5]] = add i64 [[I]], 1
+; CHECK-NEXT: [[T6:%.*]] = icmp ult i64 [[T5]], [[N]]
+; CHECK-NEXT: br i1 [[T6]], label %[[LOOP]], label %[[BB2:.*]]
+; CHECK: [[BB2]]:
+; CHECK-NEXT: ret float [[T4]]
+;
bb0:
br label %loop
diff --git a/llvm/test/Transforms/GVN/invariant.group.ll b/llvm/test/Transforms/GVN/invariant.group.ll
index 9c673ba..aba20ee 100644
--- a/llvm/test/Transforms/GVN/invariant.group.ll
+++ b/llvm/test/Transforms/GVN/invariant.group.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=gvn -S | FileCheck %s
%struct.A = type { ptr }
@@ -6,130 +7,175 @@
@unknownPtr = external global i8
-; CHECK-LABEL: define i8 @simple() {
define i8 @simple() {
+; CHECK-LABEL: define i8 @simple() {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[PTR:%.*]] = alloca i8, align 1
+; CHECK-NEXT: store i8 42, ptr [[PTR]], align 1, !invariant.group [[META0:![0-9]+]]
+; CHECK-NEXT: call void @foo(ptr [[PTR]])
+; CHECK-NEXT: ret i8 42
+;
entry:
- %ptr = alloca i8
- store i8 42, ptr %ptr, !invariant.group !0
- call void @foo(ptr %ptr)
-
- %a = load i8, ptr %ptr, !invariant.group !0
- %b = load i8, ptr %ptr, !invariant.group !0
- %c = load i8, ptr %ptr, !invariant.group !0
-; CHECK: ret i8 42
- ret i8 %a
+ %ptr = alloca i8
+ store i8 42, ptr %ptr, !invariant.group !0
+ call void @foo(ptr %ptr)
+
+ %a = load i8, ptr %ptr, !invariant.group !0
+ %b = load i8, ptr %ptr, !invariant.group !0
+ %c = load i8, ptr %ptr, !invariant.group !0
+ ret i8 %a
}
-; CHECK-LABEL: define i8 @optimizable1() {
define i8 @optimizable1() {
+; CHECK-LABEL: define i8 @optimizable1() {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[PTR:%.*]] = alloca i8, align 1
+; CHECK-NEXT: store i8 42, ptr [[PTR]], align 1, !invariant.group [[META0]]
+; CHECK-NEXT: [[PTR2:%.*]] = call ptr @llvm.launder.invariant.group.p0(ptr [[PTR]])
+; CHECK-NEXT: call void @foo(ptr [[PTR2]])
+; CHECK-NEXT: ret i8 42
+;
entry:
- %ptr = alloca i8
- store i8 42, ptr %ptr, !invariant.group !0
- %ptr2 = call ptr @llvm.launder.invariant.group.p0(ptr %ptr)
- %a = load i8, ptr %ptr, !invariant.group !0
-
- call void @foo(ptr %ptr2); call to use %ptr2
-; CHECK: ret i8 42
- ret i8 %a
+ %ptr = alloca i8
+ store i8 42, ptr %ptr, !invariant.group !0
+ %ptr2 = call ptr @llvm.launder.invariant.group.p0(ptr %ptr)
+ %a = load i8, ptr %ptr, !invariant.group !0
+
+ call void @foo(ptr %ptr2); call to use %ptr2
+ ret i8 %a
}
-; CHECK-LABEL: define i8 @optimizable2() {
define i8 @optimizable2() {
+; CHECK-LABEL: define i8 @optimizable2() {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[PTR:%.*]] = alloca i8, align 1
+; CHECK-NEXT: store i8 42, ptr [[PTR]], align 1, !invariant.group [[META0]]
+; CHECK-NEXT: call void @foo(ptr [[PTR]])
+; CHECK-NEXT: store i8 13, ptr [[PTR]], align 1
+; CHECK-NEXT: call void @bar(i8 13)
+; CHECK-NEXT: call void @foo(ptr [[PTR]])
+; CHECK-NEXT: ret i8 42
+;
entry:
- %ptr = alloca i8
- store i8 42, ptr %ptr, !invariant.group !0
- call void @foo(ptr %ptr)
-
- store i8 13, ptr %ptr ; can't use this store with invariant.group
- %a = load i8, ptr %ptr
- call void @bar(i8 %a) ; call to use %a
-
- call void @foo(ptr %ptr)
- %b = load i8, ptr %ptr, !invariant.group !0
-
-; CHECK: ret i8 42
- ret i8 %b
+ %ptr = alloca i8
+ store i8 42, ptr %ptr, !invariant.group !0
+ call void @foo(ptr %ptr)
+
+ store i8 13, ptr %ptr ; can't use this store with invariant.group
+ %a = load i8, ptr %ptr
+ call void @bar(i8 %a) ; call to use %a
+
+ call void @foo(ptr %ptr)
+ %b = load i8, ptr %ptr, !invariant.group !0
+
+ ret i8 %b
}
-; CHECK-LABEL: define i1 @proveEqualityForStrip(
-define i1 @proveEqualityForStrip(ptr %a) {
; FIXME: The first call could be also removed by GVN. Right now
; DCE removes it. The second call is CSE'd with the first one.
-; CHECK: %b1 = call ptr @llvm.strip.invariant.group.p0(ptr %a)
+define i1 @proveEqualityForStrip(ptr %a) {
+; CHECK-LABEL: define i1 @proveEqualityForStrip(
+; CHECK-SAME: ptr [[A:%.*]]) {
+; CHECK-NEXT: [[B1:%.*]] = call ptr @llvm.strip.invariant.group.p0(ptr [[A]])
+; CHECK-NEXT: ret i1 true
+;
%b1 = call ptr @llvm.strip.invariant.group.p0(ptr %a)
-; CHECK-NOT: llvm.strip.invariant.group
%b2 = call ptr @llvm.strip.invariant.group.p0(ptr %a)
%r = icmp eq ptr %b1, %b2
-; CHECK: ret i1 true
ret i1 %r
}
-; CHECK-LABEL: define i8 @unoptimizable1() {
+
define i8 @unoptimizable1() {
+; CHECK-LABEL: define i8 @unoptimizable1() {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[PTR:%.*]] = alloca i8, align 1
+; CHECK-NEXT: store i8 42, ptr [[PTR]], align 1
+; CHECK-NEXT: call void @foo(ptr [[PTR]])
+; CHECK-NEXT: [[A:%.*]] = load i8, ptr [[PTR]], align 1, !invariant.group [[META0]]
+; CHECK-NEXT: ret i8 [[A]]
+;
entry:
- %ptr = alloca i8
- store i8 42, ptr %ptr
- call void @foo(ptr %ptr)
- %a = load i8, ptr %ptr, !invariant.group !0
-; CHECK: ret i8 %a
- ret i8 %a
+ %ptr = alloca i8
+ store i8 42, ptr %ptr
+ call void @foo(ptr %ptr)
+ %a = load i8, ptr %ptr, !invariant.group !0
+ ret i8 %a
}
-; CHECK-LABEL: define void @indirectLoads() {
define void @indirectLoads() {
+; CHECK-LABEL: define void @indirectLoads() {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[A:%.*]] = alloca ptr, align 8
+; CHECK-NEXT: [[CALL:%.*]] = call ptr @getPointer(ptr null)
+; CHECK-NEXT: call void @_ZN1AC1Ev(ptr [[CALL]])
+; CHECK-NEXT: [[VTABLE:%.*]] = load ptr, ptr [[CALL]], align 8, !invariant.group [[META0]]
+; CHECK-NEXT: [[CMP_VTABLES:%.*]] = icmp eq ptr [[VTABLE]], getelementptr inbounds ([3 x ptr], ptr @_ZTV1A, i64 0, i64 2)
+; CHECK-NEXT: call void @llvm.assume(i1 [[CMP_VTABLES]])
+; CHECK-NEXT: store ptr [[CALL]], ptr [[A]], align 8
+; CHECK-NEXT: call void @_ZN1A3fooEv(ptr [[CALL]])
+; CHECK-NEXT: call void @_ZN1A3fooEv(ptr [[CALL]])
+; CHECK-NEXT: call void @_ZN1A3fooEv(ptr [[CALL]])
+; CHECK-NEXT: call void @_ZN1A3fooEv(ptr [[CALL]])
+; CHECK-NEXT: ret void
+;
entry:
%a = alloca ptr, align 8
-
- %call = call ptr @getPointer(ptr null)
+
+ %call = call ptr @getPointer(ptr null)
call void @_ZN1AC1Ev(ptr %call)
-
-; CHECK: %vtable = load {{.*}} !invariant.group
+
%vtable = load ptr, ptr %call, align 8, !invariant.group !0
%cmp.vtables = icmp eq ptr %vtable, getelementptr inbounds ([3 x ptr], ptr @_ZTV1A, i64 0, i64 2)
call void @llvm.assume(i1 %cmp.vtables)
-
+
store ptr %call, ptr %a, align 8
%0 = load ptr, ptr %a, align 8
-; CHECK: call void @_ZN1A3fooEv(
%vtable1 = load ptr, ptr %0, align 8, !invariant.group !0
%1 = load ptr, ptr %vtable1, align 8
call void %1(ptr %0)
%2 = load ptr, ptr %a, align 8
-; CHECK: call void @_ZN1A3fooEv(
%vtable2 = load ptr, ptr %2, align 8, !invariant.group !0
%3 = load ptr, ptr %vtable2, align 8
-
+
call void %3(ptr %2)
%4 = load ptr, ptr %a, align 8
-
+
%vtable4 = load ptr, ptr %4, align 8, !invariant.group !0
%5 = load ptr, ptr %vtable4, align 8
-; CHECK: call void @_ZN1A3fooEv(
call void %5(ptr %4)
-
+
%vtable5 = load ptr, ptr %call, align 8, !invariant.group !0
%6 = load ptr, ptr %vtable5, align 8
-; CHECK: call void @_ZN1A3fooEv(
call void %6(ptr %4)
-
+
ret void
}
-; CHECK-LABEL: define void @combiningBitCastWithLoad() {
define void @combiningBitCastWithLoad() {
+; CHECK-LABEL: define void @combiningBitCastWithLoad() {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[A:%.*]] = alloca ptr, align 8
+; CHECK-NEXT: [[CALL:%.*]] = call ptr @getPointer(ptr null)
+; CHECK-NEXT: call void @_ZN1AC1Ev(ptr [[CALL]])
+; CHECK-NEXT: [[VTABLE:%.*]] = load ptr, ptr [[CALL]], align 8, !invariant.group [[META0]]
+; CHECK-NEXT: [[CMP_VTABLES:%.*]] = icmp eq ptr [[VTABLE]], getelementptr inbounds ([3 x ptr], ptr @_ZTV1A, i64 0, i64 2)
+; CHECK-NEXT: store ptr [[CALL]], ptr [[A]], align 8
+; CHECK-NEXT: [[TMP0:%.*]] = load ptr, ptr [[VTABLE]], align 8
+; CHECK-NEXT: call void [[TMP0]](ptr [[CALL]])
+; CHECK-NEXT: ret void
+;
entry:
%a = alloca ptr, align 8
-
- %call = call ptr @getPointer(ptr null)
+
+ %call = call ptr @getPointer(ptr null)
call void @_ZN1AC1Ev(ptr %call)
-
-; CHECK: %vtable = load {{.*}} !invariant.group
+
%vtable = load ptr, ptr %call, align 8, !invariant.group !0
%cmp.vtables = icmp eq ptr %vtable, getelementptr inbounds ([3 x ptr], ptr @_ZTV1A, i64 0, i64 2)
-
+
store ptr %call, ptr %a, align 8
-; CHECK-NOT: !invariant.group
%0 = load ptr, ptr %a, align 8
%vtable1 = load ptr, ptr %0, align 8, !invariant.group !0
@@ -139,185 +185,255 @@ entry:
ret void
}
-; CHECK-LABEL:define void @loadCombine() {
define void @loadCombine() {
+; CHECK-LABEL: define void @loadCombine() {
+; CHECK-NEXT: [[ENTER:.*:]]
+; CHECK-NEXT: [[PTR:%.*]] = alloca i8, align 1
+; CHECK-NEXT: store i8 42, ptr [[PTR]], align 1
+; CHECK-NEXT: call void @foo(ptr [[PTR]])
+; CHECK-NEXT: [[A:%.*]] = load i8, ptr [[PTR]], align 1, !invariant.group [[META0]]
+; CHECK-NEXT: call void @bar(i8 [[A]])
+; CHECK-NEXT: call void @bar(i8 [[A]])
+; CHECK-NEXT: ret void
+;
enter:
%ptr = alloca i8
store i8 42, ptr %ptr
call void @foo(ptr %ptr)
-; CHECK: %[[A:.*]] = load i8, ptr %ptr, align 1, !invariant.group
%a = load i8, ptr %ptr, !invariant.group !0
-; CHECK-NOT: load
%b = load i8, ptr %ptr, !invariant.group !0
-; CHECK: call void @bar(i8 %[[A]])
call void @bar(i8 %a)
-; CHECK: call void @bar(i8 %[[A]])
call void @bar(i8 %b)
ret void
}
-; CHECK-LABEL: define void @loadCombine1() {
define void @loadCombine1() {
+; CHECK-LABEL: define void @loadCombine1() {
+; CHECK-NEXT: [[ENTER:.*:]]
+; CHECK-NEXT: [[PTR:%.*]] = alloca i8, align 1
+; CHECK-NEXT: store i8 42, ptr [[PTR]], align 1
+; CHECK-NEXT: call void @foo(ptr [[PTR]])
+; CHECK-NEXT: [[C:%.*]] = load i8, ptr [[PTR]], align 1, !invariant.group [[META0]]
+; CHECK-NEXT: call void @bar(i8 [[C]])
+; CHECK-NEXT: call void @bar(i8 [[C]])
+; CHECK-NEXT: ret void
+;
enter:
%ptr = alloca i8
store i8 42, ptr %ptr
call void @foo(ptr %ptr)
-; CHECK: %[[D:.*]] = load i8, ptr %ptr, align 1, !invariant.group
%c = load i8, ptr %ptr
-; CHECK-NOT: load
%d = load i8, ptr %ptr, !invariant.group !0
-; CHECK: call void @bar(i8 %[[D]])
call void @bar(i8 %c)
-; CHECK: call void @bar(i8 %[[D]])
call void @bar(i8 %d)
ret void
}
-; CHECK-LABEL: define void @loadCombine2() {
define void @loadCombine2() {
+; CHECK-LABEL: define void @loadCombine2() {
+; CHECK-NEXT: [[ENTER:.*:]]
+; CHECK-NEXT: [[PTR:%.*]] = alloca i8, align 1
+; CHECK-NEXT: store i8 42, ptr [[PTR]], align 1
+; CHECK-NEXT: call void @foo(ptr [[PTR]])
+; CHECK-NEXT: [[E:%.*]] = load i8, ptr [[PTR]], align 1, !invariant.group [[META0]]
+; CHECK-NEXT: call void @bar(i8 [[E]])
+; CHECK-NEXT: call void @bar(i8 [[E]])
+; CHECK-NEXT: ret void
+;
enter:
%ptr = alloca i8
store i8 42, ptr %ptr
call void @foo(ptr %ptr)
-; CHECK: %[[E:.*]] = load i8, ptr %ptr, align 1, !invariant.group
%e = load i8, ptr %ptr, !invariant.group !0
-; CHECK-NOT: load
%f = load i8, ptr %ptr
-; CHECK: call void @bar(i8 %[[E]])
call void @bar(i8 %e)
-; CHECK: call void @bar(i8 %[[E]])
call void @bar(i8 %f)
ret void
}
-; CHECK-LABEL: define void @loadCombine3() {
define void @loadCombine3() {
+; CHECK-LABEL: define void @loadCombine3() {
+; CHECK-NEXT: [[ENTER:.*:]]
+; CHECK-NEXT: [[PTR:%.*]] = alloca i8, align 1
+; CHECK-NEXT: store i8 42, ptr [[PTR]], align 1
+; CHECK-NEXT: call void @foo(ptr [[PTR]])
+; CHECK-NEXT: [[E:%.*]] = load i8, ptr [[PTR]], align 1, !invariant.group [[META0]]
+; CHECK-NEXT: call void @bar(i8 [[E]])
+; CHECK-NEXT: call void @bar(i8 [[E]])
+; CHECK-NEXT: ret void
+;
enter:
%ptr = alloca i8
store i8 42, ptr %ptr
call void @foo(ptr %ptr)
-; CHECK: %[[E:.*]] = load i8, ptr %ptr, align 1, !invariant.group
%e = load i8, ptr %ptr, !invariant.group !0
-; CHECK-NOT: load
%f = load i8, ptr %ptr, !invariant.group !0
-; CHECK: call void @bar(i8 %[[E]])
call void @bar(i8 %e)
-; CHECK: call void @bar(i8 %[[E]])
call void @bar(i8 %f)
ret void
}
-; CHECK-LABEL: define i8 @unoptimizable2() {
define i8 @unoptimizable2() {
+; CHECK-LABEL: define i8 @unoptimizable2() {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[PTR:%.*]] = alloca i8, align 1
+; CHECK-NEXT: store i8 42, ptr [[PTR]], align 1
+; CHECK-NEXT: call void @foo(ptr [[PTR]])
+; CHECK-NEXT: [[A:%.*]] = load i8, ptr [[PTR]], align 1
+; CHECK-NEXT: call void @foo(ptr [[PTR]])
+; CHECK-NEXT: ret i8 [[A]]
+;
entry:
- %ptr = alloca i8
- store i8 42, ptr %ptr
- call void @foo(ptr %ptr)
- %a = load i8, ptr %ptr
- call void @foo(ptr %ptr)
- %b = load i8, ptr %ptr, !invariant.group !0
-
-; CHECK: ret i8 %a
- ret i8 %a
+ %ptr = alloca i8
+ store i8 42, ptr %ptr
+ call void @foo(ptr %ptr)
+ %a = load i8, ptr %ptr
+ call void @foo(ptr %ptr)
+ %b = load i8, ptr %ptr, !invariant.group !0
+
+ ret i8 %a
}
-; CHECK-LABEL: define i8 @unoptimizable3() {
define i8 @unoptimizable3() {
+; CHECK-LABEL: define i8 @unoptimizable3() {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[PTR:%.*]] = alloca i8, align 1
+; CHECK-NEXT: store i8 42, ptr [[PTR]], align 1, !invariant.group [[META0]]
+; CHECK-NEXT: [[PTR2:%.*]] = call ptr @getPointer(ptr [[PTR]])
+; CHECK-NEXT: [[A:%.*]] = load i8, ptr [[PTR2]], align 1, !invariant.group [[META0]]
+; CHECK-NEXT: ret i8 [[A]]
+;
entry:
- %ptr = alloca i8
- store i8 42, ptr %ptr, !invariant.group !0
- %ptr2 = call ptr @getPointer(ptr %ptr)
- %a = load i8, ptr %ptr2, !invariant.group !0
-
-; CHECK: ret i8 %a
- ret i8 %a
+ %ptr = alloca i8
+ store i8 42, ptr %ptr, !invariant.group !0
+ %ptr2 = call ptr @getPointer(ptr %ptr)
+ %a = load i8, ptr %ptr2, !invariant.group !0
+
+ ret i8 %a
}
-; CHECK-LABEL: define i8 @optimizable4() {
define i8 @optimizable4() {
+; CHECK-LABEL: define i8 @optimizable4() {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[PTR:%.*]] = alloca i8, align 1
+; CHECK-NEXT: store i8 42, ptr [[PTR]], align 1, !invariant.group [[META0]]
+; CHECK-NEXT: [[PTR2:%.*]] = call ptr @llvm.launder.invariant.group.p0(ptr [[PTR]])
+; CHECK-NEXT: ret i8 42
+;
entry:
- %ptr = alloca i8
- store i8 42, ptr %ptr, !invariant.group !0
- %ptr2 = call ptr @llvm.launder.invariant.group.p0(ptr %ptr)
-; CHECK-NOT: load
- %a = load i8, ptr %ptr2, !invariant.group !0
-
-; CHECK: ret i8 42
- ret i8 %a
+ %ptr = alloca i8
+ store i8 42, ptr %ptr, !invariant.group !0
+ %ptr2 = call ptr @llvm.launder.invariant.group.p0(ptr %ptr)
+ %a = load i8, ptr %ptr2, !invariant.group !0
+
+ ret i8 %a
}
-; CHECK-LABEL: define i8 @volatile1() {
define i8 @volatile1() {
+; CHECK-LABEL: define i8 @volatile1() {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[PTR:%.*]] = alloca i8, align 1
+; CHECK-NEXT: store i8 42, ptr [[PTR]], align 1, !invariant.group [[META0]]
+; CHECK-NEXT: call void @foo(ptr [[PTR]])
+; CHECK-NEXT: [[B:%.*]] = load volatile i8, ptr [[PTR]], align 1
+; CHECK-NEXT: call void @bar(i8 [[B]])
+; CHECK-NEXT: [[C:%.*]] = load volatile i8, ptr [[PTR]], align 1, !invariant.group [[META0]]
+; CHECK-NEXT: call void @bar(i8 [[C]])
+; CHECK-NEXT: ret i8 42
+;
entry:
- %ptr = alloca i8
- store i8 42, ptr %ptr, !invariant.group !0
- call void @foo(ptr %ptr)
- %a = load i8, ptr %ptr, !invariant.group !0
- %b = load volatile i8, ptr %ptr
-; CHECK: call void @bar(i8 %b)
- call void @bar(i8 %b)
-
- %c = load volatile i8, ptr %ptr, !invariant.group !0
+ %ptr = alloca i8
+ store i8 42, ptr %ptr, !invariant.group !0
+ call void @foo(ptr %ptr)
+ %a = load i8, ptr %ptr, !invariant.group !0
+ %b = load volatile i8, ptr %ptr
+ call void @bar(i8 %b)
+
+ %c = load volatile i8, ptr %ptr, !invariant.group !0
; FIXME: we could change %c to 42, preserving volatile load
-; CHECK: call void @bar(i8 %c)
- call void @bar(i8 %c)
-; CHECK: ret i8 42
- ret i8 %a
+ call void @bar(i8 %c)
+ ret i8 %a
}
-; CHECK-LABEL: define i8 @volatile2() {
define i8 @volatile2() {
+; CHECK-LABEL: define i8 @volatile2() {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[PTR:%.*]] = alloca i8, align 1
+; CHECK-NEXT: store i8 42, ptr [[PTR]], align 1, !invariant.group [[META0]]
+; CHECK-NEXT: call void @foo(ptr [[PTR]])
+; CHECK-NEXT: [[B:%.*]] = load volatile i8, ptr [[PTR]], align 1
+; CHECK-NEXT: call void @bar(i8 [[B]])
+; CHECK-NEXT: [[C:%.*]] = load volatile i8, ptr [[PTR]], align 1, !invariant.group [[META0]]
+; CHECK-NEXT: call void @bar(i8 [[C]])
+; CHECK-NEXT: ret i8 42
+;
entry:
- %ptr = alloca i8
- store i8 42, ptr %ptr, !invariant.group !0
- call void @foo(ptr %ptr)
- %a = load i8, ptr %ptr, !invariant.group !0
- %b = load volatile i8, ptr %ptr
-; CHECK: call void @bar(i8 %b)
- call void @bar(i8 %b)
-
- %c = load volatile i8, ptr %ptr, !invariant.group !0
+ %ptr = alloca i8
+ store i8 42, ptr %ptr, !invariant.group !0
+ call void @foo(ptr %ptr)
+ %a = load i8, ptr %ptr, !invariant.group !0
+ %b = load volatile i8, ptr %ptr
+ call void @bar(i8 %b)
+
+ %c = load volatile i8, ptr %ptr, !invariant.group !0
; FIXME: we could change %c to 42, preserving volatile load
-; CHECK: call void @bar(i8 %c)
- call void @bar(i8 %c)
-; CHECK: ret i8 42
- ret i8 %a
+ call void @bar(i8 %c)
+ ret i8 %a
}
-; CHECK-LABEL: define i8 @fun() {
define i8 @fun() {
+; CHECK-LABEL: define i8 @fun() {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[PTR:%.*]] = alloca i8, align 1
+; CHECK-NEXT: store i8 42, ptr [[PTR]], align 1, !invariant.group [[META0]]
+; CHECK-NEXT: call void @foo(ptr [[PTR]])
+; CHECK-NEXT: call void @bar(i8 42)
+; CHECK-NEXT: [[NEWPTR:%.*]] = call ptr @getPointer(ptr [[PTR]])
+; CHECK-NEXT: [[C:%.*]] = load i8, ptr [[NEWPTR]], align 1, !invariant.group [[META0]]
+; CHECK-NEXT: call void @bar(i8 [[C]])
+; CHECK-NEXT: [[UNKNOWNVALUE:%.*]] = load i8, ptr @unknownPtr, align 1
+; CHECK-NEXT: store i8 [[UNKNOWNVALUE]], ptr [[PTR]], align 1, !invariant.group [[META0]]
+; CHECK-NEXT: [[NEWPTR2:%.*]] = call ptr @llvm.launder.invariant.group.p0(ptr [[PTR]])
+; CHECK-NEXT: ret i8 [[UNKNOWNVALUE]]
+;
entry:
- %ptr = alloca i8
- store i8 42, ptr %ptr, !invariant.group !0
- call void @foo(ptr %ptr)
-
- %a = load i8, ptr %ptr, !invariant.group !0 ; Can assume that value under %ptr didn't change
-; CHECK: call void @bar(i8 42)
- call void @bar(i8 %a)
-
- %newPtr = call ptr @getPointer(ptr %ptr)
- %c = load i8, ptr %newPtr, !invariant.group !0 ; Can't assume anything, because we only have information about %ptr
-; CHECK: call void @bar(i8 %c)
- call void @bar(i8 %c)
-
- %unknownValue = load i8, ptr @unknownPtr
+ %ptr = alloca i8
+ store i8 42, ptr %ptr, !invariant.group !0
+ call void @foo(ptr %ptr)
+
+ %a = load i8, ptr %ptr, !invariant.group !0 ; Can assume that value under %ptr didn't change
+ call void @bar(i8 %a)
+
+ %newPtr = call ptr @getPointer(ptr %ptr)
+ %c = load i8, ptr %newPtr, !invariant.group !0 ; Can't assume anything, because we only have information about %ptr
+ call void @bar(i8 %c)
+
+ %unknownValue = load i8, ptr @unknownPtr
; FIXME: Can assume that %unknownValue == 42
-; CHECK: store i8 %unknownValue, ptr %ptr, align 1, !invariant.group !0
- store i8 %unknownValue, ptr %ptr, !invariant.group !0
-
- %newPtr2 = call ptr @llvm.launder.invariant.group.p0(ptr %ptr)
-; CHECK-NOT: load
- %d = load i8, ptr %newPtr2, !invariant.group !0
-; CHECK: ret i8 %unknownValue
- ret i8 %d
+ store i8 %unknownValue, ptr %ptr, !invariant.group !0
+
+ %newPtr2 = call ptr @llvm.launder.invariant.group.p0(ptr %ptr)
+ %d = load i8, ptr %newPtr2, !invariant.group !0
+ ret i8 %d
}
; This test checks if invariant.group understands gep with zeros
-; CHECK-LABEL: define void @testGEP0() {
define void @testGEP0() {
+; CHECK-LABEL: define void @testGEP0() {
+; CHECK-NEXT: [[A:%.*]] = alloca [[STRUCT_A:%.*]], align 8
+; CHECK-NEXT: store ptr getelementptr inbounds ([3 x ptr], ptr @_ZTV1A, i64 0, i64 2), ptr [[A]], align 8, !invariant.group [[META0]]
+; CHECK-NEXT: call void @_ZN1A3fooEv(ptr nonnull dereferenceable(8) [[A]])
+; CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr @unknownPtr, align 4
+; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i8 [[TMP1]], 0
+; CHECK-NEXT: br i1 [[TMP2]], label %[[_Z1GR1A_EXIT:.*]], label %[[BB3:.*]]
+; CHECK: [[BB3]]:
+; CHECK-NEXT: call void @_ZN1A3fooEv(ptr nonnull [[A]])
+; CHECK-NEXT: br label %[[_Z1GR1A_EXIT]]
+; CHECK: [[_Z1GR1A_EXIT]]:
+; CHECK-NEXT: ret void
+;
%a = alloca %struct.A, align 8
store ptr getelementptr inbounds ([3 x ptr], ptr @_ZTV1A, i64 0, i64 2), ptr %a, align 8, !invariant.group !0
-; CHECK: call void @_ZN1A3fooEv(ptr nonnull dereferenceable(8) %a)
call void @_ZN1A3fooEv(ptr nonnull dereferenceable(8) %a) ; This call may change vptr
%1 = load i8, ptr @unknownPtr, align 4
%2 = icmp eq i8 %1, 0
@@ -326,7 +442,6 @@ define void @testGEP0() {
; This should be devirtualized by invariant.group
%4 = load ptr, ptr %a, align 8, !invariant.group !0
%5 = load ptr, ptr %4, align 8
-; CHECK: call void @_ZN1A3fooEv(ptr nonnull %a)
call void %5(ptr nonnull %a)
br label %_Z1gR1A.exit
@@ -337,51 +452,86 @@ _Z1gR1A.exit: ; preds = %0, %3
; Check if no optimizations are performed with global pointers.
; FIXME: we could do the optimizations if we would check if dependency comes
; from the same function.
-; CHECK-LABEL: define void @testGlobal() {
define void @testGlobal() {
-; CHECK: %a = load i8, ptr @unknownPtr, align 1, !invariant.group !0
- %a = load i8, ptr @unknownPtr, !invariant.group !0
- call void @foo2(ptr @unknownPtr, i8 %a)
-; CHECK: %1 = load i8, ptr @unknownPtr, align 1, !invariant.group !0
- %1 = load i8, ptr @unknownPtr, !invariant.group !0
- call void @bar(i8 %1)
-
- call void @fooBit(ptr @unknownPtr, i1 1)
+; CHECK-LABEL: define void @testGlobal() {
+; CHECK-NEXT: [[A:%.*]] = load i8, ptr @unknownPtr, align 1, !invariant.group [[META0]]
+; CHECK-NEXT: call void @foo2(ptr @unknownPtr, i8 [[A]])
+; CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr @unknownPtr, align 1, !invariant.group [[META0]]
+; CHECK-NEXT: call void @bar(i8 [[TMP1]])
+; CHECK-NEXT: call void @fooBit(ptr @unknownPtr, i1 true)
+; CHECK-NEXT: [[TMP2:%.*]] = load i1, ptr @unknownPtr, align 1, !invariant.group [[META0]]
+; CHECK-NEXT: call void @fooBit(ptr @unknownPtr, i1 [[TMP2]])
+; CHECK-NEXT: [[TMP3:%.*]] = load i1, ptr @unknownPtr, align 1, !invariant.group [[META0]]
+; CHECK-NEXT: call void @fooBit(ptr @unknownPtr, i1 [[TMP3]])
+; CHECK-NEXT: ret void
+;
+ %a = load i8, ptr @unknownPtr, !invariant.group !0
+ call void @foo2(ptr @unknownPtr, i8 %a)
+ %1 = load i8, ptr @unknownPtr, !invariant.group !0
+ call void @bar(i8 %1)
+
+ call void @fooBit(ptr @unknownPtr, i1 1)
; Adding regex because of canonicalization of bitcasts
-; CHECK: %2 = load i1, ptr {{.*}}, !invariant.group !0
- %2 = load i1, ptr @unknownPtr, !invariant.group !0
- call void @fooBit(ptr @unknownPtr, i1 %2)
-; CHECK: %3 = load i1, ptr {{.*}}, !invariant.group !0
- %3 = load i1, ptr @unknownPtr, !invariant.group !0
- call void @fooBit(ptr @unknownPtr, i1 %3)
- ret void
+ %2 = load i1, ptr @unknownPtr, !invariant.group !0
+ call void @fooBit(ptr @unknownPtr, i1 %2)
+ %3 = load i1, ptr @unknownPtr, !invariant.group !0
+ call void @fooBit(ptr @unknownPtr, i1 %3)
+ ret void
}
; And in the case it is not global
-; CHECK-LABEL: define void @testNotGlobal() {
define void @testNotGlobal() {
- %a = alloca i8
- call void @foo(ptr %a)
-; CHECK: %b = load i8, ptr %a, align 1, !invariant.group !0
- %b = load i8, ptr %a, !invariant.group !0
- call void @foo2(ptr %a, i8 %b)
-
- %1 = load i8, ptr %a, !invariant.group !0
-; CHECK: call void @bar(i8 %b)
- call void @bar(i8 %1)
-
- call void @fooBit(ptr %a, i1 1)
-; CHECK: %1 = trunc i8 %b to i1
- %2 = load i1, ptr %a, !invariant.group !0
-; CHECK-NEXT: call void @fooBit(ptr %a, i1 %1)
- call void @fooBit(ptr %a, i1 %2)
- %3 = load i1, ptr %a, !invariant.group !0
-; CHECK-NEXT: call void @fooBit(ptr %a, i1 %1)
- call void @fooBit(ptr %a, i1 %3)
- ret void
+; CHECK-LABEL: define void @testNotGlobal() {
+; CHECK-NEXT: [[A:%.*]] = alloca i8, align 1
+; CHECK-NEXT: call void @foo(ptr [[A]])
+; CHECK-NEXT: [[B:%.*]] = load i8, ptr [[A]], align 1, !invariant.group [[META0]]
+; CHECK-NEXT: call void @foo2(ptr [[A]], i8 [[B]])
+; CHECK-NEXT: call void @bar(i8 [[B]])
+; CHECK-NEXT: call void @fooBit(ptr [[A]], i1 true)
+; CHECK-NEXT: [[TMP1:%.*]] = trunc i8 [[B]] to i1
+; CHECK-NEXT: call void @fooBit(ptr [[A]], i1 [[TMP1]])
+; CHECK-NEXT: call void @fooBit(ptr [[A]], i1 [[TMP1]])
+; CHECK-NEXT: ret void
+;
+ %a = alloca i8
+ call void @foo(ptr %a)
+ %b = load i8, ptr %a, !invariant.group !0
+ call void @foo2(ptr %a, i8 %b)
+
+ %1 = load i8, ptr %a, !invariant.group !0
+ call void @bar(i8 %1)
+
+ call void @fooBit(ptr %a, i1 1)
+ %2 = load i1, ptr %a, !invariant.group !0
+ call void @fooBit(ptr %a, i1 %2)
+ %3 = load i1, ptr %a, !invariant.group !0
+ call void @fooBit(ptr %a, i1 %3)
+ ret void
}
-; CHECK-LABEL: define void @handling_loops()
define void @handling_loops() {
+; CHECK-LABEL: define void @handling_loops() {
+; CHECK-NEXT: [[A:%.*]] = alloca [[STRUCT_A:%.*]], align 8
+; CHECK-NEXT: store ptr getelementptr inbounds ([3 x ptr], ptr @_ZTV1A, i64 0, i64 2), ptr [[A]], align 8, !invariant.group [[META0]]
+; CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr @unknownPtr, align 4
+; CHECK-NEXT: [[TMP2:%.*]] = icmp sgt i8 [[TMP1]], 0
+; CHECK-NEXT: br i1 [[TMP2]], [[DOTLR_PH_I:label %.*]], label %[[_Z2G2R1A_EXIT:.*]]
+; CHECK: [[_LR_PH_I:.*:]]
+; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt i8 [[TMP1]], 1
+; CHECK-NEXT: br i1 [[TMP3]], label %[[DOT_CRIT_EDGE_PREHEADER:.*]], label %[[_Z2G2R1A_EXIT]]
+; CHECK: [[__CRIT_EDGE_PREHEADER:.*:]]
+; CHECK-NEXT: br label %[[DOT_CRIT_EDGE:.*]]
+; CHECK: [[__CRIT_EDGE:.*:]]
+; CHECK-NEXT: [[TMP4:%.*]] = phi i8 [ [[TMP5:%.*]], %[[DOT_CRIT_EDGE]] ], [ 1, %[[DOT_CRIT_EDGE_PREHEADER]] ]
+; CHECK-NEXT: call void @_ZN1A3fooEv(ptr nonnull [[A]])
+; CHECK-NEXT: [[TMP5]] = add nuw nsw i8 [[TMP4]], 1
+; CHECK-NEXT: [[TMP6:%.*]] = load i8, ptr @unknownPtr, align 4
+; CHECK-NEXT: [[TMP7:%.*]] = icmp slt i8 [[TMP5]], [[TMP6]]
+; CHECK-NEXT: br i1 [[TMP7]], label %[[DOT_CRIT_EDGE]], label %[[_Z2G2R1A_EXIT_LOOPEXIT:.*]]
+; CHECK: [[_Z2G2R1A_EXIT_LOOPEXIT]]:
+; CHECK-NEXT: br label %[[_Z2G2R1A_EXIT]]
+; CHECK: [[_Z2G2R1A_EXIT]]:
+; CHECK-NEXT: ret void
+;
%a = alloca %struct.A, align 8
store ptr getelementptr inbounds ([3 x ptr], ptr @_ZTV1A, i64 0, i64 2), ptr %a, align 8, !invariant.group !0
%1 = load i8, ptr @unknownPtr, align 4
@@ -400,9 +550,7 @@ define void @handling_loops() {
%5 = phi i8 [ %7, %._crit_edge ], [ 1, %._crit_edge.preheader ]
%.pre = load ptr, ptr %a, align 8, !invariant.group !0
%6 = load ptr, ptr %.pre, align 8
- ; CHECK: call void @_ZN1A3fooEv(ptr nonnull %a)
call void %6(ptr nonnull %a) #3
- ; CHECK-NOT: call void %
%7 = add nuw nsw i8 %5, 1
%8 = load i8, ptr @unknownPtr, align 4
%9 = icmp slt i8 %7, %8
@@ -432,3 +580,6 @@ declare void @llvm.assume(i1 %cmp.vtables)
!0 = !{}
+;.
+; CHECK: [[META0]] = !{}
+;.
diff --git a/llvm/test/Transforms/GVN/invariant.start.ll b/llvm/test/Transforms/GVN/invariant.start.ll
index f2d7dd0..6f38197 100644
--- a/llvm/test/Transforms/GVN/invariant.start.ll
+++ b/llvm/test/Transforms/GVN/invariant.start.ll
@@ -1,16 +1,19 @@
-; Test to make sure llvm.invariant.start calls are not treated as clobbers.
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=gvn -S | FileCheck %s
+; Test to make sure llvm.invariant.start calls are not treated as clobbers.
declare ptr @llvm.invariant.start.p0(i64, ptr nocapture) nounwind readonly
declare void @llvm.invariant.end.p0(ptr, i64, ptr nocapture) nounwind
; We forward store to the load across the invariant.start intrinsic
define i8 @forward_store() {
-; CHECK-LABEL: @forward_store
-; CHECK: call ptr @llvm.invariant.start.p0(i64 1, ptr %a)
-; CHECK-NOT: load
-; CHECK: ret i8 0
+; CHECK-LABEL: define i8 @forward_store() {
+; CHECK-NEXT: [[A:%.*]] = alloca i8, align 1
+; CHECK-NEXT: store i8 0, ptr [[A]], align 1
+; CHECK-NEXT: [[I:%.*]] = call ptr @llvm.invariant.start.p0(i64 1, ptr [[A]])
+; CHECK-NEXT: ret i8 0
+;
%a = alloca i8
store i8 0, ptr %a
%i = call ptr @llvm.invariant.start.p0(i64 1, ptr %a)
@@ -23,10 +26,18 @@ declare i8 @dummy(ptr nocapture) nounwind readonly
; We forward store to the load in the non-local analysis case,
; i.e. invariant.start is in another basic block.
define i8 @forward_store_nonlocal(i1 %cond) {
-; CHECK-LABEL: forward_store_nonlocal
-; CHECK: call ptr @llvm.invariant.start.p0(i64 1, ptr %a)
-; CHECK: ret i8 0
-; CHECK: ret i8 %val
+; CHECK-LABEL: define i8 @forward_store_nonlocal(
+; CHECK-SAME: i1 [[COND:%.*]]) {
+; CHECK-NEXT: [[A:%.*]] = alloca i8, align 1
+; CHECK-NEXT: store i8 0, ptr [[A]], align 1
+; CHECK-NEXT: [[I:%.*]] = call ptr @llvm.invariant.start.p0(i64 1, ptr [[A]])
+; CHECK-NEXT: br i1 [[COND]], label %[[LOADBLOCK:.*]], label %[[EXIT:.*]]
+; CHECK: [[LOADBLOCK]]:
+; CHECK-NEXT: ret i8 0
+; CHECK: [[EXIT]]:
+; CHECK-NEXT: [[VAL:%.*]] = call i8 @dummy(ptr [[A]])
+; CHECK-NEXT: ret i8 [[VAL]]
+;
%a = alloca i8
store i8 0, ptr %a
%i = call ptr @llvm.invariant.start.p0(i64 1, ptr %a)
@@ -43,12 +54,14 @@ exit:
; We should not value forward %foo to the invariant.end corresponding to %bar.
define i8 @forward_store1() {
-; CHECK-LABEL: forward_store1
-; CHECK: %foo = call ptr @llvm.invariant.start.p0
-; CHECK-NOT: load
-; CHECK: %bar = call ptr @llvm.invariant.start.p0
-; CHECK: call void @llvm.invariant.end.p0(ptr %bar, i64 1, ptr %a)
-; CHECK: ret i8 0
+; CHECK-LABEL: define i8 @forward_store1() {
+; CHECK-NEXT: [[A:%.*]] = alloca i8, align 1
+; CHECK-NEXT: store i8 0, ptr [[A]], align 1
+; CHECK-NEXT: [[FOO:%.*]] = call ptr @llvm.invariant.start.p0(i64 1, ptr [[A]])
+; CHECK-NEXT: [[BAR:%.*]] = call ptr @llvm.invariant.start.p0(i64 1, ptr [[A]])
+; CHECK-NEXT: call void @llvm.invariant.end.p0(ptr [[BAR]], i64 1, ptr [[A]])
+; CHECK-NEXT: ret i8 0
+;
%a = alloca i8
store i8 0, ptr %a
%foo = call ptr @llvm.invariant.start.p0(i64 1, ptr %a)
diff --git a/llvm/test/Transforms/GVN/load-constant-mem.ll b/llvm/test/Transforms/GVN/load-constant-mem.ll
index d5858d6..f5b0d7c 100644
--- a/llvm/test/Transforms/GVN/load-constant-mem.ll
+++ b/llvm/test/Transforms/GVN/load-constant-mem.ll
@@ -1,19 +1,21 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=gvn,instcombine -S | FileCheck %s
+
; PR4189
@G = external constant [4 x i32]
define i32 @test(ptr %p, i32 %i) nounwind {
+; CHECK-LABEL: define i32 @test(
+; CHECK-SAME: ptr [[P:%.*]], i32 [[I:%.*]]) #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: store i8 4, ptr [[P]], align 1
+; CHECK-NEXT: ret i32 0
+;
entry:
- %P = getelementptr [4 x i32], ptr @G, i32 0, i32 %i
- %A = load i32, ptr %P
- store i8 4, ptr %p
- %B = load i32, ptr %P
- %C = sub i32 %A, %B
- ret i32 %C
+ %P = getelementptr [4 x i32], ptr @G, i32 0, i32 %i
+ %A = load i32, ptr %P
+ store i8 4, ptr %p
+ %B = load i32, ptr %P
+ %C = sub i32 %A, %B
+ ret i32 %C
}
-
-; CHECK: define i32 @test(ptr %p, i32 %i) #0 {
-; CHECK-NEXT: entry:
-; CHECK-NEXT: store i8 4, ptr %p, align 1
-; CHECK-NEXT: ret i32 0
-; CHECK-NEXT: }
diff --git a/llvm/test/Transforms/GVN/load-from-unreachable-predecessor.ll b/llvm/test/Transforms/GVN/load-from-unreachable-predecessor.ll
index 6ad0f59..c0b20d3 100644
--- a/llvm/test/Transforms/GVN/load-from-unreachable-predecessor.ll
+++ b/llvm/test/Transforms/GVN/load-from-unreachable-predecessor.ll
@@ -1,12 +1,21 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S < %s | FileCheck %s
; Check that an unreachable predecessor to a PHI node doesn't cause a crash.
-; PR21625.
-
+; PR21625. The first load should be removed, since it's ignored.
define i32 @f(ptr %f) {
-; CHECK: bb0:
-; Load should be removed, since it's ignored.
-; CHECK-NEXT: br label
+; CHECK-LABEL: define i32 @f(
+; CHECK-SAME: ptr [[F:%.*]]) {
+; CHECK-NEXT: [[BB0:.*]]:
+; CHECK-NEXT: br label %[[BB2:.*]]
+; CHECK: [[BB1:.*]]:
+; CHECK-NEXT: [[ZED:%.*]] = load ptr, ptr [[F]], align 8
+; CHECK-NEXT: br i1 false, label %[[BB1]], label %[[BB2]]
+; CHECK: [[BB2]]:
+; CHECK-NEXT: [[FOO:%.*]] = phi ptr [ null, %[[BB0]] ], [ [[ZED]], %[[BB1]] ]
+; CHECK-NEXT: [[STOREMERGE:%.*]] = load i32, ptr [[FOO]], align 4
+; CHECK-NEXT: ret i32 [[STOREMERGE]]
+;
bb0:
%bar = load ptr, ptr %f
br label %bb2
diff --git a/llvm/test/Transforms/GVN/malloc-load-removal.ll b/llvm/test/Transforms/GVN/malloc-load-removal.ll
index 0aa4beb..c86990f 100644
--- a/llvm/test/Transforms/GVN/malloc-load-removal.ll
+++ b/llvm/test/Transforms/GVN/malloc-load-removal.ll
@@ -1,4 +1,6 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -S -passes=gvn < %s | FileCheck %s
+
; PR13694
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
@@ -6,6 +8,17 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
declare noalias ptr @malloc(i64) nounwind allockind("alloc,uninitialized") allocsize(0)
define noalias ptr @test1() nounwind uwtable ssp {
+; CHECK-LABEL: define noalias ptr @test1(
+; CHECK-SAME: ) #[[ATTR1:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[CALL:%.*]] = tail call ptr @malloc(i64 100) #[[ATTR2:[0-9]+]]
+; CHECK-NEXT: br i1 undef, label %[[IF_END:.*]], label %[[IF_THEN:.*]]
+; CHECK: [[IF_THEN]]:
+; CHECK-NEXT: store i8 0, ptr [[CALL]], align 1
+; CHECK-NEXT: br label %[[IF_END]]
+; CHECK: [[IF_END]]:
+; CHECK-NEXT: ret ptr [[CALL]]
+;
entry:
%call = tail call ptr @malloc(i64 100) nounwind
%0 = load i8, ptr %call, align 1
@@ -18,19 +31,22 @@ if.then: ; preds = %entry
if.end: ; preds = %if.then, %entry
ret ptr %call
-
-; CHECK-LABEL: @test1(
-; CHECK-NOT: load
-; CHECK-NOT: icmp
-
-; CHECK_NO_LIBCALLS-LABEL: @test1(
-; CHECK_NO_LIBCALLS: load
-; CHECK_NO_LIBCALLS: icmp
}
declare noalias ptr @_Znwm(i64) nounwind
define noalias ptr @test2() nounwind uwtable ssp {
+; CHECK-LABEL: define noalias ptr @test2(
+; CHECK-SAME: ) #[[ATTR1]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[CALL:%.*]] = tail call ptr @_Znwm(i64 100) #[[ATTR2]]
+; CHECK-NEXT: br i1 undef, label %[[IF_END:.*]], label %[[IF_THEN:.*]]
+; CHECK: [[IF_THEN]]:
+; CHECK-NEXT: store i8 0, ptr [[CALL]], align 1
+; CHECK-NEXT: br label %[[IF_END]]
+; CHECK: [[IF_END]]:
+; CHECK-NEXT: ret ptr [[CALL]]
+;
entry:
%call = tail call ptr @_Znwm(i64 100) nounwind
%0 = load i8, ptr %call, align 1
@@ -43,19 +59,22 @@ if.then: ; preds = %entry
if.end: ; preds = %if.then, %entry
ret ptr %call
-
-; CHECK-LABEL: @test2(
-; CHECK-NOT: load
-; CHECK-NOT: icmp
-
-; CHECK_NO_LIBCALLS-LABEL: @test2(
-; CHECK_NO_LIBCALLS: load
-; CHECK_NO_LIBCALLS: icmp
}
declare noalias ptr @aligned_alloc(i64 allocalign, i64) nounwind allockind("alloc,uninitialized,aligned") allocsize(1)
define noalias ptr @test3() nounwind uwtable ssp {
+; CHECK-LABEL: define noalias ptr @test3(
+; CHECK-SAME: ) #[[ATTR1]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[CALL:%.*]] = tail call ptr @aligned_alloc(i64 256, i64 32) #[[ATTR2]]
+; CHECK-NEXT: br i1 undef, label %[[IF_END:.*]], label %[[IF_THEN:.*]]
+; CHECK: [[IF_THEN]]:
+; CHECK-NEXT: store i8 0, ptr [[CALL]], align 1
+; CHECK-NEXT: br label %[[IF_END]]
+; CHECK: [[IF_END]]:
+; CHECK-NEXT: ret ptr [[CALL]]
+;
entry:
%call = tail call ptr @aligned_alloc(i64 256, i64 32) nounwind
%0 = load i8, ptr %call, align 32
@@ -68,12 +87,4 @@ if.then: ; preds = %entry
if.end: ; preds = %if.then, %entry
ret ptr %call
-
-; CHECK-LABEL: @test3(
-; CHECK-NOT: load
-; CHECK-NOT: icmp
-
-; CHECK_NO_LIBCALLS-LABEL: @test3(
-; CHECK_NO_LIBCALLS: load
-; CHECK_NO_LIBCALLS: icmp
}
diff --git a/llvm/test/Transforms/GVN/mssa-update-dead-def.ll b/llvm/test/Transforms/GVN/mssa-update-dead-def.ll
index ad71a04..1a5b704 100644
--- a/llvm/test/Transforms/GVN/mssa-update-dead-def.ll
+++ b/llvm/test/Transforms/GVN/mssa-update-dead-def.ll
@@ -1,12 +1,28 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes='require<memoryssa>,gvn' -verify-memoryssa -S %s | FileCheck %s
; This is a regression test for a bug in MemorySSA updater.
; Make sure that we don't crash and end up with a valid MemorySSA.
-; CHECK: @test()
define void @test() personality ptr null {
+; CHECK-LABEL: define void @test() personality ptr null {
+; CHECK-NEXT: invoke void @bar()
+; CHECK-NEXT: to label %[[BAR_NORMAL:.*]] unwind label %[[EXCEPTIONAL:.*]]
+; CHECK: [[BAR_NORMAL]]:
+; CHECK-NEXT: ret void
+; CHECK: [[DEAD_BLOCK:.*:]]
+; CHECK-NEXT: invoke void @baz()
+; CHECK-NEXT: to label %[[BAZ_NORMAL:.*]] unwind label %[[EXCEPTIONAL]]
+; CHECK: [[BAZ_NORMAL]]:
+; CHECK-NEXT: ret void
+; CHECK: [[EXCEPTIONAL]]:
+; CHECK-NEXT: [[TMP9:%.*]] = landingpad { ptr, i32 }
+; CHECK-NEXT: cleanup
+; CHECK-NEXT: call void @foo()
+; CHECK-NEXT: ret void
+;
invoke void @bar()
- to label %bar.normal unwind label %exceptional
+ to label %bar.normal unwind label %exceptional
bar.normal:
ret void
@@ -16,14 +32,14 @@ dead.block:
baz.invoke:
invoke void @baz()
- to label %baz.normal unwind label %exceptional
+ to label %baz.normal unwind label %exceptional
baz.normal:
ret void
exceptional:
%tmp9 = landingpad { ptr, i32 }
- cleanup
+ cleanup
call void @foo()
ret void
}
diff --git a/llvm/test/Transforms/GVN/no-mem-dep-info.ll b/llvm/test/Transforms/GVN/no-mem-dep-info.ll
index 0380b7e..5f67902 100644
--- a/llvm/test/Transforms/GVN/no-mem-dep-info.ll
+++ b/llvm/test/Transforms/GVN/no-mem-dep-info.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt %s -passes=gvn -S -enable-gvn-memdep=false | FileCheck %s
; RUN: opt %s -passes=gvn -S -enable-gvn-memdep=true | FileCheck %s
@@ -11,6 +12,17 @@ declare <8 x float> @llvm.x86.avx2.gather.d.ps.256(<8 x float>, ptr, <8 x i32>,
; Function Attrs: nounwind
define <8 x float> @foo1(ptr noalias readonly %arr.ptr, ptr noalias readonly %vix.ptr, ptr noalias %t2.ptr) #1 {
+; CHECK-LABEL: define <8 x float> @foo1(
+; CHECK-SAME: ptr noalias readonly [[ARR_PTR:%.*]], ptr noalias readonly [[VIX_PTR:%.*]], ptr noalias [[T2_PTR:%.*]]) {
+; CHECK-NEXT: [[ALLOCAS:.*:]]
+; CHECK-NEXT: [[VIX:%.*]] = load <8 x i32>, ptr [[VIX_PTR]], align 4
+; CHECK-NEXT: [[T1_PTR:%.*]] = getelementptr i8, ptr [[ARR_PTR]], i8 4
+; CHECK-NEXT: [[V1:%.*]] = tail call <8 x float> @llvm.x86.avx2.gather.d.ps.256(<8 x float> undef, ptr [[ARR_PTR]], <8 x i32> [[VIX]], <8 x float> splat (float 0xFFFFFFFFE0000000), i8 1)
+; CHECK-NEXT: store i8 1, ptr [[T1_PTR]], align 4
+; CHECK-NEXT: [[V2:%.*]] = tail call <8 x float> @llvm.x86.avx2.gather.d.ps.256(<8 x float> undef, ptr [[ARR_PTR]], <8 x i32> [[VIX]], <8 x float> splat (float 0xFFFFFFFFE0000000), i8 1)
+; CHECK-NEXT: [[RES:%.*]] = fadd <8 x float> [[V1]], [[V2]]
+; CHECK-NEXT: ret <8 x float> [[RES]]
+;
allocas:
%vix = load <8 x i32>, ptr %vix.ptr, align 4
%t1.ptr = getelementptr i8, ptr %arr.ptr, i8 4
@@ -23,7 +35,3 @@ allocas:
ret <8 x float> %res
}
-; CHECK: foo1
-; CHECK: llvm.x86.avx2.gather.d.ps.256
-; CHECK: store
-; CHECK: llvm.x86.avx2.gather.d.ps.256
diff --git a/llvm/test/Transforms/GVN/noalias.ll b/llvm/test/Transforms/GVN/noalias.ll
index 98cc930..f28023d 100644
--- a/llvm/test/Transforms/GVN/noalias.ll
+++ b/llvm/test/Transforms/GVN/noalias.ll
@@ -1,9 +1,13 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S < %s | FileCheck %s
define i32 @test1(ptr %p, ptr %q) {
-; CHECK-LABEL: @test1(ptr %p, ptr %q)
-; CHECK: load i32, ptr %p, align 4, !noalias ![[SCOPE1:[0-9]+]]
-; CHECK: %c = add i32 %a, %a
+; CHECK-LABEL: define i32 @test1(
+; CHECK-SAME: ptr [[P:%.*]], ptr [[Q:%.*]]) {
+; CHECK-NEXT: [[A:%.*]] = load i32, ptr [[P]], align 4, !noalias [[META0:![0-9]+]]
+; CHECK-NEXT: [[C:%.*]] = add i32 [[A]], [[A]]
+; CHECK-NEXT: ret i32 [[C]]
+;
%a = load i32, ptr %p, !noalias !3
%b = load i32, ptr %p
%c = add i32 %a, %b
@@ -11,9 +15,12 @@ define i32 @test1(ptr %p, ptr %q) {
}
define i32 @test2(ptr %p, ptr %q) {
-; CHECK-LABEL: @test2(ptr %p, ptr %q)
-; CHECK: load i32, ptr %p, align 4, !alias.scope ![[SCOPE1]]
-; CHECK: %c = add i32 %a, %a
+; CHECK-LABEL: define i32 @test2(
+; CHECK-SAME: ptr [[P:%.*]], ptr [[Q:%.*]]) {
+; CHECK-NEXT: [[A:%.*]] = load i32, ptr [[P]], align 4, !alias.scope [[META0]]
+; CHECK-NEXT: [[C:%.*]] = add i32 [[A]], [[A]]
+; CHECK-NEXT: ret i32 [[C]]
+;
%a = load i32, ptr %p, !alias.scope !3
%b = load i32, ptr %p, !alias.scope !3
%c = add i32 %a, %b
@@ -21,17 +28,18 @@ define i32 @test2(ptr %p, ptr %q) {
}
define i32 @test3(ptr %p, ptr %q) {
-; CHECK-LABEL: @test3(ptr %p, ptr %q)
-; CHECK: load i32, ptr %p, align 4, !alias.scope ![[SCOPE2:[0-9]+]]
-; CHECK: %c = add i32 %a, %a
+; CHECK-LABEL: define i32 @test3(
+; CHECK-SAME: ptr [[P:%.*]], ptr [[Q:%.*]]) {
+; CHECK-NEXT: [[A:%.*]] = load i32, ptr [[P]], align 4, !alias.scope [[META3:![0-9]+]]
+; CHECK-NEXT: [[C:%.*]] = add i32 [[A]], [[A]]
+; CHECK-NEXT: ret i32 [[C]]
+;
%a = load i32, ptr %p, !alias.scope !4
%b = load i32, ptr %p, !alias.scope !5
%c = add i32 %a, %b
ret i32 %c
}
-; CHECK: ![[SCOPE1]] = !{!{{[0-9]+}}}
-; CHECK: ![[SCOPE2]] = !{!{{[0-9]+}}}
declare i32 @foo(ptr) readonly
!0 = distinct !{!0, !2, !"callee0: %a"}
@@ -41,3 +49,10 @@ declare i32 @foo(ptr) readonly
!3 = !{!0}
!4 = !{!1}
!5 = !{!0, !1}
+;.
+; CHECK: [[META0]] = !{[[META1:![0-9]+]]}
+; CHECK: [[META1]] = distinct !{[[META1]], [[META2:![0-9]+]], !"callee0: %a"}
+; CHECK: [[META2]] = distinct !{[[META2]], !"callee0"}
+; CHECK: [[META3]] = !{[[META4:![0-9]+]]}
+; CHECK: [[META4]] = distinct !{[[META4]], [[META2]], !"callee0: %b"}
+;.
diff --git a/llvm/test/Transforms/GVN/non-local-offset.ll b/llvm/test/Transforms/GVN/non-local-offset.ll
index 0467657..19b571e 100644
--- a/llvm/test/Transforms/GVN/non-local-offset.ll
+++ b/llvm/test/Transforms/GVN/non-local-offset.ll
@@ -1,16 +1,24 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S < %s | FileCheck %s
target datalayout = "e-p:64:64:64"
; GVN should ignore the store to p[1] to see that the load from p[0] is
; fully redundant.
-
-; CHECK-LABEL: @yes(
-; CHECK: if.then:
-; CHECK-NEXT: store i32 0, ptr %q
-; CHECK-NEXT: ret void
-
define void @yes(i1 %c, ptr %p, ptr %q) nounwind {
+; CHECK-LABEL: define void @yes(
+; CHECK-SAME: i1 [[C:%.*]], ptr [[P:%.*]], ptr [[Q:%.*]]) #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: store i32 0, ptr [[P]], align 4
+; CHECK-NEXT: [[P1:%.*]] = getelementptr inbounds i32, ptr [[P]], i64 1
+; CHECK-NEXT: store i32 1, ptr [[P1]], align 4
+; CHECK-NEXT: br i1 [[C]], label %[[IF_ELSE:.*]], label %[[IF_THEN:.*]]
+; CHECK: [[IF_THEN]]:
+; CHECK-NEXT: store i32 0, ptr [[Q]], align 4
+; CHECK-NEXT: ret void
+; CHECK: [[IF_ELSE]]:
+; CHECK-NEXT: ret void
+;
entry:
store i32 0, ptr %p
%p1 = getelementptr inbounds i32, ptr %p, i64 1
@@ -29,16 +37,22 @@ if.else:
; GVN should ignore the store to p[1] to see that the first load from p[0] is
; fully redundant. However, the second load is larger, so it's not a simple
; redundancy.
-
-; CHECK-LABEL: @watch_out_for_size_change(
-; CHECK: if.then:
-; CHECK-NEXT: store i32 0, ptr %q
-; CHECK-NEXT: ret void
-; CHECK: if.else:
-; CHECK: load i64, ptr %p
-; CHECK: store i64
-
define void @watch_out_for_size_change(i1 %c, ptr %p, ptr %q) nounwind {
+; CHECK-LABEL: define void @watch_out_for_size_change(
+; CHECK-SAME: i1 [[C:%.*]], ptr [[P:%.*]], ptr [[Q:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: store i32 0, ptr [[P]], align 4
+; CHECK-NEXT: [[P1:%.*]] = getelementptr inbounds i32, ptr [[P]], i64 1
+; CHECK-NEXT: store i32 1, ptr [[P1]], align 4
+; CHECK-NEXT: br i1 [[C]], label %[[IF_ELSE:.*]], label %[[IF_THEN:.*]]
+; CHECK: [[IF_THEN]]:
+; CHECK-NEXT: store i32 0, ptr [[Q]], align 4
+; CHECK-NEXT: ret void
+; CHECK: [[IF_ELSE]]:
+; CHECK-NEXT: [[T64:%.*]] = load i64, ptr [[P]], align 4
+; CHECK-NEXT: store i64 [[T64]], ptr [[Q]], align 4
+; CHECK-NEXT: ret void
+;
entry:
store i32 0, ptr %p
%p1 = getelementptr inbounds i32, ptr %p, i64 1
diff --git a/llvm/test/Transforms/GVN/nonescaping-malloc.ll b/llvm/test/Transforms/GVN/nonescaping-malloc.ll
index 76d8cda..f67c958 100644
--- a/llvm/test/Transforms/GVN/nonescaping-malloc.ll
+++ b/llvm/test/Transforms/GVN/nonescaping-malloc.ll
@@ -1,5 +1,7 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; REQUIRES: asserts
; RUN: opt < %s -passes=gvn -stats -disable-output 2>&1 | FileCheck %s
+
; rdar://7363102
; CHECK: Number of loads deleted
@@ -102,3 +104,5 @@ _ZN4llvm9StringMapIPvNS_15MallocAllocatorEE16GetOrCreateValueIS1_EERNS_14StringM
}
declare void @llvm.memcpy.p0.p0.i64(ptr nocapture, ptr nocapture, i64, i1) nounwind
+;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
+; CHECK: {{.*}}
diff --git a/llvm/test/Transforms/GVN/null-aliases-nothing.ll b/llvm/test/Transforms/GVN/null-aliases-nothing.ll
index dc4ff406..81d44ce 100644
--- a/llvm/test/Transforms/GVN/null-aliases-nothing.ll
+++ b/llvm/test/Transforms/GVN/null-aliases-nothing.ll
@@ -1,19 +1,24 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=gvn -S | FileCheck %s
%t = type { i32 }
declare void @test1f(ptr)
-define void @test1(ptr noalias %stuff ) {
- %before = load i32, ptr %stuff
-
- call void @test1f(ptr null)
-
- %after = load i32, ptr %stuff ; <--- This should be a dead load
- %sum = add i32 %before, %after
-
- store i32 %sum, ptr %stuff
- ret void
-; CHECK: load
-; CHECK-NOT: load
-; CHECK: ret void
+; `%stuff` is noalias, `test1f` receives only null, cannot clobber `%stuff`,
+; thus the second load is dead.
+define void @test1(ptr noalias %stuff) {
+; CHECK-LABEL: define void @test1(
+; CHECK-SAME: ptr noalias [[STUFF:%.*]]) {
+; CHECK-NEXT: [[BEFORE:%.*]] = load i32, ptr [[STUFF]], align 4
+; CHECK-NEXT: call void @test1f(ptr null)
+; CHECK-NEXT: [[SUM:%.*]] = add i32 [[BEFORE]], [[BEFORE]]
+; CHECK-NEXT: store i32 [[SUM]], ptr [[STUFF]], align 4
+; CHECK-NEXT: ret void
+;
+ %before = load i32, ptr %stuff
+ call void @test1f(ptr null)
+ %after = load i32, ptr %stuff
+ %sum = add i32 %before, %after
+ store i32 %sum, ptr %stuff
+ ret void
}
diff --git a/llvm/test/Transforms/GVN/phi-translate-partial-alias.ll b/llvm/test/Transforms/GVN/phi-translate-partial-alias.ll
index a102976..358816f 100644
--- a/llvm/test/Transforms/GVN/phi-translate-partial-alias.ll
+++ b/llvm/test/Transforms/GVN/phi-translate-partial-alias.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S < %s | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-f128:128:128-n8:16:32:64"
@@ -6,12 +7,19 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
; not actually redundant around the loop backedge, despite appearances
; if phi-translation is ignored.
-; CHECK: define void @test0(ptr %begin)
-; CHECK: loop:
-; CHECK: %l0 = load i8, ptr %phi
-; CHECK: call void @bar(i8 %l0)
-; CHECK: %l1 = load i8, ptr %phi
define void @test0(ptr %begin) {
+; CHECK-LABEL: define void @test0(
+; CHECK-SAME: ptr [[BEGIN:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*]]:
+; CHECK-NEXT: br label %[[LOOP:.*]]
+; CHECK: [[LOOP]]:
+; CHECK-NEXT: [[PHI:%.*]] = phi ptr [ [[BEGIN]], %[[ENTRY]] ], [ [[NEXT:%.*]], %[[LOOP]] ]
+; CHECK-NEXT: [[L0:%.*]] = load i8, ptr [[PHI]], align 1
+; CHECK-NEXT: call void @bar(i8 [[L0]])
+; CHECK-NEXT: [[L1:%.*]] = load i8, ptr [[PHI]], align 1
+; CHECK-NEXT: [[NEXT]] = getelementptr inbounds i8, ptr [[PHI]], i8 [[L1]]
+; CHECK-NEXT: br label %[[LOOP]]
+;
entry:
br label %loop
diff --git a/llvm/test/Transforms/GVN/pr10820.ll b/llvm/test/Transforms/GVN/pr10820.ll
index 48b13a4..4b7be9c 100644
--- a/llvm/test/Transforms/GVN/pr10820.ll
+++ b/llvm/test/Transforms/GVN/pr10820.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=gvn -S | FileCheck %s
target datalayout =
@@ -7,12 +8,16 @@ target triple = "x86_64-unknown-linux-gnu"
@g = external global i31
define void @main() nounwind uwtable {
+; CHECK-LABEL: define void @main(
+; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: store i32 402662078, ptr @g, align 8
+; CHECK-NEXT: store i31 402662078, ptr undef, align 1
+; CHECK-NEXT: unreachable
+;
entry:
-; CHECK: store i32
store i32 402662078, ptr @g, align 8
-; CHECK-NOT: load i31
%0 = load i31, ptr @g, align 8
-; CHECK: store i31
store i31 %0, ptr undef, align 1
unreachable
}
diff --git a/llvm/test/Transforms/GVN/pr12979.ll b/llvm/test/Transforms/GVN/pr12979.ll
index 2f7a463..5ff3aa2 100644
--- a/llvm/test/Transforms/GVN/pr12979.ll
+++ b/llvm/test/Transforms/GVN/pr12979.ll
@@ -1,10 +1,13 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S < %s | FileCheck %s
define i32 @test1(i32 %x, i32 %y) {
-; CHECK: @test1(i32 %x, i32 %y)
-; CHECK: %add1 = add i32 %x, %y
-; CHECK: %foo = add i32 %add1, %add1
-
+; CHECK-LABEL: define i32 @test1(
+; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
+; CHECK-NEXT: [[ADD1:%.*]] = add i32 [[X]], [[Y]]
+; CHECK-NEXT: [[FOO:%.*]] = add i32 [[ADD1]], [[ADD1]]
+; CHECK-NEXT: ret i32 [[FOO]]
+;
%add1 = add nsw i32 %x, %y
%add2 = add i32 %x, %y
%foo = add i32 %add1, %add2
@@ -12,10 +15,12 @@ define i32 @test1(i32 %x, i32 %y) {
}
define i32 @test2(i32 %x, i32 %y) {
-; CHECK: @test2(i32 %x, i32 %y)
-; CHECK: %add1 = add i32 %x, %y
-; CHECK: %foo = add i32 %add1, %add1
-
+; CHECK-LABEL: define i32 @test2(
+; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
+; CHECK-NEXT: [[ADD1:%.*]] = add i32 [[X]], [[Y]]
+; CHECK-NEXT: [[FOO:%.*]] = add i32 [[ADD1]], [[ADD1]]
+; CHECK-NEXT: ret i32 [[FOO]]
+;
%add1 = add nuw i32 %x, %y
%add2 = add i32 %x, %y
%foo = add i32 %add1, %add2
@@ -23,10 +28,12 @@ define i32 @test2(i32 %x, i32 %y) {
}
define i32 @test3(i32 %x, i32 %y) {
-; CHECK: @test3(i32 %x, i32 %y)
-; CHECK: %add1 = add i32 %x, %y
-; CHECK: %foo = add i32 %add1, %add1
-
+; CHECK-LABEL: define i32 @test3(
+; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
+; CHECK-NEXT: [[ADD1:%.*]] = add i32 [[X]], [[Y]]
+; CHECK-NEXT: [[FOO:%.*]] = add i32 [[ADD1]], [[ADD1]]
+; CHECK-NEXT: ret i32 [[FOO]]
+;
%add1 = add nuw nsw i32 %x, %y
%add2 = add i32 %x, %y
%foo = add i32 %add1, %add2
@@ -34,10 +41,12 @@ define i32 @test3(i32 %x, i32 %y) {
}
define i32 @test4(i32 %x, i32 %y) {
-; CHECK: @test4(i32 %x, i32 %y)
-; CHECK: %add1 = add nsw i32 %x, %y
-; CHECK: %foo = add i32 %add1, %add1
-
+; CHECK-LABEL: define i32 @test4(
+; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
+; CHECK-NEXT: [[ADD1:%.*]] = add nsw i32 [[X]], [[Y]]
+; CHECK-NEXT: [[FOO:%.*]] = add i32 [[ADD1]], [[ADD1]]
+; CHECK-NEXT: ret i32 [[FOO]]
+;
%add1 = add nsw i32 %x, %y
%add2 = add nsw i32 %x, %y
%foo = add i32 %add1, %add2
@@ -45,10 +54,12 @@ define i32 @test4(i32 %x, i32 %y) {
}
define i32 @test5(i32 %x, i32 %y) {
-; CHECK: @test5(i32 %x, i32 %y)
-; CHECK: %add1 = add i32 %x, %y
-; CHECK: %foo = add i32 %add1, %add1
-
+; CHECK-LABEL: define i32 @test5(
+; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
+; CHECK-NEXT: [[ADD1:%.*]] = add i32 [[X]], [[Y]]
+; CHECK-NEXT: [[FOO:%.*]] = add i32 [[ADD1]], [[ADD1]]
+; CHECK-NEXT: ret i32 [[FOO]]
+;
%add1 = add nuw i32 %x, %y
%add2 = add nsw i32 %x, %y
%foo = add i32 %add1, %add2
@@ -56,10 +67,12 @@ define i32 @test5(i32 %x, i32 %y) {
}
define i32 @test6(i32 %x, i32 %y) {
-; CHECK: @test6(i32 %x, i32 %y)
-; CHECK: %add1 = add nsw i32 %x, %y
-; CHECK: %foo = add i32 %add1, %add1
-
+; CHECK-LABEL: define i32 @test6(
+; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
+; CHECK-NEXT: [[ADD1:%.*]] = add nsw i32 [[X]], [[Y]]
+; CHECK-NEXT: [[FOO:%.*]] = add i32 [[ADD1]], [[ADD1]]
+; CHECK-NEXT: ret i32 [[FOO]]
+;
%add1 = add nuw nsw i32 %x, %y
%add2 = add nsw i32 %x, %y
%foo = add i32 %add1, %add2
@@ -67,11 +80,12 @@ define i32 @test6(i32 %x, i32 %y) {
}
define i32 @test7(i32 %x, i32 %y) {
-; CHECK: @test7(i32 %x, i32 %y)
-; CHECK: %add1 = add i32 %x, %y
-; CHECK-NOT: what_is_this
-; CHECK: %foo = add i32 %add1, %add1
-
+; CHECK-LABEL: define i32 @test7(
+; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
+; CHECK-NEXT: [[ADD1:%.*]] = add i32 [[X]], [[Y]]
+; CHECK-NEXT: [[FOO:%.*]] = add i32 [[ADD1]], [[ADD1]]
+; CHECK-NEXT: ret i32 [[FOO]]
+;
%add1 = add i32 %x, %y, !what_is_this !{}
%add2 = add i32 %x, %y
%foo = add i32 %add1, %add2
@@ -81,11 +95,12 @@ define i32 @test7(i32 %x, i32 %y) {
declare void @mumble(i2, i2)
define void @test8(i2 %x) {
-; CHECK-LABEL: @test8(
-; CHECK: %[[ashr:.*]] = ashr i2 %x, 1
-; CHECK-NEXT: call void @mumble(i2 %[[ashr]], i2 %[[ashr]])
-; CHECK-NEXT: ret void
-
+; CHECK-LABEL: define void @test8(
+; CHECK-SAME: i2 [[X:%.*]]) {
+; CHECK-NEXT: [[ASHR0:%.*]] = ashr i2 [[X]], 1
+; CHECK-NEXT: call void @mumble(i2 [[ASHR0]], i2 [[ASHR0]])
+; CHECK-NEXT: ret void
+;
%ashr0 = ashr exact i2 %x, 1
%ashr1 = ashr i2 %x, 1
call void @mumble(i2 %ashr0, i2 %ashr1)
diff --git a/llvm/test/Transforms/GVN/pr17732.ll b/llvm/test/Transforms/GVN/pr17732.ll
index c6ebd7a..29c7931c 100644
--- a/llvm/test/Transforms/GVN/pr17732.ll
+++ b/llvm/test/Transforms/GVN/pr17732.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S -o - < %s | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
@@ -13,6 +14,12 @@ target triple = "x86_64-unknown-linux-gnu"
@vector_with_zeroinit = common global %struct.with_vector zeroinitializer, align 4
define i32 @main() {
+; CHECK-LABEL: define i32 @main() {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 @array_with_zeroinit, ptr align 4 @main.obj_with_array, i64 12, i1 false)
+; CHECK-NEXT: tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 @vector_with_zeroinit, ptr align 4 @main.obj_with_vector, i64 12, i1 false)
+; CHECK-NEXT: ret i32 1
+;
entry:
tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 @array_with_zeroinit, ptr align 4 @main.obj_with_array, i64 12, i1 false)
%0 = load i8, ptr getelementptr inbounds (%struct.with_array, ptr @array_with_zeroinit, i64 0, i32 2), align 4
@@ -23,8 +30,6 @@ entry:
%conv1 = sext i8 %1 to i32
%and = and i32 %conv0, %conv1
ret i32 %and
-; CHECK-LABEL: define i32 @main(
-; CHECK: ret i32 1
}
declare void @llvm.memcpy.p0.p0.i64(ptr nocapture, ptr nocapture readonly, i64, i1)
diff --git a/llvm/test/Transforms/GVN/pr17852.ll b/llvm/test/Transforms/GVN/pr17852.ll
index 731cbc6..c464cf2 100644
--- a/llvm/test/Transforms/GVN/pr17852.ll
+++ b/llvm/test/Transforms/GVN/pr17852.ll
@@ -1,7 +1,69 @@
-; RUN: opt < %s -passes=gvn
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt -passes=gvn -S -o - < %s | FileCheck %s
+
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
%struct.S0 = type { [2 x i8], [2 x i8], [4 x i8], [2 x i8], i32, i32, i32, i32 }
+
define void @fn1(ptr byval(%struct.S0) align 8 %p1) {
+; CHECK-LABEL: define void @fn1(
+; CHECK-SAME: ptr byval([[STRUCT_S0:%.*]]) align 8 [[P1:%.*]]) {
+; CHECK-NEXT: br label %[[FOR_COND:.*]]
+; CHECK: [[FOR_COND]]:
+; CHECK-NEXT: br i1 true, label %[[IF_ELSE:.*]], label %[[IF_THEN:.*]]
+; CHECK: [[BB1:.*:]]
+; CHECK-NEXT: [[F2:%.*]] = getelementptr inbounds [[STRUCT_S0]], ptr [[P1]], i64 0, i32 2
+; CHECK-NEXT: [[F9:%.*]] = getelementptr inbounds [[STRUCT_S0]], ptr [[P1]], i64 0, i32 7
+; CHECK-NEXT: br label %[[FOR_COND]]
+; CHECK: [[IF_THEN]]:
+; CHECK-NEXT: [[F22:%.*]] = getelementptr inbounds [[STRUCT_S0]], ptr [[P1]], i64 0, i32 2
+; CHECK-NEXT: [[F7:%.*]] = getelementptr inbounds [[STRUCT_S0]], ptr [[P1]], i64 0, i32 5
+; CHECK-NEXT: [[TMP7:%.*]] = load i32, ptr [[F7]], align 8
+; CHECK-NEXT: br label %[[IF_END40:.*]]
+; CHECK: [[IF_ELSE]]:
+; CHECK-NEXT: br i1 false, label %[[FOR_COND18:.*]], label %[[IF_THEN6:.*]]
+; CHECK: [[IF_THEN6]]:
+; CHECK-NEXT: [[F3:%.*]] = getelementptr inbounds [[STRUCT_S0]], ptr [[P1]], i64 0, i32 2
+; CHECK-NEXT: [[F5:%.*]] = getelementptr inbounds [[STRUCT_S0]], ptr [[P1]], i64 0, i32 3
+; CHECK-NEXT: br label %[[IF_END36:.*]]
+; CHECK: [[FOR_COND18]]:
+; CHECK-NEXT: call void @fn4()
+; CHECK-NEXT: br i1 true, label %[[IF_END:.*]], label %[[FOR_COND18_IF_END36_CRIT_EDGE:.*]]
+; CHECK: [[FOR_COND18_IF_END36_CRIT_EDGE]]:
+; CHECK-NEXT: br label %[[IF_END36]]
+; CHECK: [[IF_END]]:
+; CHECK-NEXT: [[F321:%.*]] = getelementptr inbounds [[STRUCT_S0]], ptr [[P1]], i64 0, i32 2
+; CHECK-NEXT: [[F925:%.*]] = getelementptr inbounds [[STRUCT_S0]], ptr [[P1]], i64 0, i32 7
+; CHECK-NEXT: [[F526:%.*]] = getelementptr inbounds [[STRUCT_S0]], ptr [[P1]], i64 0, i32 3
+; CHECK-NEXT: [[BF_LOAD27:%.*]] = load i16, ptr [[F526]], align 8
+; CHECK-NEXT: br label %[[IF_END36]]
+; CHECK: [[IF_END36]]:
+; CHECK-NEXT: [[F537:%.*]] = getelementptr inbounds [[STRUCT_S0]], ptr [[P1]], i64 0, i32 3
+; CHECK-NEXT: [[BF_LOAD38:%.*]] = load i16, ptr [[F537]], align 8
+; CHECK-NEXT: [[BF_CLEAR39:%.*]] = and i16 [[BF_LOAD38]], -16384
+; CHECK-NEXT: br label %[[IF_END40]]
+; CHECK: [[IF_END40]]:
+; CHECK-NEXT: [[BF_LOAD522:%.*]] = phi i16 [ [[BF_LOAD38]], %[[IF_END36]] ], [ poison, %[[IF_THEN]] ]
+; CHECK-NEXT: [[F6:%.*]] = getelementptr inbounds [[STRUCT_S0]], ptr [[P1]], i64 0, i32 4
+; CHECK-NEXT: [[TMP18:%.*]] = load i32, ptr [[F6]], align 4
+; CHECK-NEXT: call void @fn2(i32 [[TMP18]])
+; CHECK-NEXT: [[F8:%.*]] = getelementptr inbounds [[STRUCT_S0]], ptr [[P1]], i64 0, i32 6
+; CHECK-NEXT: [[TMP19:%.*]] = load i32, ptr [[F8]], align 4
+; CHECK-NEXT: [[TOBOOL41:%.*]] = icmp eq i32 [[TMP19]], 0
+; CHECK-NEXT: br i1 true, label %[[IF_END40_IF_END50_CRIT_EDGE:.*]], label %[[IF_THEN42:.*]]
+; CHECK: [[IF_END40_IF_END50_CRIT_EDGE]]:
+; CHECK-NEXT: [[F551_PHI_TRANS_INSERT:%.*]] = getelementptr inbounds [[STRUCT_S0]], ptr [[P1]], i64 0, i32 3
+; CHECK-NEXT: [[BF_LOAD52_PRE:%.*]] = load i16, ptr [[F551_PHI_TRANS_INSERT]], align 8
+; CHECK-NEXT: br label %[[IF_END50:.*]]
+; CHECK: [[IF_THEN42]]:
+; CHECK-NEXT: [[F547:%.*]] = getelementptr inbounds [[STRUCT_S0]], ptr [[P1]], i64 0, i32 3
+; CHECK-NEXT: [[BF_LOAD48:%.*]] = load i16, ptr [[F547]], align 8
+; CHECK-NEXT: br label %[[IF_END50]]
+; CHECK: [[IF_END50]]:
+; CHECK-NEXT: [[BF_LOAD52:%.*]] = phi i16 [ [[BF_LOAD52_PRE]], %[[IF_END40_IF_END50_CRIT_EDGE]] ], [ [[BF_LOAD522]], %[[IF_THEN42]] ]
+; CHECK-NEXT: [[F551:%.*]] = getelementptr inbounds [[STRUCT_S0]], ptr [[P1]], i64 0, i32 3
+; CHECK-NEXT: [[BF_CLEAR53:%.*]] = and i16 [[BF_LOAD52]], -16384
+; CHECK-NEXT: ret void
+;
br label %for.cond
for.cond: ; preds = %1, %0
br label %for.end
diff --git a/llvm/test/Transforms/GVN/pr24397.ll b/llvm/test/Transforms/GVN/pr24397.ll
index 8ef9360..a663350 100644
--- a/llvm/test/Transforms/GVN/pr24397.ll
+++ b/llvm/test/Transforms/GVN/pr24397.ll
@@ -1,8 +1,21 @@
-; RUN: opt -passes=gvn -disable-output < %s
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt -passes=gvn -S -o - < %s | FileCheck %s
target triple = "x86_64-unknown-linux-gnu"
define i64 @foo(ptr %arrayidx) {
+; CHECK-LABEL: define i64 @foo(
+; CHECK-SAME: ptr [[ARRAYIDX:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[P:%.*]] = load ptr, ptr [[ARRAYIDX]], align 8
+; CHECK-NEXT: [[CMPNULL:%.*]] = icmp eq ptr [[P]], null
+; CHECK-NEXT: [[TMP0:%.*]] = ptrtoint ptr [[P]] to i64
+; CHECK-NEXT: br label %[[BB2:.*]]
+; CHECK: [[ENTRY2:.*:]]
+; CHECK-NEXT: br label %[[BB2]]
+; CHECK: [[BB2]]:
+; CHECK-NEXT: ret i64 [[TMP0]]
+;
entry:
%p = load ptr, ptr %arrayidx, align 8
%cmpnull = icmp eq ptr %p, null
diff --git a/llvm/test/Transforms/GVN/pr24426.ll b/llvm/test/Transforms/GVN/pr24426.ll
index 2a08857..d296e15a0 100644
--- a/llvm/test/Transforms/GVN/pr24426.ll
+++ b/llvm/test/Transforms/GVN/pr24426.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=memcpyopt,mldst-motion,gvn -S | FileCheck %s
declare void @check(i8)
@@ -5,13 +6,17 @@ declare void @check(i8)
declare void @write(ptr %res)
define void @test1() {
+; CHECK-LABEL: define void @test1() {
+; CHECK-NEXT: [[TMP1:%.*]] = alloca [10 x i8], align 1
+; CHECK-NEXT: call void @write(ptr [[TMP1]])
+; CHECK-NEXT: [[TMP2:%.*]] = load i8, ptr [[TMP1]], align 1
+; CHECK-NEXT: call void @check(i8 [[TMP2]])
+; CHECK-NEXT: ret void
+;
%1 = alloca [10 x i8]
call void @write(ptr %1)
%2 = load i8, ptr %1
-
-; CHECK-NOT: undef
call void @check(i8 %2)
-
ret void
}
diff --git a/llvm/test/Transforms/GVN/pr25440.ll b/llvm/test/Transforms/GVN/pr25440.ll
index 507111ef..046775e 100644
--- a/llvm/test/Transforms/GVN/pr25440.ll
+++ b/llvm/test/Transforms/GVN/pr25440.ll
@@ -1,4 +1,5 @@
-;RUN: opt -passes=gvn -S < %s | FileCheck %s
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt -passes=gvn -S < %s | FileCheck %s
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n8:16:32-S64"
target triple = "thumbv7--linux-gnueabi"
@@ -10,19 +11,53 @@ target triple = "thumbv7--linux-gnueabi"
; Function Attrs: nounwind
define fastcc void @foo(ptr nocapture readonly %x) {
-;CHECK-LABEL: foo
+; CHECK-LABEL: define fastcc void @foo(
+; CHECK-SAME: ptr readonly captures(none) [[X:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*]]:
+; CHECK-NEXT: br label %[[BB0:.*]]
+; CHECK: [[BB0]]:
+; CHECK-NEXT: [[X_TR:%.*]] = phi ptr [ [[X]], %[[ENTRY]] ], [ null, %[[LAND_LHS_TRUE:.*]] ]
+; CHECK-NEXT: [[TMP0:%.*]] = load i16, ptr [[X_TR]], align 4
+; CHECK-NEXT: [[CONV:%.*]] = zext i16 [[TMP0]] to i32
+; CHECK-NEXT: switch i32 [[CONV]], label %[[IF_END_50:.*]] [
+; CHECK-NEXT: i32 43, label %[[CLEANUP:.*]]
+; CHECK-NEXT: i32 52, label %[[IF_THEN_5:.*]]
+; CHECK-NEXT: ]
+; CHECK: [[IF_THEN_5]]:
+; CHECK-NEXT: br i1 undef, label %[[LAND_LHS_TRUE]], label %[[IF_THEN_26:.*]]
+; CHECK: [[LAND_LHS_TRUE]]:
+; CHECK-NEXT: br i1 undef, label %[[CLEANUP]], label %[[BB0]]
+; CHECK: [[IF_THEN_26]]:
+; CHECK-NEXT: br i1 undef, label %[[COND_END:.*]], label %[[COND_FALSE:.*]]
+; CHECK: [[COND_FALSE]]:
+; CHECK-NEXT: [[MODE:%.*]] = getelementptr inbounds [[STRUCT_A:%.*]], ptr [[X_TR]], i32 0, i32 1
+; CHECK-NEXT: [[BF_LOAD:%.*]] = load i16, ptr [[MODE]], align 2
+; CHECK-NEXT: [[BF_SHL:%.*]] = shl i16 [[BF_LOAD]], 8
+; CHECK-NEXT: br label %[[COND_END]]
+; CHECK: [[COND_END]]:
+; CHECK-NEXT: br i1 undef, label %[[IF_THEN_44:.*]], label %[[CLEANUP]]
+; CHECK: [[IF_THEN_44]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[IF_END_50]]:
+; CHECK-NEXT: [[ARRAYIDX52:%.*]] = getelementptr inbounds [0 x i32], ptr @length, i32 0, i32 [[CONV]]
+; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[ARRAYIDX52]], align 4
+; CHECK-NEXT: br i1 undef, label %[[FOR_BODY_57:.*]], label %[[CLEANUP]]
+; CHECK: [[FOR_BODY_57]]:
+; CHECK-NEXT: [[I_2157:%.*]] = add nsw i32 [[TMP1]], -1
+; CHECK-NEXT: unreachable
+; CHECK: [[CLEANUP]]:
+; CHECK-NEXT: ret void
+;
entry:
br label %bb0
bb0: ; preds = %land.lhs.true, %entry
-;CHECK: bb0:
%x.tr = phi ptr [ %x, %entry ], [ null, %land.lhs.true ]
%0 = load i16, ptr %x.tr, align 4
-; CHECK: load i16, ptr
%conv = zext i16 %0 to i32
switch i32 %conv, label %if.end.50 [
- i32 43, label %cleanup
- i32 52, label %if.then.5
+ i32 43, label %cleanup
+ i32 52, label %if.then.5
]
if.then.5: ; preds = %bb0
@@ -36,8 +71,6 @@ if.then.26: ; preds = %if.then.5
br i1 undef, label %cond.end, label %cond.false
cond.false: ; preds = %if.then.26
-; CHECK: cond.false:
-; CHECK: load i16
%mode = getelementptr inbounds %struct.a, ptr %x.tr.lcssa163, i32 0, i32 1
%bf.load = load i16, ptr %mode, align 2
%bf.shl = shl i16 %bf.load, 8
@@ -50,7 +83,6 @@ if.then.44: ; preds = %cond.end
unreachable
if.end.50: ; preds = %bb0
-;%CHECK: if.end.50:
%conv.lcssa = phi i32 [ %conv, %bb0 ]
%arrayidx52 = getelementptr inbounds [0 x i32], ptr @length, i32 0, i32 %conv.lcssa
%1 = load i32, ptr %arrayidx52, align 4
@@ -68,7 +100,38 @@ cleanup: ; preds = %if.end.50, %cond.en
@dfg_text = external global ptr, align 4
define void @dfg_lex() {
-;CHECK-LABEL: dfg_lex
+; CHECK-LABEL: define void @dfg_lex() {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: br label %[[WHILE_BODYTHREAD_PRE_SPLIT:.*]]
+; CHECK: [[WHILE_BODYTHREAD_PRE_SPLIT]]:
+; CHECK-NEXT: br i1 undef, label %[[WHILE_BODYTHREAD_PRE_SPLIT_IF_THEN_14_CRIT_EDGE:.*]], label %[[IF_END_15:.*]]
+; CHECK: [[WHILE_BODYTHREAD_PRE_SPLIT_IF_THEN_14_CRIT_EDGE]]:
+; CHECK-NEXT: [[V1_PRE:%.*]] = load i32, ptr @dfg_text, align 4
+; CHECK-NEXT: br label %[[IF_THEN_14:.*]]
+; CHECK: [[IF_THEN_14]]:
+; CHECK-NEXT: [[V1:%.*]] = phi i32 [ [[V1_PRE]], %[[WHILE_BODYTHREAD_PRE_SPLIT_IF_THEN_14_CRIT_EDGE]] ], [ [[SUB_PTR_RHS_CAST25:%.*]], %[[WHILE_END:.*]] ]
+; CHECK-NEXT: br label %[[IF_END_15]]
+; CHECK: [[IF_END_15]]:
+; CHECK-NEXT: [[V2:%.*]] = load ptr, ptr @yy_c_buf_p, align 4
+; CHECK-NEXT: br label %[[WHILE_COND_16:.*]]
+; CHECK: [[WHILE_COND_16]]:
+; CHECK-NEXT: br i1 undef, label %[[WHILE_COND_16]], label %[[WHILE_END]]
+; CHECK: [[WHILE_END]]:
+; CHECK-NEXT: [[ADD_PTR:%.*]] = getelementptr inbounds i8, ptr [[V2]], i32 undef
+; CHECK-NEXT: store ptr [[ADD_PTR]], ptr @dfg_text, align 4
+; CHECK-NEXT: [[SUB_PTR_RHS_CAST25]] = ptrtoint ptr [[ADD_PTR]] to i32
+; CHECK-NEXT: [[SUB_PTR_SUB26:%.*]] = sub i32 0, [[SUB_PTR_RHS_CAST25]]
+; CHECK-NEXT: switch i32 undef, label %[[SW_DEFAULT:.*]] [
+; CHECK-NEXT: i32 65, label %[[WHILE_BODYTHREAD_PRE_SPLIT]]
+; CHECK-NEXT: i32 3, label %[[RETURN:.*]]
+; CHECK-NEXT: i32 57, label %[[WHILE_BODYTHREAD_PRE_SPLIT]]
+; CHECK-NEXT: i32 60, label %[[IF_THEN_14]]
+; CHECK-NEXT: ]
+; CHECK: [[SW_DEFAULT]]:
+; CHECK-NEXT: unreachable
+; CHECK: [[RETURN]]:
+; CHECK-NEXT: ret void
+;
entry:
br label %while.bodythread-pre-split
@@ -93,10 +156,10 @@ while.end: ; preds = %while.cond.16
%sub.ptr.rhs.cast25 = ptrtoint ptr %add.ptr to i32
%sub.ptr.sub26 = sub i32 0, %sub.ptr.rhs.cast25
switch i32 undef, label %sw.default [
- i32 65, label %while.bodythread-pre-split
- i32 3, label %return
- i32 57, label %while.bodythread-pre-split
- i32 60, label %if.then.14
+ i32 65, label %while.bodythread-pre-split
+ i32 3, label %return
+ i32 57, label %while.bodythread-pre-split
+ i32 60, label %if.then.14
]
sw.default: ; preds = %while.end
diff --git a/llvm/test/Transforms/GVN/pr28562.ll b/llvm/test/Transforms/GVN/pr28562.ll
index 338200a..02301dc 100644
--- a/llvm/test/Transforms/GVN/pr28562.ll
+++ b/llvm/test/Transforms/GVN/pr28562.ll
@@ -1,9 +1,13 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -S -passes=gvn < %s | FileCheck %s
+
define ptr @test1(ptr %a) {
+; CHECK-LABEL: define ptr @test1(
+; CHECK-SAME: ptr [[A:%.*]]) {
+; CHECK-NEXT: [[X1:%.*]] = getelementptr i32, ptr [[A]], i32 10
+; CHECK-NEXT: ret ptr [[X1]]
+;
%x1 = getelementptr inbounds i32, ptr %a, i32 10
%x2 = getelementptr i32, ptr %a, i32 10
ret ptr %x2
-; CHECK-LABEL: @test1(
-; CHECK: %[[x:.*]] = getelementptr i32, ptr %a, i32 10
-; CHECK: ret ptr %[[x]]
}
diff --git a/llvm/test/Transforms/GVN/pr28879.ll b/llvm/test/Transforms/GVN/pr28879.ll
index 0c9231d..b961a55 100644
--- a/llvm/test/Transforms/GVN/pr28879.ll
+++ b/llvm/test/Transforms/GVN/pr28879.ll
@@ -1,12 +1,22 @@
-; RUN: opt -passes=gvn <%s -S -o - | FileCheck %s
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt -passes=gvn < %s -S -o - | FileCheck %s
define void @f() {
+; CHECK-LABEL: define void @f() {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[A:%.*]] = alloca <7 x i1>, align 2
+; CHECK-NEXT: store <7 x i1> undef, ptr [[A]], align 2
+; CHECK-NEXT: [[VAL:%.*]] = load i1, ptr [[A]], align 2
+; CHECK-NEXT: br i1 [[VAL]], label %[[COND_TRUE:.*]], label %[[COND_FALSE:.*]]
+; CHECK: [[COND_TRUE]]:
+; CHECK-NEXT: ret void
+; CHECK: [[COND_FALSE]]:
+; CHECK-NEXT: ret void
+;
entry:
%a = alloca <7 x i1>, align 2
store <7 x i1> undef, ptr %a, align 2
-; CHECK: store <7 x i1> undef, ptr
%val = load i1, ptr %a, align 2
-; CHECK: load i1, ptr
br i1 %val, label %cond.true, label %cond.false
cond.true:
@@ -17,11 +27,20 @@ cond.false:
}
define <7 x i1> @g(ptr %a) {
+; CHECK-LABEL: define <7 x i1> @g(
+; CHECK-SAME: ptr [[A:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[VEC:%.*]] = load <7 x i1>, ptr [[A]], align 1
+; CHECK-NEXT: [[VAL:%.*]] = load i1, ptr [[A]], align 2
+; CHECK-NEXT: br i1 [[VAL]], label %[[COND_TRUE:.*]], label %[[COND_FALSE:.*]]
+; CHECK: [[COND_TRUE]]:
+; CHECK-NEXT: ret <7 x i1> [[VEC]]
+; CHECK: [[COND_FALSE]]:
+; CHECK-NEXT: ret <7 x i1> zeroinitializer
+;
entry:
%vec = load <7 x i1>, ptr %a
-; CHECK: load <7 x i1>, ptr
%val = load i1, ptr %a, align 2
-; CHECK: load i1, ptr
br i1 %val, label %cond.true, label %cond.false
cond.true:
diff --git a/llvm/test/Transforms/GVN/pr36063.ll b/llvm/test/Transforms/GVN/pr36063.ll
index 5ac4c3d..8aaeff6 100644
--- a/llvm/test/Transforms/GVN/pr36063.ll
+++ b/llvm/test/Transforms/GVN/pr36063.ll
@@ -1,6 +1,20 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=memcpyopt,mldst-motion,gvn -S | FileCheck %s
define void @foo(ptr %ret, i1 %x) {
+; CHECK-LABEL: define void @foo(
+; CHECK-SAME: ptr [[RET:%.*]], i1 [[X:%.*]]) {
+; CHECK-NEXT: [[A:%.*]] = alloca i8, align 1
+; CHECK-NEXT: br i1 [[X]], label %[[YES:.*]], label %[[NO:.*]]
+; CHECK: [[YES]]:
+; CHECK-NEXT: br label %[[OUT:.*]]
+; CHECK: [[NO]]:
+; CHECK-NEXT: br label %[[OUT]]
+; CHECK: [[OUT]]:
+; CHECK-NEXT: store i8 5, ptr [[A]], align 1
+; CHECK-NEXT: store i8 5, ptr [[RET]], align 1
+; CHECK-NEXT: ret void
+;
%a = alloca i8
br i1 %x, label %yes, label %no
@@ -14,7 +28,6 @@ no: ; preds = %0
out: ; preds = %no, %yes
%tmp = load i8, ptr %a
-; CHECK-NOT: undef
store i8 %tmp, ptr %ret
ret void
}
diff --git a/llvm/test/Transforms/GVN/pr42605.ll b/llvm/test/Transforms/GVN/pr42605.ll
index f0ff6d9..3e6241c 100644
--- a/llvm/test/Transforms/GVN/pr42605.ll
+++ b/llvm/test/Transforms/GVN/pr42605.ll
@@ -1,6 +1,9 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn %s -S | FileCheck %s
+
; PR42605. Check phi-translate won't translate the value number of a call
; to the value of another call with clobber in between.
+
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
@@ -12,6 +15,13 @@ declare dso_local i32 @printf(ptr nocapture readonly, ...) local_unnamed_addr
; Function Attrs: noinline norecurse nounwind readonly uwtable
define dso_local i32 @_Z3gooi(i32 %i) local_unnamed_addr #0 {
+; CHECK-LABEL: define dso_local i32 @_Z3gooi(
+; CHECK-SAME: i32 [[I:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[T0:%.*]] = load i32, ptr @global, align 4, !tbaa [[INT_TBAA2:![0-9]+]]
+; CHECK-NEXT: [[ADD:%.*]] = add nsw i32 [[T0]], [[I]]
+; CHECK-NEXT: ret i32 [[ADD]]
+;
entry:
%t0 = load i32, ptr @global, align 4, !tbaa !2
%add = add nsw i32 %t0, %i
@@ -20,6 +30,24 @@ entry:
; Function Attrs: nofree nounwind uwtable
define dso_local void @noclobber() local_unnamed_addr {
+; CHECK-LABEL: define dso_local void @noclobber() local_unnamed_addr {
+; CHECK-NEXT: [[ENTRY:.*]]:
+; CHECK-NEXT: [[CALL:%.*]] = tail call i32 @_Z3gooi(i32 2)
+; CHECK-NEXT: [[ADD:%.*]] = add nsw i32 [[CALL]], 5
+; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[ADD]], 2
+; CHECK-NEXT: br i1 [[CMP]], label %[[IF_THEN:.*]], label %[[IF_END:.*]]
+; CHECK: [[IF_THEN]]:
+; CHECK-NEXT: [[CALL1:%.*]] = tail call i32 @_Z3gooi(i32 3)
+; CHECK-NEXT: [[ADD2:%.*]] = add nsw i32 [[CALL1]], 5
+; CHECK-NEXT: br label %[[IF_END]]
+; CHECK: [[IF_END]]:
+; CHECK-NEXT: [[ADD4_PRE_PHI:%.*]] = phi i32 [ [[ADD2]], %[[IF_THEN]] ], [ [[ADD]], %[[ENTRY]] ]
+; CHECK-NEXT: [[I_0:%.*]] = phi i32 [ 3, %[[IF_THEN]] ], [ 2, %[[ENTRY]] ]
+; CHECK-NEXT: [[GLOBAL2_0:%.*]] = phi i32 [ [[ADD2]], %[[IF_THEN]] ], [ [[ADD]], %[[ENTRY]] ]
+; CHECK-NEXT: [[CALL3:%.*]] = tail call i32 @_Z3gooi(i32 [[I_0]])
+; CHECK-NEXT: [[CALL5:%.*]] = tail call i32 (ptr, ...) @printf(ptr @.str, i32 [[GLOBAL2_0]], i32 [[ADD4_PRE_PHI]])
+; CHECK-NEXT: ret void
+;
entry:
%call = tail call i32 @_Z3gooi(i32 2)
%add = add nsw i32 %call, 5
@@ -32,9 +60,6 @@ if.then: ; preds = %entry
br label %if.end
; Check pre happens after phitranslate.
-; CHECK-LABEL: @noclobber
-; CHECK: %add4.pre-phi = phi i32 [ %add2, %if.then ], [ %add, %entry ]
-; CHECK: printf(ptr @.str, i32 %global2.0, i32 %add4.pre-phi)
if.end: ; preds = %if.then, %entry
%i.0 = phi i32 [ 3, %if.then ], [ 2, %entry ]
@@ -47,6 +72,25 @@ if.end: ; preds = %if.then, %entry
; Function Attrs: nofree nounwind uwtable
define dso_local void @hasclobber() local_unnamed_addr {
+; CHECK-LABEL: define dso_local void @hasclobber() local_unnamed_addr {
+; CHECK-NEXT: [[ENTRY:.*]]:
+; CHECK-NEXT: [[CALL:%.*]] = tail call i32 @_Z3gooi(i32 2)
+; CHECK-NEXT: [[ADD:%.*]] = add nsw i32 [[CALL]], 5
+; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[ADD]], 2
+; CHECK-NEXT: br i1 [[CMP]], label %[[IF_THEN:.*]], label %[[IF_END:.*]]
+; CHECK: [[IF_THEN]]:
+; CHECK-NEXT: [[CALL1:%.*]] = tail call i32 @_Z3gooi(i32 3)
+; CHECK-NEXT: [[ADD2:%.*]] = add nsw i32 [[CALL1]], 5
+; CHECK-NEXT: br label %[[IF_END]]
+; CHECK: [[IF_END]]:
+; CHECK-NEXT: [[I_0:%.*]] = phi i32 [ 3, %[[IF_THEN]] ], [ 2, %[[ENTRY]] ]
+; CHECK-NEXT: [[GLOBAL2_0:%.*]] = phi i32 [ [[ADD2]], %[[IF_THEN]] ], [ [[ADD]], %[[ENTRY]] ]
+; CHECK-NEXT: store i32 5, ptr @global, align 4, !tbaa [[INT_TBAA2]]
+; CHECK-NEXT: [[CALL3:%.*]] = tail call i32 @_Z3gooi(i32 [[I_0]])
+; CHECK-NEXT: [[ADD4:%.*]] = add nsw i32 [[CALL3]], 5
+; CHECK-NEXT: [[CALL5:%.*]] = tail call i32 (ptr, ...) @printf(ptr @.str, i32 [[GLOBAL2_0]], i32 [[ADD4]])
+; CHECK-NEXT: ret void
+;
entry:
%call = tail call i32 @_Z3gooi(i32 2)
%add = add nsw i32 %call, 5
@@ -59,10 +103,6 @@ if.then: ; preds = %entry
br label %if.end
; Check no pre happens.
-; CHECK-LABEL: @hasclobber
-; CHECK: %call3 = tail call i32 @_Z3gooi(i32 %i.0)
-; CHECK-NEXT: %add4 = add nsw i32 %call3, 5
-; CHECK-NEXT: printf(ptr @.str, i32 %global2.0, i32 %add4)
if.end: ; preds = %if.then, %entry
%i.0 = phi i32 [ 3, %if.then ], [ 2, %entry ]
@@ -85,3 +125,9 @@ attributes #0 = { noinline norecurse nounwind readonly uwtable "correctly-rounde
!3 = !{!"int", !4, i64 0}
!4 = !{!"omnipotent char", !5, i64 0}
!5 = !{!"Simple C++ TBAA"}
+;.
+; CHECK: [[INT_TBAA2]] = !{[[META3:![0-9]+]], [[META3]], i64 0}
+; CHECK: [[META3]] = !{!"int", [[META4:![0-9]+]], i64 0}
+; CHECK: [[META4]] = !{!"omnipotent char", [[META5:![0-9]+]], i64 0}
+; CHECK: [[META5]] = !{!"Simple C++ TBAA"}
+;.
diff --git a/llvm/test/Transforms/GVN/pr49193.ll b/llvm/test/Transforms/GVN/pr49193.ll
index 9ee9f26..52703ee 100644
--- a/llvm/test/Transforms/GVN/pr49193.ll
+++ b/llvm/test/Transforms/GVN/pr49193.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S < %s | FileCheck %s
@a = external local_unnamed_addr global i32, align 4
@@ -6,9 +7,37 @@
; Function Attrs: nounwind readnone
declare ptr @j() local_unnamed_addr #0
-; CHECK: define {{.*}}@k()
-
define i64 @k() local_unnamed_addr {
+; CHECK-LABEL: define i64 @k() local_unnamed_addr {
+; CHECK-NEXT: [[BB:.*:]]
+; CHECK-NEXT: br i1 undef, label %[[BB10_PREHEADER:.*]], label %[[BB3:.*]]
+; CHECK: [[BB10_PREHEADER]]:
+; CHECK-NEXT: br label %[[BB13:.*]]
+; CHECK: [[BB3]]:
+; CHECK-NEXT: [[I4:%.*]] = load i32, ptr @a, align 4
+; CHECK-NEXT: [[I5_NOT:%.*]] = icmp eq i32 [[I4]], 0
+; CHECK-NEXT: [[I8:%.*]] = tail call ptr @j()
+; CHECK-NEXT: br label %[[BB37:.*]]
+; CHECK: [[BB13]]:
+; CHECK-NEXT: br i1 undef, label %[[BB30THREAD_PRE_SPLIT:.*]], label %[[BB16:.*]]
+; CHECK: [[BB16]]:
+; CHECK-NEXT: [[I17:%.*]] = tail call ptr @j()
+; CHECK-NEXT: br i1 undef, label %[[BB22THREAD_PRE_SPLIT:.*]], label %[[BB37_LOOPEXIT:.*]]
+; CHECK: [[BB22THREAD_PRE_SPLIT]]:
+; CHECK-NEXT: br i1 undef, label %[[BB30THREAD_PRE_SPLIT]], label %[[BB37_LOOPEXIT]]
+; CHECK: [[BB30THREAD_PRE_SPLIT]]:
+; CHECK-NEXT: [[I31_PR:%.*]] = load i32, ptr @a, align 4
+; CHECK-NEXT: [[I32_NOT2:%.*]] = icmp eq i32 [[I31_PR]], 0
+; CHECK-NEXT: br i1 undef, label %[[BB37_LOOPEXIT]], label %[[BB13]]
+; CHECK: [[BB37_LOOPEXIT]]:
+; CHECK-NEXT: [[I38_PRE:%.*]] = load i32, ptr @a, align 4
+; CHECK-NEXT: br label %[[BB37]]
+; CHECK: [[BB37]]:
+; CHECK-NEXT: [[I38:%.*]] = phi i32 [ [[I38_PRE]], %[[BB37_LOOPEXIT]] ], [ [[I4]], %[[BB3]] ]
+; CHECK-NEXT: store i32 [[I38]], ptr @b, align 4
+; CHECK-NEXT: [[I39:%.*]] = tail call ptr @j()
+; CHECK-NEXT: unreachable
+;
bb:
br i1 undef, label %bb10.preheader, label %bb3
diff --git a/llvm/test/Transforms/GVN/pre-new-inst.ll b/llvm/test/Transforms/GVN/pre-new-inst.ll
index 8e8cea0..0af8ad2 100644
--- a/llvm/test/Transforms/GVN/pre-new-inst.ll
+++ b/llvm/test/Transforms/GVN/pre-new-inst.ll
@@ -1,7 +1,23 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S %s | FileCheck %s
%MyStruct = type { i32, i32 }
+
define i8 @foo(i64 %in, ptr %arr, i1 %arg) {
+; CHECK-LABEL: define i8 @foo(
+; CHECK-SAME: i64 [[IN:%.*]], ptr [[ARR:%.*]], i1 [[ARG:%.*]]) {
+; CHECK-NEXT: [[ADDR:%.*]] = alloca [[MYSTRUCT:%.*]], align 8
+; CHECK-NEXT: [[DEAD:%.*]] = trunc i64 [[IN]] to i32
+; CHECK-NEXT: br i1 [[ARG]], label %[[NEXT:.*]], label %[[TMP:.*]]
+; CHECK: [[TMP]]:
+; CHECK-NEXT: call void @bar()
+; CHECK-NEXT: br label %[[NEXT]]
+; CHECK: [[NEXT]]:
+; CHECK-NEXT: store i64 [[IN]], ptr [[ADDR]], align 4
+; CHECK-NEXT: [[RESPTR:%.*]] = getelementptr i8, ptr [[ARR]], i32 [[DEAD]]
+; CHECK-NEXT: [[RES:%.*]] = load i8, ptr [[RESPTR]], align 1
+; CHECK-NEXT: ret i8 [[RES]]
+;
%addr = alloca %MyStruct
%dead = trunc i64 %in to i32
br i1 %arg, label %next, label %tmp
@@ -16,11 +32,8 @@ next:
final:
%idx32 = load i32, ptr %addr
-
-; CHECK: %resptr = getelementptr i8, ptr %arr, i32 %dead
%resptr = getelementptr i8, ptr %arr, i32 %idx32
%res = load i8, ptr %resptr
-
ret i8 %res
}
diff --git a/llvm/test/Transforms/GVN/propagate-ir-flags.ll b/llvm/test/Transforms/GVN/propagate-ir-flags.ll
index 6f4e662..6b11ff5 100644
--- a/llvm/test/Transforms/GVN/propagate-ir-flags.ll
+++ b/llvm/test/Transforms/GVN/propagate-ir-flags.ll
@@ -1,11 +1,15 @@
-
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=gvn -S | FileCheck %s
-; CHECK-LABEL: func_fast
-; CHECK: fadd fast double
-; CHECK-NEXT: store
-; CHECK-NEXT: ret
define double @func_fast(double %a, double %b) {
+; CHECK-LABEL: define double @func_fast(
+; CHECK-SAME: double [[A:%.*]], double [[B:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[A_ADDR:%.*]] = alloca double, align 8
+; CHECK-NEXT: [[ADD:%.*]] = fadd fast double [[B]], 3.000000e+00
+; CHECK-NEXT: store double [[ADD]], ptr [[A_ADDR]], align 8
+; CHECK-NEXT: ret double [[ADD]]
+;
entry:
%a.addr = alloca double, align 8
%add = fadd fast double %b, 3.000000e+00
@@ -14,11 +18,15 @@ entry:
ret double %load_add
}
-; CHECK-LABEL: func_no_fast
-; CHECK: fadd double
-; CHECK-NEXT: store
-; CHECK-NEXT: ret
define double @func_no_fast(double %a, double %b) {
+; CHECK-LABEL: define double @func_no_fast(
+; CHECK-SAME: double [[A:%.*]], double [[B:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[A_ADDR:%.*]] = alloca double, align 8
+; CHECK-NEXT: [[ADD:%.*]] = fadd double [[B]], 3.000000e+00
+; CHECK-NEXT: store double [[ADD]], ptr [[A_ADDR]], align 8
+; CHECK-NEXT: ret double [[ADD]]
+;
entry:
%a.addr = alloca double, align 8
%add = fadd fast double %b, 3.000000e+00
@@ -26,4 +34,3 @@ entry:
%duplicated_add = fadd double %b, 3.000000e+00
ret double %duplicated_add
}
-
diff --git a/llvm/test/Transforms/GVN/rle-no-phi-translate.ll b/llvm/test/Transforms/GVN/rle-no-phi-translate.ll
index 8876665..5b8b4db 100644
--- a/llvm/test/Transforms/GVN/rle-no-phi-translate.ll
+++ b/llvm/test/Transforms/GVN/rle-no-phi-translate.ll
@@ -1,5 +1,7 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=gvn -S | FileCheck %s
; XFAIL: *
+
; FIXME: This should be promotable, but memdep/gvn don't track values
; path/edge sensitively enough.
@@ -7,22 +9,30 @@ target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f3
target triple = "i386-apple-darwin7"
define i32 @g(ptr %b, ptr %c) nounwind {
+; CHECK-LABEL: define i32 @g(
+; CHECK-SAME: ptr [[B:%.*]], ptr [[C:%.*]]) #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: store i32 1, ptr [[B]], align 4
+; CHECK-NEXT: store i32 2, ptr [[C]], align 4
+; CHECK-NEXT: br i1 false, label %[[BB:.*]], label %[[BB2:.*]]
+; CHECK: [[BB]]:
+; CHECK-NEXT: br label %[[BB2]]
+; CHECK: [[BB2]]:
+; CHECK-NEXT: ret i32 [[CV]]
+;
entry:
- store i32 1, ptr %b
- store i32 2, ptr %c
-
- %t1 = icmp eq ptr %b, null ; <i1> [#uses=1]
- br i1 %t1, label %bb, label %bb2
+ store i32 1, ptr %b
+ store i32 2, ptr %c
+
+ %t1 = icmp eq ptr %b, null ; <i1> [#uses=1]
+ br i1 %t1, label %bb, label %bb2
bb: ; preds = %entry
- br label %bb2
+ br label %bb2
bb2: ; preds = %bb1, %bb
- %c_addr.0 = phi ptr [ %b, %entry ], [ %c, %bb ] ; <ptr> [#uses=1]
- %cv = load i32, ptr %c_addr.0, align 4 ; <i32> [#uses=1]
- ret i32 %cv
-; CHECK: bb2:
-; CHECK-NOT: load i32
-; CHECK: ret i32
+ %c_addr.0 = phi ptr [ %b, %entry ], [ %c, %bb ] ; <ptr> [#uses=1]
+ %cv = load i32, ptr %c_addr.0, align 4 ; <i32> [#uses=1]
+ ret i32 %cv
}
diff --git a/llvm/test/Transforms/GVN/rle-nonlocal.ll b/llvm/test/Transforms/GVN/rle-nonlocal.ll
index 06aa188..4cadc40 100644
--- a/llvm/test/Transforms/GVN/rle-nonlocal.ll
+++ b/llvm/test/Transforms/GVN/rle-nonlocal.ll
@@ -1,22 +1,38 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=gvn -S | FileCheck %s
define i32 @main(ptr %p, i32 %x, i32 %y) {
+; CHECK-LABEL: define i32 @main(
+; CHECK-SAME: ptr [[P:%.*]], i32 [[X:%.*]], i32 [[Y:%.*]]) {
+; CHECK-NEXT: [[BLOCK1:.*:]]
+; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[X]], [[Y]]
+; CHECK-NEXT: br i1 [[CMP]], label %[[BLOCK2:.*]], label %[[BLOCK3:.*]]
+; CHECK: [[BLOCK2]]:
+; CHECK-NEXT: [[A:%.*]] = load ptr, ptr [[P]], align 8
+; CHECK-NEXT: br label %[[BLOCK4:.*]]
+; CHECK: [[BLOCK3]]:
+; CHECK-NEXT: [[B:%.*]] = load ptr, ptr [[P]], align 8
+; CHECK-NEXT: br label %[[BLOCK4]]
+; CHECK: [[BLOCK4]]:
+; CHECK-NEXT: [[DEAD:%.*]] = phi ptr [ [[A]], %[[BLOCK2]] ], [ [[B]], %[[BLOCK3]] ]
+; CHECK-NEXT: [[C:%.*]] = load i32, ptr [[DEAD]], align 4
+; CHECK-NEXT: [[E:%.*]] = add i32 [[C]], [[C]]
+; CHECK-NEXT: ret i32 [[E]]
+;
block1:
- %cmp = icmp eq i32 %x, %y
- br i1 %cmp , label %block2, label %block3
+ %cmp = icmp eq i32 %x, %y
+ br i1 %cmp , label %block2, label %block3
block2:
- %a = load ptr, ptr %p
- br label %block4
+ %a = load ptr, ptr %p
+ br label %block4
block3:
%b = load ptr, ptr %p
br label %block4
block4:
-; CHECK-NOT: %existingPHI = phi
-; CHECK: %DEAD = phi
- %existingPHI = phi ptr [ %a, %block2 ], [ %b, %block3 ]
+ %existingPHI = phi ptr [ %a, %block2 ], [ %b, %block3 ]
%DEAD = load ptr, ptr %p
%c = load i32, ptr %DEAD
%d = load i32, ptr %existingPHI
diff --git a/llvm/test/Transforms/GVN/simplify-icf-cache-invalidation.ll b/llvm/test/Transforms/GVN/simplify-icf-cache-invalidation.ll
index 8332a98..f4a4155 100644
--- a/llvm/test/Transforms/GVN/simplify-icf-cache-invalidation.ll
+++ b/llvm/test/Transforms/GVN/simplify-icf-cache-invalidation.ll
@@ -1,7 +1,6 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S < %s | FileCheck %s
-; CHECK: define {{.*}}@eggs
-
%struct.zot = type { ptr }
%struct.wombat = type { ptr }
%struct.baz = type { i8, ptr }
@@ -11,6 +10,28 @@
declare ptr @f()
define hidden void @eggs(ptr %arg, i1 %arg2, ptr %arg3, i32 %arg4, ptr %arg5) unnamed_addr align 2 {
+; CHECK-LABEL: define hidden void @eggs(
+; CHECK-SAME: ptr [[ARG:%.*]], i1 [[ARG2:%.*]], ptr [[ARG3:%.*]], i32 [[ARG4:%.*]], ptr [[ARG5:%.*]]) unnamed_addr align 2 {
+; CHECK-NEXT: [[BB:.*:]]
+; CHECK-NEXT: [[TMP:%.*]] = alloca [[STRUCT_WOMBAT:%.*]], align 8
+; CHECK-NEXT: store ptr @global, ptr [[ARG]], align 8, !invariant.group [[META0:![0-9]+]]
+; CHECK-NEXT: br i1 [[ARG2]], label %[[BB4:.*]], label %[[BB2:.*]]
+; CHECK: [[BB2]]:
+; CHECK-NEXT: [[TMP3:%.*]] = atomicrmw sub ptr [[ARG3]], i32 [[ARG4]] acq_rel, align 4
+; CHECK-NEXT: br label %[[BB4]]
+; CHECK: [[BB4]]:
+; CHECK-NEXT: [[TMP5:%.*]] = load ptr, ptr [[ARG5]], align 8
+; CHECK-NEXT: [[TMP6:%.*]] = getelementptr inbounds [[STRUCT_BAZ:%.*]], ptr [[TMP5]], i64 0, i32 1
+; CHECK-NEXT: br i1 [[ARG2]], label %[[BB9:.*]], label %[[BB7:.*]]
+; CHECK: [[BB7]]:
+; CHECK-NEXT: [[TMP8:%.*]] = tail call ptr @f()
+; CHECK-NEXT: br label %[[BB9]]
+; CHECK: [[BB9]]:
+; CHECK-NEXT: tail call void @quux(ptr [[ARG]], i1 [[ARG2]])
+; CHECK-NEXT: [[TMP17:%.*]] = load ptr, ptr [[TMP]], align 8
+; CHECK-NEXT: [[TMP18:%.*]] = icmp eq ptr [[TMP17]], null
+; CHECK-NEXT: ret void
+;
bb:
%tmp = alloca %struct.wombat, align 8
store ptr @global, ptr %arg, align 8, !invariant.group !0
@@ -45,3 +66,6 @@ declare hidden void @quux(ptr, i1) unnamed_addr #0 align 2
attributes #0 = { nounwind willreturn }
!0 = !{}
+;.
+; CHECK: [[META0]] = !{}
+;.
diff --git a/llvm/test/Transforms/GVN/stale-loop-info.ll b/llvm/test/Transforms/GVN/stale-loop-info.ll
index 3d6ec67..e253aea 100644
--- a/llvm/test/Transforms/GVN/stale-loop-info.ll
+++ b/llvm/test/Transforms/GVN/stale-loop-info.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes='require<loops>,gvn' -S < %s | FileCheck %s
; This used to fail with ASAN enabled and if for some reason LoopInfo remained
@@ -14,6 +15,27 @@ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
declare void @snork.1(ptr) local_unnamed_addr #0
define hidden zeroext i1 @eggs(ptr %arg, i1 %arg2, i1 %arg3) unnamed_addr align 2 {
+; CHECK-LABEL: define hidden zeroext i1 @eggs(
+; CHECK-SAME: ptr [[ARG:%.*]], i1 [[ARG2:%.*]], i1 [[ARG3:%.*]]) unnamed_addr align 2 {
+; CHECK-NEXT: [[BB:.*:]]
+; CHECK-NEXT: br i1 [[ARG2]], label %[[BB14:.*]], label %[[BB3:.*]]
+; CHECK: [[BB3]]:
+; CHECK-NEXT: [[TMP:%.*]] = getelementptr inbounds [[STRUCT_WIBBLE_1028:%.*]], ptr [[ARG]], i64 0, i32 2, i32 0, i32 0, i64 0
+; CHECK-NEXT: br label %[[BB6:.*]]
+; CHECK: [[BB6]]:
+; CHECK-NEXT: br i1 [[ARG3]], label %[[BB11:.*]], label %[[BB8:.*]]
+; CHECK: [[BB8]]:
+; CHECK-NEXT: [[TMP9:%.*]] = load ptr, ptr [[TMP]], align 8
+; CHECK-NEXT: br label %[[BB12:.*]]
+; CHECK: [[BB11]]:
+; CHECK-NEXT: br label %[[BB12]]
+; CHECK: [[BB12]]:
+; CHECK-NEXT: [[TMP13:%.*]] = phi ptr [ [[TMP]], %[[BB11]] ], [ [[TMP9]], %[[BB8]] ]
+; CHECK-NEXT: call void @snork.1(ptr [[TMP13]]) #[[ATTR1:[0-9]+]]
+; CHECK-NEXT: br label %[[BB6]]
+; CHECK: [[BB14]]:
+; CHECK-NEXT: ret i1 false
+;
bb:
br i1 %arg2, label %bb14, label %bb3
@@ -29,7 +51,6 @@ bb7: ; preds = %bb6
bb8: ; preds = %bb7
%tmp9 = load ptr, ptr %tmp, align 8
-; CHECK: %tmp9 = load ptr, ptr %tmp, align 8
br label %bb12
bb11: ; preds = %bb7
diff --git a/llvm/test/Transforms/GVN/unreachable-predecessor.ll b/llvm/test/Transforms/GVN/unreachable-predecessor.ll
index 532d554..a584189 100644
--- a/llvm/test/Transforms/GVN/unreachable-predecessor.ll
+++ b/llvm/test/Transforms/GVN/unreachable-predecessor.ll
@@ -1,13 +1,31 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=gvn -S | FileCheck %s
; loop.then is not reachable from loop, so we should be able to deduce that the
; store through %phi2 cannot alias %ptr1.
-
-; CHECK-LABEL: @test1
define void @test1(ptr %ptr1, ptr %ptr2) {
-; CHECK-LABEL: entry:
-; CHECK: %[[GEP:.*]] = getelementptr inbounds i32, ptr %ptr1, i64 1
-; CHECK: %[[VAL1:.*]] = load i32, ptr %[[GEP]]
+; CHECK-LABEL: define void @test1(
+; CHECK-SAME: ptr [[PTR1:%.*]], ptr [[PTR2:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*]]:
+; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds i32, ptr [[PTR1]], i64 1
+; CHECK-NEXT: [[VAL1_PRE:%.*]] = load i32, ptr [[GEP1]], align 4
+; CHECK-NEXT: br label %[[LOOP:.*]]
+; CHECK: [[LOOP]]:
+; CHECK-NEXT: [[PHI1:%.*]] = phi ptr [ [[GEP1]], %[[ENTRY]] ], [ [[PHI2:%.*]], %[[LOOP_THEN:.*]] ]
+; CHECK-NEXT: br i1 false, label %[[LOOP_LOOP_THEN_CRIT_EDGE:.*]], label %[[LOOP_IF:.*]]
+; CHECK: [[LOOP_LOOP_THEN_CRIT_EDGE]]:
+; CHECK-NEXT: br label %[[LOOP_THEN]]
+; CHECK: [[LOOP_IF]]:
+; CHECK-NEXT: [[GEP2:%.*]] = getelementptr inbounds i32, ptr [[GEP1]], i64 1
+; CHECK-NEXT: [[VAL2:%.*]] = load i32, ptr [[GEP2]], align 4
+; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[VAL1_PRE]], [[VAL2]]
+; CHECK-NEXT: br label %[[LOOP_THEN]]
+; CHECK: [[LOOP_THEN]]:
+; CHECK-NEXT: [[PHI2]] = phi ptr [ poison, %[[LOOP_LOOP_THEN_CRIT_EDGE]] ], [ [[GEP2]], %[[LOOP_IF]] ]
+; CHECK-NEXT: store i32 [[VAL1_PRE]], ptr [[PHI2]], align 4
+; CHECK-NEXT: store i32 0, ptr [[PTR1]], align 4
+; CHECK-NEXT: br label %[[LOOP]]
+;
entry:
br label %loop.preheader
@@ -15,8 +33,6 @@ loop.preheader:
%gep1 = getelementptr inbounds i32, ptr %ptr1, i64 1
br label %loop
-; CHECK-LABEL: loop:
-; CHECK-NOT: load
loop:
%phi1 = phi ptr [ %gep1, %loop.preheader ], [ %phi2, %loop.then ]
%val1 = load i32, ptr %phi1
@@ -28,8 +44,6 @@ loop.if:
%cmp = icmp slt i32 %val1, %val2
br label %loop.then
-; CHECK-LABEL: loop.then
-; CHECK: store i32 %[[VAL1]], ptr %phi2
loop.then:
%phi2 = phi ptr [ %ptr2, %loop ], [ %gep2, %loop.if ]
store i32 %val1, ptr %phi2
diff --git a/llvm/test/Transforms/GVN/unreachable_block_infinite_loop.ll b/llvm/test/Transforms/GVN/unreachable_block_infinite_loop.ll
index 5de5e03..2743fd0 100644
--- a/llvm/test/Transforms/GVN/unreachable_block_infinite_loop.ll
+++ b/llvm/test/Transforms/GVN/unreachable_block_infinite_loop.ll
@@ -1,18 +1,40 @@
-; RUN: opt -passes=gvn -disable-output < %s
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt -passes=gvn -S < %s | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
target triple = "x86_64-apple-darwin10.0"
define i32 @test2() nounwind ssp {
+; CHECK-LABEL: define i32 @test2(
+; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: ret i32 0
+; CHECK: [[UNREACHABLE_BLOCK:.*:]]
+; CHECK-NEXT: [[A:%.*]] = add i32 [[A]], 1
+; CHECK-NEXT: ret i32 [[A]]
+;
entry:
- ret i32 0
+ ret i32 0
unreachable_block:
- %a = add i32 %a, 1
- ret i32 %a
+ %a = add i32 %a, 1
+ ret i32 %a
}
define i32 @pr23096_test0(i1 %arg, ptr %arg2) {
+; CHECK-LABEL: define i32 @pr23096_test0(
+; CHECK-SAME: i1 [[ARG:%.*]], ptr [[ARG2:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*]]:
+; CHECK-NEXT: br label %[[BB0:.*]]
+; CHECK: [[BB1:.*]]:
+; CHECK-NEXT: [[PTR1:%.*]] = ptrtoint ptr [[PTR2:%.*]] to i64
+; CHECK-NEXT: [[PTR2]] = inttoptr i64 [[PTR1]] to ptr
+; CHECK-NEXT: br i1 [[ARG]], label %[[BB0]], label %[[BB1]]
+; CHECK: [[BB0]]:
+; CHECK-NEXT: [[PHI:%.*]] = phi ptr [ [[ARG2]], %[[ENTRY]] ], [ [[PTR2]], %[[BB1]] ]
+; CHECK-NEXT: [[LOAD:%.*]] = load i32, ptr [[PHI]], align 4
+; CHECK-NEXT: ret i32 [[LOAD]]
+;
entry:
br label %bb0
@@ -28,6 +50,19 @@ bb0:
}
define i32 @pr23096_test1(i1 %arg, ptr %arg2) {
+; CHECK-LABEL: define i32 @pr23096_test1(
+; CHECK-SAME: i1 [[ARG:%.*]], ptr [[ARG2:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*]]:
+; CHECK-NEXT: br label %[[BB0:.*]]
+; CHECK: [[BB1:.*]]:
+; CHECK-NEXT: [[PTR1:%.*]] = getelementptr i32, ptr [[PTR2:%.*]], i32 0
+; CHECK-NEXT: [[PTR2]] = getelementptr i32, ptr [[PTR1]], i32 0
+; CHECK-NEXT: br i1 [[ARG]], label %[[BB0]], label %[[BB1]]
+; CHECK: [[BB0]]:
+; CHECK-NEXT: [[PHI:%.*]] = phi ptr [ [[ARG2]], %[[ENTRY]] ], [ [[PTR2]], %[[BB1]] ]
+; CHECK-NEXT: [[LOAD:%.*]] = load i32, ptr [[PHI]], align 4
+; CHECK-NEXT: ret i32 [[LOAD]]
+;
entry:
br label %bb0
diff --git a/llvm/test/Transforms/GVN/volatile-nonvolatile.ll b/llvm/test/Transforms/GVN/volatile-nonvolatile.ll
index 72c6a30..d34c891 100644
--- a/llvm/test/Transforms/GVN/volatile-nonvolatile.ll
+++ b/llvm/test/Transforms/GVN/volatile-nonvolatile.ll
@@ -1,13 +1,19 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S < %s | FileCheck %s
%struct.t = type { ptr }
; The loaded address and the location of the address itself are not aliased,
; so the second reload is not necessary. Check that it can be eliminated.
-; CHECK-LABEL: test1
-; CHECK: load
-; CHECK-NOT: load
define void @test1(ptr nocapture readonly %p, i32 %v) #0 {
+; CHECK-LABEL: define void @test1(
+; CHECK-SAME: ptr readonly captures(none) [[P:%.*]], i32 [[V:%.*]]) #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = load ptr, ptr [[P]], align 4, !tbaa [[ANYPTR_TBAA0:![0-9]+]]
+; CHECK-NEXT: store volatile i32 [[V]], ptr [[TMP0]], align 4, !tbaa [[INT_TBAA5:![0-9]+]]
+; CHECK-NEXT: store volatile i32 [[V]], ptr [[TMP0]], align 4, !tbaa [[INT_TBAA5]]
+; CHECK-NEXT: ret void
+;
entry:
%0 = load ptr, ptr %p, align 4, !tbaa !1
store volatile i32 %v, ptr %0, align 4, !tbaa !6
@@ -18,11 +24,16 @@ entry:
; The store via the loaded address may overwrite the address itself.
; Make sure that both loads remain.
-; CHECK-LABEL: test2
-; CHECK: load
-; CHECK: store
-; CHECK: load
define void @test2(ptr nocapture readonly %p, i32 %v) #0 {
+; CHECK-LABEL: define void @test2(
+; CHECK-SAME: ptr readonly captures(none) [[P:%.*]], i32 [[V:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = load ptr, ptr [[P]], align 4, !tbaa [[ANYPTR_TBAA0]]
+; CHECK-NEXT: store volatile i32 [[V]], ptr [[TMP0]], align 4, !tbaa [[ANYPTR_TBAA0]]
+; CHECK-NEXT: [[TMP1:%.*]] = load ptr, ptr [[P]], align 4, !tbaa [[ANYPTR_TBAA0]]
+; CHECK-NEXT: store volatile i32 [[V]], ptr [[TMP1]], align 4, !tbaa [[ANYPTR_TBAA0]]
+; CHECK-NEXT: ret void
+;
entry:
%0 = load ptr, ptr %p, align 4, !tbaa !1
store volatile i32 %v, ptr %0, align 4, !tbaa !1
@@ -33,11 +44,16 @@ entry:
; The loads are ordered and non-monotonic. Although they are not aliased to
; the stores, make sure both are preserved.
-; CHECK-LABEL: test3
-; CHECK: load
-; CHECK: store
-; CHECK: load
define void @test3(ptr nocapture readonly %p, i32 %v) #0 {
+; CHECK-LABEL: define void @test3(
+; CHECK-SAME: ptr readonly captures(none) [[P:%.*]], i32 [[V:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = load atomic ptr, ptr [[P]] acquire, align 4, !tbaa [[ANYPTR_TBAA0]]
+; CHECK-NEXT: store volatile i32 [[V]], ptr [[TMP0]], align 4, !tbaa [[INT_TBAA5]]
+; CHECK-NEXT: [[TMP1:%.*]] = load atomic ptr, ptr [[P]] acquire, align 4, !tbaa [[ANYPTR_TBAA0]]
+; CHECK-NEXT: store volatile i32 [[V]], ptr [[TMP1]], align 4, !tbaa [[INT_TBAA5]]
+; CHECK-NEXT: ret void
+;
entry:
%0 = load atomic ptr, ptr %p acquire, align 4, !tbaa !1
store volatile i32 %v, ptr %0, align 4, !tbaa !6
@@ -56,3 +72,12 @@ attributes #0 = { norecurse nounwind }
!6 = !{!7, !7, i64 0}
!7 = !{!"int", !4, i64 0}
+;.
+; CHECK: [[ANYPTR_TBAA0]] = !{[[META1:![0-9]+]], [[META2:![0-9]+]], i64 0}
+; CHECK: [[META1]] = !{!"", [[META2]], i64 0}
+; CHECK: [[META2]] = !{!"any pointer", [[META3:![0-9]+]], i64 0}
+; CHECK: [[META3]] = !{!"omnipotent char", [[META4:![0-9]+]], i64 0}
+; CHECK: [[META4]] = !{!"Simple C/C++ TBAA"}
+; CHECK: [[INT_TBAA5]] = !{[[META6:![0-9]+]], [[META6]], i64 0}
+; CHECK: [[META6]] = !{!"int", [[META3]], i64 0}
+;.
diff --git a/llvm/test/Transforms/GlobalOpt/cleanup-pointer-root-users-gep-constexpr.ll b/llvm/test/Transforms/GlobalOpt/cleanup-pointer-root-users-gep-constexpr.ll
index 26728a7..70c8fe6 100644
--- a/llvm/test/Transforms/GlobalOpt/cleanup-pointer-root-users-gep-constexpr.ll
+++ b/llvm/test/Transforms/GlobalOpt/cleanup-pointer-root-users-gep-constexpr.ll
@@ -44,16 +44,6 @@ entry:
ret void
}
-define void @stores_ptrtoint_constexpr() {
-; CHECK-LABEL: @stores_ptrtoint_constexpr(
-; CHECK-NEXT: entry:
-; CHECK-NEXT: ret void
-;
-entry:
- store i32 0, ptr inttoptr (i64 ptrtoint (ptr @global.20ptr to i64) to ptr), align 8
- ret void
-}
-
@gv = internal unnamed_addr global [3 x ptr] zeroinitializer, align 16
@gv2 = internal unnamed_addr global i32 0, align 4
diff --git a/llvm/test/Transforms/HardwareLoops/ARM/structure.ll b/llvm/test/Transforms/HardwareLoops/ARM/structure.ll
index cb66fef..6993fd1 100644
--- a/llvm/test/Transforms/HardwareLoops/ARM/structure.ll
+++ b/llvm/test/Transforms/HardwareLoops/ARM/structure.ll
@@ -321,10 +321,10 @@ for.inc: ; preds = %sw.bb, %sw.bb1, %fo
; CHECK-UNROLL-NOT: dls
; CHECK-UNROLL: [[LOOP:.LBB[0-9_]+]]: @ %for.body
; CHECK-UNROLL: le lr, [[LOOP]]
-; CHECK-UNROLL: wls lr, r12, [[EXIT:.LBB[0-9_]+]]
+; CHECK-UNROLL: dls lr, r12
; CHECK-UNROLL: [[EPIL:.LBB[0-9_]+]]:
; CHECK-UNROLL: le lr, [[EPIL]]
-; CHECK-UNROLL-NEXT: [[EXIT]]
+; CHECK-UNROLL-NEXT: {{\.LBB[0-9_]+}}: @ %for.cond.cleanup
define void @unroll_inc_int(ptr nocapture %a, ptr nocapture readonly %b, ptr nocapture readonly %c, i32 %N) {
entry:
@@ -357,10 +357,10 @@ for.body:
; CHECK-UNROLL-NOT: dls
; CHECK-UNROLL: [[LOOP:.LBB[0-9_]+]]: @ %for.body
; CHECK-UNROLL: le lr, [[LOOP]]
-; CHECK-UNROLL: wls lr, r12, [[EPIL_EXIT:.LBB[0-9_]+]]
+; CHECK-UNROLL: dls lr, r12
; CHECK-UNROLL: [[EPIL:.LBB[0-9_]+]]:
; CHECK-UNROLL: le lr, [[EPIL]]
-; CHECK-UNROLL: [[EPIL_EXIT]]:
+; CHECK-UNROLL: {{\.LBB[0-9_]+}}: @ %for.cond.cleanup
; CHECK-UNROLL: pop
define void @unroll_inc_unsigned(ptr nocapture %a, ptr nocapture readonly %b, ptr nocapture readonly %c, i32 %N) {
entry:
diff --git a/llvm/test/Transforms/Inline/attributes.ll b/llvm/test/Transforms/Inline/attributes.ll
index 42b1a3a..55ab430 100644
--- a/llvm/test/Transforms/Inline/attributes.ll
+++ b/llvm/test/Transforms/Inline/attributes.ll
@@ -26,6 +26,10 @@ define i32 @sanitize_memtag_callee(i32 %i) sanitize_memtag {
ret i32 %i
}
+define i32 @sanitize_alloc_token_callee(i32 %i) sanitize_alloc_token {
+ ret i32 %i
+}
+
define i32 @safestack_callee(i32 %i) safestack {
ret i32 %i
}
@@ -58,6 +62,10 @@ define i32 @alwaysinline_sanitize_memtag_callee(i32 %i) alwaysinline sanitize_me
ret i32 %i
}
+define i32 @alwaysinline_sanitize_alloc_token_callee(i32 %i) alwaysinline sanitize_alloc_token {
+ ret i32 %i
+}
+
define i32 @alwaysinline_safestack_callee(i32 %i) alwaysinline safestack {
ret i32 %i
}
@@ -184,6 +192,39 @@ define i32 @test_sanitize_memtag(i32 %arg) sanitize_memtag {
; CHECK-NEXT: ret i32
}
+; ---------------------------------------------------------------------------- ;
+
+; Can inline sanitize_alloc_token functions into a noattr function. The
+; attribute is *not* viral, otherwise may break code.
+define i32 @test_no_sanitize_alloc_token(i32 %arg) {
+; CHECK-LABEL: @test_no_sanitize_alloc_token(
+; CHECK-SAME: ) {
+; CHECK-NOT: call
+; CHECK: ret i32
+entry:
+ %x1 = call i32 @noattr_callee(i32 %arg)
+ %x2 = call i32 @sanitize_alloc_token_callee(i32 %x1)
+ %x3 = call i32 @alwaysinline_callee(i32 %x2)
+ %x4 = call i32 @alwaysinline_sanitize_alloc_token_callee(i32 %x3)
+ ret i32 %x4
+}
+
+; Can inline noattr functions into a sanitize_alloc_token function. If
+; inlinable noattr functions cannot be instrumented, they should be marked with
+; explicit noinline.
+define i32 @test_sanitize_alloc_token(i32 %arg) sanitize_alloc_token {
+; CHECK-LABEL: @test_sanitize_alloc_token(
+; CHECK-SAME: ) [[SANITIZE_ALLOC_TOKEN:.*]] {
+; CHECK-NOT: call
+; CHECK: ret i32
+entry:
+ %x1 = call i32 @noattr_callee(i32 %arg)
+ %x2 = call i32 @sanitize_alloc_token_callee(i32 %x1)
+ %x3 = call i32 @alwaysinline_callee(i32 %x2)
+ %x4 = call i32 @alwaysinline_sanitize_alloc_token_callee(i32 %x3)
+ ret i32 %x4
+}
+
define i32 @test_safestack(i32 %arg) safestack {
%x1 = call i32 @noattr_callee(i32 %arg)
%x2 = call i32 @safestack_callee(i32 %x1)
@@ -639,6 +680,7 @@ define i32 @loader_replaceable_caller() {
ret i32 %1
}
+; CHECK: attributes [[SANITIZE_ALLOC_TOKEN]] = { sanitize_alloc_token }
; CHECK: attributes [[SLH]] = { speculative_load_hardening }
; CHECK: attributes [[FPMAD_FALSE]] = { "less-precise-fpmad"="false" }
; CHECK: attributes [[FPMAD_TRUE]] = { "less-precise-fpmad"="true" }
diff --git a/llvm/test/Transforms/InstCombine/AMDGPU/fmed3.ll b/llvm/test/Transforms/InstCombine/AMDGPU/fmed3.ll
index 361a2b8..378ca1f 100644
--- a/llvm/test/Transforms/InstCombine/AMDGPU/fmed3.ll
+++ b/llvm/test/Transforms/InstCombine/AMDGPU/fmed3.ll
@@ -269,42 +269,27 @@ define float @fmed3_constant_src2_1_f32(float %x, float %y) #1 {
}
define float @fmed3_x_qnan0_qnan1_f32(float %x) #1 {
-; IEEE1-LABEL: define float @fmed3_x_qnan0_qnan1_f32(
-; IEEE1-SAME: float [[X:%.*]]) #[[ATTR1]] {
-; IEEE1-NEXT: ret float [[X]]
-;
-; IEEE0-LABEL: define float @fmed3_x_qnan0_qnan1_f32(
-; IEEE0-SAME: float [[X:%.*]]) #[[ATTR1]] {
-; IEEE0-NEXT: [[MED3:%.*]] = call float @llvm.minimumnum.f32(float [[X]], float 0x7FF8002000000000)
-; IEEE0-NEXT: ret float [[MED3]]
+; CHECK-LABEL: define float @fmed3_x_qnan0_qnan1_f32(
+; CHECK-SAME: float [[X:%.*]]) #[[ATTR1]] {
+; CHECK-NEXT: ret float [[X]]
;
%med3 = call float @llvm.amdgcn.fmed3.f32(float %x, float 0x7FF8001000000000, float 0x7FF8002000000000)
ret float %med3
}
define float @fmed3_qnan0_x_qnan1_f32(float %x) #1 {
-; IEEE1-LABEL: define float @fmed3_qnan0_x_qnan1_f32(
-; IEEE1-SAME: float [[X:%.*]]) #[[ATTR1]] {
-; IEEE1-NEXT: ret float [[X]]
-;
-; IEEE0-LABEL: define float @fmed3_qnan0_x_qnan1_f32(
-; IEEE0-SAME: float [[X:%.*]]) #[[ATTR1]] {
-; IEEE0-NEXT: [[MED3:%.*]] = call float @llvm.minimumnum.f32(float [[X]], float 0x7FF8002000000000)
-; IEEE0-NEXT: ret float [[MED3]]
+; CHECK-LABEL: define float @fmed3_qnan0_x_qnan1_f32(
+; CHECK-SAME: float [[X:%.*]]) #[[ATTR1]] {
+; CHECK-NEXT: ret float [[X]]
;
%med3 = call float @llvm.amdgcn.fmed3.f32(float 0x7FF8001000000000, float %x, float 0x7FF8002000000000)
ret float %med3
}
define float @fmed3_qnan0_qnan1_x_f32(float %x) #1 {
-; IEEE1-LABEL: define float @fmed3_qnan0_qnan1_x_f32(
-; IEEE1-SAME: float [[X:%.*]]) #[[ATTR1]] {
-; IEEE1-NEXT: ret float [[X]]
-;
-; IEEE0-LABEL: define float @fmed3_qnan0_qnan1_x_f32(
-; IEEE0-SAME: float [[X:%.*]]) #[[ATTR1]] {
-; IEEE0-NEXT: [[MED3:%.*]] = call float @llvm.minimumnum.f32(float [[X]], float 0x7FF8002000000000)
-; IEEE0-NEXT: ret float [[MED3]]
+; CHECK-LABEL: define float @fmed3_qnan0_qnan1_x_f32(
+; CHECK-SAME: float [[X:%.*]]) #[[ATTR1]] {
+; CHECK-NEXT: ret float [[X]]
;
%med3 = call float @llvm.amdgcn.fmed3.f32(float 0x7FF8001000000000, float 0x7FF8002000000000, float %x)
ret float %med3
@@ -448,8 +433,7 @@ define float @fmed3_snan1_x_snan2_f32(float %x) #1 {
;
; IEEE0-LABEL: define float @fmed3_snan1_x_snan2_f32(
; IEEE0-SAME: float [[X:%.*]]) #[[ATTR1]] {
-; IEEE0-NEXT: [[MED3:%.*]] = call float @llvm.minimumnum.f32(float [[X]], float 0x7FF0000040000000)
-; IEEE0-NEXT: ret float [[MED3]]
+; IEEE0-NEXT: ret float [[X]]
;
%med3 = call float @llvm.amdgcn.fmed3.f32(float 0x7FF0000020000000, float %x, float 0x7FF0000040000000)
ret float %med3
@@ -462,8 +446,7 @@ define float @fmed3_x_snan1_snan2_f32(float %x) #1 {
;
; IEEE0-LABEL: define float @fmed3_x_snan1_snan2_f32(
; IEEE0-SAME: float [[X:%.*]]) #[[ATTR1]] {
-; IEEE0-NEXT: [[MED3:%.*]] = call float @llvm.minimumnum.f32(float [[X]], float 0x7FF0000040000000)
-; IEEE0-NEXT: ret float [[MED3]]
+; IEEE0-NEXT: ret float [[X]]
;
%med3 = call float @llvm.amdgcn.fmed3.f32(float %x, float 0x7FF0000020000000, float 0x7FF0000040000000)
ret float %med3
diff --git a/llvm/test/Transforms/InstSimplify/fminmax-folds.ll b/llvm/test/Transforms/InstSimplify/fminmax-folds.ll
index 26b5114..3a03f86 100644
--- a/llvm/test/Transforms/InstSimplify/fminmax-folds.ll
+++ b/llvm/test/Transforms/InstSimplify/fminmax-folds.ll
@@ -6,12 +6,12 @@
;###############################################################
; minnum(X, qnan) -> X
; maxnum(X, qnan) -> X
-; TODO: minnum(X, snan) -> qnan (currently we treat SNaN the same as QNaN)
-; TODO: maxnum(X, snan) -> qnan (currently we treat SNaN the same as QNaN)
+; minnum(X, snan) -> qnan
+; maxnum(X, snan) -> qnan
; minimum(X, nan) -> qnan
; maximum(X, nan) -> qnan
-; TODO: minimumnum(X, nan) -> X
-; TODO: maximumnum(X, nan) -> X
+; minimumnum(X, nan) -> X
+; maximumnum(X, nan) -> X
define void @minmax_qnan_f32(float %x, ptr %minnum_res, ptr %maxnum_res, ptr %minimum_res, ptr %maximum_res, ptr %minimumnum_res, ptr %maximumnum_res) {
; CHECK-LABEL: @minmax_qnan_f32(
@@ -19,10 +19,8 @@ define void @minmax_qnan_f32(float %x, ptr %minnum_res, ptr %maxnum_res, ptr %mi
; CHECK-NEXT: store float [[X]], ptr [[MAXNUM_RES:%.*]], align 4
; CHECK-NEXT: store float 0x7FFF000000000000, ptr [[MINIMUM_RES:%.*]], align 4
; CHECK-NEXT: store float 0x7FFF000000000000, ptr [[MAXIMUM_RES:%.*]], align 4
-; CHECK-NEXT: [[MINIMUMNUM:%.*]] = call float @llvm.minimumnum.f32(float [[X]], float 0x7FFF000000000000)
-; CHECK-NEXT: store float [[MINIMUMNUM]], ptr [[MINIMUMNUM_RES:%.*]], align 4
-; CHECK-NEXT: [[MAXIMUMNUM:%.*]] = call float @llvm.maximumnum.f32(float [[X]], float 0x7FFF000000000000)
-; CHECK-NEXT: store float [[MAXIMUMNUM]], ptr [[MAXIMUMNUM_RES:%.*]], align 4
+; CHECK-NEXT: store float [[X]], ptr [[MINIMUMNUM_RES:%.*]], align 4
+; CHECK-NEXT: store float [[X]], ptr [[MAXIMUMNUM_RES:%.*]], align 4
; CHECK-NEXT: ret void
;
%minnum = call float @llvm.minnum.f32(float %x, float 0x7FFF000000000000)
@@ -42,17 +40,15 @@ define void @minmax_qnan_f32(float %x, ptr %minnum_res, ptr %maxnum_res, ptr %mi
ret void
}
-; TODO currently snan is treated the same as qnan, but maxnum/minnum should really return qnan for these cases, not X
+; Note that maxnum/minnum return qnan here for snan inputs, unlike maximumnum/minimumnum
define void @minmax_snan_f32(float %x, ptr %minnum_res, ptr %maxnum_res, ptr %minimum_res, ptr %maximum_res, ptr %minimumnum_res, ptr %maximumnum_res) {
; CHECK-LABEL: @minmax_snan_f32(
-; CHECK-NEXT: store float [[X:%.*]], ptr [[MINNUM_RES:%.*]], align 4
-; CHECK-NEXT: store float [[X]], ptr [[MAXNUM_RES:%.*]], align 4
+; CHECK-NEXT: store float 0x7FFC000000000000, ptr [[MINNUM_RES:%.*]], align 4
+; CHECK-NEXT: store float 0x7FFC000000000000, ptr [[MAXNUM_RES:%.*]], align 4
; CHECK-NEXT: store float 0x7FFC000000000000, ptr [[MINIMUM_RES:%.*]], align 4
; CHECK-NEXT: store float 0x7FFC000000000000, ptr [[MAXIMUM_RES:%.*]], align 4
-; CHECK-NEXT: [[MINIMUMNUM:%.*]] = call float @llvm.minimumnum.f32(float [[X]], float 0x7FF4000000000000)
-; CHECK-NEXT: store float [[MINIMUMNUM]], ptr [[MINIMUMNUM_RES:%.*]], align 4
-; CHECK-NEXT: [[MAXIMUMNUM:%.*]] = call float @llvm.maximumnum.f32(float [[X]], float 0x7FF4000000000000)
-; CHECK-NEXT: store float [[MAXIMUMNUM]], ptr [[MAXIMUMNUM_RES:%.*]], align 4
+; CHECK-NEXT: store float [[X:%.*]], ptr [[MINIMUMNUM_RES:%.*]], align 4
+; CHECK-NEXT: store float [[X]], ptr [[MAXIMUMNUM_RES:%.*]], align 4
; CHECK-NEXT: ret void
;
%minnum = call float @llvm.minnum.f32(float %x, float 0x7FF4000000000000)
@@ -78,10 +74,8 @@ define void @minmax_qnan_nxv2f64_op0(<vscale x 2 x double> %x, ptr %minnum_res,
; CHECK-NEXT: store <vscale x 2 x double> [[X]], ptr [[MAXNUM_RES:%.*]], align 16
; CHECK-NEXT: store <vscale x 2 x double> splat (double 0x7FF8000DEAD00000), ptr [[MINIMUM_RES:%.*]], align 16
; CHECK-NEXT: store <vscale x 2 x double> splat (double 0x7FF8000DEAD00000), ptr [[MAXIMUM_RES:%.*]], align 16
-; CHECK-NEXT: [[MINIMUMNUM:%.*]] = call <vscale x 2 x double> @llvm.minimumnum.nxv2f64(<vscale x 2 x double> splat (double 0x7FF8000DEAD00000), <vscale x 2 x double> [[X]])
-; CHECK-NEXT: store <vscale x 2 x double> [[MINIMUMNUM]], ptr [[MINIMUMNUM_RES:%.*]], align 16
-; CHECK-NEXT: [[MAXIMUMNUM:%.*]] = call <vscale x 2 x double> @llvm.maximumnum.nxv2f64(<vscale x 2 x double> splat (double 0x7FF8000DEAD00000), <vscale x 2 x double> [[X]])
-; CHECK-NEXT: store <vscale x 2 x double> [[MAXIMUMNUM]], ptr [[MAXIMUMNUM_RES:%.*]], align 16
+; CHECK-NEXT: store <vscale x 2 x double> [[X]], ptr [[MINIMUMNUM_RES:%.*]], align 16
+; CHECK-NEXT: store <vscale x 2 x double> [[X]], ptr [[MAXIMUMNUM_RES:%.*]], align 16
; CHECK-NEXT: ret void
;
%minnum = call <vscale x 2 x double> @llvm.minnum.nxv2f64(<vscale x 2 x double> splat (double 0x7FF8000DEAD00000), <vscale x 2 x double> %x)
@@ -101,17 +95,15 @@ define void @minmax_qnan_nxv2f64_op0(<vscale x 2 x double> %x, ptr %minnum_res,
ret void
}
-; TODO currently snan is treated the same as qnan, but maxnum/minnum should really return qnan for these cases, not X
+; Note that maxnum/minnum return qnan here for snan inputs, unlike maximumnum/minimumnum
define void @minmax_snan_nxv2f64_op1(<vscale x 2 x double> %x, ptr %minnum_res, ptr %maxnum_res, ptr %minimum_res, ptr %maximum_res, ptr %minimumnum_res, ptr %maximumnum_res) {
; CHECK-LABEL: @minmax_snan_nxv2f64_op1(
-; CHECK-NEXT: store <vscale x 2 x double> [[X:%.*]], ptr [[MINNUM_RES:%.*]], align 16
-; CHECK-NEXT: store <vscale x 2 x double> [[X]], ptr [[MAXNUM_RES:%.*]], align 16
+; CHECK-NEXT: store <vscale x 2 x double> splat (double 0x7FFC00DEAD00DEAD), ptr [[MINNUM_RES:%.*]], align 16
+; CHECK-NEXT: store <vscale x 2 x double> splat (double 0x7FFC00DEAD00DEAD), ptr [[MAXNUM_RES:%.*]], align 16
; CHECK-NEXT: store <vscale x 2 x double> splat (double 0x7FFC00DEAD00DEAD), ptr [[MINIMUM_RES:%.*]], align 16
; CHECK-NEXT: store <vscale x 2 x double> splat (double 0x7FFC00DEAD00DEAD), ptr [[MAXIMUM_RES:%.*]], align 16
-; CHECK-NEXT: [[MINIMUMNUM:%.*]] = call <vscale x 2 x double> @llvm.minimumnum.nxv2f64(<vscale x 2 x double> splat (double 0x7FF400DEAD00DEAD), <vscale x 2 x double> [[X]])
-; CHECK-NEXT: store <vscale x 2 x double> [[MINIMUMNUM]], ptr [[MINIMUMNUM_RES:%.*]], align 16
-; CHECK-NEXT: [[MAXIMUMNUM:%.*]] = call <vscale x 2 x double> @llvm.maximumnum.nxv2f64(<vscale x 2 x double> splat (double 0x7FF400DEAD00DEAD), <vscale x 2 x double> [[X]])
-; CHECK-NEXT: store <vscale x 2 x double> [[MAXIMUMNUM]], ptr [[MAXIMUMNUM_RES:%.*]], align 16
+; CHECK-NEXT: store <vscale x 2 x double> [[X:%.*]], ptr [[MINIMUMNUM_RES:%.*]], align 16
+; CHECK-NEXT: store <vscale x 2 x double> [[X]], ptr [[MAXIMUMNUM_RES:%.*]], align 16
; CHECK-NEXT: ret void
;
%minnum = call <vscale x 2 x double> @llvm.minnum.nxv2f64(<vscale x 2 x double> splat (double 0x7FF400DEAD00DEAD), <vscale x 2 x double> %x)
@@ -131,17 +123,18 @@ define void @minmax_snan_nxv2f64_op1(<vscale x 2 x double> %x, ptr %minnum_res,
ret void
}
-; TODO Currently, we treat SNaN and QNaN the same. However, for maxnum and minnum, we should not optimize this, as we should return <%x0, QNaN> instead of <%x0, %x1>
+; For maxnum and minnum, we cannot optimize this in InstSimplify, as the result should
+; return <%x0, QNaN> and InstSimplify cannot create the extra instructions required to construct this.
define void @minmax_mixed_snan_qnan_v2f64(<2 x double> %x, ptr %minnum_res, ptr %maxnum_res, ptr %minimum_res, ptr %maximum_res, ptr %minimumnum_res, ptr %maximumnum_res) {
; CHECK-LABEL: @minmax_mixed_snan_qnan_v2f64(
-; CHECK-NEXT: store <2 x double> [[X:%.*]], ptr [[MINNUM_RES:%.*]], align 16
-; CHECK-NEXT: store <2 x double> [[X]], ptr [[MAXNUM_RES:%.*]], align 16
+; CHECK-NEXT: [[MINNUM:%.*]] = call <2 x double> @llvm.minnum.v2f64(<2 x double> <double 0x7FF400DEAD00DEAD, double 0x7FF8000FEED00000>, <2 x double> [[X:%.*]])
+; CHECK-NEXT: store <2 x double> [[MINNUM]], ptr [[MINNUM_RES:%.*]], align 16
+; CHECK-NEXT: [[MAXNUM:%.*]] = call <2 x double> @llvm.maxnum.v2f64(<2 x double> <double 0x7FF400DEAD00DEAD, double 0x7FF8000FEED00000>, <2 x double> [[X]])
+; CHECK-NEXT: store <2 x double> [[MAXNUM]], ptr [[MAXNUM_RES:%.*]], align 16
; CHECK-NEXT: store <2 x double> <double 0x7FFC00DEAD00DEAD, double 0x7FF8000FEED00000>, ptr [[MINIMUM_RES:%.*]], align 16
; CHECK-NEXT: store <2 x double> <double 0x7FFC00DEAD00DEAD, double 0x7FF8000FEED00000>, ptr [[MAXIMUM_RES:%.*]], align 16
-; CHECK-NEXT: [[MINIMUMNUM:%.*]] = call <2 x double> @llvm.minimumnum.v2f64(<2 x double> <double 0x7FF400DEAD00DEAD, double 0x7FF8000FEED00000>, <2 x double> [[X]])
-; CHECK-NEXT: store <2 x double> [[MINIMUMNUM]], ptr [[MINIMUMNUM_RES:%.*]], align 16
-; CHECK-NEXT: [[MAXIMUMNUM:%.*]] = call <2 x double> @llvm.maximumnum.v2f64(<2 x double> <double 0x7FF400DEAD00DEAD, double 0x7FF8000FEED00000>, <2 x double> [[X]])
-; CHECK-NEXT: store <2 x double> [[MAXIMUMNUM]], ptr [[MAXIMUMNUM_RES:%.*]], align 16
+; CHECK-NEXT: store <2 x double> [[X]], ptr [[MINIMUMNUM_RES:%.*]], align 16
+; CHECK-NEXT: store <2 x double> [[X]], ptr [[MAXIMUMNUM_RES:%.*]], align 16
; CHECK-NEXT: ret void
;
%minnum = call <2 x double> @llvm.minnum.v2f64(<2 x double> <double 0x7FF400DEAD00DEAD, double 0x7FF8000FEED00000>, <2 x double> %x)
@@ -169,10 +162,8 @@ define void @minmax_mixed_qnan_poison_v2f64(<2 x double> %x, ptr %minnum_res, pt
; CHECK-NEXT: store <2 x double> [[X]], ptr [[MAXNUM_RES:%.*]], align 16
; CHECK-NEXT: store <2 x double> <double poison, double 0x7FF8000DEAD00000>, ptr [[MINIMUM_RES:%.*]], align 16
; CHECK-NEXT: store <2 x double> <double poison, double 0x7FF8000DEAD00000>, ptr [[MAXIMUM_RES:%.*]], align 16
-; CHECK-NEXT: [[MINIMUMNUM:%.*]] = call <2 x double> @llvm.minimumnum.v2f64(<2 x double> <double poison, double 0x7FF8000DEAD00000>, <2 x double> [[X]])
-; CHECK-NEXT: store <2 x double> [[MINIMUMNUM]], ptr [[MINIMUMNUM_RES:%.*]], align 16
-; CHECK-NEXT: [[MAXIMUMNUM:%.*]] = call <2 x double> @llvm.maximumnum.v2f64(<2 x double> <double poison, double 0x7FF8000DEAD00000>, <2 x double> [[X]])
-; CHECK-NEXT: store <2 x double> [[MAXIMUMNUM]], ptr [[MAXIMUMNUM_RES:%.*]], align 16
+; CHECK-NEXT: store <2 x double> [[X]], ptr [[MINIMUMNUM_RES:%.*]], align 16
+; CHECK-NEXT: store <2 x double> [[X]], ptr [[MAXIMUMNUM_RES:%.*]], align 16
; CHECK-NEXT: ret void
;
%minnum = call <2 x double> @llvm.minnum.v2f64(<2 x double> <double poison, double 0x7FF8000DEAD00000>, <2 x double> %x)
@@ -201,10 +192,8 @@ define void @minmax_poison_op0_f16(half %x, ptr %minnum_res, ptr %maxnum_res, pt
; CHECK-NEXT: store half [[X]], ptr [[MAXNUM_RES:%.*]], align 2
; CHECK-NEXT: store half [[X]], ptr [[MINIMUM_RES:%.*]], align 2
; CHECK-NEXT: store half [[X]], ptr [[MAXIMUM_RES:%.*]], align 2
-; CHECK-NEXT: [[MINIMUMNUM:%.*]] = call half @llvm.minimumnum.f16(half poison, half [[X]])
-; CHECK-NEXT: store half [[MINIMUMNUM]], ptr [[MINIMUMNUM_RES:%.*]], align 2
-; CHECK-NEXT: [[MAXIMUMNUM:%.*]] = call half @llvm.maximumnum.f16(half poison, half [[X]])
-; CHECK-NEXT: store half [[MAXIMUMNUM]], ptr [[MAXIMUMNUM_RES:%.*]], align 2
+; CHECK-NEXT: store half [[X]], ptr [[MINIMUMNUM_RES:%.*]], align 2
+; CHECK-NEXT: store half [[X]], ptr [[MAXIMUMNUM_RES:%.*]], align 2
; CHECK-NEXT: ret void
;
%minnum = call half @llvm.minnum.f16(half poison, half %x)
@@ -230,10 +219,8 @@ define void @minmax_poison_op1_nxv2f64(<vscale x 2 x double> %x, ptr %minnum_res
; CHECK-NEXT: store <vscale x 2 x double> [[X]], ptr [[MAXNUM_RES:%.*]], align 16
; CHECK-NEXT: store <vscale x 2 x double> [[X]], ptr [[MINIMUM_RES:%.*]], align 16
; CHECK-NEXT: store <vscale x 2 x double> [[X]], ptr [[MAXIMUM_RES:%.*]], align 16
-; CHECK-NEXT: [[MINIMUMNUM:%.*]] = call nnan <vscale x 2 x double> @llvm.minimumnum.nxv2f64(<vscale x 2 x double> [[X]], <vscale x 2 x double> poison)
-; CHECK-NEXT: store <vscale x 2 x double> [[MINIMUMNUM]], ptr [[MINIMUMNUM_RES:%.*]], align 16
-; CHECK-NEXT: [[MAXIMUMNUM:%.*]] = call nnan <vscale x 2 x double> @llvm.maximumnum.nxv2f64(<vscale x 2 x double> [[X]], <vscale x 2 x double> poison)
-; CHECK-NEXT: store <vscale x 2 x double> [[MAXIMUMNUM]], ptr [[MAXIMUMNUM_RES:%.*]], align 16
+; CHECK-NEXT: store <vscale x 2 x double> [[X]], ptr [[MINIMUMNUM_RES:%.*]], align 16
+; CHECK-NEXT: store <vscale x 2 x double> [[X]], ptr [[MAXIMUMNUM_RES:%.*]], align 16
; CHECK-NEXT: ret void
;
%minnum = call nnan <vscale x 2 x double> @llvm.minnum.nxv2f64(<vscale x 2 x double> %x, <vscale x 2 x double> poison)
@@ -260,10 +247,10 @@ define void @minmax_poison_op1_nxv2f64(<vscale x 2 x double> %x, ptr %minnum_res
; minnum(X, +inf) -> X if nnan (ignoring NaN quieting)
; maximum(X, +inf) -> +inf if nnan
; minimum(X, +inf) -> X (ignoring NaN quieting)
-; TODO: maximumnum(X, +inf) -> +inf
-; TODO: minimumnum(X, +inf) -> X if nnan (ignoring NaN quieting)
+; maximumnum(X, +inf) -> +inf
+; minimumnum(X, +inf) -> X if nnan (ignoring NaN quieting)
-; Can only optimize maxnum and minimum without the nnan flag
+; Can only optimize maxnum, minimum, and maximumnum without the nnan flag
define void @minmax_pos_inf_f32(float %x, ptr %minnum_res, ptr %maxnum_res, ptr %minimum_res, ptr %maximum_res, ptr %minimumnum_res, ptr %maximumnum_res) {
; CHECK-LABEL: @minmax_pos_inf_f32(
; CHECK-NEXT: [[MINNUM:%.*]] = call float @llvm.minnum.f32(float [[X:%.*]], float 0x7FF0000000000000)
@@ -274,8 +261,7 @@ define void @minmax_pos_inf_f32(float %x, ptr %minnum_res, ptr %maxnum_res, ptr
; CHECK-NEXT: store float [[MAXIMUM]], ptr [[MAXIMUM_RES:%.*]], align 4
; CHECK-NEXT: [[MINIMUMNUM:%.*]] = call float @llvm.minimumnum.f32(float [[X]], float 0x7FF0000000000000)
; CHECK-NEXT: store float [[MINIMUMNUM]], ptr [[MINIMUMNUM_RES:%.*]], align 4
-; CHECK-NEXT: [[MAXIMUMNUM:%.*]] = call float @llvm.maximumnum.f32(float [[X]], float 0x7FF0000000000000)
-; CHECK-NEXT: store float [[MAXIMUMNUM]], ptr [[MAXIMUMNUM_RES:%.*]], align 4
+; CHECK-NEXT: store float 0x7FF0000000000000, ptr [[MAXIMUMNUM_RES:%.*]], align 4
; CHECK-NEXT: ret void
;
%minnum = call float @llvm.minnum.f32(float %x, float 0x7FF0000000000000)
@@ -296,17 +282,14 @@ define void @minmax_pos_inf_f32(float %x, ptr %minnum_res, ptr %maxnum_res, ptr
}
; Can optimize all minmax variants if the nnan flag is set
-; TODO maximumnum/minimumnum
define void @minmax_pos_inf_nnan_v2f32(<2 x float> %x, ptr %minnum_res, ptr %maxnum_res, ptr %minimum_res, ptr %maximum_res, ptr %minimumnum_res, ptr %maximumnum_res) {
; CHECK-LABEL: @minmax_pos_inf_nnan_v2f32(
; CHECK-NEXT: store <2 x float> [[X:%.*]], ptr [[MINNUM_RES:%.*]], align 8
; CHECK-NEXT: store <2 x float> splat (float 0x7FF0000000000000), ptr [[MAXNUM_RES:%.*]], align 8
; CHECK-NEXT: store <2 x float> [[X]], ptr [[MINIMUM_RES:%.*]], align 8
; CHECK-NEXT: store <2 x float> splat (float 0x7FF0000000000000), ptr [[MAXIMUM_RES:%.*]], align 8
-; CHECK-NEXT: [[MINIMUMNUM:%.*]] = call nnan <2 x float> @llvm.minimumnum.v2f32(<2 x float> splat (float 0x7FF0000000000000), <2 x float> [[X]])
-; CHECK-NEXT: store <2 x float> [[MINIMUMNUM]], ptr [[MINIMUMNUM_RES:%.*]], align 8
-; CHECK-NEXT: [[MAXIMUMNUM:%.*]] = call nnan <2 x float> @llvm.maximumnum.v2f32(<2 x float> splat (float 0x7FF0000000000000), <2 x float> [[X]])
-; CHECK-NEXT: store <2 x float> [[MAXIMUMNUM]], ptr [[MAXIMUMNUM_RES:%.*]], align 8
+; CHECK-NEXT: store <2 x float> [[X]], ptr [[MINIMUMNUM_RES:%.*]], align 8
+; CHECK-NEXT: store <2 x float> splat (float 0x7FF0000000000000), ptr [[MAXIMUMNUM_RES:%.*]], align 8
; CHECK-NEXT: ret void
;
%minnum = call nnan <2 x float> @llvm.minnum.v2f32(<2 x float> splat (float 0x7FF0000000000000), <2 x float> %x)
@@ -333,10 +316,10 @@ define void @minmax_pos_inf_nnan_v2f32(<2 x float> %x, ptr %minnum_res, ptr %max
; maxnum(X, -inf) -> X if nnan
; minimum(X, -inf) -> -inf if nnan
; maximum(X, -inf) -> X (Ignoring NaN quieting)
-; TODO: minimumnum(X, -inf) -> -inf
-; TODO: maximumnum(X, -inf) -> X if nnan
+; minimumnum(X, -inf) -> -inf
+; maximumnum(X, -inf) -> X if nnan
-; Can only optimize minnum and maximum without the nnan flag
+; Can only optimize minnum, maximum, and minimumnum without the nnan flag
define void @minmax_neg_inf_f32(float %x, ptr %minnum_res, ptr %maxnum_res, ptr %minimum_res, ptr %maximum_res, ptr %minimumnum_res, ptr %maximumnum_res) {
; CHECK-LABEL: @minmax_neg_inf_f32(
; CHECK-NEXT: store float 0xFFF0000000000000, ptr [[MINNUM_RES:%.*]], align 4
@@ -345,8 +328,7 @@ define void @minmax_neg_inf_f32(float %x, ptr %minnum_res, ptr %maxnum_res, ptr
; CHECK-NEXT: [[MINIMUM:%.*]] = call float @llvm.minimum.f32(float [[X]], float 0xFFF0000000000000)
; CHECK-NEXT: store float [[MINIMUM]], ptr [[MINIMUM_RES:%.*]], align 4
; CHECK-NEXT: store float [[X]], ptr [[MAXIMUM_RES:%.*]], align 4
-; CHECK-NEXT: [[MINIMUMNUM:%.*]] = call float @llvm.minimumnum.f32(float [[X]], float 0xFFF0000000000000)
-; CHECK-NEXT: store float [[MINIMUMNUM]], ptr [[MINIMUMNUM_RES:%.*]], align 4
+; CHECK-NEXT: store float 0xFFF0000000000000, ptr [[MINIMUMNUM_RES:%.*]], align 4
; CHECK-NEXT: [[MAXIMUMNUM:%.*]] = call float @llvm.maximumnum.f32(float [[X]], float 0xFFF0000000000000)
; CHECK-NEXT: store float [[MAXIMUMNUM]], ptr [[MAXIMUMNUM_RES:%.*]], align 4
; CHECK-NEXT: ret void
@@ -369,17 +351,14 @@ define void @minmax_neg_inf_f32(float %x, ptr %minnum_res, ptr %maxnum_res, ptr
}
; Can optimize all minmax variants if the nnan flag is set
-; TODO maximumnum/minimumnum
define void @minmax_neg_inf_nnan_v2f64(<2 x double> %x, ptr %minnum_res, ptr %maxnum_res, ptr %minimum_res, ptr %maximum_res, ptr %minimumnum_res, ptr %maximumnum_res) {
; CHECK-LABEL: @minmax_neg_inf_nnan_v2f64(
; CHECK-NEXT: store <2 x double> splat (double 0xFFF0000000000000), ptr [[MINNUM_RES:%.*]], align 16
; CHECK-NEXT: store <2 x double> [[X:%.*]], ptr [[MAXNUM_RES:%.*]], align 16
; CHECK-NEXT: store <2 x double> splat (double 0xFFF0000000000000), ptr [[MINIMUM_RES:%.*]], align 16
; CHECK-NEXT: store <2 x double> [[X]], ptr [[MAXIMUM_RES:%.*]], align 16
-; CHECK-NEXT: [[MINIMUMNUM:%.*]] = call nnan <2 x double> @llvm.minimumnum.v2f64(<2 x double> [[X]], <2 x double> splat (double 0xFFF0000000000000))
-; CHECK-NEXT: store <2 x double> [[MINIMUMNUM]], ptr [[MINIMUMNUM_RES:%.*]], align 16
-; CHECK-NEXT: [[MAXIMUMNUM:%.*]] = call nnan <2 x double> @llvm.maximumnum.v2f64(<2 x double> [[X]], <2 x double> splat (double 0xFFF0000000000000))
-; CHECK-NEXT: store <2 x double> [[MAXIMUMNUM]], ptr [[MAXIMUMNUM_RES:%.*]], align 16
+; CHECK-NEXT: store <2 x double> splat (double 0xFFF0000000000000), ptr [[MINIMUMNUM_RES:%.*]], align 16
+; CHECK-NEXT: store <2 x double> [[X]], ptr [[MAXIMUMNUM_RES:%.*]], align 16
; CHECK-NEXT: ret void
;
%minnum = call nnan <2 x double> @llvm.minnum.v2f64(<2 x double> %x, <2 x double> splat (double 0xFFF0000000000000))
@@ -406,8 +385,8 @@ define void @minmax_neg_inf_nnan_v2f64(<2 x double> %x, ptr %minnum_res, ptr %ma
; minnum(X, +largest) -> X if ninf && nnan
; maximum(X, +largest) -> +largest if ninf && nnan
; minimum(X, +largest) -> X if ninf (ignoring quieting of sNaNs)
-; TODO: maximumnum(X, +largest) -> +largest if ninf && nnan
-; TODO: minimumnum(X, +largest) -> X if ninf && nnan
+; maximumnum(X, +largest) -> +largest if ninf
+; minimumnum(X, +largest) -> X if ninf && nnan
; None of these should be optimized away without the nnan/ninf flags
define void @minmax_largest_f32(float %x, ptr %minnum_res, ptr %maxnum_res, ptr %minimum_res, ptr %maximum_res, ptr %minimumnum_res, ptr %maximumnum_res) {
@@ -443,7 +422,7 @@ define void @minmax_largest_f32(float %x, ptr %minnum_res, ptr %maxnum_res, ptr
ret void
}
-; We can optimize maxnum and minimum if we know ninf is set
+; We can optimize maxnum, minimum, and maximumnum if we know ninf is set
define void @minmax_largest_f32_ninf(float %x, ptr %minnum_res, ptr %maxnum_res, ptr %minimum_res, ptr %maximum_res, ptr %minimumnum_res, ptr %maximumnum_res) {
; CHECK-LABEL: @minmax_largest_f32_ninf(
; CHECK-NEXT: [[MINNUM:%.*]] = call ninf float @llvm.minnum.f32(float [[X:%.*]], float 0x47EFFFFFE0000000)
@@ -454,8 +433,7 @@ define void @minmax_largest_f32_ninf(float %x, ptr %minnum_res, ptr %maxnum_res,
; CHECK-NEXT: store float [[MAXIMUM]], ptr [[MAXIMUM_RES:%.*]], align 4
; CHECK-NEXT: [[MINIMUMNUM:%.*]] = call ninf float @llvm.minimumnum.f32(float [[X]], float 0x47EFFFFFE0000000)
; CHECK-NEXT: store float [[MINIMUMNUM]], ptr [[MINIMUMNUM_RES:%.*]], align 4
-; CHECK-NEXT: [[MAXIMUMNUM:%.*]] = call ninf float @llvm.maximumnum.f32(float [[X]], float 0x47EFFFFFE0000000)
-; CHECK-NEXT: store float [[MAXIMUMNUM]], ptr [[MAXIMUMNUM_RES:%.*]], align 4
+; CHECK-NEXT: store float 0x47EFFFFFE0000000, ptr [[MAXIMUMNUM_RES:%.*]], align 4
; CHECK-NEXT: ret void
;
%minnum = call ninf float @llvm.minnum.f32(float %x, float 0x47EFFFFFE0000000)
@@ -476,17 +454,14 @@ define void @minmax_largest_f32_ninf(float %x, ptr %minnum_res, ptr %maxnum_res,
}
; All can be optimized if both the ninf and nnan flags are set (ignoring SNaN propagation in minnum/maxnum)
-; TODO maximumnum/minimumnum
define void @minmax_largest_v2f32_ninf_nnan(<2 x float> %x, ptr %minnum_res, ptr %maxnum_res, ptr %minimum_res, ptr %maximum_res, ptr %minimumnum_res, ptr %maximumnum_res) {
; CHECK-LABEL: @minmax_largest_v2f32_ninf_nnan(
; CHECK-NEXT: store <2 x float> [[X:%.*]], ptr [[MINNUM_RES:%.*]], align 8
; CHECK-NEXT: store <2 x float> splat (float 0x47EFFFFFE0000000), ptr [[MAXNUM_RES:%.*]], align 8
; CHECK-NEXT: store <2 x float> [[X]], ptr [[MINIMUM_RES:%.*]], align 8
; CHECK-NEXT: store <2 x float> splat (float 0x47EFFFFFE0000000), ptr [[MAXIMUM_RES:%.*]], align 8
-; CHECK-NEXT: [[MINIMUMNUM:%.*]] = call nnan ninf <2 x float> @llvm.minimumnum.v2f32(<2 x float> [[X]], <2 x float> splat (float 0x47EFFFFFE0000000))
-; CHECK-NEXT: store <2 x float> [[MINIMUMNUM]], ptr [[MINIMUMNUM_RES:%.*]], align 8
-; CHECK-NEXT: [[MAXIMUMNUM:%.*]] = call nnan ninf <2 x float> @llvm.maximumnum.v2f32(<2 x float> [[X]], <2 x float> splat (float 0x47EFFFFFE0000000))
-; CHECK-NEXT: store <2 x float> [[MAXIMUMNUM]], ptr [[MAXIMUMNUM_RES:%.*]], align 8
+; CHECK-NEXT: store <2 x float> [[X]], ptr [[MINIMUMNUM_RES:%.*]], align 8
+; CHECK-NEXT: store <2 x float> splat (float 0x47EFFFFFE0000000), ptr [[MAXIMUMNUM_RES:%.*]], align 8
; CHECK-NEXT: ret void
;
%minnum = call ninf nnan <2 x float> @llvm.minnum.v2f32(<2 x float> %x, <2 x float> splat (float 0x47EFFFFFE0000000))
@@ -513,8 +488,8 @@ define void @minmax_largest_v2f32_ninf_nnan(<2 x float> %x, ptr %minnum_res, ptr
; minnum(X, -largest) -> -largest if ninf (ignoring SNaN -> QNaN propagation)
; maximum(X, -largest) -> X if ninf (ignoring quieting of sNaNs)
; minimum(X, -largest) -> -largest if ninf && nnan
-; TODO: maximumnum(X, -largest) -> X if ninf && nnan
-; TODO: minimumnum(X, -largest) -> -largest if ninf
+; maximumnum(X, -largest) -> X if ninf && nnan
+; minimumnum(X, -largest) -> -largest if ninf
; None of these should be optimized away without the nnan/ninf flags
define void @minmax_neg_largest_f32(float %x, ptr %minnum_res, ptr %maxnum_res, ptr %minimum_res, ptr %maximum_res, ptr %minimumnum_res, ptr %maximumnum_res) {
@@ -550,7 +525,7 @@ define void @minmax_neg_largest_f32(float %x, ptr %minnum_res, ptr %maxnum_res,
ret void
}
-; We can optimize minnum and maximum if we know ninf is set
+; We can optimize minnum, maximum, and minimumnum if we know ninf is set
define void @minmax_neg_largest_f32_ninf(float %x, ptr %minnum_res, ptr %maxnum_res, ptr %minimum_res, ptr %maximum_res, ptr %minimumnum_res, ptr %maximumnum_res) {
; CHECK-LABEL: @minmax_neg_largest_f32_ninf(
; CHECK-NEXT: store float 0xC7EFFFFFE0000000, ptr [[MINNUM_RES:%.*]], align 4
@@ -559,8 +534,7 @@ define void @minmax_neg_largest_f32_ninf(float %x, ptr %minnum_res, ptr %maxnum_
; CHECK-NEXT: [[MINIMUM:%.*]] = call ninf float @llvm.minimum.f32(float [[X]], float 0xC7EFFFFFE0000000)
; CHECK-NEXT: store float [[MINIMUM]], ptr [[MINIMUM_RES:%.*]], align 4
; CHECK-NEXT: store float [[X]], ptr [[MAXIMUM_RES:%.*]], align 4
-; CHECK-NEXT: [[MINIMUMNUM:%.*]] = call ninf float @llvm.minimumnum.f32(float [[X]], float 0xC7EFFFFFE0000000)
-; CHECK-NEXT: store float [[MINIMUMNUM]], ptr [[MINIMUMNUM_RES:%.*]], align 4
+; CHECK-NEXT: store float 0xC7EFFFFFE0000000, ptr [[MINIMUMNUM_RES:%.*]], align 4
; CHECK-NEXT: [[MAXIMUMNUM:%.*]] = call ninf float @llvm.maximumnum.f32(float [[X]], float 0xC7EFFFFFE0000000)
; CHECK-NEXT: store float [[MAXIMUMNUM]], ptr [[MAXIMUMNUM_RES:%.*]], align 4
; CHECK-NEXT: ret void
@@ -583,17 +557,14 @@ define void @minmax_neg_largest_f32_ninf(float %x, ptr %minnum_res, ptr %maxnum_
}
; All can be optimized if both the ninf and nnan flags are set (ignoring SNaN propagation in minnum/maxnum)
-; TODO maximumnum/minimumnum
define void @minmax_neg_largest_nxv2f32_nnan_ninf(<vscale x 2 x float> %x, ptr %minnum_res, ptr %maxnum_res, ptr %minimum_res, ptr %maximum_res, ptr %minimumnum_res, ptr %maximumnum_res) {
; CHECK-LABEL: @minmax_neg_largest_nxv2f32_nnan_ninf(
; CHECK-NEXT: store <vscale x 2 x float> splat (float 0xC7EFFFFFE0000000), ptr [[MINNUM_RES:%.*]], align 8
; CHECK-NEXT: store <vscale x 2 x float> [[X:%.*]], ptr [[MAXNUM_RES:%.*]], align 8
; CHECK-NEXT: store <vscale x 2 x float> splat (float 0xC7EFFFFFE0000000), ptr [[MINIMUM_RES:%.*]], align 8
; CHECK-NEXT: store <vscale x 2 x float> [[X]], ptr [[MAXIMUM_RES:%.*]], align 8
-; CHECK-NEXT: [[MINIMUMNUM:%.*]] = call nnan ninf <vscale x 2 x float> @llvm.minimumnum.nxv2f32(<vscale x 2 x float> [[X]], <vscale x 2 x float> splat (float 0xC7EFFFFFE0000000))
-; CHECK-NEXT: store <vscale x 2 x float> [[MINIMUMNUM]], ptr [[MINIMUMNUM_RES:%.*]], align 8
-; CHECK-NEXT: [[MAXIMUMNUM:%.*]] = call nnan ninf <vscale x 2 x float> @llvm.maximumnum.nxv2f32(<vscale x 2 x float> [[X]], <vscale x 2 x float> splat (float 0xC7EFFFFFE0000000))
-; CHECK-NEXT: store <vscale x 2 x float> [[MAXIMUMNUM]], ptr [[MAXIMUMNUM_RES:%.*]], align 8
+; CHECK-NEXT: store <vscale x 2 x float> splat (float 0xC7EFFFFFE0000000), ptr [[MINIMUMNUM_RES:%.*]], align 8
+; CHECK-NEXT: store <vscale x 2 x float> [[X]], ptr [[MAXIMUMNUM_RES:%.*]], align 8
; CHECK-NEXT: ret void
;
%minnum = call nnan ninf <vscale x 2 x float> @llvm.minnum.nxv2f32(<vscale x 2 x float> %x, <vscale x 2 x float> splat (float 0xC7EFFFFFE0000000))
@@ -614,6 +585,80 @@ define void @minmax_neg_largest_nxv2f32_nnan_ninf(<vscale x 2 x float> %x, ptr %
}
;###############################################################
+;# Mixed Constant Vector Elements #
+;###############################################################
+; Tests elementwise handling of different combinations of the above optimizable constants
+
+; Test with vector variants (v2f64) with +Inf and poison
+; Poison element allows for flexibility to choose either X or <poison, +Inf> where applicable
+define void @minmax_mixed_pos_inf_poison_v2f64_nnan(<2 x double> %x, ptr %minnum_res, ptr %maxnum_res, ptr %minimum_res, ptr %maximum_res, ptr %minimumnum_res, ptr %maximumnum_res) {
+; CHECK-LABEL: @minmax_mixed_pos_inf_poison_v2f64_nnan(
+; CHECK-NEXT: store <2 x double> [[X:%.*]], ptr [[MINNUM_RES:%.*]], align 16
+; CHECK-NEXT: store <2 x double> <double poison, double 0x7FF0000000000000>, ptr [[MAXNUM_RES:%.*]], align 16
+; CHECK-NEXT: store <2 x double> [[X]], ptr [[MINIMUM_RES:%.*]], align 16
+; CHECK-NEXT: store <2 x double> <double poison, double 0x7FF0000000000000>, ptr [[MAXIMUM_RES:%.*]], align 16
+; CHECK-NEXT: store <2 x double> [[X]], ptr [[MINIMUMNUM_RES:%.*]], align 16
+; CHECK-NEXT: store <2 x double> <double poison, double 0x7FF0000000000000>, ptr [[MAXIMUMNUM_RES:%.*]], align 16
+; CHECK-NEXT: ret void
+;
+ %minnum = call nnan <2 x double> @llvm.minnum.v2f64(<2 x double> <double poison, double 0x7FF0000000000000>, <2 x double> %x)
+ store <2 x double> %minnum, ptr %minnum_res
+ %maxnum = call nnan <2 x double> @llvm.maxnum.v2f64(<2 x double> <double poison, double 0x7FF0000000000000>, <2 x double> %x)
+ store <2 x double> %maxnum, ptr %maxnum_res
+
+ %minimum = call nnan <2 x double> @llvm.minimum.v2f64(<2 x double> <double poison, double 0x7FF0000000000000>, <2 x double> %x)
+ store <2 x double> %minimum, ptr %minimum_res
+ %maximum = call nnan <2 x double> @llvm.maximum.v2f64(<2 x double> <double poison, double 0x7FF0000000000000>, <2 x double> %x)
+ store <2 x double> %maximum, ptr %maximum_res
+
+ %minimumnum = call nnan <2 x double> @llvm.minimumnum.v2f64(<2 x double> <double poison, double 0x7FF0000000000000>, <2 x double> %x)
+ store <2 x double> %minimumnum, ptr %minimumnum_res
+ %maximumnum = call nnan <2 x double> @llvm.maximumnum.v2f64(<2 x double> <double poison, double 0x7FF0000000000000>, <2 x double> %x)
+ store <2 x double> %maximumnum, ptr %maximumnum_res
+ ret void
+}
+
+; Tests to show that we can optimize different classes of constatn (inf/nan/poison) in different vector elements.
+; We can only optimize if the result would be choosing all elements of the input X, or all constant elements though
+; (where poison allows us to choose either).
+;
+; nnan minnum(<poison, +Inf, SNaN>, X) = <???, X1, QNaN> (Cannot mix elements from X and constant vector)
+; nnan maxnum(<poison, +Inf, SNaN>, X) = <poison +Inf, QNaN>
+; nnan minimum(<poison, +Inf, SNaN>, X) = <???, X1, QNaN> (Cannot mix elements from X and constant vector)
+; nnan maximum(<poison, +Inf, SNaN>, X) = <poison +Inf, QNaN>
+; nnan minimumnum(<poison, +Inf, SNaN>, X) = <X0, X1, X2> (Poison can be either X or constant value)
+; nnan maximumnum(<poison, +Inf, SNaN>, X) = <???, +Inf, X2>
+define void @minmax_mixed_pos_inf_poison_snan_v3f32(<3 x float> %x, ptr %minnum_res, ptr %maxnum_res, ptr %minimum_res, ptr %maximum_res, ptr %minimumnum_res, ptr %maximumnum_res) {
+; CHECK-LABEL: @minmax_mixed_pos_inf_poison_snan_v3f32(
+; CHECK-NEXT: [[MINNUM:%.*]] = call nnan <3 x float> @llvm.minnum.v3f32(<3 x float> <float poison, float 0x7FF0000000000000, float 0x7FF4000000000000>, <3 x float> [[X:%.*]])
+; CHECK-NEXT: store <3 x float> [[MINNUM]], ptr [[MINNUM_RES:%.*]], align 16
+; CHECK-NEXT: store <3 x float> <float poison, float 0x7FF0000000000000, float 0x7FFC000000000000>, ptr [[MAXNUM_RES:%.*]], align 16
+; CHECK-NEXT: [[MINIMUM:%.*]] = call nnan <3 x float> @llvm.minimum.v3f32(<3 x float> <float poison, float 0x7FF0000000000000, float 0x7FF4000000000000>, <3 x float> [[X]])
+; CHECK-NEXT: store <3 x float> [[MINIMUM]], ptr [[MINIMUM_RES:%.*]], align 16
+; CHECK-NEXT: store <3 x float> <float poison, float 0x7FF0000000000000, float 0x7FFC000000000000>, ptr [[MAXIMUM_RES:%.*]], align 16
+; CHECK-NEXT: store <3 x float> [[X]], ptr [[MINIMUMNUM_RES:%.*]], align 16
+; CHECK-NEXT: [[MAXIMUMNUM:%.*]] = call nnan <3 x float> @llvm.maximumnum.v3f32(<3 x float> <float poison, float 0x7FF0000000000000, float 0x7FF4000000000000>, <3 x float> [[X]])
+; CHECK-NEXT: store <3 x float> [[MAXIMUMNUM]], ptr [[MAXIMUMNUM_RES:%.*]], align 16
+; CHECK-NEXT: ret void
+;
+ %minnum = call nnan <3 x float> @llvm.minnum.v3f32(<3 x float> <float poison, float 0x7FF0000000000000, float 0x7FF4000000000000>, <3 x float> %x)
+ store <3 x float> %minnum, ptr %minnum_res
+ %maxnum = call nnan <3 x float> @llvm.maxnum.v3f32(<3 x float> <float poison, float 0x7FF0000000000000, float 0x7FF4000000000000>, <3 x float> %x)
+ store <3 x float> %maxnum, ptr %maxnum_res
+
+ %minimum = call nnan <3 x float> @llvm.minimum.v3f32(<3 x float> <float poison, float 0x7FF0000000000000, float 0x7FF4000000000000>, <3 x float> %x)
+ store <3 x float> %minimum, ptr %minimum_res
+ %maximum = call nnan <3 x float> @llvm.maximum.v3f32(<3 x float> <float poison, float 0x7FF0000000000000, float 0x7FF4000000000000>, <3 x float> %x)
+ store <3 x float> %maximum, ptr %maximum_res
+
+ %minimumnum = call nnan <3 x float> @llvm.minimumnum.v3f32(<3 x float> <float poison, float 0x7FF0000000000000, float 0x7FF4000000000000>, <3 x float> %x)
+ store <3 x float> %minimumnum, ptr %minimumnum_res
+ %maximumnum = call nnan <3 x float> @llvm.maximumnum.v3f32(<3 x float> <float poison, float 0x7FF0000000000000, float 0x7FF4000000000000>, <3 x float> %x)
+ store <3 x float> %maximumnum, ptr %maximumnum_res
+ ret void
+}
+
+;###############################################################
;# Min(x, x) / Max(x, x) #
;###############################################################
; min(x, x) -> x and max(x, x) -> x for all variants (ignoring SNaN quieting)
@@ -623,10 +668,8 @@ define void @minmax_same_args(float %x, ptr %minnum_res, ptr %maxnum_res, ptr %m
; CHECK-NEXT: store float [[X]], ptr [[MAXNUM_RES:%.*]], align 4
; CHECK-NEXT: store float [[X]], ptr [[MINIMUM_RES:%.*]], align 4
; CHECK-NEXT: store float [[X]], ptr [[MAXIMUM_RES:%.*]], align 4
-; CHECK-NEXT: [[MINIMUMNUM:%.*]] = call float @llvm.minimumnum.f32(float [[X]], float [[X]])
-; CHECK-NEXT: store float [[MINIMUMNUM]], ptr [[MINIMUMNUM_RES:%.*]], align 4
-; CHECK-NEXT: [[MAXIMUMNUM:%.*]] = call float @llvm.maximumnum.f32(float [[X]], float [[X]])
-; CHECK-NEXT: store float [[MAXIMUMNUM]], ptr [[MAXIMUMNUM_RES:%.*]], align 4
+; CHECK-NEXT: store float [[X]], ptr [[MINIMUMNUM_RES:%.*]], align 4
+; CHECK-NEXT: store float [[X]], ptr [[MAXIMUMNUM_RES:%.*]], align 4
; CHECK-NEXT: ret void
;
%minnum = call float @llvm.minnum.f32(float %x, float %x)
@@ -660,11 +703,9 @@ define void @minmax_x_minmax_xy(<2 x float> %x, <2 x float> %y, ptr %minnum_res,
; CHECK-NEXT: [[MAXIMUM_XY:%.*]] = call <2 x float> @llvm.maximum.v2f32(<2 x float> [[X]], <2 x float> [[Y]])
; CHECK-NEXT: store <2 x float> [[MAXIMUM_XY]], ptr [[MAXIMUM_RES:%.*]], align 8
; CHECK-NEXT: [[MINIMUMNUM_XY:%.*]] = call <2 x float> @llvm.minimumnum.v2f32(<2 x float> [[X]], <2 x float> [[Y]])
-; CHECK-NEXT: [[MINIMUMNUM_NESTED:%.*]] = call <2 x float> @llvm.minimumnum.v2f32(<2 x float> [[X]], <2 x float> [[MINIMUMNUM_XY]])
-; CHECK-NEXT: store <2 x float> [[MINIMUMNUM_NESTED]], ptr [[MINIMUMNUM_RES:%.*]], align 8
+; CHECK-NEXT: store <2 x float> [[MINIMUMNUM_XY]], ptr [[MINIMUMNUM_RES:%.*]], align 8
; CHECK-NEXT: [[MAXIMUMNUM_XY:%.*]] = call <2 x float> @llvm.maximumnum.v2f32(<2 x float> [[X]], <2 x float> [[Y]])
-; CHECK-NEXT: [[MAXIMUMNUM_NESTED:%.*]] = call <2 x float> @llvm.maximumnum.v2f32(<2 x float> [[X]], <2 x float> [[MAXIMUMNUM_XY]])
-; CHECK-NEXT: store <2 x float> [[MAXIMUMNUM_NESTED]], ptr [[MAXIMUMNUM_RES:%.*]], align 8
+; CHECK-NEXT: store <2 x float> [[MAXIMUMNUM_XY]], ptr [[MAXIMUMNUM_RES:%.*]], align 8
; CHECK-NEXT: ret void
;
%minnum_xy = call <2 x float> @llvm.minnum.v2f32(<2 x float> %x, <2 x float> %y)
@@ -758,13 +799,9 @@ define void @minmax_minmax_xy_minmax_yx(half %x, half %y, ptr %minnum_res, ptr %
; CHECK-NEXT: [[MAXIMUM_XY:%.*]] = call half @llvm.maximum.f16(half [[X]], half [[Y]])
; CHECK-NEXT: store half [[MAXIMUM_XY]], ptr [[MAXIMUM_RES:%.*]], align 2
; CHECK-NEXT: [[MINIMUMNUM_XY:%.*]] = call half @llvm.minimumnum.f16(half [[X]], half [[Y]])
-; CHECK-NEXT: [[MINIMUMNUM_YX:%.*]] = call half @llvm.minimumnum.f16(half [[Y]], half [[X]])
-; CHECK-NEXT: [[FINAL_MINIMUMNUM:%.*]] = call half @llvm.minimumnum.f16(half [[MINIMUMNUM_XY]], half [[MINIMUMNUM_YX]])
-; CHECK-NEXT: store half [[FINAL_MINIMUMNUM]], ptr [[MINIMUMNUM_RES:%.*]], align 2
+; CHECK-NEXT: store half [[MINIMUMNUM_XY]], ptr [[MINIMUMNUM_RES:%.*]], align 2
; CHECK-NEXT: [[MAXIMUMNUM_XY:%.*]] = call half @llvm.maximumnum.f16(half [[X]], half [[Y]])
-; CHECK-NEXT: [[MAXIMUMNUM_YX:%.*]] = call half @llvm.maximumnum.f16(half [[Y]], half [[X]])
-; CHECK-NEXT: [[FINAL_MAXIMUMNUM:%.*]] = call half @llvm.maximumnum.f16(half [[MAXIMUMNUM_XY]], half [[MAXIMUMNUM_YX]])
-; CHECK-NEXT: store half [[FINAL_MAXIMUMNUM]], ptr [[MAXIMUMNUM_RES:%.*]], align 2
+; CHECK-NEXT: store half [[MAXIMUMNUM_XY]], ptr [[MAXIMUMNUM_RES:%.*]], align 2
; CHECK-NEXT: ret void
;
%minnum_xy = call half @llvm.minnum.f16(half %x, half %y)
@@ -812,13 +849,9 @@ define void @minmax_minmax_xy_maxmin_yx(double %x, double %y, ptr %minnum_res, p
; CHECK-NEXT: [[MAXIMUM_XY:%.*]] = call double @llvm.maximum.f64(double [[Y]], double [[X]])
; CHECK-NEXT: store double [[MAXIMUM_XY]], ptr [[MAXIMUM_RES:%.*]], align 8
; CHECK-NEXT: [[MINIMUMNUM_XY:%.*]] = call double @llvm.minimumnum.f64(double [[Y]], double [[X]])
-; CHECK-NEXT: [[MAXIMUMNUM_XY:%.*]] = call double @llvm.maximumnum.f64(double [[X]], double [[Y]])
-; CHECK-NEXT: [[FINAL_MINIMUMNUM:%.*]] = call double @llvm.minimumnum.f64(double [[MINIMUMNUM_XY]], double [[MAXIMUMNUM_XY]])
-; CHECK-NEXT: store double [[FINAL_MINIMUMNUM]], ptr [[MINIMUMNUM_RES:%.*]], align 8
-; CHECK-NEXT: [[MAXIMUMNUM_XY1:%.*]] = call double @llvm.maximumnum.f64(double [[Y]], double [[X]])
-; CHECK-NEXT: [[MINIMUMNUM_YX:%.*]] = call double @llvm.minimumnum.f64(double [[X]], double [[Y]])
-; CHECK-NEXT: [[FINAL_MAXIMUMNUM:%.*]] = call double @llvm.maximumnum.f64(double [[MAXIMUMNUM_XY1]], double [[MINIMUMNUM_YX]])
-; CHECK-NEXT: store double [[FINAL_MAXIMUMNUM]], ptr [[MAXIMUMNUM_RES:%.*]], align 8
+; CHECK-NEXT: store double [[MINIMUMNUM_XY]], ptr [[MINIMUMNUM_RES:%.*]], align 8
+; CHECK-NEXT: [[MAXIMUMNUM_XY:%.*]] = call double @llvm.maximumnum.f64(double [[Y]], double [[X]])
+; CHECK-NEXT: store double [[MAXIMUMNUM_XY]], ptr [[MAXIMUMNUM_RES:%.*]], align 8
; CHECK-NEXT: ret void
;
%minnum_xy = call double @llvm.minnum.f64(double %x, double %y)
diff --git a/llvm/test/Transforms/InstSimplify/ptrtoint.ll b/llvm/test/Transforms/InstSimplify/ptrtoint.ll
index 7346187..3b0e052 100644
--- a/llvm/test/Transforms/InstSimplify/ptrtoint.ll
+++ b/llvm/test/Transforms/InstSimplify/ptrtoint.ll
@@ -1,6 +1,8 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
; RUN: opt -S -passes=instsimplify < %s | FileCheck %s
+target datalayout = "p1:128:128:128"
+
define i64 @ptrtoint_gep_sub(ptr %ptr, i64 %end.addr) {
; CHECK-LABEL: define i64 @ptrtoint_gep_sub(
; CHECK-SAME: ptr [[PTR:%.*]], i64 [[END_ADDR:%.*]]) {
@@ -136,3 +138,15 @@ define i128 @ptrtoint_gep_sub_wide_type(ptr %ptr, i128 %end.addr) {
%end.addr2 = ptrtoint ptr %end to i128
ret i128 %end.addr2
}
+
+define ptr addrspace(1) @inttoptr_of_ptrtoint_wide(ptr addrspace(1) %ptr) {
+; CHECK-LABEL: define ptr addrspace(1) @inttoptr_of_ptrtoint_wide(
+; CHECK-SAME: ptr addrspace(1) [[PTR:%.*]]) {
+; CHECK-NEXT: [[INT:%.*]] = ptrtoint ptr addrspace(1) [[PTR]] to i64
+; CHECK-NEXT: [[PTR2:%.*]] = inttoptr i64 [[INT]] to ptr addrspace(1)
+; CHECK-NEXT: ret ptr addrspace(1) [[PTR2]]
+;
+ %int = ptrtoint ptr addrspace(1) %ptr to i64
+ %ptr2 = inttoptr i64 %int to ptr addrspace(1)
+ ret ptr addrspace(1) %ptr2
+}
diff --git a/llvm/test/Transforms/LoopUnroll/AArch64/apple-unrolling.ll b/llvm/test/Transforms/LoopUnroll/AArch64/apple-unrolling.ll
index 3b69527..2e4fc55 100644
--- a/llvm/test/Transforms/LoopUnroll/AArch64/apple-unrolling.ll
+++ b/llvm/test/Transforms/LoopUnroll/AArch64/apple-unrolling.ll
@@ -15,7 +15,7 @@ define void @small_load_store_loop(ptr %src, ptr %dst, i64 %N, i64 %scale) {
; APPLE-NEXT: [[TMP0:%.*]] = add i64 [[N]], -1
; APPLE-NEXT: [[XTRAITER:%.*]] = and i64 [[N]], 7
; APPLE-NEXT: [[TMP1:%.*]] = icmp ult i64 [[TMP0]], 7
-; APPLE-NEXT: br i1 [[TMP1]], label %[[EXIT_UNR_LCSSA:.*]], label %[[ENTRY_NEW:.*]]
+; APPLE-NEXT: br i1 [[TMP1]], label %[[LOOP_EPIL_PREHEADER:.*]], label %[[ENTRY_NEW:.*]]
; APPLE: [[ENTRY_NEW]]:
; APPLE-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[N]], [[XTRAITER]]
; APPLE-NEXT: br label %[[LOOP:.*]]
@@ -72,18 +72,18 @@ define void @small_load_store_loop(ptr %src, ptr %dst, i64 %N, i64 %scale) {
; APPLE-NEXT: [[IV_NEXT_7]] = add nuw nsw i64 [[IV_EPIL]], 8
; APPLE-NEXT: [[NITER_NEXT_7]] = add i64 [[NITER]], 8
; APPLE-NEXT: [[NITER_NCMP_7:%.*]] = icmp eq i64 [[NITER_NEXT_7]], [[UNROLL_ITER]]
-; APPLE-NEXT: br i1 [[NITER_NCMP_7]], label %[[EXIT_UNR_LCSSA_LOOPEXIT:.*]], label %[[LOOP]]
-; APPLE: [[EXIT_UNR_LCSSA_LOOPEXIT]]:
-; APPLE-NEXT: [[IV_UNR_PH:%.*]] = phi i64 [ [[IV_NEXT_7]], %[[LOOP]] ]
-; APPLE-NEXT: br label %[[EXIT_UNR_LCSSA]]
+; APPLE-NEXT: br i1 [[NITER_NCMP_7]], label %[[EXIT_UNR_LCSSA:.*]], label %[[LOOP]]
; APPLE: [[EXIT_UNR_LCSSA]]:
-; APPLE-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
+; APPLE-NEXT: [[IV_UNR:%.*]] = phi i64 [ [[IV_NEXT_7]], %[[LOOP]] ]
; APPLE-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; APPLE-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_EPIL_PREHEADER:.*]], label %[[EXIT:.*]]
+; APPLE-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_EPIL_PREHEADER]], label %[[EXIT:.*]]
; APPLE: [[LOOP_EPIL_PREHEADER]]:
+; APPLE-NEXT: [[IV_EPIL_INIT:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR]], %[[EXIT_UNR_LCSSA]] ]
+; APPLE-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; APPLE-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; APPLE-NEXT: br label %[[LOOP_EPIL:.*]]
; APPLE: [[LOOP_EPIL]]:
-; APPLE-NEXT: [[IV_EPIL1:%.*]] = phi i64 [ [[IV_UNR]], %[[LOOP_EPIL_PREHEADER]] ], [ [[IV_NEXT_EPIL1:%.*]], %[[LOOP_EPIL]] ]
+; APPLE-NEXT: [[IV_EPIL1:%.*]] = phi i64 [ [[IV_EPIL_INIT]], %[[LOOP_EPIL_PREHEADER]] ], [ [[IV_NEXT_EPIL1:%.*]], %[[LOOP_EPIL]] ]
; APPLE-NEXT: [[EPIL_ITER:%.*]] = phi i64 [ 0, %[[LOOP_EPIL_PREHEADER]] ], [ [[EPIL_ITER_NEXT:%.*]], %[[LOOP_EPIL]] ]
; APPLE-NEXT: [[SCALED_IV_EPIL1:%.*]] = mul nuw nsw i64 [[IV_EPIL1]], [[SCALE]]
; APPLE-NEXT: [[GEP_SRC_EPIL1:%.*]] = getelementptr inbounds float, ptr [[SRC]], i64 [[SCALED_IV_EPIL1]]
@@ -106,7 +106,7 @@ define void @small_load_store_loop(ptr %src, ptr %dst, i64 %N, i64 %scale) {
; OTHER-NEXT: [[TMP0:%.*]] = add i64 [[N]], -1
; OTHER-NEXT: [[XTRAITER:%.*]] = and i64 [[N]], 1
; OTHER-NEXT: [[TMP1:%.*]] = icmp ult i64 [[TMP0]], 1
-; OTHER-NEXT: br i1 [[TMP1]], label %[[EXIT_UNR_LCSSA:.*]], label %[[ENTRY_NEW:.*]]
+; OTHER-NEXT: br i1 [[TMP1]], label %[[LOOP_EPIL_PREHEADER:.*]], label %[[ENTRY_NEW:.*]]
; OTHER: [[ENTRY_NEW]]:
; OTHER-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[N]], [[XTRAITER]]
; OTHER-NEXT: br label %[[LOOP:.*]]
@@ -127,15 +127,15 @@ define void @small_load_store_loop(ptr %src, ptr %dst, i64 %N, i64 %scale) {
; OTHER-NEXT: [[IV_NEXT_1]] = add nuw nsw i64 [[IV]], 2
; OTHER-NEXT: [[NITER_NEXT_1]] = add i64 [[NITER]], 2
; OTHER-NEXT: [[NITER_NCMP_1:%.*]] = icmp eq i64 [[NITER_NEXT_1]], [[UNROLL_ITER]]
-; OTHER-NEXT: br i1 [[NITER_NCMP_1]], label %[[EXIT_UNR_LCSSA_LOOPEXIT:.*]], label %[[LOOP]]
-; OTHER: [[EXIT_UNR_LCSSA_LOOPEXIT]]:
-; OTHER-NEXT: [[IV_UNR_PH:%.*]] = phi i64 [ [[IV_NEXT_1]], %[[LOOP]] ]
-; OTHER-NEXT: br label %[[EXIT_UNR_LCSSA]]
+; OTHER-NEXT: br i1 [[NITER_NCMP_1]], label %[[EXIT_UNR_LCSSA:.*]], label %[[LOOP]]
; OTHER: [[EXIT_UNR_LCSSA]]:
-; OTHER-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
+; OTHER-NEXT: [[IV_UNR1:%.*]] = phi i64 [ [[IV_NEXT_1]], %[[LOOP]] ]
; OTHER-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; OTHER-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_EPIL_PREHEADER:.*]], label %[[EXIT:.*]]
+; OTHER-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_EPIL_PREHEADER]], label %[[EXIT:.*]]
; OTHER: [[LOOP_EPIL_PREHEADER]]:
+; OTHER-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR1]], %[[EXIT_UNR_LCSSA]] ]
+; OTHER-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; OTHER-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; OTHER-NEXT: br label %[[LOOP_EPIL:.*]]
; OTHER: [[LOOP_EPIL]]:
; OTHER-NEXT: [[SCALED_IV_EPIL:%.*]] = mul nuw nsw i64 [[IV_UNR]], [[SCALE]]
@@ -172,7 +172,7 @@ define void @load_op_store_loop(ptr %src, ptr %dst, i64 %N, i64 %scale, float %k
; APPLE-NEXT: [[TMP0:%.*]] = add i64 [[N]], -1
; APPLE-NEXT: [[XTRAITER:%.*]] = and i64 [[N]], 1
; APPLE-NEXT: [[TMP1:%.*]] = icmp ult i64 [[TMP0]], 1
-; APPLE-NEXT: br i1 [[TMP1]], label %[[EXIT_UNR_LCSSA:.*]], label %[[ENTRY_NEW:.*]]
+; APPLE-NEXT: br i1 [[TMP1]], label %[[LOOP_EPIL_PREHEADER:.*]], label %[[ENTRY_NEW:.*]]
; APPLE: [[ENTRY_NEW]]:
; APPLE-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[N]], [[XTRAITER]]
; APPLE-NEXT: br label %[[LOOP:.*]]
@@ -195,15 +195,15 @@ define void @load_op_store_loop(ptr %src, ptr %dst, i64 %N, i64 %scale, float %k
; APPLE-NEXT: [[IV_NEXT_1]] = add nuw nsw i64 [[IV]], 2
; APPLE-NEXT: [[NITER_NEXT_1]] = add i64 [[NITER]], 2
; APPLE-NEXT: [[NITER_NCMP_1:%.*]] = icmp eq i64 [[NITER_NEXT_1]], [[UNROLL_ITER]]
-; APPLE-NEXT: br i1 [[NITER_NCMP_1]], label %[[EXIT_UNR_LCSSA_LOOPEXIT:.*]], label %[[LOOP]]
-; APPLE: [[EXIT_UNR_LCSSA_LOOPEXIT]]:
-; APPLE-NEXT: [[IV_UNR_PH:%.*]] = phi i64 [ [[IV_NEXT_1]], %[[LOOP]] ]
-; APPLE-NEXT: br label %[[EXIT_UNR_LCSSA]]
+; APPLE-NEXT: br i1 [[NITER_NCMP_1]], label %[[EXIT_UNR_LCSSA:.*]], label %[[LOOP]]
; APPLE: [[EXIT_UNR_LCSSA]]:
-; APPLE-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
+; APPLE-NEXT: [[IV_UNR1:%.*]] = phi i64 [ [[IV_NEXT_1]], %[[LOOP]] ]
; APPLE-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; APPLE-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_EPIL_PREHEADER:.*]], label %[[EXIT:.*]]
+; APPLE-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_EPIL_PREHEADER]], label %[[EXIT:.*]]
; APPLE: [[LOOP_EPIL_PREHEADER]]:
+; APPLE-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR1]], %[[EXIT_UNR_LCSSA]] ]
+; APPLE-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; APPLE-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; APPLE-NEXT: br label %[[LOOP_EPIL:.*]]
; APPLE: [[LOOP_EPIL]]:
; APPLE-NEXT: [[SCALED_IV_EPIL:%.*]] = mul nuw nsw i64 [[IV_UNR]], [[SCALE]]
@@ -222,7 +222,7 @@ define void @load_op_store_loop(ptr %src, ptr %dst, i64 %N, i64 %scale, float %k
; OTHER-NEXT: [[TMP0:%.*]] = add i64 [[N]], -1
; OTHER-NEXT: [[XTRAITER:%.*]] = and i64 [[N]], 1
; OTHER-NEXT: [[TMP1:%.*]] = icmp ult i64 [[TMP0]], 1
-; OTHER-NEXT: br i1 [[TMP1]], label %[[EXIT_UNR_LCSSA:.*]], label %[[ENTRY_NEW:.*]]
+; OTHER-NEXT: br i1 [[TMP1]], label %[[LOOP_EPIL_PREHEADER:.*]], label %[[ENTRY_NEW:.*]]
; OTHER: [[ENTRY_NEW]]:
; OTHER-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[N]], [[XTRAITER]]
; OTHER-NEXT: br label %[[LOOP:.*]]
@@ -245,15 +245,15 @@ define void @load_op_store_loop(ptr %src, ptr %dst, i64 %N, i64 %scale, float %k
; OTHER-NEXT: [[IV_NEXT_1]] = add nuw nsw i64 [[IV]], 2
; OTHER-NEXT: [[NITER_NEXT_1]] = add i64 [[NITER]], 2
; OTHER-NEXT: [[NITER_NCMP_1:%.*]] = icmp eq i64 [[NITER_NEXT_1]], [[UNROLL_ITER]]
-; OTHER-NEXT: br i1 [[NITER_NCMP_1]], label %[[EXIT_UNR_LCSSA_LOOPEXIT:.*]], label %[[LOOP]]
-; OTHER: [[EXIT_UNR_LCSSA_LOOPEXIT]]:
-; OTHER-NEXT: [[IV_UNR_PH:%.*]] = phi i64 [ [[IV_NEXT_1]], %[[LOOP]] ]
-; OTHER-NEXT: br label %[[EXIT_UNR_LCSSA]]
+; OTHER-NEXT: br i1 [[NITER_NCMP_1]], label %[[EXIT_UNR_LCSSA:.*]], label %[[LOOP]]
; OTHER: [[EXIT_UNR_LCSSA]]:
-; OTHER-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
+; OTHER-NEXT: [[IV_UNR1:%.*]] = phi i64 [ [[IV_NEXT_1]], %[[LOOP]] ]
; OTHER-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; OTHER-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_EPIL_PREHEADER:.*]], label %[[EXIT:.*]]
+; OTHER-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_EPIL_PREHEADER]], label %[[EXIT:.*]]
; OTHER: [[LOOP_EPIL_PREHEADER]]:
+; OTHER-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR1]], %[[EXIT_UNR_LCSSA]] ]
+; OTHER-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; OTHER-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; OTHER-NEXT: br label %[[LOOP_EPIL:.*]]
; OTHER: [[LOOP_EPIL]]:
; OTHER-NEXT: [[SCALED_IV_EPIL:%.*]] = mul nuw nsw i64 [[IV_UNR]], [[SCALE]]
@@ -375,7 +375,7 @@ define void @early_continue_dep_on_load_large(ptr %p.1, ptr %p.2, i64 %N, i32 %x
; APPLE-NEXT: [[TMP1:%.*]] = add i64 [[N]], -2
; APPLE-NEXT: [[XTRAITER:%.*]] = and i64 [[TMP0]], 3
; APPLE-NEXT: [[TMP2:%.*]] = icmp ult i64 [[TMP1]], 3
-; APPLE-NEXT: br i1 [[TMP2]], label %[[EXIT_UNR_LCSSA:.*]], label %[[ENTRY_NEW:.*]]
+; APPLE-NEXT: br i1 [[TMP2]], label %[[LOOP_HEADER_EPIL_PREHEADER:.*]], label %[[ENTRY_NEW:.*]]
; APPLE: [[ENTRY_NEW]]:
; APPLE-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[TMP0]], [[XTRAITER]]
; APPLE-NEXT: br label %[[LOOP_HEADER:.*]]
@@ -439,7 +439,7 @@ define void @early_continue_dep_on_load_large(ptr %p.1, ptr %p.2, i64 %N, i32 %x
; APPLE-NEXT: [[GEP_4_1:%.*]] = getelementptr inbounds nuw i8, ptr [[GEP_1]], i64 4
; APPLE-NEXT: [[L_2_1:%.*]] = load i8, ptr [[GEP_4_1]], align 4
; APPLE-NEXT: [[C_2_1:%.*]] = icmp ugt i8 [[L_2_1]], 7
-; APPLE-NEXT: br i1 [[C_2_1]], label %[[MERGE_11:.*]], label %[[ELSE_1:.*]]
+; APPLE-NEXT: br i1 [[C_2_1]], label %[[MERGE_12:.*]], label %[[ELSE_1:.*]]
; APPLE: [[ELSE_1]]:
; APPLE-NEXT: [[CONV_I_1:%.*]] = zext nneg i8 [[L_2_1]] to i64
; APPLE-NEXT: [[GEP_A_1:%.*]] = getelementptr inbounds [9 x i8], ptr @A, i64 0, i64 [[CONV_I_1]]
@@ -449,8 +449,8 @@ define void @early_continue_dep_on_load_large(ptr %p.1, ptr %p.2, i64 %N, i32 %x
; APPLE-NEXT: [[L_4_1:%.*]] = load i32, ptr [[GEP_B_1]], align 4
; APPLE-NEXT: [[GEP_C_1:%.*]] = getelementptr inbounds [8 x i32], ptr @C, i64 0, i64 [[IDXPROM_I_1]]
; APPLE-NEXT: [[L_5_1:%.*]] = load i32, ptr [[GEP_C_1]], align 4
-; APPLE-NEXT: br label %[[MERGE_11]]
-; APPLE: [[MERGE_11]]:
+; APPLE-NEXT: br label %[[MERGE_12]]
+; APPLE: [[MERGE_12]]:
; APPLE-NEXT: [[MERGE_1_1:%.*]] = phi i32 [ 0, %[[THEN_1]] ], [ [[L_4_1]], %[[ELSE_1]] ]
; APPLE-NEXT: [[MERGE_2_1:%.*]] = phi i32 [ 0, %[[THEN_1]] ], [ [[L_5_1]], %[[ELSE_1]] ]
; APPLE-NEXT: [[ADD14_1:%.*]] = add nsw i32 [[MERGE_2_1]], [[X]]
@@ -488,7 +488,7 @@ define void @early_continue_dep_on_load_large(ptr %p.1, ptr %p.2, i64 %N, i32 %x
; APPLE-NEXT: [[GEP_4_2:%.*]] = getelementptr inbounds nuw i8, ptr [[GEP_2]], i64 4
; APPLE-NEXT: [[L_2_2:%.*]] = load i8, ptr [[GEP_4_2]], align 4
; APPLE-NEXT: [[C_2_2:%.*]] = icmp ugt i8 [[L_2_2]], 7
-; APPLE-NEXT: br i1 [[C_2_2]], label %[[MERGE_22:.*]], label %[[ELSE_2:.*]]
+; APPLE-NEXT: br i1 [[C_2_2]], label %[[MERGE_23:.*]], label %[[ELSE_2:.*]]
; APPLE: [[ELSE_2]]:
; APPLE-NEXT: [[CONV_I_2:%.*]] = zext nneg i8 [[L_2_2]] to i64
; APPLE-NEXT: [[GEP_A_2:%.*]] = getelementptr inbounds [9 x i8], ptr @A, i64 0, i64 [[CONV_I_2]]
@@ -498,8 +498,8 @@ define void @early_continue_dep_on_load_large(ptr %p.1, ptr %p.2, i64 %N, i32 %x
; APPLE-NEXT: [[L_4_2:%.*]] = load i32, ptr [[GEP_B_2]], align 4
; APPLE-NEXT: [[GEP_C_2:%.*]] = getelementptr inbounds [8 x i32], ptr @C, i64 0, i64 [[IDXPROM_I_2]]
; APPLE-NEXT: [[L_5_2:%.*]] = load i32, ptr [[GEP_C_2]], align 4
-; APPLE-NEXT: br label %[[MERGE_22]]
-; APPLE: [[MERGE_22]]:
+; APPLE-NEXT: br label %[[MERGE_23]]
+; APPLE: [[MERGE_23]]:
; APPLE-NEXT: [[MERGE_1_2:%.*]] = phi i32 [ 0, %[[THEN_2]] ], [ [[L_4_2]], %[[ELSE_2]] ]
; APPLE-NEXT: [[MERGE_2_2:%.*]] = phi i32 [ 0, %[[THEN_2]] ], [ [[L_5_2]], %[[ELSE_2]] ]
; APPLE-NEXT: [[ADD14_2:%.*]] = add nsw i32 [[MERGE_2_2]], [[X]]
@@ -580,18 +580,18 @@ define void @early_continue_dep_on_load_large(ptr %p.1, ptr %p.2, i64 %N, i32 %x
; APPLE-NEXT: [[IV_NEXT_3]] = add nuw nsw i64 [[IV_EPIL]], 4
; APPLE-NEXT: [[NITER_NEXT_3]] = add i64 [[NITER]], 4
; APPLE-NEXT: [[NITER_NCMP_3:%.*]] = icmp eq i64 [[NITER_NEXT_3]], [[UNROLL_ITER]]
-; APPLE-NEXT: br i1 [[NITER_NCMP_3]], label %[[EXIT_UNR_LCSSA_LOOPEXIT:.*]], label %[[LOOP_HEADER]]
-; APPLE: [[EXIT_UNR_LCSSA_LOOPEXIT]]:
-; APPLE-NEXT: [[IV_UNR_PH:%.*]] = phi i64 [ [[IV_NEXT_3]], %[[LOOP_LATCH_3]] ]
-; APPLE-NEXT: br label %[[EXIT_UNR_LCSSA]]
+; APPLE-NEXT: br i1 [[NITER_NCMP_3]], label %[[EXIT_UNR_LCSSA:.*]], label %[[LOOP_HEADER]]
; APPLE: [[EXIT_UNR_LCSSA]]:
-; APPLE-NEXT: [[IV_UNR:%.*]] = phi i64 [ 1, %[[ENTRY]] ], [ [[IV_UNR_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
+; APPLE-NEXT: [[IV_UNR:%.*]] = phi i64 [ [[IV_NEXT_3]], %[[LOOP_LATCH_3]] ]
; APPLE-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; APPLE-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_HEADER_EPIL_PREHEADER:.*]], label %[[EXIT:.*]]
+; APPLE-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_HEADER_EPIL_PREHEADER]], label %[[EXIT:.*]]
; APPLE: [[LOOP_HEADER_EPIL_PREHEADER]]:
+; APPLE-NEXT: [[IV_EPIL_INIT:%.*]] = phi i64 [ 1, %[[ENTRY]] ], [ [[IV_UNR]], %[[EXIT_UNR_LCSSA]] ]
+; APPLE-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; APPLE-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; APPLE-NEXT: br label %[[LOOP_HEADER_EPIL:.*]]
; APPLE: [[LOOP_HEADER_EPIL]]:
-; APPLE-NEXT: [[IV_EPIL1:%.*]] = phi i64 [ [[IV_UNR]], %[[LOOP_HEADER_EPIL_PREHEADER]] ], [ [[IV_NEXT_EPIL1:%.*]], %[[LOOP_LATCH_EPIL:.*]] ]
+; APPLE-NEXT: [[IV_EPIL1:%.*]] = phi i64 [ [[IV_EPIL_INIT]], %[[LOOP_HEADER_EPIL_PREHEADER]] ], [ [[IV_NEXT_EPIL1:%.*]], %[[LOOP_LATCH_EPIL:.*]] ]
; APPLE-NEXT: [[EPIL_ITER:%.*]] = phi i64 [ 0, %[[LOOP_HEADER_EPIL_PREHEADER]] ], [ [[EPIL_ITER_NEXT:%.*]], %[[LOOP_LATCH_EPIL]] ]
; APPLE-NEXT: [[GEP_EPIL1:%.*]] = getelementptr { i32, i8, i8, [2 x i8] }, ptr [[P_1]], i64 [[IV_EPIL1]]
; APPLE-NEXT: [[L_1_EPIL1:%.*]] = load i32, ptr [[GEP_EPIL1]], align 4
@@ -1034,7 +1034,7 @@ define i32 @test_add_reduction_runtime(ptr %a, i64 noundef %n) {
; APPLE-NEXT: [[TMP0:%.*]] = add i64 [[N]], -1
; APPLE-NEXT: [[XTRAITER:%.*]] = and i64 [[N]], 3
; APPLE-NEXT: [[TMP1:%.*]] = icmp ult i64 [[TMP0]], 3
-; APPLE-NEXT: br i1 [[TMP1]], label %[[EXIT_UNR_LCSSA:.*]], label %[[ENTRY_NEW:.*]]
+; APPLE-NEXT: br i1 [[TMP1]], label %[[LOOP_EPIL_PREHEADER:.*]], label %[[ENTRY_NEW:.*]]
; APPLE: [[ENTRY_NEW]]:
; APPLE-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[N]], [[XTRAITER]]
; APPLE-NEXT: br label %[[LOOP:.*]]
@@ -1063,26 +1063,25 @@ define i32 @test_add_reduction_runtime(ptr %a, i64 noundef %n) {
; APPLE-NEXT: [[IV_NEXT_3]] = add nuw nsw i64 [[IV_EPIL]], 4
; APPLE-NEXT: [[NITER_NEXT_3]] = add nuw i64 [[NITER]], 4
; APPLE-NEXT: [[NITER_NCMP_3:%.*]] = icmp eq i64 [[NITER_NEXT_3]], [[UNROLL_ITER]]
-; APPLE-NEXT: br i1 [[NITER_NCMP_3]], label %[[EXIT_UNR_LCSSA_LOOPEXIT:.*]], label %[[LOOP]]
-; APPLE: [[EXIT_UNR_LCSSA_LOOPEXIT]]:
-; APPLE-NEXT: [[RES_PH_PH:%.*]] = phi i32 [ [[RDX_NEXT_3]], %[[LOOP]] ]
-; APPLE-NEXT: [[IV_UNR_PH:%.*]] = phi i64 [ [[IV_NEXT_3]], %[[LOOP]] ]
-; APPLE-NEXT: [[RDX_UNR_PH:%.*]] = phi i32 [ [[RDX_NEXT_3]], %[[LOOP]] ]
+; APPLE-NEXT: br i1 [[NITER_NCMP_3]], label %[[EXIT_UNR_LCSSA:.*]], label %[[LOOP]]
+; APPLE: [[EXIT_UNR_LCSSA]]:
+; APPLE-NEXT: [[RES_PH:%.*]] = phi i32 [ [[RDX_NEXT_3]], %[[LOOP]] ]
+; APPLE-NEXT: [[IV_UNR:%.*]] = phi i64 [ [[IV_NEXT_3]], %[[LOOP]] ]
+; APPLE-NEXT: [[RDX_UNR:%.*]] = phi i32 [ [[RDX_NEXT_3]], %[[LOOP]] ]
; APPLE-NEXT: [[BIN_RDX:%.*]] = add i32 [[RDX_NEXT_1]], [[RDX_NEXT]]
; APPLE-NEXT: [[BIN_RDX2:%.*]] = add i32 [[RDX_NEXT_2]], [[BIN_RDX]]
; APPLE-NEXT: [[BIN_RDX3:%.*]] = add i32 [[RDX_NEXT_3]], [[BIN_RDX2]]
-; APPLE-NEXT: br label %[[EXIT_UNR_LCSSA]]
-; APPLE: [[EXIT_UNR_LCSSA]]:
-; APPLE-NEXT: [[RES_PH:%.*]] = phi i32 [ poison, %[[ENTRY]] ], [ [[BIN_RDX3]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
-; APPLE-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
-; APPLE-NEXT: [[RDX_UNR:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[BIN_RDX3]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
; APPLE-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; APPLE-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_EPIL_PREHEADER:.*]], label %[[EXIT:.*]]
+; APPLE-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_EPIL_PREHEADER]], label %[[EXIT:.*]]
; APPLE: [[LOOP_EPIL_PREHEADER]]:
+; APPLE-NEXT: [[IV_EPIL_INIT:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR]], %[[EXIT_UNR_LCSSA]] ]
+; APPLE-NEXT: [[RDX_EPIL_INIT:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[BIN_RDX3]], %[[EXIT_UNR_LCSSA]] ]
+; APPLE-NEXT: [[LCMP_MOD2:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; APPLE-NEXT: call void @llvm.assume(i1 [[LCMP_MOD2]])
; APPLE-NEXT: br label %[[LOOP_EPIL:.*]]
; APPLE: [[LOOP_EPIL]]:
-; APPLE-NEXT: [[IV_EPIL1:%.*]] = phi i64 [ [[IV_UNR]], %[[LOOP_EPIL_PREHEADER]] ], [ [[IV_NEXT_EPIL:%.*]], %[[LOOP_EPIL]] ]
-; APPLE-NEXT: [[RDX_EPIL:%.*]] = phi i32 [ [[RDX_UNR]], %[[LOOP_EPIL_PREHEADER]] ], [ [[RDX_NEXT_EPIL:%.*]], %[[LOOP_EPIL]] ]
+; APPLE-NEXT: [[IV_EPIL1:%.*]] = phi i64 [ [[IV_EPIL_INIT]], %[[LOOP_EPIL_PREHEADER]] ], [ [[IV_NEXT_EPIL:%.*]], %[[LOOP_EPIL]] ]
+; APPLE-NEXT: [[RDX_EPIL:%.*]] = phi i32 [ [[RDX_EPIL_INIT]], %[[LOOP_EPIL_PREHEADER]] ], [ [[RDX_NEXT_EPIL:%.*]], %[[LOOP_EPIL]] ]
; APPLE-NEXT: [[EPIL_ITER:%.*]] = phi i64 [ 0, %[[LOOP_EPIL_PREHEADER]] ], [ [[EPIL_ITER_NEXT:%.*]], %[[LOOP_EPIL]] ]
; APPLE-NEXT: [[GEP_A_EPIL1:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[IV_EPIL1]]
; APPLE-NEXT: [[TMP7:%.*]] = load i32, ptr [[GEP_A_EPIL1]], align 2
@@ -1096,7 +1095,7 @@ define i32 @test_add_reduction_runtime(ptr %a, i64 noundef %n) {
; APPLE-NEXT: [[RES_PH1:%.*]] = phi i32 [ [[RDX_NEXT_EPIL]], %[[LOOP_EPIL]] ]
; APPLE-NEXT: br label %[[EXIT]]
; APPLE: [[EXIT]]:
-; APPLE-NEXT: [[RES:%.*]] = phi i32 [ [[RES_PH]], %[[EXIT_UNR_LCSSA]] ], [ [[RES_PH1]], %[[EXIT_EPILOG_LCSSA]] ]
+; APPLE-NEXT: [[RES:%.*]] = phi i32 [ [[BIN_RDX3]], %[[EXIT_UNR_LCSSA]] ], [ [[RES_PH1]], %[[EXIT_EPILOG_LCSSA]] ]
; APPLE-NEXT: ret i32 [[RES]]
;
; OTHER-LABEL: define i32 @test_add_reduction_runtime(
@@ -1105,7 +1104,7 @@ define i32 @test_add_reduction_runtime(ptr %a, i64 noundef %n) {
; OTHER-NEXT: [[TMP0:%.*]] = add i64 [[N]], -1
; OTHER-NEXT: [[XTRAITER:%.*]] = and i64 [[N]], 3
; OTHER-NEXT: [[TMP1:%.*]] = icmp ult i64 [[TMP0]], 3
-; OTHER-NEXT: br i1 [[TMP1]], label %[[EXIT_UNR_LCSSA:.*]], label %[[ENTRY_NEW:.*]]
+; OTHER-NEXT: br i1 [[TMP1]], label %[[LOOP_EPIL_PREHEADER:.*]], label %[[ENTRY_NEW:.*]]
; OTHER: [[ENTRY_NEW]]:
; OTHER-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[N]], [[XTRAITER]]
; OTHER-NEXT: br label %[[LOOP:.*]]
@@ -1131,23 +1130,22 @@ define i32 @test_add_reduction_runtime(ptr %a, i64 noundef %n) {
; OTHER-NEXT: [[IV_NEXT_3]] = add nuw nsw i64 [[IV]], 4
; OTHER-NEXT: [[NITER_NEXT_3]] = add i64 [[NITER]], 4
; OTHER-NEXT: [[NITER_NCMP_3:%.*]] = icmp eq i64 [[NITER_NEXT_3]], [[UNROLL_ITER]]
-; OTHER-NEXT: br i1 [[NITER_NCMP_3]], label %[[EXIT_UNR_LCSSA_LOOPEXIT:.*]], label %[[LOOP]]
-; OTHER: [[EXIT_UNR_LCSSA_LOOPEXIT]]:
-; OTHER-NEXT: [[RES_PH_PH:%.*]] = phi i32 [ [[RDX_NEXT_3]], %[[LOOP]] ]
-; OTHER-NEXT: [[IV_UNR_PH:%.*]] = phi i64 [ [[IV_NEXT_3]], %[[LOOP]] ]
-; OTHER-NEXT: [[RDX_UNR_PH:%.*]] = phi i32 [ [[RDX_NEXT_3]], %[[LOOP]] ]
-; OTHER-NEXT: br label %[[EXIT_UNR_LCSSA]]
+; OTHER-NEXT: br i1 [[NITER_NCMP_3]], label %[[EXIT_UNR_LCSSA:.*]], label %[[LOOP]]
; OTHER: [[EXIT_UNR_LCSSA]]:
-; OTHER-NEXT: [[RES_PH:%.*]] = phi i32 [ poison, %[[ENTRY]] ], [ [[RES_PH_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
-; OTHER-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
-; OTHER-NEXT: [[RDX_UNR:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[RDX_UNR_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
+; OTHER-NEXT: [[RES_PH:%.*]] = phi i32 [ [[RDX_NEXT_3]], %[[LOOP]] ]
+; OTHER-NEXT: [[IV_UNR:%.*]] = phi i64 [ [[IV_NEXT_3]], %[[LOOP]] ]
+; OTHER-NEXT: [[RDX_UNR:%.*]] = phi i32 [ [[RDX_NEXT_3]], %[[LOOP]] ]
; OTHER-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; OTHER-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_EPIL_PREHEADER:.*]], label %[[EXIT:.*]]
+; OTHER-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_EPIL_PREHEADER]], label %[[EXIT:.*]]
; OTHER: [[LOOP_EPIL_PREHEADER]]:
+; OTHER-NEXT: [[IV_EPIL_INIT:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR]], %[[EXIT_UNR_LCSSA]] ]
+; OTHER-NEXT: [[RDX_EPIL_INIT:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[RDX_UNR]], %[[EXIT_UNR_LCSSA]] ]
+; OTHER-NEXT: [[LCMP_MOD2:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; OTHER-NEXT: call void @llvm.assume(i1 [[LCMP_MOD2]])
; OTHER-NEXT: br label %[[LOOP_EPIL:.*]]
; OTHER: [[LOOP_EPIL]]:
-; OTHER-NEXT: [[IV_EPIL:%.*]] = phi i64 [ [[IV_UNR]], %[[LOOP_EPIL_PREHEADER]] ], [ [[IV_NEXT_EPIL:%.*]], %[[LOOP_EPIL]] ]
-; OTHER-NEXT: [[RDX_EPIL:%.*]] = phi i32 [ [[RDX_UNR]], %[[LOOP_EPIL_PREHEADER]] ], [ [[RDX_NEXT_EPIL:%.*]], %[[LOOP_EPIL]] ]
+; OTHER-NEXT: [[IV_EPIL:%.*]] = phi i64 [ [[IV_EPIL_INIT]], %[[LOOP_EPIL_PREHEADER]] ], [ [[IV_NEXT_EPIL:%.*]], %[[LOOP_EPIL]] ]
+; OTHER-NEXT: [[RDX_EPIL:%.*]] = phi i32 [ [[RDX_EPIL_INIT]], %[[LOOP_EPIL_PREHEADER]] ], [ [[RDX_NEXT_EPIL:%.*]], %[[LOOP_EPIL]] ]
; OTHER-NEXT: [[EPIL_ITER:%.*]] = phi i64 [ 0, %[[LOOP_EPIL_PREHEADER]] ], [ [[EPIL_ITER_NEXT:%.*]], %[[LOOP_EPIL]] ]
; OTHER-NEXT: [[GEP_A_EPIL:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[IV_EPIL]]
; OTHER-NEXT: [[TMP6:%.*]] = load i32, ptr [[GEP_A_EPIL]], align 2
diff --git a/llvm/test/Transforms/LoopUnroll/AArch64/runtime-unroll-generic.ll b/llvm/test/Transforms/LoopUnroll/AArch64/runtime-unroll-generic.ll
index b8215d9..66c55f2 100644
--- a/llvm/test/Transforms/LoopUnroll/AArch64/runtime-unroll-generic.ll
+++ b/llvm/test/Transforms/LoopUnroll/AArch64/runtime-unroll-generic.ll
@@ -69,12 +69,14 @@ define void @runtime_unroll_generic(i32 %arg_0, ptr %arg_1, ptr %arg_2, ptr %arg
; CHECK-A55-NEXT: [[INDVARS_IV_NEXT_3]] = add nuw nsw i64 [[INDVARS_IV]], 4
; CHECK-A55-NEXT: [[NITER_NEXT_3]] = add i64 [[NITER]], 4
; CHECK-A55-NEXT: [[NITER_NCMP_3:%.*]] = icmp eq i64 [[NITER_NEXT_3]], [[UNROLL_ITER]]
-; CHECK-A55-NEXT: br i1 [[NITER_NCMP_3]], label [[FOR_END_LOOPEXIT_UNR_LCSSA]], label [[FOR_BODY6]], !llvm.loop [[LOOP0:![0-9]+]]
+; CHECK-A55-NEXT: br i1 [[NITER_NCMP_3]], label [[FOR_END_LOOPEXIT_UNR_LCSSA1:%.*]], label [[FOR_BODY6]], !llvm.loop [[LOOP0:![0-9]+]]
; CHECK-A55: for.end.loopexit.unr-lcssa:
-; CHECK-A55-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[FOR_BODY6_PREHEADER]] ], [ [[INDVARS_IV_NEXT_3]], [[FOR_BODY6]] ]
; CHECK-A55-NEXT: [[LCMP_MOD_NOT:%.*]] = icmp eq i64 [[XTRAITER]], 0
-; CHECK-A55-NEXT: br i1 [[LCMP_MOD_NOT]], label [[FOR_END]], label [[FOR_BODY6_EPIL:%.*]]
-; CHECK-A55: for.body6.epil:
+; CHECK-A55-NEXT: br i1 [[LCMP_MOD_NOT]], label [[FOR_END]], label [[FOR_END_LOOPEXIT_UNR_LCSSA]]
+; CHECK-A55: for.body6.epil.preheader:
+; CHECK-A55-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[FOR_BODY6_PREHEADER]] ], [ [[INDVARS_IV_NEXT_3]], [[FOR_END_LOOPEXIT_UNR_LCSSA1]] ]
+; CHECK-A55-NEXT: [[LCMP_MOD5:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; CHECK-A55-NEXT: tail call void @llvm.assume(i1 [[LCMP_MOD5]])
; CHECK-A55-NEXT: [[ARRAYIDX10_EPIL:%.*]] = getelementptr inbounds nuw i16, ptr [[ARG_2]], i64 [[INDVARS_IV_UNR]]
; CHECK-A55-NEXT: [[TMP13:%.*]] = load i16, ptr [[ARRAYIDX10_EPIL]], align 2
; CHECK-A55-NEXT: [[CONV_EPIL:%.*]] = sext i16 [[TMP13]] to i32
diff --git a/llvm/test/Transforms/LoopUnroll/AArch64/vector.ll b/llvm/test/Transforms/LoopUnroll/AArch64/vector.ll
index 38d559f..2bafa08 100644
--- a/llvm/test/Transforms/LoopUnroll/AArch64/vector.ll
+++ b/llvm/test/Transforms/LoopUnroll/AArch64/vector.ll
@@ -9,7 +9,7 @@ define void @reverse(ptr %dst, ptr %src, i64 %len) {
; APPLE-NEXT: [[TMP0:%.*]] = add i64 [[LEN]], -1
; APPLE-NEXT: [[XTRAITER:%.*]] = and i64 [[LEN]], 7
; APPLE-NEXT: [[TMP1:%.*]] = icmp ult i64 [[TMP0]], 7
-; APPLE-NEXT: br i1 [[TMP1]], label %[[EXIT_UNR_LCSSA:.*]], label %[[ENTRY_NEW:.*]]
+; APPLE-NEXT: br i1 [[TMP1]], label %[[FOR_BODY_EPIL_PREHEADER:.*]], label %[[ENTRY_NEW:.*]]
; APPLE: [[ENTRY_NEW]]:
; APPLE-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[LEN]], [[XTRAITER]]
; APPLE-NEXT: br label %[[FOR_BODY:.*]]
@@ -66,18 +66,18 @@ define void @reverse(ptr %dst, ptr %src, i64 %len) {
; APPLE-NEXT: [[IV_NEXT_7]] = add nuw nsw i64 [[IV]], 8
; APPLE-NEXT: [[NITER_NEXT_7]] = add i64 [[NITER]], 8
; APPLE-NEXT: [[NITER_NCMP_7:%.*]] = icmp eq i64 [[NITER_NEXT_7]], [[UNROLL_ITER]]
-; APPLE-NEXT: br i1 [[NITER_NCMP_7]], label %[[EXIT_UNR_LCSSA_LOOPEXIT:.*]], label %[[FOR_BODY]]
-; APPLE: [[EXIT_UNR_LCSSA_LOOPEXIT]]:
-; APPLE-NEXT: [[IV_UNR_PH:%.*]] = phi i64 [ [[IV_NEXT_7]], %[[FOR_BODY]] ]
-; APPLE-NEXT: br label %[[EXIT_UNR_LCSSA]]
+; APPLE-NEXT: br i1 [[NITER_NCMP_7]], label %[[EXIT_UNR_LCSSA:.*]], label %[[FOR_BODY]]
; APPLE: [[EXIT_UNR_LCSSA]]:
-; APPLE-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
+; APPLE-NEXT: [[IV_UNR:%.*]] = phi i64 [ [[IV_NEXT_7]], %[[FOR_BODY]] ]
; APPLE-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; APPLE-NEXT: br i1 [[LCMP_MOD]], label %[[FOR_BODY_EPIL_PREHEADER:.*]], label %[[EXIT:.*]]
+; APPLE-NEXT: br i1 [[LCMP_MOD]], label %[[FOR_BODY_EPIL_PREHEADER]], label %[[EXIT:.*]]
; APPLE: [[FOR_BODY_EPIL_PREHEADER]]:
+; APPLE-NEXT: [[IV_EPIL_INIT:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR]], %[[EXIT_UNR_LCSSA]] ]
+; APPLE-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; APPLE-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; APPLE-NEXT: br label %[[FOR_BODY_EPIL:.*]]
; APPLE: [[FOR_BODY_EPIL]]:
-; APPLE-NEXT: [[IV_EPIL:%.*]] = phi i64 [ [[IV_UNR]], %[[FOR_BODY_EPIL_PREHEADER]] ], [ [[IV_NEXT_EPIL:%.*]], %[[FOR_BODY_EPIL]] ]
+; APPLE-NEXT: [[IV_EPIL:%.*]] = phi i64 [ [[IV_EPIL_INIT]], %[[FOR_BODY_EPIL_PREHEADER]] ], [ [[IV_NEXT_EPIL:%.*]], %[[FOR_BODY_EPIL]] ]
; APPLE-NEXT: [[EPIL_ITER:%.*]] = phi i64 [ 0, %[[FOR_BODY_EPIL_PREHEADER]] ], [ [[EPIL_ITER_NEXT:%.*]], %[[FOR_BODY_EPIL]] ]
; APPLE-NEXT: [[TMP18:%.*]] = sub nsw i64 [[LEN]], [[IV_EPIL]]
; APPLE-NEXT: [[ARRAYIDX_EPIL:%.*]] = getelementptr inbounds <4 x float>, ptr [[SRC]], i64 [[TMP18]]
@@ -100,7 +100,7 @@ define void @reverse(ptr %dst, ptr %src, i64 %len) {
; CORTEXA55-NEXT: [[TMP0:%.*]] = add i64 [[LEN]], -1
; CORTEXA55-NEXT: [[XTRAITER:%.*]] = and i64 [[LEN]], 3
; CORTEXA55-NEXT: [[TMP1:%.*]] = icmp ult i64 [[TMP0]], 3
-; CORTEXA55-NEXT: br i1 [[TMP1]], label %[[EXIT_UNR_LCSSA:.*]], label %[[ENTRY_NEW:.*]]
+; CORTEXA55-NEXT: br i1 [[TMP1]], label %[[FOR_BODY_EPIL_PREHEADER:.*]], label %[[ENTRY_NEW:.*]]
; CORTEXA55: [[ENTRY_NEW]]:
; CORTEXA55-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[LEN]], [[XTRAITER]]
; CORTEXA55-NEXT: br label %[[FOR_BODY:.*]]
@@ -133,15 +133,15 @@ define void @reverse(ptr %dst, ptr %src, i64 %len) {
; CORTEXA55-NEXT: [[IV_NEXT_3]] = add nuw nsw i64 [[IV]], 4
; CORTEXA55-NEXT: [[NITER_NEXT_3]] = add i64 [[NITER]], 4
; CORTEXA55-NEXT: [[NITER_NCMP_3:%.*]] = icmp eq i64 [[NITER_NEXT_3]], [[UNROLL_ITER]]
-; CORTEXA55-NEXT: br i1 [[NITER_NCMP_3]], label %[[EXIT_UNR_LCSSA_LOOPEXIT:.*]], label %[[FOR_BODY]]
-; CORTEXA55: [[EXIT_UNR_LCSSA_LOOPEXIT]]:
-; CORTEXA55-NEXT: [[IV_UNR_PH:%.*]] = phi i64 [ [[IV_NEXT_3]], %[[FOR_BODY]] ]
-; CORTEXA55-NEXT: br label %[[EXIT_UNR_LCSSA]]
+; CORTEXA55-NEXT: br i1 [[NITER_NCMP_3]], label %[[EXIT_UNR_LCSSA:.*]], label %[[FOR_BODY]]
; CORTEXA55: [[EXIT_UNR_LCSSA]]:
-; CORTEXA55-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
+; CORTEXA55-NEXT: [[IV_UNR1:%.*]] = phi i64 [ [[IV_NEXT_3]], %[[FOR_BODY]] ]
; CORTEXA55-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; CORTEXA55-NEXT: br i1 [[LCMP_MOD]], label %[[FOR_BODY_EPIL_PREHEADER:.*]], label %[[EXIT:.*]]
+; CORTEXA55-NEXT: br i1 [[LCMP_MOD]], label %[[FOR_BODY_EPIL_PREHEADER]], label %[[EXIT:.*]]
; CORTEXA55: [[FOR_BODY_EPIL_PREHEADER]]:
+; CORTEXA55-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR1]], %[[EXIT_UNR_LCSSA]] ]
+; CORTEXA55-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; CORTEXA55-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; CORTEXA55-NEXT: br label %[[FOR_BODY_EPIL:.*]]
; CORTEXA55: [[FOR_BODY_EPIL]]:
; CORTEXA55-NEXT: [[TMP10:%.*]] = sub nsw i64 [[LEN]], [[IV_UNR]]
diff --git a/llvm/test/Transforms/LoopUnroll/AMDGPU/unroll-runtime.ll b/llvm/test/Transforms/LoopUnroll/AMDGPU/unroll-runtime.ll
index 2486b80..adf1e21 100644
--- a/llvm/test/Transforms/LoopUnroll/AMDGPU/unroll-runtime.ll
+++ b/llvm/test/Transforms/LoopUnroll/AMDGPU/unroll-runtime.ll
@@ -14,7 +14,7 @@ define amdgpu_kernel void @unroll_when_cascaded_gep(i32 %arg) {
; CHECK-NEXT: [[TMP0:%.*]] = add i32 [[ARG:%.*]], 1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i32 [[TMP0]], 7
; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i32 [[ARG]], 7
-; CHECK-NEXT: br i1 [[TMP1]], label [[BB2_UNR_LCSSA:%.*]], label [[BB_NEW:%.*]]
+; CHECK-NEXT: br i1 [[TMP1]], label [[BB1_EPIL_PREHEADER:%.*]], label [[BB_NEW:%.*]]
; CHECK: bb.new:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i32 [[TMP0]], [[XTRAITER]]
; CHECK-NEXT: br label [[BB1:%.*]]
@@ -24,18 +24,18 @@ define amdgpu_kernel void @unroll_when_cascaded_gep(i32 %arg) {
; CHECK-NEXT: [[ADD_7]] = add i32 [[PHI]], 8
; CHECK-NEXT: [[NITER_NEXT_7]] = add i32 [[NITER]], 8
; CHECK-NEXT: [[NITER_NCMP_7:%.*]] = icmp eq i32 [[NITER_NEXT_7]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_7]], label [[BB2_UNR_LCSSA_LOOPEXIT:%.*]], label [[BB1]]
-; CHECK: bb2.unr-lcssa.loopexit:
-; CHECK-NEXT: [[PHI_UNR_PH:%.*]] = phi i32 [ [[ADD_7]], [[BB1]] ]
-; CHECK-NEXT: br label [[BB2_UNR_LCSSA]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_7]], label [[BB2_UNR_LCSSA:%.*]], label [[BB1]]
; CHECK: bb2.unr-lcssa:
-; CHECK-NEXT: [[PHI_UNR:%.*]] = phi i32 [ 0, [[BB:%.*]] ], [ [[PHI_UNR_PH]], [[BB2_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[PHI_UNR:%.*]] = phi i32 [ [[ADD_7]], [[BB1]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i32 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[BB1_EPIL_PREHEADER:%.*]], label [[BB2:%.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[BB1_EPIL_PREHEADER]], label [[BB2:%.*]]
; CHECK: bb1.epil.preheader:
+; CHECK-NEXT: [[PHI_EPIL_INIT:%.*]] = phi i32 [ 0, [[BB:%.*]] ], [ [[PHI_UNR]], [[BB2_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i32 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; CHECK-NEXT: br label [[BB1_EPIL:%.*]]
; CHECK: bb1.epil:
-; CHECK-NEXT: [[PHI_EPIL:%.*]] = phi i32 [ [[PHI_UNR]], [[BB1_EPIL_PREHEADER]] ], [ [[ADD_EPIL:%.*]], [[BB1_EPIL]] ]
+; CHECK-NEXT: [[PHI_EPIL:%.*]] = phi i32 [ [[PHI_EPIL_INIT]], [[BB1_EPIL_PREHEADER]] ], [ [[ADD_EPIL:%.*]], [[BB1_EPIL]] ]
; CHECK-NEXT: [[EPIL_ITER:%.*]] = phi i32 [ 0, [[BB1_EPIL_PREHEADER]] ], [ [[EPIL_ITER_NEXT:%.*]], [[BB1_EPIL]] ]
; CHECK-NEXT: [[GETELEMENTPTR_EPIL:%.*]] = getelementptr [1024 x i32], ptr addrspace(3) getelementptr inbounds nuw (i8, ptr addrspace(3) @global, i32 8), i32 0, i32 0
; CHECK-NEXT: [[ADD_EPIL]] = add i32 [[PHI_EPIL]], 1
diff --git a/llvm/test/Transforms/LoopUnroll/ARM/multi-blocks.ll b/llvm/test/Transforms/LoopUnroll/ARM/multi-blocks.ll
index d2911a1..7dacbf6 100644
--- a/llvm/test/Transforms/LoopUnroll/ARM/multi-blocks.ll
+++ b/llvm/test/Transforms/LoopUnroll/ARM/multi-blocks.ll
@@ -11,22 +11,21 @@ define void @test_three_blocks(ptr nocapture %Output, ptr nocapture readonly %Co
; CHECK-NEXT: [[TMP0:%.*]] = add i32 [[MAXJ]], -1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i32 [[MAXJ]], 3
; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i32 [[TMP0]], 3
-; CHECK-NEXT: br i1 [[TMP1]], label [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA:%.*]], label [[FOR_BODY_PREHEADER_NEW:%.*]]
+; CHECK-NEXT: br i1 [[TMP1]], label [[FOR_BODY_EPIL_PREHEADER:%.*]], label [[FOR_BODY_PREHEADER_NEW:%.*]]
; CHECK: for.body.preheader.new:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i32 [[MAXJ]], [[XTRAITER]]
; CHECK-NEXT: br label [[FOR_BODY:%.*]]
-; CHECK: for.cond.cleanup.loopexit.unr-lcssa.loopexit:
+; CHECK: for.cond.cleanup.loopexit.unr-lcssa:
; CHECK-NEXT: [[TEMP_1_LCSSA_PH_PH:%.*]] = phi i32 [ [[TEMP_1_3:%.*]], [[FOR_INC_3:%.*]] ]
; CHECK-NEXT: [[J_010_UNR_PH:%.*]] = phi i32 [ [[INC_3:%.*]], [[FOR_INC_3]] ]
; CHECK-NEXT: [[TEMP_09_UNR_PH:%.*]] = phi i32 [ [[TEMP_1_3]], [[FOR_INC_3]] ]
-; CHECK-NEXT: br label [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA]]
-; CHECK: for.cond.cleanup.loopexit.unr-lcssa:
-; CHECK-NEXT: [[TEMP_1_LCSSA_PH:%.*]] = phi i32 [ poison, [[FOR_BODY_PREHEADER]] ], [ [[TEMP_1_LCSSA_PH_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT:%.*]] ]
-; CHECK-NEXT: [[J_010_UNR:%.*]] = phi i32 [ 0, [[FOR_BODY_PREHEADER]] ], [ [[J_010_UNR_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[TEMP_09_UNR:%.*]] = phi i32 [ 0, [[FOR_BODY_PREHEADER]] ], [ [[TEMP_09_UNR_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i32 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[FOR_BODY_EPIL_PREHEADER:%.*]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]]
+; CHECK-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i32 [[XTRAITER]], 0
+; CHECK-NEXT: br i1 [[LCMP_MOD1]], label [[FOR_BODY_EPIL_PREHEADER]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]]
; CHECK: for.body.epil.preheader:
+; CHECK-NEXT: [[J_010_UNR:%.*]] = phi i32 [ 0, [[FOR_BODY_PREHEADER]] ], [ [[J_010_UNR_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA:%.*]] ]
+; CHECK-NEXT: [[TEMP_09_UNR:%.*]] = phi i32 [ 0, [[FOR_BODY_PREHEADER]] ], [ [[TEMP_09_UNR_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i32 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD]])
; CHECK-NEXT: br label [[FOR_BODY_EPIL:%.*]]
; CHECK: for.body.epil:
; CHECK-NEXT: [[ARRAYIDX_EPIL:%.*]] = getelementptr inbounds i32, ptr [[CONDITION:%.*]], i32 [[J_010_UNR]]
@@ -75,7 +74,7 @@ define void @test_three_blocks(ptr nocapture %Output, ptr nocapture readonly %Co
; CHECK-NEXT: [[TEMP_1_LCSSA_PH1:%.*]] = phi i32 [ [[TEMP_1_EPIL]], [[FOR_INC_EPIL]] ], [ [[TEMP_1_EPIL_1]], [[FOR_INC_EPIL_1]] ], [ [[TEMP_1_EPIL_2]], [[FOR_INC_EPIL_2]] ]
; CHECK-NEXT: br label [[FOR_COND_CLEANUP_LOOPEXIT]]
; CHECK: for.cond.cleanup.loopexit:
-; CHECK-NEXT: [[TEMP_1_LCSSA:%.*]] = phi i32 [ [[TEMP_1_LCSSA_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA]] ], [ [[TEMP_1_LCSSA_PH1]], [[FOR_COND_CLEANUP_LOOPEXIT_EPILOG_LCSSA]] ]
+; CHECK-NEXT: [[TEMP_1_LCSSA:%.*]] = phi i32 [ [[TEMP_1_LCSSA_PH_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA]] ], [ [[TEMP_1_LCSSA_PH1]], [[FOR_COND_CLEANUP_LOOPEXIT_EPILOG_LCSSA]] ]
; CHECK-NEXT: br label [[FOR_COND_CLEANUP]]
; CHECK: for.cond.cleanup:
; CHECK-NEXT: [[TEMP_0_LCSSA:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[TEMP_1_LCSSA]], [[FOR_COND_CLEANUP_LOOPEXIT]] ]
@@ -135,7 +134,7 @@ define void @test_three_blocks(ptr nocapture %Output, ptr nocapture readonly %Co
; CHECK-NEXT: [[INC_3]] = add nuw i32 [[J_010]], 4
; CHECK-NEXT: [[NITER_NEXT_3]] = add i32 [[NITER]], 4
; CHECK-NEXT: [[NITER_NCMP_3:%.*]] = icmp eq i32 [[NITER_NEXT_3]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_3]], label [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT]], label [[FOR_BODY]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_3]], label [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA]], label [[FOR_BODY]]
;
entry:
%cmp8 = icmp eq i32 %MaxJ, 0
@@ -354,24 +353,23 @@ define void @test_four_blocks(ptr nocapture %Output, ptr nocapture readonly %Con
; CHECK-NEXT: [[TMP1:%.*]] = add i32 [[MAXJ]], -2
; CHECK-NEXT: [[XTRAITER:%.*]] = and i32 [[TMP0]], 3
; CHECK-NEXT: [[TMP2:%.*]] = icmp ult i32 [[TMP1]], 3
-; CHECK-NEXT: br i1 [[TMP2]], label [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA:%.*]], label [[FOR_BODY_LR_PH_NEW:%.*]]
+; CHECK-NEXT: br i1 [[TMP2]], label [[FOR_BODY_EPIL_PREHEADER:%.*]], label [[FOR_BODY_LR_PH_NEW:%.*]]
; CHECK: for.body.lr.ph.new:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i32 [[TMP0]], [[XTRAITER]]
; CHECK-NEXT: br label [[FOR_BODY:%.*]]
-; CHECK: for.cond.cleanup.loopexit.unr-lcssa.loopexit:
+; CHECK: for.cond.cleanup.loopexit.unr-lcssa:
; CHECK-NEXT: [[TEMP_1_LCSSA_PH_PH:%.*]] = phi i32 [ [[TEMP_1_3:%.*]], [[FOR_INC_3:%.*]] ]
; CHECK-NEXT: [[I_UNR_PH:%.*]] = phi i32 [ [[I2_3:%.*]], [[FOR_INC_3]] ]
; CHECK-NEXT: [[J_027_UNR_PH:%.*]] = phi i32 [ [[INC_3:%.*]], [[FOR_INC_3]] ]
; CHECK-NEXT: [[TEMP_026_UNR_PH:%.*]] = phi i32 [ [[TEMP_1_3]], [[FOR_INC_3]] ]
-; CHECK-NEXT: br label [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA]]
-; CHECK: for.cond.cleanup.loopexit.unr-lcssa:
-; CHECK-NEXT: [[TEMP_1_LCSSA_PH:%.*]] = phi i32 [ poison, [[FOR_BODY_LR_PH]] ], [ [[TEMP_1_LCSSA_PH_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT:%.*]] ]
-; CHECK-NEXT: [[I_UNR:%.*]] = phi i32 [ [[DOTPRE]], [[FOR_BODY_LR_PH]] ], [ [[I_UNR_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[J_027_UNR:%.*]] = phi i32 [ 1, [[FOR_BODY_LR_PH]] ], [ [[J_027_UNR_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[TEMP_026_UNR:%.*]] = phi i32 [ 0, [[FOR_BODY_LR_PH]] ], [ [[TEMP_026_UNR_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i32 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[FOR_BODY_EPIL_PREHEADER:%.*]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]]
+; CHECK-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i32 [[XTRAITER]], 0
+; CHECK-NEXT: br i1 [[LCMP_MOD1]], label [[FOR_BODY_EPIL_PREHEADER]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]]
; CHECK: for.body.epil.preheader:
+; CHECK-NEXT: [[I_UNR:%.*]] = phi i32 [ [[DOTPRE]], [[FOR_BODY_LR_PH]] ], [ [[I_UNR_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA:%.*]] ]
+; CHECK-NEXT: [[J_027_UNR:%.*]] = phi i32 [ 1, [[FOR_BODY_LR_PH]] ], [ [[J_027_UNR_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[TEMP_026_UNR:%.*]] = phi i32 [ 0, [[FOR_BODY_LR_PH]] ], [ [[TEMP_026_UNR_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i32 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD]])
; CHECK-NEXT: br label [[FOR_BODY_EPIL:%.*]]
; CHECK: for.body.epil:
; CHECK-NEXT: [[ARRAYIDX_EPIL:%.*]] = getelementptr inbounds i32, ptr [[CONDITION:%.*]], i32 [[J_027_UNR]]
@@ -450,7 +448,7 @@ define void @test_four_blocks(ptr nocapture %Output, ptr nocapture readonly %Con
; CHECK-NEXT: [[TEMP_1_LCSSA_PH1:%.*]] = phi i32 [ [[TEMP_1_EPIL]], [[FOR_INC_EPIL]] ], [ [[TEMP_1_EPIL_1]], [[FOR_INC_EPIL_1]] ], [ [[TEMP_1_EPIL_2]], [[FOR_INC_EPIL_2]] ]
; CHECK-NEXT: br label [[FOR_COND_CLEANUP_LOOPEXIT]]
; CHECK: for.cond.cleanup.loopexit:
-; CHECK-NEXT: [[TEMP_1_LCSSA:%.*]] = phi i32 [ [[TEMP_1_LCSSA_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA]] ], [ [[TEMP_1_LCSSA_PH1]], [[FOR_COND_CLEANUP_LOOPEXIT_EPILOG_LCSSA]] ]
+; CHECK-NEXT: [[TEMP_1_LCSSA:%.*]] = phi i32 [ [[TEMP_1_LCSSA_PH_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA]] ], [ [[TEMP_1_LCSSA_PH1]], [[FOR_COND_CLEANUP_LOOPEXIT_EPILOG_LCSSA]] ]
; CHECK-NEXT: br label [[FOR_COND_CLEANUP]]
; CHECK: for.cond.cleanup:
; CHECK-NEXT: [[TEMP_0_LCSSA:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[TEMP_1_LCSSA]], [[FOR_COND_CLEANUP_LOOPEXIT]] ]
@@ -551,7 +549,7 @@ define void @test_four_blocks(ptr nocapture %Output, ptr nocapture readonly %Con
; CHECK-NEXT: [[INC_3]] = add nuw i32 [[J_027]], 4
; CHECK-NEXT: [[NITER_NEXT_3]] = add i32 [[NITER]], 4
; CHECK-NEXT: [[NITER_NCMP_3:%.*]] = icmp eq i32 [[NITER_NEXT_3]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_3]], label [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT]], label [[FOR_BODY]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_3]], label [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA]], label [[FOR_BODY]]
;
entry:
%cmp25 = icmp ugt i32 %MaxJ, 1
diff --git a/llvm/test/Transforms/LoopUnroll/Hexagon/reuse-lcssa-phi-scev-expansion.ll b/llvm/test/Transforms/LoopUnroll/Hexagon/reuse-lcssa-phi-scev-expansion.ll
index f74fb14..8edc133 100644
--- a/llvm/test/Transforms/LoopUnroll/Hexagon/reuse-lcssa-phi-scev-expansion.ll
+++ b/llvm/test/Transforms/LoopUnroll/Hexagon/reuse-lcssa-phi-scev-expansion.ll
@@ -29,7 +29,7 @@ define void @preserve_lcssa_when_reusing_existing_phi() {
; CHECK-NEXT: [[TMP2:%.*]] = add i32 [[TMP1]], -1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i32 [[TMP1]], 7
; CHECK-NEXT: [[TMP3:%.*]] = icmp ult i32 [[TMP2]], 7
-; CHECK-NEXT: br i1 [[TMP3]], label %[[LOOP_1_LATCH_UNR_LCSSA:.*]], label %[[LOOP_4_PREHEADER_NEW:.*]]
+; CHECK-NEXT: br i1 [[TMP3]], label %[[LOOP_4_EPIL_PREHEADER:.*]], label %[[LOOP_4_PREHEADER_NEW:.*]]
; CHECK: [[LOOP_4_PREHEADER_NEW]]:
; CHECK-NEXT: br label %[[LOOP_4:.*]]
; CHECK: [[LOOP_2_LATCH]]:
@@ -47,18 +47,18 @@ define void @preserve_lcssa_when_reusing_existing_phi() {
; CHECK-NEXT: call void @foo()
; CHECK-NEXT: [[INC_I_7]] = add nuw nsw i32 [[IV_4]], 8
; CHECK-NEXT: [[NITER_NEXT_7]] = add nuw nsw i32 [[NITER]], 8
-; CHECK-NEXT: br i1 true, label %[[LOOP_1_LATCH_UNR_LCSSA_LOOPEXIT:.*]], label %[[LOOP_4]]
-; CHECK: [[LOOP_1_LATCH_UNR_LCSSA_LOOPEXIT]]:
-; CHECK-NEXT: [[IV_4_UNR_PH:%.*]] = phi i32 [ [[INC_I_7]], %[[LOOP_4]] ]
-; CHECK-NEXT: br label %[[LOOP_1_LATCH_UNR_LCSSA]]
+; CHECK-NEXT: br i1 true, label %[[LOOP_1_LATCH_UNR_LCSSA:.*]], label %[[LOOP_4]]
; CHECK: [[LOOP_1_LATCH_UNR_LCSSA]]:
-; CHECK-NEXT: [[IV_4_UNR:%.*]] = phi i32 [ 0, %[[LOOP_4_PREHEADER]] ], [ [[IV_4_UNR_PH]], %[[LOOP_1_LATCH_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[IV_4_UNR:%.*]] = phi i32 [ [[INC_I_7]], %[[LOOP_4]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i32 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_4_EPIL_PREHEADER:.*]], label %[[LOOP_1_LATCH:.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_4_EPIL_PREHEADER]], label %[[LOOP_1_LATCH:.*]]
; CHECK: [[LOOP_4_EPIL_PREHEADER]]:
+; CHECK-NEXT: [[IV_4_EPIL_INIT:%.*]] = phi i32 [ 0, %[[LOOP_4_PREHEADER]] ], [ [[IV_4_UNR]], %[[LOOP_1_LATCH_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD2:%.*]] = icmp ne i32 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD2]])
; CHECK-NEXT: br label %[[LOOP_4_EPIL:.*]]
; CHECK: [[LOOP_4_EPIL]]:
-; CHECK-NEXT: [[IV_4_EPIL:%.*]] = phi i32 [ [[INC_I_EPIL:%.*]], %[[LOOP_4_EPIL]] ], [ [[IV_4_UNR]], %[[LOOP_4_EPIL_PREHEADER]] ]
+; CHECK-NEXT: [[IV_4_EPIL:%.*]] = phi i32 [ [[INC_I_EPIL:%.*]], %[[LOOP_4_EPIL]] ], [ [[IV_4_EPIL_INIT]], %[[LOOP_4_EPIL_PREHEADER]] ]
; CHECK-NEXT: [[EPIL_ITER:%.*]] = phi i32 [ 0, %[[LOOP_4_EPIL_PREHEADER]] ], [ [[EPIL_ITER_NEXT:%.*]], %[[LOOP_4_EPIL]] ]
; CHECK-NEXT: call void @foo()
; CHECK-NEXT: [[INC_I_EPIL]] = add i32 [[IV_4_EPIL]], 1
diff --git a/llvm/test/Transforms/LoopUnroll/PowerPC/p8-unrolling-legalize-vectors-inseltpoison.ll b/llvm/test/Transforms/LoopUnroll/PowerPC/p8-unrolling-legalize-vectors-inseltpoison.ll
index 456875e..5d08e9d 100644
--- a/llvm/test/Transforms/LoopUnroll/PowerPC/p8-unrolling-legalize-vectors-inseltpoison.ll
+++ b/llvm/test/Transforms/LoopUnroll/PowerPC/p8-unrolling-legalize-vectors-inseltpoison.ll
@@ -51,16 +51,16 @@ define ptr @f(ptr returned %s, i32 zeroext %x, i32 signext %k) local_unnamed_add
; CHECK-NEXT: [[NITER_NEXT_1]] = add i64 [[NITER]], 2
; CHECK-NEXT: [[NITER_NCMP_1:%.*]] = icmp eq i64 [[NITER_NEXT_1]], [[UNROLL_ITER]]
; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label [[MIDDLE_BLOCK_UNR_LCSSA_LOOPEXIT:%.*]], label [[VECTOR_BODY]]
-; CHECK: middle.block.unr-lcssa.loopexit:
+; CHECK: middle.block.unr-lcssa:
; CHECK-NEXT: [[INDEX_UNR_PH:%.*]] = phi i64 [ [[INDEX_NEXT_1]], [[VECTOR_BODY]] ]
; CHECK-NEXT: [[VEC_IND12_UNR_PH:%.*]] = phi <16 x i32> [ [[VEC_IND_NEXT13_1]], [[VECTOR_BODY]] ]
-; CHECK-NEXT: br label [[MIDDLE_BLOCK_UNR_LCSSA]]
-; CHECK: middle.block.unr-lcssa:
-; CHECK-NEXT: [[INDEX_UNR:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_UNR_PH]], [[MIDDLE_BLOCK_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[VEC_IND12_UNR:%.*]] = phi <16 x i32> [ <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>, [[VECTOR_PH]] ], [ [[VEC_IND12_UNR_PH]], [[MIDDLE_BLOCK_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[VECTOR_BODY_EPIL_PREHEADER:%.*]], label [[MIDDLE_BLOCK:%.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[MIDDLE_BLOCK_UNR_LCSSA]], label [[MIDDLE_BLOCK:%.*]]
; CHECK: vector.body.epil.preheader:
+; CHECK-NEXT: [[INDEX_UNR:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_UNR_PH]], [[MIDDLE_BLOCK_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[VEC_IND12_UNR:%.*]] = phi <16 x i32> [ <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>, [[VECTOR_PH]] ], [ [[VEC_IND12_UNR_PH]], [[MIDDLE_BLOCK_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; CHECK-NEXT: br label [[VECTOR_BODY_EPIL:%.*]]
; CHECK: vector.body.epil:
; CHECK-NEXT: [[TMP14:%.*]] = shl <16 x i32> splat (i32 1), [[VEC_IND12_UNR]]
diff --git a/llvm/test/Transforms/LoopUnroll/PowerPC/p8-unrolling-legalize-vectors.ll b/llvm/test/Transforms/LoopUnroll/PowerPC/p8-unrolling-legalize-vectors.ll
index cd4198f..03277fc 100644
--- a/llvm/test/Transforms/LoopUnroll/PowerPC/p8-unrolling-legalize-vectors.ll
+++ b/llvm/test/Transforms/LoopUnroll/PowerPC/p8-unrolling-legalize-vectors.ll
@@ -51,16 +51,16 @@ define ptr @f(ptr returned %s, i32 zeroext %x, i32 signext %k) local_unnamed_add
; CHECK-NEXT: [[NITER_NEXT_1]] = add i64 [[NITER]], 2
; CHECK-NEXT: [[NITER_NCMP_1:%.*]] = icmp eq i64 [[NITER_NEXT_1]], [[UNROLL_ITER]]
; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label [[MIDDLE_BLOCK_UNR_LCSSA_LOOPEXIT:%.*]], label [[VECTOR_BODY]]
-; CHECK: middle.block.unr-lcssa.loopexit:
+; CHECK: middle.block.unr-lcssa:
; CHECK-NEXT: [[INDEX_UNR_PH:%.*]] = phi i64 [ [[INDEX_NEXT_1]], [[VECTOR_BODY]] ]
; CHECK-NEXT: [[VEC_IND12_UNR_PH:%.*]] = phi <16 x i32> [ [[VEC_IND_NEXT13_1]], [[VECTOR_BODY]] ]
-; CHECK-NEXT: br label [[MIDDLE_BLOCK_UNR_LCSSA]]
-; CHECK: middle.block.unr-lcssa:
-; CHECK-NEXT: [[INDEX_UNR:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_UNR_PH]], [[MIDDLE_BLOCK_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[VEC_IND12_UNR:%.*]] = phi <16 x i32> [ <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>, [[VECTOR_PH]] ], [ [[VEC_IND12_UNR_PH]], [[MIDDLE_BLOCK_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[VECTOR_BODY_EPIL_PREHEADER:%.*]], label [[MIDDLE_BLOCK:%.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[MIDDLE_BLOCK_UNR_LCSSA]], label [[MIDDLE_BLOCK:%.*]]
; CHECK: vector.body.epil.preheader:
+; CHECK-NEXT: [[INDEX_UNR:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_UNR_PH]], [[MIDDLE_BLOCK_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[VEC_IND12_UNR:%.*]] = phi <16 x i32> [ <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>, [[VECTOR_PH]] ], [ [[VEC_IND12_UNR_PH]], [[MIDDLE_BLOCK_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; CHECK-NEXT: br label [[VECTOR_BODY_EPIL:%.*]]
; CHECK: vector.body.epil:
; CHECK-NEXT: [[TMP14:%.*]] = shl <16 x i32> splat (i32 1), [[VEC_IND12_UNR]]
diff --git a/llvm/test/Transforms/LoopUnroll/RISCV/vector.ll b/llvm/test/Transforms/LoopUnroll/RISCV/vector.ll
index 811d055..b575057 100644
--- a/llvm/test/Transforms/LoopUnroll/RISCV/vector.ll
+++ b/llvm/test/Transforms/LoopUnroll/RISCV/vector.ll
@@ -26,7 +26,7 @@ define void @reverse(ptr %dst, ptr %src, i64 %len) {
; SIFIVE-NEXT: [[TMP2:%.*]] = add i64 [[LEN]], -1
; SIFIVE-NEXT: [[XTRAITER:%.*]] = and i64 [[LEN]], 7
; SIFIVE-NEXT: [[TMP3:%.*]] = icmp ult i64 [[TMP2]], 7
-; SIFIVE-NEXT: br i1 [[TMP3]], label %[[EXIT_UNR_LCSSA:.*]], label %[[ENTRY_NEW:.*]]
+; SIFIVE-NEXT: br i1 [[TMP3]], label %[[FOR_BODY_EPIL_PREHEADER:.*]], label %[[ENTRY_NEW:.*]]
; SIFIVE: [[ENTRY_NEW]]:
; SIFIVE-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[LEN]], [[XTRAITER]]
; SIFIVE-NEXT: br label %[[FOR_BODY:.*]]
@@ -83,15 +83,15 @@ define void @reverse(ptr %dst, ptr %src, i64 %len) {
; SIFIVE-NEXT: [[IV_NEXT_7]] = add nuw nsw i64 [[IV]], 8
; SIFIVE-NEXT: [[NITER_NEXT_7]] = add i64 [[NITER]], 8
; SIFIVE-NEXT: [[NITER_NCMP_7:%.*]] = icmp eq i64 [[NITER_NEXT_7]], [[UNROLL_ITER]]
-; SIFIVE-NEXT: br i1 [[NITER_NCMP_7]], label %[[EXIT_UNR_LCSSA_LOOPEXIT:.*]], label %[[FOR_BODY]]
-; SIFIVE: [[EXIT_UNR_LCSSA_LOOPEXIT]]:
-; SIFIVE-NEXT: [[IV_UNR_PH:%.*]] = phi i64 [ [[IV_NEXT_7]], %[[FOR_BODY]] ]
-; SIFIVE-NEXT: br label %[[EXIT_UNR_LCSSA]]
+; SIFIVE-NEXT: br i1 [[NITER_NCMP_7]], label %[[EXIT_UNR_LCSSA:.*]], label %[[FOR_BODY]]
; SIFIVE: [[EXIT_UNR_LCSSA]]:
-; SIFIVE-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
+; SIFIVE-NEXT: [[IV_UNR1:%.*]] = phi i64 [ [[IV_NEXT_7]], %[[FOR_BODY]] ]
; SIFIVE-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; SIFIVE-NEXT: br i1 [[LCMP_MOD]], label %[[FOR_BODY_EPIL_PREHEADER:.*]], label %[[EXIT:.*]]
+; SIFIVE-NEXT: br i1 [[LCMP_MOD]], label %[[FOR_BODY_EPIL_PREHEADER]], label %[[EXIT:.*]]
; SIFIVE: [[FOR_BODY_EPIL_PREHEADER]]:
+; SIFIVE-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR1]], %[[EXIT_UNR_LCSSA]] ]
+; SIFIVE-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; SIFIVE-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; SIFIVE-NEXT: br label %[[FOR_BODY_EPIL:.*]]
; SIFIVE: [[FOR_BODY_EPIL]]:
; SIFIVE-NEXT: [[TMP18:%.*]] = sub nsw i64 [[LEN]], [[IV_UNR]]
diff --git a/llvm/test/Transforms/LoopUnroll/WebAssembly/basic-unrolling.ll b/llvm/test/Transforms/LoopUnroll/WebAssembly/basic-unrolling.ll
index ea499e5..b456ad8 100644
--- a/llvm/test/Transforms/LoopUnroll/WebAssembly/basic-unrolling.ll
+++ b/llvm/test/Transforms/LoopUnroll/WebAssembly/basic-unrolling.ll
@@ -124,15 +124,17 @@ define hidden void @runtime(ptr nocapture %a, ptr nocapture readonly %b, ptr noc
; CHECK: for.body.preheader:
; CHECK-NEXT: [[XTRAITER:%.*]] = and i32 [[N]], 1
; CHECK-NEXT: [[TMP0:%.*]] = icmp eq i32 [[N]], 1
-; CHECK-NEXT: br i1 [[TMP0]], label [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA:%.*]], label [[FOR_BODY_PREHEADER_NEW:%.*]]
+; CHECK-NEXT: br i1 [[TMP0]], label [[FOR_BODY_EPIL_PREHEADER:%.*]], label [[FOR_BODY_PREHEADER_NEW:%.*]]
; CHECK: for.body.preheader.new:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = and i32 [[N]], -2
; CHECK-NEXT: br label [[FOR_BODY:%.*]]
; CHECK: for.cond.cleanup.loopexit.unr-lcssa:
-; CHECK-NEXT: [[I_09_UNR:%.*]] = phi i32 [ 0, [[FOR_BODY_PREHEADER]] ], [ [[INC_1:%.*]], [[FOR_BODY]] ]
; CHECK-NEXT: [[LCMP_MOD_NOT:%.*]] = icmp eq i32 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD_NOT]], label [[FOR_COND_CLEANUP]], label [[FOR_BODY_EPIL:%.*]]
-; CHECK: for.body.epil:
+; CHECK-NEXT: br i1 [[LCMP_MOD_NOT]], label [[FOR_COND_CLEANUP]], label [[FOR_BODY_EPIL_PREHEADER]]
+; CHECK: for.body.epil.preheader:
+; CHECK-NEXT: [[I_09_UNR:%.*]] = phi i32 [ 0, [[FOR_BODY_PREHEADER]] ], [ [[INC_1:%.*]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA:%.*]] ]
+; CHECK-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i32 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; CHECK-NEXT: [[ARRAYIDX_EPIL:%.*]] = getelementptr inbounds i32, ptr [[B:%.*]], i32 [[I_09_UNR]]
; CHECK-NEXT: [[I_EPIL:%.*]] = load i32, ptr [[ARRAYIDX_EPIL]], align 4
; CHECK-NEXT: [[ARRAYIDX1_EPIL:%.*]] = getelementptr inbounds i32, ptr [[C:%.*]], i32 [[I_09_UNR]]
diff --git a/llvm/test/Transforms/LoopUnroll/convergent.controlled.ll b/llvm/test/Transforms/LoopUnroll/convergent.controlled.ll
index 7fd4eb1..6e600d2 100644
--- a/llvm/test/Transforms/LoopUnroll/convergent.controlled.ll
+++ b/llvm/test/Transforms/LoopUnroll/convergent.controlled.ll
@@ -302,7 +302,7 @@ define i32 @pragma_unroll_with_remainder(i32 %n) {
; CHECK-NEXT: [[TMP1:%.*]] = add i32 [[TMP0]], -1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i32 [[TMP0]], 1
; CHECK-NEXT: [[TMP2:%.*]] = icmp ult i32 [[TMP1]], 1
-; CHECK-NEXT: br i1 [[TMP2]], label [[EXIT_UNR_LCSSA:%.*]], label [[ENTRY_NEW:%.*]]
+; CHECK-NEXT: br i1 [[TMP2]], label [[L3_EPIL_PREHEADER:%.*]], label [[ENTRY_NEW:%.*]]
; CHECK: entry.new:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i32 [[TMP0]], [[XTRAITER]]
; CHECK-NEXT: br label [[L3:%.*]], !llvm.loop [[LOOP4]]
@@ -316,13 +316,13 @@ define i32 @pragma_unroll_with_remainder(i32 %n) {
; CHECK-NEXT: [[INC_1]] = add nsw i32 [[X_0]], 2
; CHECK-NEXT: [[NITER_NEXT_1]] = add i32 [[NITER]], 2
; CHECK-NEXT: [[NITER_NCMP_1:%.*]] = icmp eq i32 [[NITER_NEXT_1]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label [[EXIT_UNR_LCSSA_LOOPEXIT:%.*]], label [[L3]], !llvm.loop [[LOOP8:![0-9]+]]
-; CHECK: exit.unr-lcssa.loopexit:
-; CHECK-NEXT: br label [[EXIT_UNR_LCSSA]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label [[EXIT_UNR_LCSSA:%.*]], label [[L3]], !llvm.loop [[LOOP8:![0-9]+]]
; CHECK: exit.unr-lcssa:
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i32 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[L3_EPIL_PREHEADER:%.*]], label [[EXIT:%.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[L3_EPIL_PREHEADER]], label [[EXIT:%.*]]
; CHECK: l3.epil.preheader:
+; CHECK-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i32 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; CHECK-NEXT: br label [[L3_EPIL:%.*]]
; CHECK: l3.epil:
; CHECK-NEXT: [[TOK_LOOP_EPIL:%.*]] = call token @llvm.experimental.convergence.anchor()
diff --git a/llvm/test/Transforms/LoopUnroll/followup.ll b/llvm/test/Transforms/LoopUnroll/followup.ll
index e4ae7b6..051e43d 100644
--- a/llvm/test/Transforms/LoopUnroll/followup.ll
+++ b/llvm/test/Transforms/LoopUnroll/followup.ll
@@ -43,7 +43,7 @@ for.end: ; preds = %for.body, %entry
; COUNT: ![[LOOP]] = distinct !{![[LOOP]], ![[FOLLOWUP_ALL]], ![[FOLLOWUP_UNROLLED]]}
-; EPILOG: br i1 %niter.ncmp.7, label %for.end.loopexit.unr-lcssa.loopexit, label %for.body, !llvm.loop ![[LOOP_0:[0-9]+]]
+; EPILOG: br i1 %niter.ncmp.7, label %for.end.loopexit.unr-lcssa, label %for.body, !llvm.loop ![[LOOP_0:[0-9]+]]
; EPILOG: br i1 %epil.iter.cmp, label %for.body.epil, label %for.end.loopexit.epilog-lcssa, !llvm.loop ![[LOOP_2:[0-9]+]]
; EPILOG: ![[LOOP_0]] = distinct !{![[LOOP_0]], ![[FOLLOWUP_ALL:[0-9]+]], ![[FOLLOWUP_UNROLLED:[0-9]+]]}
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-epilog-debuginfo.ll b/llvm/test/Transforms/LoopUnroll/runtime-epilog-debuginfo.ll
index 835fc2f..ee28aa1 100644
--- a/llvm/test/Transforms/LoopUnroll/runtime-epilog-debuginfo.ll
+++ b/llvm/test/Transforms/LoopUnroll/runtime-epilog-debuginfo.ll
@@ -3,9 +3,7 @@
; Test that epilogue is tagged with the same debug information as original loop body rather than original loop exit.
; CHECK: for.body.i:
-; CHECK: br i1 {{.*}}, label %lee1.exit.loopexit.unr-lcssa.loopexit, label %for.body.i, !dbg ![[LOOP_LOC:[0-9]+]]
-; CHECK: lee1.exit.loopexit.unr-lcssa.loopexit:
-; CHECK: br label %lee1.exit.loopexit.unr-lcssa, !dbg ![[LOOP_LOC]]
+; CHECK: br i1 {{.*}}, label %lee1.exit.loopexit.unr-lcssa, label %for.body.i, !dbg ![[LOOP_LOC:[0-9]+]]
; CHECK: lee1.exit.loopexit.unr-lcssa:
; CHECK: %lcmp.mod = icmp ne i32 %xtraiter, 0, !dbg ![[LOOP_LOC]]
; CHECK: br i1 %lcmp.mod, label %for.body.i.epil.preheader, label %lee1.exit.loopexit, !dbg ![[LOOP_LOC]]
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-exit-phi-scev-invalidation.ll b/llvm/test/Transforms/LoopUnroll/runtime-exit-phi-scev-invalidation.ll
index a97b394..0c52b5a0 100644
--- a/llvm/test/Transforms/LoopUnroll/runtime-exit-phi-scev-invalidation.ll
+++ b/llvm/test/Transforms/LoopUnroll/runtime-exit-phi-scev-invalidation.ll
@@ -20,7 +20,7 @@ define void @pr56282() {
; CHECK-NEXT: [[TMP2:%.*]] = add i64 [[TMP1]], -1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i64 [[TMP1]], 7
; CHECK-NEXT: [[TMP3:%.*]] = icmp ult i64 [[TMP2]], 7
-; CHECK-NEXT: br i1 [[TMP3]], label [[OUTER_MIDDLE_UNR_LCSSA:%.*]], label [[OUTER_HEADER_NEW:%.*]]
+; CHECK-NEXT: br i1 [[TMP3]], label [[INNER_1_HEADER_EPIL_PREHEADER:%.*]], label [[OUTER_HEADER_NEW:%.*]]
; CHECK: outer.header.new:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[TMP1]], [[XTRAITER]]
; CHECK-NEXT: br label [[INNER_1_HEADER:%.*]]
@@ -62,17 +62,16 @@ define void @pr56282() {
; CHECK: inner.1.latch.7:
; CHECK-NEXT: [[NITER_NEXT_7]] = add i64 [[NITER]], 8
; CHECK-NEXT: [[NITER_NCMP_7:%.*]] = icmp ne i64 [[NITER_NEXT_7]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_7]], label [[INNER_1_HEADER]], label [[OUTER_MIDDLE_UNR_LCSSA_LOOPEXIT:%.*]]
-; CHECK: outer.middle.unr-lcssa.loopexit:
+; CHECK-NEXT: br i1 [[NITER_NCMP_7]], label [[INNER_1_HEADER]], label [[OUTER_MIDDLE_UNR_LCSSA:%.*]]
+; CHECK: outer.middle.unr-lcssa:
; CHECK-NEXT: [[V_LCSSA1_PH_PH:%.*]] = phi i32 [ [[V_7]], [[INNER_1_LATCH_7]] ]
; CHECK-NEXT: [[INNER_1_IV_UNR_PH:%.*]] = phi i64 [ [[INNER_1_IV_NEXT_7]], [[INNER_1_LATCH_7]] ]
-; CHECK-NEXT: br label [[OUTER_MIDDLE_UNR_LCSSA]]
-; CHECK: outer.middle.unr-lcssa:
-; CHECK-NEXT: [[V_LCSSA1_PH:%.*]] = phi i32 [ poison, [[OUTER_HEADER]] ], [ [[V_LCSSA1_PH_PH]], [[OUTER_MIDDLE_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[INNER_1_IV_UNR:%.*]] = phi i64 [ 0, [[OUTER_HEADER]] ], [ [[INNER_1_IV_UNR_PH]], [[OUTER_MIDDLE_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[INNER_1_HEADER_EPIL_PREHEADER:%.*]], label [[OUTER_MIDDLE:%.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[INNER_1_HEADER_EPIL_PREHEADER]], label [[OUTER_MIDDLE:%.*]]
; CHECK: inner.1.header.epil.preheader:
+; CHECK-NEXT: [[INNER_1_IV_UNR:%.*]] = phi i64 [ 0, [[OUTER_HEADER]] ], [ [[INNER_1_IV_UNR_PH]], [[OUTER_MIDDLE_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD3:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD3]])
; CHECK-NEXT: br label [[INNER_1_HEADER_EPIL:%.*]]
; CHECK: inner.1.header.epil:
; CHECK-NEXT: [[INNER_1_IV_EPIL:%.*]] = phi i64 [ [[INNER_1_IV_UNR]], [[INNER_1_HEADER_EPIL_PREHEADER]] ], [ [[INNER_1_IV_NEXT_EPIL:%.*]], [[INNER_1_LATCH_EPIL:%.*]] ]
@@ -90,7 +89,7 @@ define void @pr56282() {
; CHECK-NEXT: [[V_LCSSA1_PH2:%.*]] = phi i32 [ [[V_EPIL]], [[INNER_1_LATCH_EPIL]] ]
; CHECK-NEXT: br label [[OUTER_MIDDLE]]
; CHECK: outer.middle:
-; CHECK-NEXT: [[V_LCSSA1:%.*]] = phi i32 [ [[V_LCSSA1_PH]], [[OUTER_MIDDLE_UNR_LCSSA]] ], [ [[V_LCSSA1_PH2]], [[OUTER_MIDDLE_EPILOG_LCSSA]] ]
+; CHECK-NEXT: [[V_LCSSA1:%.*]] = phi i32 [ [[V_LCSSA1_PH_PH]], [[OUTER_MIDDLE_UNR_LCSSA]] ], [ [[V_LCSSA1_PH2]], [[OUTER_MIDDLE_EPILOG_LCSSA]] ]
; CHECK-NEXT: [[C_3:%.*]] = icmp ugt i32 [[V_LCSSA1]], 0
; CHECK-NEXT: br i1 [[C_3]], label [[INNER_2_PREHEADER:%.*]], label [[EXIT:%.*]]
; CHECK: inner.2.preheader:
@@ -102,7 +101,7 @@ define void @pr56282() {
; CHECK-NEXT: ret void
; CHECK: exit.deopt.loopexit:
; CHECK-NEXT: br label [[EXIT_DEOPT:%.*]]
-; CHECK: exit.deopt.loopexit3:
+; CHECK: exit.deopt.loopexit4:
; CHECK-NEXT: br label [[EXIT_DEOPT]]
; CHECK: exit.deopt:
; CHECK-NEXT: call void (...) @llvm.experimental.deoptimize.isVoid(i32 0) [ "deopt"() ]
@@ -233,7 +232,7 @@ define void @pr56286(i64 %x, ptr %src, ptr %dst, ptr %ptr.src) !prof !0 {
; CHECK-NEXT: store i32 [[L_1_7]], ptr [[DST]], align 8
; CHECK-NEXT: [[INNER_1_IV_NEXT_7]] = add i64 [[INNER_1_IV]], 8
; CHECK-NEXT: [[CMP_2_7:%.*]] = icmp sgt i64 [[INNER_1_IV_NEXT_6]], 0
-; CHECK-NEXT: br i1 [[CMP_2_7]], label [[OUTER_MIDDLE_UNR_LCSSA:%.*]], label [[INNER_1_HEADER]], !prof [[PROF6:![0-9]+]]
+; CHECK-NEXT: br i1 [[CMP_2_7]], label [[OUTER_MIDDLE_UNR_LCSSA:%.*]], label [[INNER_1_HEADER]], !prof [[PROF6:![0-9]+]], !llvm.loop [[LOOP7:![0-9]+]]
; CHECK: outer.middle.unr-lcssa:
; CHECK-NEXT: [[L_1_LCSSA_PH:%.*]] = phi i32 [ [[L_1_7]], [[INNER_1_LATCH_7]] ]
; CHECK-NEXT: br label [[OUTER_MIDDLE]]
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-i128.ll b/llvm/test/Transforms/LoopUnroll/runtime-i128.ll
index 4cd8e7c..fec8626 100644
--- a/llvm/test/Transforms/LoopUnroll/runtime-i128.ll
+++ b/llvm/test/Transforms/LoopUnroll/runtime-i128.ll
@@ -11,7 +11,7 @@ define void @test(i128 %n, i128 %m) {
; CHECK-NEXT: [[TMP1:%.*]] = add i128 [[TMP0]], -1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i128 [[TMP0]], 7
; CHECK-NEXT: [[TMP2:%.*]] = icmp ult i128 [[TMP1]], 7
-; CHECK-NEXT: br i1 [[TMP2]], label [[EXIT_UNR_LCSSA:%.*]], label [[ENTRY_NEW:%.*]]
+; CHECK-NEXT: br i1 [[TMP2]], label [[LOOP_EPIL_PREHEADER:%.*]], label [[ENTRY_NEW:%.*]]
; CHECK: entry.new:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i128 [[TMP0]], [[XTRAITER]]
; CHECK-NEXT: br label [[LOOP:%.*]]
@@ -29,18 +29,18 @@ define void @test(i128 %n, i128 %m) {
; CHECK-NEXT: [[IV_NEXT_7]] = add i128 [[IV]], 8
; CHECK-NEXT: [[NITER_NEXT_7]] = add i128 [[NITER]], 8
; CHECK-NEXT: [[NITER_NCMP_7:%.*]] = icmp ne i128 [[NITER_NEXT_7]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_7]], label [[LOOP]], label [[EXIT_UNR_LCSSA_LOOPEXIT:%.*]]
-; CHECK: exit.unr-lcssa.loopexit:
-; CHECK-NEXT: [[IV_UNR_PH:%.*]] = phi i128 [ [[IV_NEXT_7]], [[LOOP]] ]
-; CHECK-NEXT: br label [[EXIT_UNR_LCSSA]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_7]], label [[LOOP]], label [[EXIT_UNR_LCSSA:%.*]]
; CHECK: exit.unr-lcssa:
-; CHECK-NEXT: [[IV_UNR:%.*]] = phi i128 [ 0, [[ENTRY:%.*]] ], [ [[IV_UNR_PH]], [[EXIT_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[IV_UNR:%.*]] = phi i128 [ [[IV_NEXT_7]], [[LOOP]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i128 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[LOOP_EPIL_PREHEADER:%.*]], label [[EXIT:%.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[LOOP_EPIL_PREHEADER]], label [[EXIT:%.*]]
; CHECK: loop.epil.preheader:
+; CHECK-NEXT: [[IV_EPIL_INIT:%.*]] = phi i128 [ 0, [[ENTRY:%.*]] ], [ [[IV_UNR]], [[EXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i128 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; CHECK-NEXT: br label [[LOOP_EPIL:%.*]]
; CHECK: loop.epil:
-; CHECK-NEXT: [[IV_EPIL:%.*]] = phi i128 [ [[IV_UNR]], [[LOOP_EPIL_PREHEADER]] ], [ [[IV_NEXT_EPIL:%.*]], [[LOOP_EPIL]] ]
+; CHECK-NEXT: [[IV_EPIL:%.*]] = phi i128 [ [[IV_EPIL_INIT]], [[LOOP_EPIL_PREHEADER]] ], [ [[IV_NEXT_EPIL:%.*]], [[LOOP_EPIL]] ]
; CHECK-NEXT: [[EPIL_ITER:%.*]] = phi i128 [ 0, [[LOOP_EPIL_PREHEADER]] ], [ [[EPIL_ITER_NEXT:%.*]], [[LOOP_EPIL]] ]
; CHECK-NEXT: call void @foo()
; CHECK-NEXT: [[IV_NEXT_EPIL]] = add i128 [[IV_EPIL]], 1
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-loop-at-most-two-exits.ll b/llvm/test/Transforms/LoopUnroll/runtime-loop-at-most-two-exits.ll
index 8472a8c..85de29d 100644
--- a/llvm/test/Transforms/LoopUnroll/runtime-loop-at-most-two-exits.ll
+++ b/llvm/test/Transforms/LoopUnroll/runtime-loop-at-most-two-exits.ll
@@ -9,7 +9,7 @@ define i32 @test(ptr nocapture %a, i64 %n) {
; ENABLED-NEXT: [[TMP1:%.*]] = add i64 [[TMP0]], -1
; ENABLED-NEXT: [[XTRAITER:%.*]] = and i64 [[TMP0]], 7
; ENABLED-NEXT: [[TMP2:%.*]] = icmp ult i64 [[TMP1]], 7
-; ENABLED-NEXT: br i1 [[TMP2]], label [[FOR_END_UNR_LCSSA:%.*]], label [[ENTRY_NEW:%.*]]
+; ENABLED-NEXT: br i1 [[TMP2]], label [[HEADER_EPIL_PREHEADER:%.*]], label [[ENTRY_NEW:%.*]]
; ENABLED: entry.new:
; ENABLED-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[TMP0]], [[XTRAITER]]
; ENABLED-NEXT: br label [[HEADER:%.*]]
@@ -71,23 +71,22 @@ define i32 @test(ptr nocapture %a, i64 %n) {
; ENABLED-NEXT: [[INDVARS_IV_NEXT_7]] = add i64 [[INDVARS_IV]], 8
; ENABLED-NEXT: [[NITER_NEXT_7]] = add i64 [[NITER]], 8
; ENABLED-NEXT: [[NITER_NCMP_7:%.*]] = icmp eq i64 [[NITER_NEXT_7]], [[UNROLL_ITER]]
-; ENABLED-NEXT: br i1 [[NITER_NCMP_7]], label [[FOR_END_UNR_LCSSA_LOOPEXIT:%.*]], label [[HEADER]]
-; ENABLED: for.end.unr-lcssa.loopexit:
+; ENABLED-NEXT: br i1 [[NITER_NCMP_7]], label [[FOR_END_UNR_LCSSA:%.*]], label [[HEADER]]
+; ENABLED: for.end.unr-lcssa:
; ENABLED-NEXT: [[SUM_0_LCSSA_PH_PH:%.*]] = phi i32 [ [[ADD_7]], [[FOR_BODY_7]] ]
; ENABLED-NEXT: [[INDVARS_IV_UNR_PH:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_7]], [[FOR_BODY_7]] ]
; ENABLED-NEXT: [[SUM_02_UNR_PH:%.*]] = phi i32 [ [[ADD_7]], [[FOR_BODY_7]] ]
-; ENABLED-NEXT: br label [[FOR_END_UNR_LCSSA]]
-; ENABLED: for.end.unr-lcssa:
-; ENABLED-NEXT: [[SUM_0_LCSSA_PH:%.*]] = phi i32 [ poison, [[ENTRY:%.*]] ], [ [[SUM_0_LCSSA_PH_PH]], [[FOR_END_UNR_LCSSA_LOOPEXIT]] ]
-; ENABLED-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY]] ], [ [[INDVARS_IV_UNR_PH]], [[FOR_END_UNR_LCSSA_LOOPEXIT]] ]
-; ENABLED-NEXT: [[SUM_02_UNR:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[SUM_02_UNR_PH]], [[FOR_END_UNR_LCSSA_LOOPEXIT]] ]
; ENABLED-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; ENABLED-NEXT: br i1 [[LCMP_MOD]], label [[HEADER_EPIL_PREHEADER:%.*]], label [[FOR_END:%.*]]
+; ENABLED-NEXT: br i1 [[LCMP_MOD]], label [[HEADER_EPIL_PREHEADER]], label [[FOR_END:%.*]]
; ENABLED: header.epil.preheader:
+; ENABLED-NEXT: [[INDVARS_IV_EPIL_INIT:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[INDVARS_IV_UNR_PH]], [[FOR_END_UNR_LCSSA]] ]
+; ENABLED-NEXT: [[SUM_02_EPIL_INIT:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[SUM_02_UNR_PH]], [[FOR_END_UNR_LCSSA]] ]
+; ENABLED-NEXT: [[LCMP_MOD2:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; ENABLED-NEXT: call void @llvm.assume(i1 [[LCMP_MOD2]])
; ENABLED-NEXT: br label [[HEADER_EPIL:%.*]]
; ENABLED: header.epil:
-; ENABLED-NEXT: [[INDVARS_IV_EPIL:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_EPIL:%.*]], [[FOR_BODY_EPIL:%.*]] ], [ [[INDVARS_IV_UNR]], [[HEADER_EPIL_PREHEADER]] ]
-; ENABLED-NEXT: [[SUM_02_EPIL:%.*]] = phi i32 [ [[ADD_EPIL:%.*]], [[FOR_BODY_EPIL]] ], [ [[SUM_02_UNR]], [[HEADER_EPIL_PREHEADER]] ]
+; ENABLED-NEXT: [[INDVARS_IV_EPIL:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_EPIL:%.*]], [[FOR_BODY_EPIL:%.*]] ], [ [[INDVARS_IV_EPIL_INIT]], [[HEADER_EPIL_PREHEADER]] ]
+; ENABLED-NEXT: [[SUM_02_EPIL:%.*]] = phi i32 [ [[ADD_EPIL:%.*]], [[FOR_BODY_EPIL]] ], [ [[SUM_02_EPIL_INIT]], [[HEADER_EPIL_PREHEADER]] ]
; ENABLED-NEXT: [[EPIL_ITER:%.*]] = phi i64 [ 0, [[HEADER_EPIL_PREHEADER]] ], [ [[EPIL_ITER_NEXT:%.*]], [[FOR_BODY_EPIL]] ]
; ENABLED-NEXT: [[CMP_EPIL:%.*]] = icmp eq i64 [[N]], 42
; ENABLED-NEXT: br i1 [[CMP_EPIL]], label [[FOR_EXIT2_LOOPEXIT2:%.*]], label [[FOR_BODY_EPIL]]
@@ -104,12 +103,12 @@ define i32 @test(ptr nocapture %a, i64 %n) {
; ENABLED-NEXT: [[SUM_0_LCSSA_PH1:%.*]] = phi i32 [ [[ADD_EPIL]], [[FOR_BODY_EPIL]] ]
; ENABLED-NEXT: br label [[FOR_END]]
; ENABLED: for.end:
-; ENABLED-NEXT: [[SUM_0_LCSSA:%.*]] = phi i32 [ [[SUM_0_LCSSA_PH]], [[FOR_END_UNR_LCSSA]] ], [ [[SUM_0_LCSSA_PH1]], [[FOR_END_EPILOG_LCSSA]] ]
+; ENABLED-NEXT: [[SUM_0_LCSSA:%.*]] = phi i32 [ [[SUM_0_LCSSA_PH_PH]], [[FOR_END_UNR_LCSSA]] ], [ [[SUM_0_LCSSA_PH1]], [[FOR_END_EPILOG_LCSSA]] ]
; ENABLED-NEXT: ret i32 [[SUM_0_LCSSA]]
; ENABLED: for.exit2.loopexit:
; ENABLED-NEXT: [[RETVAL_PH:%.*]] = phi i32 [ [[SUM_02]], [[HEADER]] ], [ [[ADD]], [[FOR_BODY]] ], [ [[ADD_1]], [[FOR_BODY_1]] ], [ [[ADD_2]], [[FOR_BODY_2]] ], [ [[ADD_3]], [[FOR_BODY_3]] ], [ [[ADD_4]], [[FOR_BODY_4]] ], [ [[ADD_5]], [[FOR_BODY_5]] ], [ [[ADD_6]], [[FOR_BODY_6]] ]
; ENABLED-NEXT: br label [[FOR_EXIT2:%.*]]
-; ENABLED: for.exit2.loopexit2:
+; ENABLED: for.exit2.loopexit3:
; ENABLED-NEXT: [[RETVAL_PH3:%.*]] = phi i32 [ [[SUM_02_EPIL]], [[HEADER_EPIL]] ]
; ENABLED-NEXT: br label [[FOR_EXIT2]]
; ENABLED: for.exit2:
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-loop-branchweight.ll b/llvm/test/Transforms/LoopUnroll/runtime-loop-branchweight.ll
index 6e3bbe1..2617199 100644
--- a/llvm/test/Transforms/LoopUnroll/runtime-loop-branchweight.ll
+++ b/llvm/test/Transforms/LoopUnroll/runtime-loop-branchweight.ll
@@ -3,7 +3,7 @@
;; Check that the remainder loop is properly assigned a branch weight for its latch branch.
; CHECK-LABEL: @test(
; CHECK-LABEL: for.body:
-; CHECK: br i1 [[COND1:%.*]], label %for.end.loopexit.unr-lcssa.loopexit, label %for.body, !prof ![[#PROF:]], !llvm.loop ![[#LOOP:]]
+; CHECK: br i1 [[COND1:%.*]], label %for.end.loopexit.unr-lcssa, label %for.body, !prof ![[#PROF:]], !llvm.loop ![[#LOOP:]]
; CHECK-LABEL: for.body.epil:
; CHECK: br i1 [[COND2:%.*]], label %for.body.epil, label %for.end.loopexit.epilog-lcssa, !prof ![[#PROF2:]], !llvm.loop ![[#LOOP2:]]
; CHECK: ![[#PROF]] = !{!"branch_weights", i32 1, i32 2499}
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-loop-multiple-exits.ll b/llvm/test/Transforms/LoopUnroll/runtime-loop-multiple-exits.ll
index 5f6e66e..6835e9b 100644
--- a/llvm/test/Transforms/LoopUnroll/runtime-loop-multiple-exits.ll
+++ b/llvm/test/Transforms/LoopUnroll/runtime-loop-multiple-exits.ll
@@ -15,7 +15,7 @@ define void @test1(i64 %trip, i1 %cond) {
; EPILOG-NEXT: %1 = add i64 %0, -1
; EPILOG-NEXT: %xtraiter = and i64 %0, 7
; EPILOG-NEXT: %2 = icmp ult i64 %1, 7
-; EPILOG-NEXT: br i1 %2, label %exit2.loopexit.unr-lcssa, label %entry.new
+; EPILOG-NEXT: br i1 %2, label %loop_header.epil.preheader, label %entry.new
; EPILOG: entry.new:
; EPILOG-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-NEXT: br label %loop_header
@@ -29,7 +29,7 @@ define void @test1(i64 %trip, i1 %cond) {
; EPILOG-NEXT: br i1 false, label %loop_latch, label %exit3.loopexit
; EPILOG: exit3.loopexit:
; EPILOG-NEXT: br label %exit3
-; EPILOG: exit3.loopexit2:
+; EPILOG: exit3.loopexit3:
; EPILOG-NEXT: br label %exit3
; EPILOG: exit3:
; EPILOG-NEXT: ret void
@@ -79,30 +79,30 @@ define void @test1(i64 %trip, i1 %cond) {
; EPILOG-NEXT: %iv_next.7 = add i64 %iv, 8
; EPILOG-NEXT: %niter.next.7 = add i64 %niter, 8
; EPILOG-NEXT: %niter.ncmp.7 = icmp ne i64 %niter.next.7, %unroll_iter
-; EPILOG-NEXT: br i1 %niter.ncmp.7, label %loop_header, label %exit2.loopexit.unr-lcssa.loopexit
+; EPILOG-NEXT: br i1 %niter.ncmp.7, label %loop_header, label %exit2.loopexit.unr-lcssa
; EPILOG: exit1.loopexit:
; EPILOG-NEXT: br label %exit1
-; EPILOG: exit1.loopexit1:
+; EPILOG: exit1.loopexit2:
; EPILOG-NEXT: br label %exit1
; EPILOG: exit1:
; EPILOG-NEXT: ret void
-; EPILOG: exit2.loopexit.unr-lcssa.loopexit:
-; EPILOG-NEXT: %iv.unr.ph = phi i64 [ %iv_next.7, %loop_latch.7 ]
-; EPILOG-NEXT: br label %exit2.loopexit.unr-lcssa
; EPILOG: exit2.loopexit.unr-lcssa:
-; EPILOG-NEXT: %iv.unr = phi i64 [ 0, %entry ], [ %iv.unr.ph, %exit2.loopexit.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %iv.unr = phi i64 [ %iv_next.7, %loop_latch.7 ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-NEXT: br i1 %lcmp.mod, label %loop_header.epil.preheader, label %exit2.loopexit
; EPILOG: loop_header.epil.preheader:
+; EPILOG-NEXT: %iv.epil.init = phi i64 [ 0, %entry ], [ %iv.unr, %exit2.loopexit.unr-lcssa ]
+; EPILOG-NEXT: %lcmp.mod1 = icmp ne i64 %xtraiter, 0
+; EPILOG-NEXT: call void @llvm.assume(i1 %lcmp.mod1)
; EPILOG-NEXT: br label %loop_header.epil
; EPILOG: loop_header.epil:
-; EPILOG-NEXT: %iv.epil = phi i64 [ %iv.unr, %loop_header.epil.preheader ], [ %iv_next.epil, %loop_latch.epil ]
+; EPILOG-NEXT: %iv.epil = phi i64 [ %iv.epil.init, %loop_header.epil.preheader ], [ %iv_next.epil, %loop_latch.epil ]
; EPILOG-NEXT: %epil.iter = phi i64 [ 0, %loop_header.epil.preheader ], [ %epil.iter.next, %loop_latch.epil ]
; EPILOG-NEXT: br i1 %cond, label %loop_latch.epil, label %loop_exiting_bb1.epil
; EPILOG: loop_exiting_bb1.epil:
-; EPILOG-NEXT: br i1 false, label %loop_exiting_bb2.epil, label %exit1.loopexit1
+; EPILOG-NEXT: br i1 false, label %loop_exiting_bb2.epil, label %exit1.loopexit2
; EPILOG: loop_exiting_bb2.epil:
-; EPILOG-NEXT: br i1 false, label %loop_latch.epil, label %exit3.loopexit2
+; EPILOG-NEXT: br i1 false, label %loop_latch.epil, label %exit3.loopexit3
; EPILOG: loop_latch.epil:
; EPILOG-NEXT: %iv_next.epil = add i64 %iv.epil, 1
; EPILOG-NEXT: %cmp.epil = icmp ne i64 %iv_next.epil, %trip
@@ -120,7 +120,7 @@ define void @test1(i64 %trip, i1 %cond) {
; EPILOG-BLOCK-NEXT: %1 = add i64 %0, -1
; EPILOG-BLOCK-NEXT: %xtraiter = and i64 %0, 1
; EPILOG-BLOCK-NEXT: %2 = icmp ult i64 %1, 1
-; EPILOG-BLOCK-NEXT: br i1 %2, label %exit2.loopexit.unr-lcssa, label %entry.new
+; EPILOG-BLOCK-NEXT: br i1 %2, label %loop_header.epil.preheader, label %entry.new
; EPILOG-BLOCK: entry.new:
; EPILOG-BLOCK-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-BLOCK-NEXT: br label %loop_header
@@ -146,17 +146,17 @@ define void @test1(i64 %trip, i1 %cond) {
; EPILOG-BLOCK-NEXT: %iv_next.1 = add i64 %iv, 2
; EPILOG-BLOCK-NEXT: %niter.next.1 = add i64 %niter, 2
; EPILOG-BLOCK-NEXT: %niter.ncmp.1 = icmp ne i64 %niter.next.1, %unroll_iter
-; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %loop_header, label %exit2.loopexit.unr-lcssa.loopexit, !llvm.loop !0
+; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %loop_header, label %exit2.loopexit.unr-lcssa, !llvm.loop !0
; EPILOG-BLOCK: exit1.loopexit:
; EPILOG-BLOCK-NEXT: br label %exit1
; EPILOG-BLOCK: exit1:
; EPILOG-BLOCK-NEXT: ret void
-; EPILOG-BLOCK: exit2.loopexit.unr-lcssa.loopexit:
-; EPILOG-BLOCK-NEXT: br label %exit2.loopexit.unr-lcssa
; EPILOG-BLOCK: exit2.loopexit.unr-lcssa:
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-BLOCK-NEXT: br i1 %lcmp.mod, label %loop_header.epil.preheader, label %exit2.loopexit
; EPILOG-BLOCK: loop_header.epil.preheader:
+; EPILOG-BLOCK-NEXT: %lcmp.mod1 = icmp ne i64 %xtraiter, 0
+; EPILOG-BLOCK-NEXT: call void @llvm.assume(i1 %lcmp.mod1)
; EPILOG-BLOCK-NEXT: br label %loop_header.epil
; EPILOG-BLOCK: loop_header.epil:
; EPILOG-BLOCK-NEXT: br i1 %cond, label %loop_latch.epil, label %loop_exiting_bb1.epil
@@ -366,7 +366,7 @@ define i32 @test2(ptr nocapture %a, i64 %n) {
; EPILOG-NEXT: %1 = add i64 %0, -1
; EPILOG-NEXT: %xtraiter = and i64 %0, 7
; EPILOG-NEXT: %2 = icmp ult i64 %1, 7
-; EPILOG-NEXT: br i1 %2, label %for.end.unr-lcssa, label %entry.new
+; EPILOG-NEXT: br i1 %2, label %header.epil.preheader, label %entry.new
; EPILOG: entry.new:
; EPILOG-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-NEXT: br label %header
@@ -448,28 +448,27 @@ define i32 @test2(ptr nocapture %a, i64 %n) {
; EPILOG-NEXT: %indvars.iv.next.7 = add i64 %indvars.iv, 8
; EPILOG-NEXT: %niter.next.7 = add i64 %niter, 8
; EPILOG-NEXT: %niter.ncmp.7 = icmp eq i64 %niter.next.7, %unroll_iter
-; EPILOG-NEXT: br i1 %niter.ncmp.7, label %for.end.unr-lcssa.loopexit, label %header
-; EPILOG: for.end.unr-lcssa.loopexit:
-; EPILOG-NEXT: %sum.0.lcssa.ph.ph = phi i32 [ %add.7, %for.body.7 ]
-; EPILOG-NEXT: %indvars.iv.unr.ph = phi i64 [ %indvars.iv.next.7, %for.body.7 ]
-; EPILOG-NEXT: %sum.02.unr.ph = phi i32 [ %add.7, %for.body.7 ]
-; EPILOG-NEXT: br label %for.end.unr-lcssa
+; EPILOG-NEXT: br i1 %niter.ncmp.7, label %for.end.unr-lcssa, label %header
; EPILOG: for.end.unr-lcssa:
-; EPILOG-NEXT: %sum.0.lcssa.ph = phi i32 [ poison, %entry ], [ %sum.0.lcssa.ph.ph, %for.end.unr-lcssa.loopexit ]
-; EPILOG-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %for.end.unr-lcssa.loopexit ]
-; EPILOG-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %for.end.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %sum.0.lcssa.ph = phi i32 [ %add.7, %for.body.7 ]
+; EPILOG-NEXT: %indvars.iv.unr = phi i64 [ %indvars.iv.next.7, %for.body.7 ]
+; EPILOG-NEXT: %sum.02.unr = phi i32 [ %add.7, %for.body.7 ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-NEXT: br i1 %lcmp.mod, label %header.epil.preheader, label %for.end
; EPILOG: header.epil.preheader:
+; EPILOG-NEXT: %indvars.iv.epil.init = phi i64 [ 0, %entry ], [ %indvars.iv.unr, %for.end.unr-lcssa ]
+; EPILOG-NEXT: %sum.02.epil.init = phi i32 [ 0, %entry ], [ %sum.02.unr, %for.end.unr-lcssa ]
+; EPILOG-NEXT: %lcmp.mod2 = icmp ne i64 %xtraiter, 0
+; EPILOG-NEXT: call void @llvm.assume(i1 %lcmp.mod2)
; EPILOG-NEXT: br label %header.epil
; EPILOG: header.epil:
-; EPILOG-NEXT: %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %for.body.epil ], [ %indvars.iv.unr, %header.epil.preheader ]
-; EPILOG-NEXT: %sum.02.epil = phi i32 [ %add.epil, %for.body.epil ], [ %sum.02.unr, %header.epil.preheader ]
+; EPILOG-NEXT: %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %for.body.epil ], [ %indvars.iv.epil.init, %header.epil.preheader ]
+; EPILOG-NEXT: %sum.02.epil = phi i32 [ %add.epil, %for.body.epil ], [ %sum.02.epil.init, %header.epil.preheader ]
; EPILOG-NEXT: %epil.iter = phi i64 [ 0, %header.epil.preheader ], [ %epil.iter.next, %for.body.epil ]
-; EPILOG-NEXT: br i1 false, label %for.exit2.loopexit2, label %for.exiting_block.epil
+; EPILOG-NEXT: br i1 false, label %for.exit2.loopexit3, label %for.exiting_block.epil
; EPILOG: for.exiting_block.epil:
; EPILOG-NEXT: %cmp.epil = icmp eq i64 %n, 42
-; EPILOG-NEXT: br i1 %cmp.epil, label %for.exit2.loopexit2, label %for.body.epil
+; EPILOG-NEXT: br i1 %cmp.epil, label %for.exit2.loopexit3, label %for.body.epil
; EPILOG: for.body.epil:
; EPILOG-NEXT: %arrayidx.epil = getelementptr inbounds i32, ptr %a, i64 %indvars.iv.epil
; EPILOG-NEXT: %11 = load i32, ptr %arrayidx.epil, align 4
@@ -488,11 +487,11 @@ define i32 @test2(ptr nocapture %a, i64 %n) {
; EPILOG: for.exit2.loopexit:
; EPILOG-NEXT: %retval.ph = phi i32 [ 42, %for.exiting_block ], [ %sum.02, %header ], [ %add, %for.body ], [ 42, %for.exiting_block.1 ], [ %add.1, %for.body.1 ], [ 42, %for.exiting_block.2 ], [ %add.2, %for.body.2 ], [ 42, %for.exiting_block.3 ], [ %add.3, %for.body.3 ], [ 42, %for.exiting_block.4 ], [ %add.4, %for.body.4 ], [ 42, %for.exiting_block.5 ], [ %add.5, %for.body.5 ], [ 42, %for.exiting_block.6 ], [ %add.6, %for.body.6 ], [ 42, %for.exiting_block.7 ]
; EPILOG-NEXT: br label %for.exit2
-; EPILOG: for.exit2.loopexit2:
-; EPILOG-NEXT: %retval.ph3 = phi i32 [ 42, %for.exiting_block.epil ], [ %sum.02.epil, %header.epil ]
+; EPILOG: for.exit2.loopexit3:
+; EPILOG-NEXT: %retval.ph4 = phi i32 [ 42, %for.exiting_block.epil ], [ %sum.02.epil, %header.epil ]
; EPILOG-NEXT: br label %for.exit2
; EPILOG: for.exit2:
-; EPILOG-NEXT: %retval = phi i32 [ %retval.ph, %for.exit2.loopexit ], [ %retval.ph3, %for.exit2.loopexit2 ]
+; EPILOG-NEXT: %retval = phi i32 [ %retval.ph, %for.exit2.loopexit ], [ %retval.ph4, %for.exit2.loopexit3 ]
; EPILOG-NEXT: ret i32 %retval
;
; EPILOG-BLOCK-LABEL: @test2(
@@ -501,7 +500,7 @@ define i32 @test2(ptr nocapture %a, i64 %n) {
; EPILOG-BLOCK-NEXT: %1 = add i64 %0, -1
; EPILOG-BLOCK-NEXT: %xtraiter = and i64 %0, 1
; EPILOG-BLOCK-NEXT: %2 = icmp ult i64 %1, 1
-; EPILOG-BLOCK-NEXT: br i1 %2, label %for.end.unr-lcssa, label %entry.new
+; EPILOG-BLOCK-NEXT: br i1 %2, label %header.epil.preheader, label %entry.new
; EPILOG-BLOCK: entry.new:
; EPILOG-BLOCK-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-BLOCK-NEXT: br label %header
@@ -529,19 +528,18 @@ define i32 @test2(ptr nocapture %a, i64 %n) {
; EPILOG-BLOCK-NEXT: %indvars.iv.next.1 = add i64 %indvars.iv, 2
; EPILOG-BLOCK-NEXT: %niter.next.1 = add i64 %niter, 2
; EPILOG-BLOCK-NEXT: %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
-; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %for.end.unr-lcssa.loopexit, label %header, !llvm.loop !2
-; EPILOG-BLOCK: for.end.unr-lcssa.loopexit:
-; EPILOG-BLOCK-NEXT: %sum.0.lcssa.ph.ph = phi i32 [ %add.1, %for.body.1 ]
-; EPILOG-BLOCK-NEXT: %indvars.iv.unr.ph = phi i64 [ %indvars.iv.next.1, %for.body.1 ]
-; EPILOG-BLOCK-NEXT: %sum.02.unr.ph = phi i32 [ %add.1, %for.body.1 ]
-; EPILOG-BLOCK-NEXT: br label %for.end.unr-lcssa
+; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %for.end.unr-lcssa, label %header, !llvm.loop !2
; EPILOG-BLOCK: for.end.unr-lcssa:
-; EPILOG-BLOCK-NEXT: %sum.0.lcssa.ph = phi i32 [ poison, %entry ], [ %sum.0.lcssa.ph.ph, %for.end.unr-lcssa.loopexit ]
-; EPILOG-BLOCK-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %for.end.unr-lcssa.loopexit ]
-; EPILOG-BLOCK-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %for.end.unr-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %sum.0.lcssa.ph = phi i32 [ %add.1, %for.body.1 ]
+; EPILOG-BLOCK-NEXT: %indvars.iv.unr = phi i64 [ %indvars.iv.next.1, %for.body.1 ]
+; EPILOG-BLOCK-NEXT: %sum.02.unr = phi i32 [ %add.1, %for.body.1 ]
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-BLOCK-NEXT: br i1 %lcmp.mod, label %header.epil.preheader, label %for.end
; EPILOG-BLOCK: header.epil.preheader:
+; EPILOG-BLOCK-NEXT: %indvars.iv.epil.init = phi i64 [ 0, %entry ], [ %indvars.iv.unr, %for.end.unr-lcssa ]
+; EPILOG-BLOCK-NEXT: %sum.02.epil.init = phi i32 [ 0, %entry ], [ %sum.02.unr, %for.end.unr-lcssa ]
+; EPILOG-BLOCK-NEXT: %lcmp.mod2 = icmp ne i64 %xtraiter, 0
+; EPILOG-BLOCK-NEXT: call void @llvm.assume(i1 %lcmp.mod2)
; EPILOG-BLOCK-NEXT: br label %header.epil
; EPILOG-BLOCK: header.epil:
; EPILOG-BLOCK-NEXT: br i1 false, label %for.exit2, label %for.exiting_block.epil
@@ -549,9 +547,9 @@ define i32 @test2(ptr nocapture %a, i64 %n) {
; EPILOG-BLOCK-NEXT: %cmp.epil = icmp eq i64 %n, 42
; EPILOG-BLOCK-NEXT: br i1 %cmp.epil, label %for.exit2, label %for.body.epil
; EPILOG-BLOCK: for.body.epil:
-; EPILOG-BLOCK-NEXT: %arrayidx.epil = getelementptr inbounds i32, ptr %a, i64 %indvars.iv.unr
+; EPILOG-BLOCK-NEXT: %arrayidx.epil = getelementptr inbounds i32, ptr %a, i64 %indvars.iv.epil.init
; EPILOG-BLOCK-NEXT: %5 = load i32, ptr %arrayidx.epil, align 4
-; EPILOG-BLOCK-NEXT: %add.epil = add nsw i32 %5, %sum.02.unr
+; EPILOG-BLOCK-NEXT: %add.epil = add nsw i32 %5, %sum.02.epil.init
; EPILOG-BLOCK-NEXT: br label %for.end
; EPILOG-BLOCK: for.end:
; EPILOG-BLOCK-NEXT: %sum.0.lcssa = phi i32 [ %sum.0.lcssa.ph, %for.end.unr-lcssa ], [ %add.epil, %for.body.epil ]
@@ -560,7 +558,7 @@ define i32 @test2(ptr nocapture %a, i64 %n) {
; EPILOG-BLOCK-NEXT: %retval.ph = phi i32 [ 42, %for.exiting_block ], [ %sum.02, %header ], [ %add, %for.body ], [ 42, %for.exiting_block.1 ]
; EPILOG-BLOCK-NEXT: br label %for.exit2
; EPILOG-BLOCK: for.exit2:
-; EPILOG-BLOCK-NEXT: %retval = phi i32 [ %sum.02.unr, %header.epil ], [ 42, %for.exiting_block.epil ], [ %retval.ph, %for.exit2.loopexit ]
+; EPILOG-BLOCK-NEXT: %retval = phi i32 [ %sum.02.epil.init, %header.epil ], [ 42, %for.exiting_block.epil ], [ %retval.ph, %for.exit2.loopexit ]
; EPILOG-BLOCK-NEXT: ret i32 %retval
;
; PROLOG-LABEL: @test2(
@@ -796,7 +794,7 @@ define void @test3(i64 %trip, i64 %add, i1 %arg) {
; EPILOG-NEXT: %1 = add i64 %0, -1
; EPILOG-NEXT: %xtraiter = and i64 %0, 7
; EPILOG-NEXT: %2 = icmp ult i64 %1, 7
-; EPILOG-NEXT: br i1 %2, label %exit2.loopexit.unr-lcssa, label %entry.new
+; EPILOG-NEXT: br i1 %2, label %loop_header.epil.preheader, label %entry.new
; EPILOG: entry.new:
; EPILOG-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-NEXT: br label %loop_header
@@ -812,7 +810,7 @@ define void @test3(i64 %trip, i64 %add, i1 %arg) {
; EPILOG-NEXT: ]
; EPILOG: exit3.loopexit:
; EPILOG-NEXT: br label %exit3
-; EPILOG: exit3.loopexit2:
+; EPILOG: exit3.loopexit3:
; EPILOG-NEXT: br label %exit3
; EPILOG: exit3:
; EPILOG-NEXT: ret void
@@ -877,33 +875,33 @@ define void @test3(i64 %trip, i64 %add, i1 %arg) {
; EPILOG-NEXT: %sum.next.7 = add i64 %sum.next.6, %add
; EPILOG-NEXT: %niter.next.7 = add i64 %niter, 8
; EPILOG-NEXT: %niter.ncmp.7 = icmp ne i64 %niter.next.7, %unroll_iter
-; EPILOG-NEXT: br i1 %niter.ncmp.7, label %loop_header, label %exit2.loopexit.unr-lcssa.loopexit
+; EPILOG-NEXT: br i1 %niter.ncmp.7, label %loop_header, label %exit2.loopexit.unr-lcssa
; EPILOG: exit1.loopexit:
; EPILOG-NEXT: br label %exit1
-; EPILOG: exit1.loopexit1:
+; EPILOG: exit1.loopexit2:
; EPILOG-NEXT: br label %exit1
; EPILOG: exit1:
; EPILOG-NEXT: ret void
-; EPILOG: exit2.loopexit.unr-lcssa.loopexit:
-; EPILOG-NEXT: %iv.unr.ph = phi i64 [ %iv_next.7, %loop_latch.7 ]
-; EPILOG-NEXT: %sum.unr.ph = phi i64 [ %sum.next.7, %loop_latch.7 ]
-; EPILOG-NEXT: br label %exit2.loopexit.unr-lcssa
; EPILOG: exit2.loopexit.unr-lcssa:
-; EPILOG-NEXT: %iv.unr = phi i64 [ 0, %entry ], [ %iv.unr.ph, %exit2.loopexit.unr-lcssa.loopexit ]
-; EPILOG-NEXT: %sum.unr = phi i64 [ 0, %entry ], [ %sum.unr.ph, %exit2.loopexit.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %iv.unr = phi i64 [ %iv_next.7, %loop_latch.7 ]
+; EPILOG-NEXT: %sum.unr = phi i64 [ %sum.next.7, %loop_latch.7 ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-NEXT: br i1 %lcmp.mod, label %loop_header.epil.preheader, label %exit2.loopexit
; EPILOG: loop_header.epil.preheader:
+; EPILOG-NEXT: %iv.epil.init = phi i64 [ 0, %entry ], [ %iv.unr, %exit2.loopexit.unr-lcssa ]
+; EPILOG-NEXT: %sum.epil.init = phi i64 [ 0, %entry ], [ %sum.unr, %exit2.loopexit.unr-lcssa ]
+; EPILOG-NEXT: %lcmp.mod1 = icmp ne i64 %xtraiter, 0
+; EPILOG-NEXT: call void @llvm.assume(i1 %lcmp.mod1)
; EPILOG-NEXT: br label %loop_header.epil
; EPILOG: loop_header.epil:
-; EPILOG-NEXT: %iv.epil = phi i64 [ %iv.unr, %loop_header.epil.preheader ], [ %iv_next.epil, %loop_latch.epil ]
-; EPILOG-NEXT: %sum.epil = phi i64 [ %sum.unr, %loop_header.epil.preheader ], [ %sum.next.epil, %loop_latch.epil ]
+; EPILOG-NEXT: %iv.epil = phi i64 [ %iv.epil.init, %loop_header.epil.preheader ], [ %iv_next.epil, %loop_latch.epil ]
+; EPILOG-NEXT: %sum.epil = phi i64 [ %sum.epil.init, %loop_header.epil.preheader ], [ %sum.next.epil, %loop_latch.epil ]
; EPILOG-NEXT: %epil.iter = phi i64 [ 0, %loop_header.epil.preheader ], [ %epil.iter.next, %loop_latch.epil ]
; EPILOG-NEXT: br i1 %arg, label %loop_latch.epil, label %loop_exiting_bb1.epil
; EPILOG: loop_exiting_bb1.epil:
; EPILOG-NEXT: switch i64 %sum.epil, label %loop_latch.epil [
-; EPILOG-NEXT: i64 24, label %exit1.loopexit1
-; EPILOG-NEXT: i64 42, label %exit3.loopexit2
+; EPILOG-NEXT: i64 24, label %exit1.loopexit2
+; EPILOG-NEXT: i64 42, label %exit3.loopexit3
; EPILOG-NEXT: ]
; EPILOG: loop_latch.epil:
; EPILOG-NEXT: %iv_next.epil = add nuw nsw i64 %iv.epil, 1
@@ -923,7 +921,7 @@ define void @test3(i64 %trip, i64 %add, i1 %arg) {
; EPILOG-BLOCK-NEXT: %1 = add i64 %0, -1
; EPILOG-BLOCK-NEXT: %xtraiter = and i64 %0, 1
; EPILOG-BLOCK-NEXT: %2 = icmp ult i64 %1, 1
-; EPILOG-BLOCK-NEXT: br i1 %2, label %exit2.loopexit.unr-lcssa, label %entry.new
+; EPILOG-BLOCK-NEXT: br i1 %2, label %loop_header.epil.preheader, label %entry.new
; EPILOG-BLOCK: entry.new:
; EPILOG-BLOCK-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-BLOCK-NEXT: br label %loop_header
@@ -954,24 +952,24 @@ define void @test3(i64 %trip, i64 %add, i1 %arg) {
; EPILOG-BLOCK-NEXT: %sum.next.1 = add i64 %sum.next, %add
; EPILOG-BLOCK-NEXT: %niter.next.1 = add i64 %niter, 2
; EPILOG-BLOCK-NEXT: %niter.ncmp.1 = icmp ne i64 %niter.next.1, %unroll_iter
-; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %loop_header, label %exit2.loopexit.unr-lcssa.loopexit, !llvm.loop !3
+; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %loop_header, label %exit2.loopexit.unr-lcssa, !llvm.loop !3
; EPILOG-BLOCK: exit1.loopexit:
; EPILOG-BLOCK-NEXT: br label %exit1
; EPILOG-BLOCK: exit1:
; EPILOG-BLOCK-NEXT: ret void
-; EPILOG-BLOCK: exit2.loopexit.unr-lcssa.loopexit:
-; EPILOG-BLOCK-NEXT: %sum.unr.ph = phi i64 [ %sum.next.1, %loop_latch.1 ]
-; EPILOG-BLOCK-NEXT: br label %exit2.loopexit.unr-lcssa
; EPILOG-BLOCK: exit2.loopexit.unr-lcssa:
-; EPILOG-BLOCK-NEXT: %sum.unr = phi i64 [ 0, %entry ], [ %sum.unr.ph, %exit2.loopexit.unr-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %sum.unr = phi i64 [ %sum.next.1, %loop_latch.1 ]
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-BLOCK-NEXT: br i1 %lcmp.mod, label %loop_header.epil.preheader, label %exit2.loopexit
; EPILOG-BLOCK: loop_header.epil.preheader:
+; EPILOG-BLOCK-NEXT: %sum.epil.init = phi i64 [ 0, %entry ], [ %sum.unr, %exit2.loopexit.unr-lcssa ]
+; EPILOG-BLOCK-NEXT: %lcmp.mod1 = icmp ne i64 %xtraiter, 0
+; EPILOG-BLOCK-NEXT: call void @llvm.assume(i1 %lcmp.mod1)
; EPILOG-BLOCK-NEXT: br label %loop_header.epil
; EPILOG-BLOCK: loop_header.epil:
; EPILOG-BLOCK-NEXT: br i1 %arg, label %loop_latch.epil, label %loop_exiting_bb1.epil
; EPILOG-BLOCK: loop_exiting_bb1.epil:
-; EPILOG-BLOCK-NEXT: switch i64 %sum.unr, label %loop_latch.epil [
+; EPILOG-BLOCK-NEXT: switch i64 %sum.epil.init, label %loop_latch.epil [
; EPILOG-BLOCK-NEXT: i64 24, label %exit1
; EPILOG-BLOCK-NEXT: i64 42, label %exit3
; EPILOG-BLOCK-NEXT: ]
@@ -1204,7 +1202,7 @@ define i32 @hdr_latch_same_exit(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-NEXT: %1 = add i64 %0, -1
; EPILOG-NEXT: %xtraiter = and i64 %0, 7
; EPILOG-NEXT: %2 = icmp ult i64 %1, 7
-; EPILOG-NEXT: br i1 %2, label %latchExit.unr-lcssa, label %entry.new
+; EPILOG-NEXT: br i1 %2, label %header.epil.preheader, label %entry.new
; EPILOG: entry.new:
; EPILOG-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-NEXT: br label %header
@@ -1286,28 +1284,27 @@ define i32 @hdr_latch_same_exit(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-NEXT: %indvars.iv.next.7 = add i64 %indvars.iv, 8
; EPILOG-NEXT: %niter.next.7 = add i64 %niter, 8
; EPILOG-NEXT: %niter.ncmp.7 = icmp eq i64 %niter.next.7, %unroll_iter
-; EPILOG-NEXT: br i1 %niter.ncmp.7, label %latchExit.unr-lcssa.loopexit, label %header
-; EPILOG: latchExit.unr-lcssa.loopexit:
-; EPILOG-NEXT: %result.ph.ph = phi i32 [ %add.7, %latch.7 ]
-; EPILOG-NEXT: %indvars.iv.unr.ph = phi i64 [ %indvars.iv.next.7, %latch.7 ]
-; EPILOG-NEXT: %sum.02.unr.ph = phi i32 [ %add.7, %latch.7 ]
-; EPILOG-NEXT: br label %latchExit.unr-lcssa
+; EPILOG-NEXT: br i1 %niter.ncmp.7, label %latchExit.unr-lcssa, label %header
; EPILOG: latchExit.unr-lcssa:
-; EPILOG-NEXT: %result.ph = phi i32 [ poison, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
-; EPILOG-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %latchExit.unr-lcssa.loopexit ]
-; EPILOG-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %latchExit.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %result.ph = phi i32 [ %add.7, %latch.7 ]
+; EPILOG-NEXT: %indvars.iv.unr = phi i64 [ %indvars.iv.next.7, %latch.7 ]
+; EPILOG-NEXT: %sum.02.unr = phi i32 [ %add.7, %latch.7 ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-NEXT: br i1 %lcmp.mod, label %header.epil.preheader, label %latchExit
; EPILOG: header.epil.preheader:
+; EPILOG-NEXT: %indvars.iv.epil.init = phi i64 [ 0, %entry ], [ %indvars.iv.unr, %latchExit.unr-lcssa ]
+; EPILOG-NEXT: %sum.02.epil.init = phi i32 [ 0, %entry ], [ %sum.02.unr, %latchExit.unr-lcssa ]
+; EPILOG-NEXT: %lcmp.mod2 = icmp ne i64 %xtraiter, 0
+; EPILOG-NEXT: call void @llvm.assume(i1 %lcmp.mod2)
; EPILOG-NEXT: br label %header.epil
; EPILOG: header.epil:
-; EPILOG-NEXT: %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %latch.epil ], [ %indvars.iv.unr, %header.epil.preheader ]
-; EPILOG-NEXT: %sum.02.epil = phi i32 [ %add.epil, %latch.epil ], [ %sum.02.unr, %header.epil.preheader ]
+; EPILOG-NEXT: %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %latch.epil ], [ %indvars.iv.epil.init, %header.epil.preheader ]
+; EPILOG-NEXT: %sum.02.epil = phi i32 [ %add.epil, %latch.epil ], [ %sum.02.epil.init, %header.epil.preheader ]
; EPILOG-NEXT: %epil.iter = phi i64 [ 0, %header.epil.preheader ], [ %epil.iter.next, %latch.epil ]
-; EPILOG-NEXT: br i1 %cond, label %latchExit.epilog-lcssa.loopexit2, label %for.exiting_block.epil
+; EPILOG-NEXT: br i1 %cond, label %latchExit.epilog-lcssa.loopexit3, label %for.exiting_block.epil
; EPILOG: for.exiting_block.epil:
; EPILOG-NEXT: %cmp.epil = icmp eq i64 %n, 42
-; EPILOG-NEXT: br i1 %cmp.epil, label %for.exit2.loopexit4, label %latch.epil
+; EPILOG-NEXT: br i1 %cmp.epil, label %for.exit2.loopexit5, label %latch.epil
; EPILOG: latch.epil:
; EPILOG-NEXT: %arrayidx.epil = getelementptr inbounds i32, ptr %a, i64 %indvars.iv.epil
; EPILOG-NEXT: %11 = load i32, ptr %arrayidx.epil, align 4
@@ -1316,22 +1313,22 @@ define i32 @hdr_latch_same_exit(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-NEXT: %exitcond.epil = icmp eq i64 %indvars.iv.next.epil, %n
; EPILOG-NEXT: %epil.iter.next = add i64 %epil.iter, 1
; EPILOG-NEXT: %epil.iter.cmp = icmp ne i64 %epil.iter.next, %xtraiter
-; EPILOG-NEXT: br i1 %epil.iter.cmp, label %header.epil, label %latchExit.epilog-lcssa.loopexit2, !llvm.loop !4
+; EPILOG-NEXT: br i1 %epil.iter.cmp, label %header.epil, label %latchExit.epilog-lcssa.loopexit3, !llvm.loop !4
; EPILOG: latchExit.epilog-lcssa.loopexit:
; EPILOG-NEXT: %result.ph1.ph = phi i32 [ 0, %header ], [ 0, %latch ], [ 0, %latch.1 ], [ 0, %latch.2 ], [ 0, %latch.3 ], [ 0, %latch.4 ], [ 0, %latch.5 ], [ 0, %latch.6 ]
; EPILOG-NEXT: br label %latchExit.epilog-lcssa
-; EPILOG: latchExit.epilog-lcssa.loopexit2:
-; EPILOG-NEXT: %result.ph1.ph3 = phi i32 [ 0, %header.epil ], [ %add.epil, %latch.epil ]
+; EPILOG: latchExit.epilog-lcssa.loopexit3:
+; EPILOG-NEXT: %result.ph1.ph4 = phi i32 [ 0, %header.epil ], [ %add.epil, %latch.epil ]
; EPILOG-NEXT: br label %latchExit.epilog-lcssa
; EPILOG: latchExit.epilog-lcssa:
-; EPILOG-NEXT: %result.ph1 = phi i32 [ %result.ph1.ph, %latchExit.epilog-lcssa.loopexit ], [ %result.ph1.ph3, %latchExit.epilog-lcssa.loopexit2 ]
+; EPILOG-NEXT: %result.ph1 = phi i32 [ %result.ph1.ph, %latchExit.epilog-lcssa.loopexit ], [ %result.ph1.ph4, %latchExit.epilog-lcssa.loopexit3 ]
; EPILOG-NEXT: br label %latchExit
; EPILOG: latchExit:
; EPILOG-NEXT: %result = phi i32 [ %result.ph, %latchExit.unr-lcssa ], [ %result.ph1, %latchExit.epilog-lcssa ]
; EPILOG-NEXT: ret i32 %result
; EPILOG: for.exit2.loopexit:
; EPILOG-NEXT: br label %for.exit2
-; EPILOG: for.exit2.loopexit4:
+; EPILOG: for.exit2.loopexit5:
; EPILOG-NEXT: br label %for.exit2
; EPILOG: for.exit2:
; EPILOG-NEXT: ret i32 42
@@ -1342,7 +1339,7 @@ define i32 @hdr_latch_same_exit(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-BLOCK-NEXT: %1 = add i64 %0, -1
; EPILOG-BLOCK-NEXT: %xtraiter = and i64 %0, 1
; EPILOG-BLOCK-NEXT: %2 = icmp ult i64 %1, 1
-; EPILOG-BLOCK-NEXT: br i1 %2, label %latchExit.unr-lcssa, label %entry.new
+; EPILOG-BLOCK-NEXT: br i1 %2, label %header.epil.preheader, label %entry.new
; EPILOG-BLOCK: entry.new:
; EPILOG-BLOCK-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-BLOCK-NEXT: br label %header
@@ -1370,19 +1367,18 @@ define i32 @hdr_latch_same_exit(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-BLOCK-NEXT: %indvars.iv.next.1 = add i64 %indvars.iv, 2
; EPILOG-BLOCK-NEXT: %niter.next.1 = add i64 %niter, 2
; EPILOG-BLOCK-NEXT: %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
-; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %latchExit.unr-lcssa.loopexit, label %header, !llvm.loop !4
-; EPILOG-BLOCK: latchExit.unr-lcssa.loopexit:
-; EPILOG-BLOCK-NEXT: %result.ph.ph = phi i32 [ %add.1, %latch.1 ]
-; EPILOG-BLOCK-NEXT: %indvars.iv.unr.ph = phi i64 [ %indvars.iv.next.1, %latch.1 ]
-; EPILOG-BLOCK-NEXT: %sum.02.unr.ph = phi i32 [ %add.1, %latch.1 ]
-; EPILOG-BLOCK-NEXT: br label %latchExit.unr-lcssa
+; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %latchExit.unr-lcssa, label %header, !llvm.loop !4
; EPILOG-BLOCK: latchExit.unr-lcssa:
-; EPILOG-BLOCK-NEXT: %result.ph = phi i32 [ poison, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
-; EPILOG-BLOCK-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %latchExit.unr-lcssa.loopexit ]
-; EPILOG-BLOCK-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %latchExit.unr-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %result.ph = phi i32 [ %add.1, %latch.1 ]
+; EPILOG-BLOCK-NEXT: %indvars.iv.unr = phi i64 [ %indvars.iv.next.1, %latch.1 ]
+; EPILOG-BLOCK-NEXT: %sum.02.unr = phi i32 [ %add.1, %latch.1 ]
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-BLOCK-NEXT: br i1 %lcmp.mod, label %header.epil.preheader, label %latchExit
; EPILOG-BLOCK: header.epil.preheader:
+; EPILOG-BLOCK-NEXT: %indvars.iv.epil.init = phi i64 [ 0, %entry ], [ %indvars.iv.unr, %latchExit.unr-lcssa ]
+; EPILOG-BLOCK-NEXT: %sum.02.epil.init = phi i32 [ 0, %entry ], [ %sum.02.unr, %latchExit.unr-lcssa ]
+; EPILOG-BLOCK-NEXT: %lcmp.mod2 = icmp ne i64 %xtraiter, 0
+; EPILOG-BLOCK-NEXT: call void @llvm.assume(i1 %lcmp.mod2)
; EPILOG-BLOCK-NEXT: br label %header.epil
; EPILOG-BLOCK: header.epil:
; EPILOG-BLOCK-NEXT: br i1 %cond, label %latchExit.epilog-lcssa, label %for.exiting_block.epil
@@ -1390,9 +1386,9 @@ define i32 @hdr_latch_same_exit(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-BLOCK-NEXT: %cmp.epil = icmp eq i64 %n, 42
; EPILOG-BLOCK-NEXT: br i1 %cmp.epil, label %for.exit2, label %latch.epil
; EPILOG-BLOCK: latch.epil:
-; EPILOG-BLOCK-NEXT: %arrayidx.epil = getelementptr inbounds i32, ptr %a, i64 %indvars.iv.unr
+; EPILOG-BLOCK-NEXT: %arrayidx.epil = getelementptr inbounds i32, ptr %a, i64 %indvars.iv.epil.init
; EPILOG-BLOCK-NEXT: %5 = load i32, ptr %arrayidx.epil, align 4
-; EPILOG-BLOCK-NEXT: %add.epil = add nsw i32 %5, %sum.02.unr
+; EPILOG-BLOCK-NEXT: %add.epil = add nsw i32 %5, %sum.02.epil.init
; EPILOG-BLOCK-NEXT: br label %latchExit.epilog-lcssa
; EPILOG-BLOCK: latchExit.epilog-lcssa.loopexit:
; EPILOG-BLOCK-NEXT: %result.ph1.ph = phi i32 [ 0, %header ], [ 0, %latch ]
@@ -1644,7 +1640,7 @@ define i32 @otherblock_latch_same_exit(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-NEXT: %1 = add i64 %0, -1
; EPILOG-NEXT: %xtraiter = and i64 %0, 7
; EPILOG-NEXT: %2 = icmp ult i64 %1, 7
-; EPILOG-NEXT: br i1 %2, label %latchExit.unr-lcssa, label %entry.new
+; EPILOG-NEXT: br i1 %2, label %header.epil.preheader, label %entry.new
; EPILOG: entry.new:
; EPILOG-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-NEXT: br label %header
@@ -1726,28 +1722,27 @@ define i32 @otherblock_latch_same_exit(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-NEXT: %indvars.iv.next.7 = add i64 %indvars.iv, 8
; EPILOG-NEXT: %niter.next.7 = add i64 %niter, 8
; EPILOG-NEXT: %niter.ncmp.7 = icmp eq i64 %niter.next.7, %unroll_iter
-; EPILOG-NEXT: br i1 %niter.ncmp.7, label %latchExit.unr-lcssa.loopexit, label %header
-; EPILOG: latchExit.unr-lcssa.loopexit:
-; EPILOG-NEXT: %result.ph.ph = phi i32 [ %add.7, %latch.7 ]
-; EPILOG-NEXT: %indvars.iv.unr.ph = phi i64 [ %indvars.iv.next.7, %latch.7 ]
-; EPILOG-NEXT: %sum.02.unr.ph = phi i32 [ %add.7, %latch.7 ]
-; EPILOG-NEXT: br label %latchExit.unr-lcssa
+; EPILOG-NEXT: br i1 %niter.ncmp.7, label %latchExit.unr-lcssa, label %header
; EPILOG: latchExit.unr-lcssa:
-; EPILOG-NEXT: %result.ph = phi i32 [ poison, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
-; EPILOG-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %latchExit.unr-lcssa.loopexit ]
-; EPILOG-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %latchExit.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %result.ph = phi i32 [ %add.7, %latch.7 ]
+; EPILOG-NEXT: %indvars.iv.unr = phi i64 [ %indvars.iv.next.7, %latch.7 ]
+; EPILOG-NEXT: %sum.02.unr = phi i32 [ %add.7, %latch.7 ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-NEXT: br i1 %lcmp.mod, label %header.epil.preheader, label %latchExit
; EPILOG: header.epil.preheader:
+; EPILOG-NEXT: %indvars.iv.epil.init = phi i64 [ 0, %entry ], [ %indvars.iv.unr, %latchExit.unr-lcssa ]
+; EPILOG-NEXT: %sum.02.epil.init = phi i32 [ 0, %entry ], [ %sum.02.unr, %latchExit.unr-lcssa ]
+; EPILOG-NEXT: %lcmp.mod2 = icmp ne i64 %xtraiter, 0
+; EPILOG-NEXT: call void @llvm.assume(i1 %lcmp.mod2)
; EPILOG-NEXT: br label %header.epil
; EPILOG: header.epil:
-; EPILOG-NEXT: %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %latch.epil ], [ %indvars.iv.unr, %header.epil.preheader ]
-; EPILOG-NEXT: %sum.02.epil = phi i32 [ %add.epil, %latch.epil ], [ %sum.02.unr, %header.epil.preheader ]
+; EPILOG-NEXT: %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %latch.epil ], [ %indvars.iv.epil.init, %header.epil.preheader ]
+; EPILOG-NEXT: %sum.02.epil = phi i32 [ %add.epil, %latch.epil ], [ %sum.02.epil.init, %header.epil.preheader ]
; EPILOG-NEXT: %epil.iter = phi i64 [ 0, %header.epil.preheader ], [ %epil.iter.next, %latch.epil ]
-; EPILOG-NEXT: br i1 %cond, label %for.exit2.loopexit2, label %for.exiting_block.epil
+; EPILOG-NEXT: br i1 %cond, label %for.exit2.loopexit3, label %for.exiting_block.epil
; EPILOG: for.exiting_block.epil:
; EPILOG-NEXT: %cmp.epil = icmp eq i64 %n, 42
-; EPILOG-NEXT: br i1 %cmp.epil, label %latchExit.epilog-lcssa.loopexit3, label %latch.epil
+; EPILOG-NEXT: br i1 %cmp.epil, label %latchExit.epilog-lcssa.loopexit4, label %latch.epil
; EPILOG: latch.epil:
; EPILOG-NEXT: %arrayidx.epil = getelementptr inbounds i32, ptr %a, i64 %indvars.iv.epil
; EPILOG-NEXT: %11 = load i32, ptr %arrayidx.epil, align 4
@@ -1756,22 +1751,22 @@ define i32 @otherblock_latch_same_exit(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-NEXT: %exitcond.epil = icmp eq i64 %indvars.iv.next.epil, %n
; EPILOG-NEXT: %epil.iter.next = add i64 %epil.iter, 1
; EPILOG-NEXT: %epil.iter.cmp = icmp ne i64 %epil.iter.next, %xtraiter
-; EPILOG-NEXT: br i1 %epil.iter.cmp, label %header.epil, label %latchExit.epilog-lcssa.loopexit3, !llvm.loop !5
+; EPILOG-NEXT: br i1 %epil.iter.cmp, label %header.epil, label %latchExit.epilog-lcssa.loopexit4, !llvm.loop !5
; EPILOG: latchExit.epilog-lcssa.loopexit:
; EPILOG-NEXT: %result.ph1.ph = phi i32 [ 2, %for.exiting_block ], [ 2, %for.exiting_block.1 ], [ 2, %for.exiting_block.2 ], [ 2, %for.exiting_block.3 ], [ 2, %for.exiting_block.4 ], [ 2, %for.exiting_block.5 ], [ 2, %for.exiting_block.6 ], [ 2, %for.exiting_block.7 ]
; EPILOG-NEXT: br label %latchExit.epilog-lcssa
-; EPILOG: latchExit.epilog-lcssa.loopexit3:
-; EPILOG-NEXT: %result.ph1.ph4 = phi i32 [ 2, %for.exiting_block.epil ], [ %add.epil, %latch.epil ]
+; EPILOG: latchExit.epilog-lcssa.loopexit4:
+; EPILOG-NEXT: %result.ph1.ph5 = phi i32 [ 2, %for.exiting_block.epil ], [ %add.epil, %latch.epil ]
; EPILOG-NEXT: br label %latchExit.epilog-lcssa
; EPILOG: latchExit.epilog-lcssa:
-; EPILOG-NEXT: %result.ph1 = phi i32 [ %result.ph1.ph, %latchExit.epilog-lcssa.loopexit ], [ %result.ph1.ph4, %latchExit.epilog-lcssa.loopexit3 ]
+; EPILOG-NEXT: %result.ph1 = phi i32 [ %result.ph1.ph, %latchExit.epilog-lcssa.loopexit ], [ %result.ph1.ph5, %latchExit.epilog-lcssa.loopexit4 ]
; EPILOG-NEXT: br label %latchExit
; EPILOG: latchExit:
; EPILOG-NEXT: %result = phi i32 [ %result.ph, %latchExit.unr-lcssa ], [ %result.ph1, %latchExit.epilog-lcssa ]
; EPILOG-NEXT: ret i32 %result
; EPILOG: for.exit2.loopexit:
; EPILOG-NEXT: br label %for.exit2
-; EPILOG: for.exit2.loopexit2:
+; EPILOG: for.exit2.loopexit3:
; EPILOG-NEXT: br label %for.exit2
; EPILOG: for.exit2:
; EPILOG-NEXT: ret i32 42
@@ -1782,7 +1777,7 @@ define i32 @otherblock_latch_same_exit(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-BLOCK-NEXT: %1 = add i64 %0, -1
; EPILOG-BLOCK-NEXT: %xtraiter = and i64 %0, 1
; EPILOG-BLOCK-NEXT: %2 = icmp ult i64 %1, 1
-; EPILOG-BLOCK-NEXT: br i1 %2, label %latchExit.unr-lcssa, label %entry.new
+; EPILOG-BLOCK-NEXT: br i1 %2, label %header.epil.preheader, label %entry.new
; EPILOG-BLOCK: entry.new:
; EPILOG-BLOCK-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-BLOCK-NEXT: br label %header
@@ -1810,19 +1805,18 @@ define i32 @otherblock_latch_same_exit(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-BLOCK-NEXT: %indvars.iv.next.1 = add i64 %indvars.iv, 2
; EPILOG-BLOCK-NEXT: %niter.next.1 = add i64 %niter, 2
; EPILOG-BLOCK-NEXT: %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
-; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %latchExit.unr-lcssa.loopexit, label %header, !llvm.loop !5
-; EPILOG-BLOCK: latchExit.unr-lcssa.loopexit:
-; EPILOG-BLOCK-NEXT: %result.ph.ph = phi i32 [ %add.1, %latch.1 ]
-; EPILOG-BLOCK-NEXT: %indvars.iv.unr.ph = phi i64 [ %indvars.iv.next.1, %latch.1 ]
-; EPILOG-BLOCK-NEXT: %sum.02.unr.ph = phi i32 [ %add.1, %latch.1 ]
-; EPILOG-BLOCK-NEXT: br label %latchExit.unr-lcssa
+; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %latchExit.unr-lcssa, label %header, !llvm.loop !5
; EPILOG-BLOCK: latchExit.unr-lcssa:
-; EPILOG-BLOCK-NEXT: %result.ph = phi i32 [ poison, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
-; EPILOG-BLOCK-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %latchExit.unr-lcssa.loopexit ]
-; EPILOG-BLOCK-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %latchExit.unr-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %result.ph = phi i32 [ %add.1, %latch.1 ]
+; EPILOG-BLOCK-NEXT: %indvars.iv.unr = phi i64 [ %indvars.iv.next.1, %latch.1 ]
+; EPILOG-BLOCK-NEXT: %sum.02.unr = phi i32 [ %add.1, %latch.1 ]
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-BLOCK-NEXT: br i1 %lcmp.mod, label %header.epil.preheader, label %latchExit
; EPILOG-BLOCK: header.epil.preheader:
+; EPILOG-BLOCK-NEXT: %indvars.iv.epil.init = phi i64 [ 0, %entry ], [ %indvars.iv.unr, %latchExit.unr-lcssa ]
+; EPILOG-BLOCK-NEXT: %sum.02.epil.init = phi i32 [ 0, %entry ], [ %sum.02.unr, %latchExit.unr-lcssa ]
+; EPILOG-BLOCK-NEXT: %lcmp.mod2 = icmp ne i64 %xtraiter, 0
+; EPILOG-BLOCK-NEXT: call void @llvm.assume(i1 %lcmp.mod2)
; EPILOG-BLOCK-NEXT: br label %header.epil
; EPILOG-BLOCK: header.epil:
; EPILOG-BLOCK-NEXT: br i1 %cond, label %for.exit2, label %for.exiting_block.epil
@@ -1830,9 +1824,9 @@ define i32 @otherblock_latch_same_exit(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-BLOCK-NEXT: %cmp.epil = icmp eq i64 %n, 42
; EPILOG-BLOCK-NEXT: br i1 %cmp.epil, label %latchExit.epilog-lcssa, label %latch.epil
; EPILOG-BLOCK: latch.epil:
-; EPILOG-BLOCK-NEXT: %arrayidx.epil = getelementptr inbounds i32, ptr %a, i64 %indvars.iv.unr
+; EPILOG-BLOCK-NEXT: %arrayidx.epil = getelementptr inbounds i32, ptr %a, i64 %indvars.iv.epil.init
; EPILOG-BLOCK-NEXT: %5 = load i32, ptr %arrayidx.epil, align 4
-; EPILOG-BLOCK-NEXT: %add.epil = add nsw i32 %5, %sum.02.unr
+; EPILOG-BLOCK-NEXT: %add.epil = add nsw i32 %5, %sum.02.epil.init
; EPILOG-BLOCK-NEXT: br label %latchExit.epilog-lcssa
; EPILOG-BLOCK: latchExit.epilog-lcssa.loopexit:
; EPILOG-BLOCK-NEXT: %result.ph1.ph = phi i32 [ 2, %for.exiting_block ], [ 2, %for.exiting_block.1 ]
@@ -2085,7 +2079,7 @@ define i32 @otherblock_latch_same_exit2(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-NEXT: %1 = add i64 %0, -1
; EPILOG-NEXT: %xtraiter = and i64 %0, 7
; EPILOG-NEXT: %2 = icmp ult i64 %1, 7
-; EPILOG-NEXT: br i1 %2, label %latchExit.unr-lcssa, label %entry.new
+; EPILOG-NEXT: br i1 %2, label %header.epil.preheader, label %entry.new
; EPILOG: entry.new:
; EPILOG-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-NEXT: br label %header
@@ -2167,28 +2161,27 @@ define i32 @otherblock_latch_same_exit2(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-NEXT: %indvars.iv.next.7 = add i64 %indvars.iv, 8
; EPILOG-NEXT: %niter.next.7 = add i64 %niter, 8
; EPILOG-NEXT: %niter.ncmp.7 = icmp eq i64 %niter.next.7, %unroll_iter
-; EPILOG-NEXT: br i1 %niter.ncmp.7, label %latchExit.unr-lcssa.loopexit, label %header
-; EPILOG: latchExit.unr-lcssa.loopexit:
-; EPILOG-NEXT: %result.ph.ph = phi i32 [ %add.7, %latch.7 ]
-; EPILOG-NEXT: %indvars.iv.unr.ph = phi i64 [ %indvars.iv.next.7, %latch.7 ]
-; EPILOG-NEXT: %sum.02.unr.ph = phi i32 [ %add.7, %latch.7 ]
-; EPILOG-NEXT: br label %latchExit.unr-lcssa
+; EPILOG-NEXT: br i1 %niter.ncmp.7, label %latchExit.unr-lcssa, label %header
; EPILOG: latchExit.unr-lcssa:
-; EPILOG-NEXT: %result.ph = phi i32 [ poison, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
-; EPILOG-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %latchExit.unr-lcssa.loopexit ]
-; EPILOG-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %latchExit.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %result.ph = phi i32 [ %add.7, %latch.7 ]
+; EPILOG-NEXT: %indvars.iv.unr = phi i64 [ %indvars.iv.next.7, %latch.7 ]
+; EPILOG-NEXT: %sum.02.unr = phi i32 [ %add.7, %latch.7 ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-NEXT: br i1 %lcmp.mod, label %header.epil.preheader, label %latchExit
; EPILOG: header.epil.preheader:
+; EPILOG-NEXT: %indvars.iv.epil.init = phi i64 [ 0, %entry ], [ %indvars.iv.unr, %latchExit.unr-lcssa ]
+; EPILOG-NEXT: %sum.02.epil.init = phi i32 [ 0, %entry ], [ %sum.02.unr, %latchExit.unr-lcssa ]
+; EPILOG-NEXT: %lcmp.mod2 = icmp ne i64 %xtraiter, 0
+; EPILOG-NEXT: call void @llvm.assume(i1 %lcmp.mod2)
; EPILOG-NEXT: br label %header.epil
; EPILOG: header.epil:
-; EPILOG-NEXT: %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %latch.epil ], [ %indvars.iv.unr, %header.epil.preheader ]
-; EPILOG-NEXT: %sum.02.epil = phi i32 [ %add.epil, %latch.epil ], [ %sum.02.unr, %header.epil.preheader ]
+; EPILOG-NEXT: %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %latch.epil ], [ %indvars.iv.epil.init, %header.epil.preheader ]
+; EPILOG-NEXT: %sum.02.epil = phi i32 [ %add.epil, %latch.epil ], [ %sum.02.epil.init, %header.epil.preheader ]
; EPILOG-NEXT: %epil.iter = phi i64 [ 0, %header.epil.preheader ], [ %epil.iter.next, %latch.epil ]
-; EPILOG-NEXT: br i1 %cond, label %for.exit2.loopexit2, label %for.exiting_block.epil
+; EPILOG-NEXT: br i1 %cond, label %for.exit2.loopexit3, label %for.exiting_block.epil
; EPILOG: for.exiting_block.epil:
; EPILOG-NEXT: %cmp.epil = icmp eq i64 %n, 42
-; EPILOG-NEXT: br i1 %cmp.epil, label %latchExit.epilog-lcssa.loopexit3, label %latch.epil
+; EPILOG-NEXT: br i1 %cmp.epil, label %latchExit.epilog-lcssa.loopexit4, label %latch.epil
; EPILOG: latch.epil:
; EPILOG-NEXT: %arrayidx.epil = getelementptr inbounds i32, ptr %a, i64 %indvars.iv.epil
; EPILOG-NEXT: %11 = load i32, ptr %arrayidx.epil, align 4
@@ -2197,22 +2190,22 @@ define i32 @otherblock_latch_same_exit2(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-NEXT: %exitcond.epil = icmp eq i64 %indvars.iv.next.epil, %n
; EPILOG-NEXT: %epil.iter.next = add i64 %epil.iter, 1
; EPILOG-NEXT: %epil.iter.cmp = icmp ne i64 %epil.iter.next, %xtraiter
-; EPILOG-NEXT: br i1 %epil.iter.cmp, label %header.epil, label %latchExit.epilog-lcssa.loopexit3, !llvm.loop !6
+; EPILOG-NEXT: br i1 %epil.iter.cmp, label %header.epil, label %latchExit.epilog-lcssa.loopexit4, !llvm.loop !6
; EPILOG: latchExit.epilog-lcssa.loopexit:
; EPILOG-NEXT: %result.ph1.ph = phi i32 [ %sum.02, %for.exiting_block ], [ %add, %for.exiting_block.1 ], [ %add.1, %for.exiting_block.2 ], [ %add.2, %for.exiting_block.3 ], [ %add.3, %for.exiting_block.4 ], [ %add.4, %for.exiting_block.5 ], [ %add.5, %for.exiting_block.6 ], [ %add.6, %for.exiting_block.7 ]
; EPILOG-NEXT: br label %latchExit.epilog-lcssa
-; EPILOG: latchExit.epilog-lcssa.loopexit3:
-; EPILOG-NEXT: %result.ph1.ph4 = phi i32 [ %sum.02.epil, %for.exiting_block.epil ], [ %add.epil, %latch.epil ]
+; EPILOG: latchExit.epilog-lcssa.loopexit4:
+; EPILOG-NEXT: %result.ph1.ph5 = phi i32 [ %sum.02.epil, %for.exiting_block.epil ], [ %add.epil, %latch.epil ]
; EPILOG-NEXT: br label %latchExit.epilog-lcssa
; EPILOG: latchExit.epilog-lcssa:
-; EPILOG-NEXT: %result.ph1 = phi i32 [ %result.ph1.ph, %latchExit.epilog-lcssa.loopexit ], [ %result.ph1.ph4, %latchExit.epilog-lcssa.loopexit3 ]
+; EPILOG-NEXT: %result.ph1 = phi i32 [ %result.ph1.ph, %latchExit.epilog-lcssa.loopexit ], [ %result.ph1.ph5, %latchExit.epilog-lcssa.loopexit4 ]
; EPILOG-NEXT: br label %latchExit
; EPILOG: latchExit:
; EPILOG-NEXT: %result = phi i32 [ %result.ph, %latchExit.unr-lcssa ], [ %result.ph1, %latchExit.epilog-lcssa ]
; EPILOG-NEXT: ret i32 %result
; EPILOG: for.exit2.loopexit:
; EPILOG-NEXT: br label %for.exit2
-; EPILOG: for.exit2.loopexit2:
+; EPILOG: for.exit2.loopexit3:
; EPILOG-NEXT: br label %for.exit2
; EPILOG: for.exit2:
; EPILOG-NEXT: ret i32 42
@@ -2223,7 +2216,7 @@ define i32 @otherblock_latch_same_exit2(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-BLOCK-NEXT: %1 = add i64 %0, -1
; EPILOG-BLOCK-NEXT: %xtraiter = and i64 %0, 1
; EPILOG-BLOCK-NEXT: %2 = icmp ult i64 %1, 1
-; EPILOG-BLOCK-NEXT: br i1 %2, label %latchExit.unr-lcssa, label %entry.new
+; EPILOG-BLOCK-NEXT: br i1 %2, label %header.epil.preheader, label %entry.new
; EPILOG-BLOCK: entry.new:
; EPILOG-BLOCK-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-BLOCK-NEXT: br label %header
@@ -2251,19 +2244,18 @@ define i32 @otherblock_latch_same_exit2(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-BLOCK-NEXT: %indvars.iv.next.1 = add i64 %indvars.iv, 2
; EPILOG-BLOCK-NEXT: %niter.next.1 = add i64 %niter, 2
; EPILOG-BLOCK-NEXT: %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
-; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %latchExit.unr-lcssa.loopexit, label %header, !llvm.loop !6
-; EPILOG-BLOCK: latchExit.unr-lcssa.loopexit:
-; EPILOG-BLOCK-NEXT: %result.ph.ph = phi i32 [ %add.1, %latch.1 ]
-; EPILOG-BLOCK-NEXT: %indvars.iv.unr.ph = phi i64 [ %indvars.iv.next.1, %latch.1 ]
-; EPILOG-BLOCK-NEXT: %sum.02.unr.ph = phi i32 [ %add.1, %latch.1 ]
-; EPILOG-BLOCK-NEXT: br label %latchExit.unr-lcssa
+; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %latchExit.unr-lcssa, label %header, !llvm.loop !6
; EPILOG-BLOCK: latchExit.unr-lcssa:
-; EPILOG-BLOCK-NEXT: %result.ph = phi i32 [ poison, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
-; EPILOG-BLOCK-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %latchExit.unr-lcssa.loopexit ]
-; EPILOG-BLOCK-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %latchExit.unr-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %result.ph = phi i32 [ %add.1, %latch.1 ]
+; EPILOG-BLOCK-NEXT: %indvars.iv.unr = phi i64 [ %indvars.iv.next.1, %latch.1 ]
+; EPILOG-BLOCK-NEXT: %sum.02.unr = phi i32 [ %add.1, %latch.1 ]
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-BLOCK-NEXT: br i1 %lcmp.mod, label %header.epil.preheader, label %latchExit
; EPILOG-BLOCK: header.epil.preheader:
+; EPILOG-BLOCK-NEXT: %indvars.iv.epil.init = phi i64 [ 0, %entry ], [ %indvars.iv.unr, %latchExit.unr-lcssa ]
+; EPILOG-BLOCK-NEXT: %sum.02.epil.init = phi i32 [ 0, %entry ], [ %sum.02.unr, %latchExit.unr-lcssa ]
+; EPILOG-BLOCK-NEXT: %lcmp.mod2 = icmp ne i64 %xtraiter, 0
+; EPILOG-BLOCK-NEXT: call void @llvm.assume(i1 %lcmp.mod2)
; EPILOG-BLOCK-NEXT: br label %header.epil
; EPILOG-BLOCK: header.epil:
; EPILOG-BLOCK-NEXT: br i1 %cond, label %for.exit2, label %for.exiting_block.epil
@@ -2271,15 +2263,15 @@ define i32 @otherblock_latch_same_exit2(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-BLOCK-NEXT: %cmp.epil = icmp eq i64 %n, 42
; EPILOG-BLOCK-NEXT: br i1 %cmp.epil, label %latchExit.epilog-lcssa, label %latch.epil
; EPILOG-BLOCK: latch.epil:
-; EPILOG-BLOCK-NEXT: %arrayidx.epil = getelementptr inbounds i32, ptr %a, i64 %indvars.iv.unr
+; EPILOG-BLOCK-NEXT: %arrayidx.epil = getelementptr inbounds i32, ptr %a, i64 %indvars.iv.epil.init
; EPILOG-BLOCK-NEXT: %5 = load i32, ptr %arrayidx.epil, align 4
-; EPILOG-BLOCK-NEXT: %add.epil = add nsw i32 %5, %sum.02.unr
+; EPILOG-BLOCK-NEXT: %add.epil = add nsw i32 %5, %sum.02.epil.init
; EPILOG-BLOCK-NEXT: br label %latchExit.epilog-lcssa
; EPILOG-BLOCK: latchExit.epilog-lcssa.loopexit:
; EPILOG-BLOCK-NEXT: %result.ph1.ph = phi i32 [ %sum.02, %for.exiting_block ], [ %add, %for.exiting_block.1 ]
; EPILOG-BLOCK-NEXT: br label %latchExit.epilog-lcssa
; EPILOG-BLOCK: latchExit.epilog-lcssa:
-; EPILOG-BLOCK-NEXT: %result.ph1 = phi i32 [ %add.epil, %latch.epil ], [ %sum.02.unr, %for.exiting_block.epil ], [ %result.ph1.ph, %latchExit.epilog-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %result.ph1 = phi i32 [ %add.epil, %latch.epil ], [ %sum.02.epil.init, %for.exiting_block.epil ], [ %result.ph1.ph, %latchExit.epilog-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: br label %latchExit
; EPILOG-BLOCK: latchExit:
; EPILOG-BLOCK-NEXT: %result = phi i32 [ %result.ph, %latchExit.unr-lcssa ], [ %result.ph1, %latchExit.epilog-lcssa ]
@@ -2527,7 +2519,7 @@ define i32 @otherblock_latch_same_exit3(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-NEXT: %1 = add i64 %0, -1
; EPILOG-NEXT: %xtraiter = and i64 %0, 7
; EPILOG-NEXT: %2 = icmp ult i64 %1, 7
-; EPILOG-NEXT: br i1 %2, label %latchExit.unr-lcssa, label %entry.new
+; EPILOG-NEXT: br i1 %2, label %header.epil.preheader, label %entry.new
; EPILOG: entry.new:
; EPILOG-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-NEXT: br label %header
@@ -2609,52 +2601,51 @@ define i32 @otherblock_latch_same_exit3(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-NEXT: %indvars.iv.next.7 = add i64 %indvars.iv, 8
; EPILOG-NEXT: %niter.next.7 = add i64 %niter, 8
; EPILOG-NEXT: %niter.ncmp.7 = icmp eq i64 %niter.next.7, %unroll_iter
-; EPILOG-NEXT: br i1 %niter.ncmp.7, label %latchExit.unr-lcssa.loopexit, label %header
-; EPILOG: latchExit.unr-lcssa.loopexit:
-; EPILOG-NEXT: %result.ph.ph = phi i32 [ %add.7, %latch.7 ]
-; EPILOG-NEXT: %indvars.iv.unr.ph = phi i64 [ %indvars.iv.next.7, %latch.7 ]
-; EPILOG-NEXT: %sum.02.unr.ph = phi i32 [ %add.7, %latch.7 ]
-; EPILOG-NEXT: br label %latchExit.unr-lcssa
+; EPILOG-NEXT: br i1 %niter.ncmp.7, label %latchExit.unr-lcssa, label %header
; EPILOG: latchExit.unr-lcssa:
-; EPILOG-NEXT: %result.ph = phi i32 [ poison, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
-; EPILOG-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %latchExit.unr-lcssa.loopexit ]
-; EPILOG-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %latchExit.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %result.ph = phi i32 [ %add.7, %latch.7 ]
+; EPILOG-NEXT: %indvars.iv.unr = phi i64 [ %indvars.iv.next.7, %latch.7 ]
+; EPILOG-NEXT: %sum.02.unr = phi i32 [ %add.7, %latch.7 ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-NEXT: br i1 %lcmp.mod, label %header.epil.preheader, label %latchExit
; EPILOG: header.epil.preheader:
+; EPILOG-NEXT: %indvars.iv.epil.init = phi i64 [ 0, %entry ], [ %indvars.iv.unr, %latchExit.unr-lcssa ]
+; EPILOG-NEXT: %sum.02.epil.init = phi i32 [ 0, %entry ], [ %sum.02.unr, %latchExit.unr-lcssa ]
+; EPILOG-NEXT: %lcmp.mod2 = icmp ne i64 %xtraiter, 0
+; EPILOG-NEXT: call void @llvm.assume(i1 %lcmp.mod2)
; EPILOG-NEXT: br label %header.epil
; EPILOG: header.epil:
-; EPILOG-NEXT: %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %latch.epil ], [ %indvars.iv.unr, %header.epil.preheader ]
-; EPILOG-NEXT: %sum.02.epil = phi i32 [ %add.epil, %latch.epil ], [ %sum.02.unr, %header.epil.preheader ]
+; EPILOG-NEXT: %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %latch.epil ], [ %indvars.iv.epil.init, %header.epil.preheader ]
+; EPILOG-NEXT: %sum.02.epil = phi i32 [ %add.epil, %latch.epil ], [ %sum.02.epil.init, %header.epil.preheader ]
; EPILOG-NEXT: %epil.iter = phi i64 [ 0, %header.epil.preheader ], [ %epil.iter.next, %latch.epil ]
-; EPILOG-NEXT: br i1 %cond, label %for.exit2.loopexit2, label %for.exiting_block.epil
+; EPILOG-NEXT: br i1 %cond, label %for.exit2.loopexit3, label %for.exiting_block.epil
; EPILOG: for.exiting_block.epil:
; EPILOG-NEXT: %arrayidx.epil = getelementptr inbounds i32, ptr %a, i64 %indvars.iv.epil
; EPILOG-NEXT: %11 = load i32, ptr %arrayidx.epil, align 4
; EPILOG-NEXT: %add.epil = add nsw i32 %11, %sum.02.epil
; EPILOG-NEXT: %cmp.epil = icmp eq i64 %n, 42
-; EPILOG-NEXT: br i1 %cmp.epil, label %latchExit.epilog-lcssa.loopexit3, label %latch.epil
+; EPILOG-NEXT: br i1 %cmp.epil, label %latchExit.epilog-lcssa.loopexit4, label %latch.epil
; EPILOG: latch.epil:
; EPILOG-NEXT: %indvars.iv.next.epil = add i64 %indvars.iv.epil, 1
; EPILOG-NEXT: %exitcond.epil = icmp eq i64 %indvars.iv.next.epil, %n
; EPILOG-NEXT: %epil.iter.next = add i64 %epil.iter, 1
; EPILOG-NEXT: %epil.iter.cmp = icmp ne i64 %epil.iter.next, %xtraiter
-; EPILOG-NEXT: br i1 %epil.iter.cmp, label %header.epil, label %latchExit.epilog-lcssa.loopexit3, !llvm.loop !7
+; EPILOG-NEXT: br i1 %epil.iter.cmp, label %header.epil, label %latchExit.epilog-lcssa.loopexit4, !llvm.loop !7
; EPILOG: latchExit.epilog-lcssa.loopexit:
; EPILOG-NEXT: %result.ph1.ph = phi i32 [ %sum.02, %for.exiting_block ], [ %add, %for.exiting_block.1 ], [ %add.1, %for.exiting_block.2 ], [ %add.2, %for.exiting_block.3 ], [ %add.3, %for.exiting_block.4 ], [ %add.4, %for.exiting_block.5 ], [ %add.5, %for.exiting_block.6 ], [ %add.6, %for.exiting_block.7 ]
; EPILOG-NEXT: br label %latchExit.epilog-lcssa
-; EPILOG: latchExit.epilog-lcssa.loopexit3:
-; EPILOG-NEXT: %result.ph1.ph4 = phi i32 [ %sum.02.epil, %for.exiting_block.epil ], [ %add.epil, %latch.epil ]
+; EPILOG: latchExit.epilog-lcssa.loopexit4:
+; EPILOG-NEXT: %result.ph1.ph5 = phi i32 [ %sum.02.epil, %for.exiting_block.epil ], [ %add.epil, %latch.epil ]
; EPILOG-NEXT: br label %latchExit.epilog-lcssa
; EPILOG: latchExit.epilog-lcssa:
-; EPILOG-NEXT: %result.ph1 = phi i32 [ %result.ph1.ph, %latchExit.epilog-lcssa.loopexit ], [ %result.ph1.ph4, %latchExit.epilog-lcssa.loopexit3 ]
+; EPILOG-NEXT: %result.ph1 = phi i32 [ %result.ph1.ph, %latchExit.epilog-lcssa.loopexit ], [ %result.ph1.ph5, %latchExit.epilog-lcssa.loopexit4 ]
; EPILOG-NEXT: br label %latchExit
; EPILOG: latchExit:
; EPILOG-NEXT: %result = phi i32 [ %result.ph, %latchExit.unr-lcssa ], [ %result.ph1, %latchExit.epilog-lcssa ]
; EPILOG-NEXT: ret i32 %result
; EPILOG: for.exit2.loopexit:
; EPILOG-NEXT: br label %for.exit2
-; EPILOG: for.exit2.loopexit2:
+; EPILOG: for.exit2.loopexit3:
; EPILOG-NEXT: br label %for.exit2
; EPILOG: for.exit2:
; EPILOG-NEXT: ret i32 42
@@ -2665,7 +2656,7 @@ define i32 @otherblock_latch_same_exit3(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-BLOCK-NEXT: %1 = add i64 %0, -1
; EPILOG-BLOCK-NEXT: %xtraiter = and i64 %0, 1
; EPILOG-BLOCK-NEXT: %2 = icmp ult i64 %1, 1
-; EPILOG-BLOCK-NEXT: br i1 %2, label %latchExit.unr-lcssa, label %entry.new
+; EPILOG-BLOCK-NEXT: br i1 %2, label %header.epil.preheader, label %entry.new
; EPILOG-BLOCK: entry.new:
; EPILOG-BLOCK-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-BLOCK-NEXT: br label %header
@@ -2693,26 +2684,25 @@ define i32 @otherblock_latch_same_exit3(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-BLOCK-NEXT: %indvars.iv.next.1 = add i64 %indvars.iv, 2
; EPILOG-BLOCK-NEXT: %niter.next.1 = add i64 %niter, 2
; EPILOG-BLOCK-NEXT: %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
-; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %latchExit.unr-lcssa.loopexit, label %header, !llvm.loop !7
-; EPILOG-BLOCK: latchExit.unr-lcssa.loopexit:
-; EPILOG-BLOCK-NEXT: %result.ph.ph = phi i32 [ %add.1, %latch.1 ]
-; EPILOG-BLOCK-NEXT: %indvars.iv.unr.ph = phi i64 [ %indvars.iv.next.1, %latch.1 ]
-; EPILOG-BLOCK-NEXT: %sum.02.unr.ph = phi i32 [ %add.1, %latch.1 ]
-; EPILOG-BLOCK-NEXT: br label %latchExit.unr-lcssa
+; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %latchExit.unr-lcssa, label %header, !llvm.loop !7
; EPILOG-BLOCK: latchExit.unr-lcssa:
-; EPILOG-BLOCK-NEXT: %result.ph = phi i32 [ poison, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
-; EPILOG-BLOCK-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %latchExit.unr-lcssa.loopexit ]
-; EPILOG-BLOCK-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %latchExit.unr-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %result.ph = phi i32 [ %add.1, %latch.1 ]
+; EPILOG-BLOCK-NEXT: %indvars.iv.unr = phi i64 [ %indvars.iv.next.1, %latch.1 ]
+; EPILOG-BLOCK-NEXT: %sum.02.unr = phi i32 [ %add.1, %latch.1 ]
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-BLOCK-NEXT: br i1 %lcmp.mod, label %header.epil.preheader, label %latchExit
; EPILOG-BLOCK: header.epil.preheader:
+; EPILOG-BLOCK-NEXT: %indvars.iv.epil.init = phi i64 [ 0, %entry ], [ %indvars.iv.unr, %latchExit.unr-lcssa ]
+; EPILOG-BLOCK-NEXT: %sum.02.epil.init = phi i32 [ 0, %entry ], [ %sum.02.unr, %latchExit.unr-lcssa ]
+; EPILOG-BLOCK-NEXT: %lcmp.mod2 = icmp ne i64 %xtraiter, 0
+; EPILOG-BLOCK-NEXT: call void @llvm.assume(i1 %lcmp.mod2)
; EPILOG-BLOCK-NEXT: br label %header.epil
; EPILOG-BLOCK: header.epil:
; EPILOG-BLOCK-NEXT: br i1 %cond, label %for.exit2, label %for.exiting_block.epil
; EPILOG-BLOCK: for.exiting_block.epil:
-; EPILOG-BLOCK-NEXT: %arrayidx.epil = getelementptr inbounds i32, ptr %a, i64 %indvars.iv.unr
+; EPILOG-BLOCK-NEXT: %arrayidx.epil = getelementptr inbounds i32, ptr %a, i64 %indvars.iv.epil.init
; EPILOG-BLOCK-NEXT: %5 = load i32, ptr %arrayidx.epil, align 4
-; EPILOG-BLOCK-NEXT: %add.epil = add nsw i32 %5, %sum.02.unr
+; EPILOG-BLOCK-NEXT: %add.epil = add nsw i32 %5, %sum.02.epil.init
; EPILOG-BLOCK-NEXT: %cmp.epil = icmp eq i64 %n, 42
; EPILOG-BLOCK-NEXT: br i1 %cmp.epil, label %latchExit.epilog-lcssa, label %latch.epil
; EPILOG-BLOCK: latch.epil:
@@ -2721,7 +2711,7 @@ define i32 @otherblock_latch_same_exit3(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-BLOCK-NEXT: %result.ph1.ph = phi i32 [ %sum.02, %for.exiting_block ], [ %add, %for.exiting_block.1 ]
; EPILOG-BLOCK-NEXT: br label %latchExit.epilog-lcssa
; EPILOG-BLOCK: latchExit.epilog-lcssa:
-; EPILOG-BLOCK-NEXT: %result.ph1 = phi i32 [ %add.epil, %latch.epil ], [ %sum.02.unr, %for.exiting_block.epil ], [ %result.ph1.ph, %latchExit.epilog-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %result.ph1 = phi i32 [ %add.epil, %latch.epil ], [ %sum.02.epil.init, %for.exiting_block.epil ], [ %result.ph1.ph, %latchExit.epilog-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: br label %latchExit
; EPILOG-BLOCK: latchExit:
; EPILOG-BLOCK-NEXT: %result = phi i32 [ %result.ph, %latchExit.unr-lcssa ], [ %result.ph1, %latchExit.epilog-lcssa ]
@@ -3013,7 +3003,7 @@ define void @unique_exit(i32 %N, i32 %M) {
; EPILOG-NEXT: %1 = add i32 %0, -1
; EPILOG-NEXT: %xtraiter = and i32 %0, 7
; EPILOG-NEXT: %2 = icmp ult i32 %1, 7
-; EPILOG-NEXT: br i1 %2, label %latchExit.unr-lcssa, label %preheader.new
+; EPILOG-NEXT: br i1 %2, label %header.epil.preheader, label %preheader.new
; EPILOG: preheader.new:
; EPILOG-NEXT: %unroll_iter = sub i32 %0, %xtraiter
; EPILOG-NEXT: br label %header
@@ -3054,37 +3044,36 @@ define void @unique_exit(i32 %N, i32 %M) {
; EPILOG: latch.7:
; EPILOG-NEXT: %niter.next.7 = add nuw i32 %niter, 8
; EPILOG-NEXT: %niter.ncmp.7 = icmp ne i32 %niter.next.7, %unroll_iter
-; EPILOG-NEXT: br i1 %niter.ncmp.7, label %header, label %latchExit.unr-lcssa.loopexit
-; EPILOG: latchExit.unr-lcssa.loopexit:
-; EPILOG-NEXT: %i2.ph.ph.ph = phi i32 [ -1, %latch.7 ]
-; EPILOG-NEXT: %i4.unr.ph = phi i32 [ %inc.7, %latch.7 ]
-; EPILOG-NEXT: br label %latchExit.unr-lcssa
+; EPILOG-NEXT: br i1 %niter.ncmp.7, label %header, label %latchExit.unr-lcssa
; EPILOG: latchExit.unr-lcssa:
-; EPILOG-NEXT: %i2.ph.ph = phi i32 [ poison, %preheader ], [ %i2.ph.ph.ph, %latchExit.unr-lcssa.loopexit ]
-; EPILOG-NEXT: %i4.unr = phi i32 [ 0, %preheader ], [ %i4.unr.ph, %latchExit.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %i2.ph.ph = phi i32 [ -1, %latch.7 ]
+; EPILOG-NEXT: %i4.unr = phi i32 [ %inc.7, %latch.7 ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i32 %xtraiter, 0
; EPILOG-NEXT: br i1 %lcmp.mod, label %header.epil.preheader, label %latchExit
; EPILOG: header.epil.preheader:
+; EPILOG-NEXT: %i4.epil.init = phi i32 [ 0, %preheader ], [ %i4.unr, %latchExit.unr-lcssa ]
+; EPILOG-NEXT: %lcmp.mod2 = icmp ne i32 %xtraiter, 0
+; EPILOG-NEXT: call void @llvm.assume(i1 %lcmp.mod2)
; EPILOG-NEXT: br label %header.epil
; EPILOG: header.epil:
-; EPILOG-NEXT: %i4.epil = phi i32 [ %inc.epil, %latch.epil ], [ %i4.unr, %header.epil.preheader ]
+; EPILOG-NEXT: %i4.epil = phi i32 [ %inc.epil, %latch.epil ], [ %i4.epil.init, %header.epil.preheader ]
; EPILOG-NEXT: %epil.iter = phi i32 [ 0, %header.epil.preheader ], [ %epil.iter.next, %latch.epil ]
; EPILOG-NEXT: %inc.epil = add nuw i32 %i4.epil, 1
; EPILOG-NEXT: %cmp1.epil = icmp ult i32 %inc.epil, %N
-; EPILOG-NEXT: br i1 %cmp1.epil, label %latch.epil, label %latchExit.epilog-lcssa.loopexit2
+; EPILOG-NEXT: br i1 %cmp1.epil, label %latch.epil, label %latchExit.epilog-lcssa.loopexit3
; EPILOG: latch.epil:
; EPILOG-NEXT: %cmp.epil = icmp ult i32 %inc.epil, %M.shifted
; EPILOG-NEXT: %epil.iter.next = add i32 %epil.iter, 1
; EPILOG-NEXT: %epil.iter.cmp = icmp ne i32 %epil.iter.next, %xtraiter
-; EPILOG-NEXT: br i1 %epil.iter.cmp, label %header.epil, label %latchExit.epilog-lcssa.loopexit2, !llvm.loop !8
+; EPILOG-NEXT: br i1 %epil.iter.cmp, label %header.epil, label %latchExit.epilog-lcssa.loopexit3, !llvm.loop !8
; EPILOG: latchExit.epilog-lcssa.loopexit:
; EPILOG-NEXT: %i2.ph.ph1.ph = phi i32 [ %i4, %header ], [ %inc, %latch ], [ %inc.1, %latch.1 ], [ %inc.2, %latch.2 ], [ %inc.3, %latch.3 ], [ %inc.4, %latch.4 ], [ %inc.5, %latch.5 ], [ %inc.6, %latch.6 ]
; EPILOG-NEXT: br label %latchExit.epilog-lcssa
-; EPILOG: latchExit.epilog-lcssa.loopexit2:
-; EPILOG-NEXT: %i2.ph.ph1.ph3 = phi i32 [ %i4.epil, %header.epil ], [ -1, %latch.epil ]
+; EPILOG: latchExit.epilog-lcssa.loopexit3:
+; EPILOG-NEXT: %i2.ph.ph1.ph4 = phi i32 [ %i4.epil, %header.epil ], [ -1, %latch.epil ]
; EPILOG-NEXT: br label %latchExit.epilog-lcssa
; EPILOG: latchExit.epilog-lcssa:
-; EPILOG-NEXT: %i2.ph.ph1 = phi i32 [ %i2.ph.ph1.ph, %latchExit.epilog-lcssa.loopexit ], [ %i2.ph.ph1.ph3, %latchExit.epilog-lcssa.loopexit2 ]
+; EPILOG-NEXT: %i2.ph.ph1 = phi i32 [ %i2.ph.ph1.ph, %latchExit.epilog-lcssa.loopexit ], [ %i2.ph.ph1.ph4, %latchExit.epilog-lcssa.loopexit3 ]
; EPILOG-NEXT: br label %latchExit
; EPILOG: latchExit:
; EPILOG-NEXT: %i2.ph = phi i32 [ %i2.ph.ph, %latchExit.unr-lcssa ], [ %i2.ph.ph1, %latchExit.epilog-lcssa ]
@@ -3098,7 +3087,7 @@ define void @unique_exit(i32 %N, i32 %M) {
; EPILOG-BLOCK-NEXT: %1 = add i32 %0, -1
; EPILOG-BLOCK-NEXT: %xtraiter = and i32 %0, 1
; EPILOG-BLOCK-NEXT: %2 = icmp ult i32 %1, 1
-; EPILOG-BLOCK-NEXT: br i1 %2, label %latchExit.unr-lcssa, label %preheader.new
+; EPILOG-BLOCK-NEXT: br i1 %2, label %header.epil.preheader, label %preheader.new
; EPILOG-BLOCK: preheader.new:
; EPILOG-BLOCK-NEXT: %unroll_iter = sub i32 %0, %xtraiter
; EPILOG-BLOCK-NEXT: br label %header
@@ -3115,20 +3104,19 @@ define void @unique_exit(i32 %N, i32 %M) {
; EPILOG-BLOCK: latch.1:
; EPILOG-BLOCK-NEXT: %niter.next.1 = add nuw i32 %niter, 2
; EPILOG-BLOCK-NEXT: %niter.ncmp.1 = icmp ne i32 %niter.next.1, %unroll_iter
-; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %header, label %latchExit.unr-lcssa.loopexit, !llvm.loop !8
-; EPILOG-BLOCK: latchExit.unr-lcssa.loopexit:
-; EPILOG-BLOCK-NEXT: %i2.ph.ph.ph = phi i32 [ -1, %latch.1 ]
-; EPILOG-BLOCK-NEXT: %i4.unr.ph = phi i32 [ %inc.1, %latch.1 ]
-; EPILOG-BLOCK-NEXT: br label %latchExit.unr-lcssa
+; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %header, label %latchExit.unr-lcssa, !llvm.loop !8
; EPILOG-BLOCK: latchExit.unr-lcssa:
-; EPILOG-BLOCK-NEXT: %i2.ph.ph = phi i32 [ poison, %preheader ], [ %i2.ph.ph.ph, %latchExit.unr-lcssa.loopexit ]
-; EPILOG-BLOCK-NEXT: %i4.unr = phi i32 [ 0, %preheader ], [ %i4.unr.ph, %latchExit.unr-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %i2.ph.ph = phi i32 [ -1, %latch.1 ]
+; EPILOG-BLOCK-NEXT: %i4.unr = phi i32 [ %inc.1, %latch.1 ]
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i32 %xtraiter, 0
; EPILOG-BLOCK-NEXT: br i1 %lcmp.mod, label %header.epil.preheader, label %latchExit
; EPILOG-BLOCK: header.epil.preheader:
+; EPILOG-BLOCK-NEXT: %i4.epil.init = phi i32 [ 0, %preheader ], [ %i4.unr, %latchExit.unr-lcssa ]
+; EPILOG-BLOCK-NEXT: %lcmp.mod2 = icmp ne i32 %xtraiter, 0
+; EPILOG-BLOCK-NEXT: call void @llvm.assume(i1 %lcmp.mod2)
; EPILOG-BLOCK-NEXT: br label %header.epil
; EPILOG-BLOCK: header.epil:
-; EPILOG-BLOCK-NEXT: %inc.epil = add nuw i32 %i4.unr, 1
+; EPILOG-BLOCK-NEXT: %inc.epil = add nuw i32 %i4.epil.init, 1
; EPILOG-BLOCK-NEXT: %cmp1.epil = icmp ult i32 %inc.epil, %N
; EPILOG-BLOCK-NEXT: br i1 %cmp1.epil, label %latch.epil, label %latchExit.epilog-lcssa
; EPILOG-BLOCK: latch.epil:
@@ -3137,7 +3125,7 @@ define void @unique_exit(i32 %N, i32 %M) {
; EPILOG-BLOCK-NEXT: %i2.ph.ph1.ph = phi i32 [ %i4, %header ], [ %inc, %latch ]
; EPILOG-BLOCK-NEXT: br label %latchExit.epilog-lcssa
; EPILOG-BLOCK: latchExit.epilog-lcssa:
-; EPILOG-BLOCK-NEXT: %i2.ph.ph1 = phi i32 [ -1, %latch.epil ], [ %i4.unr, %header.epil ], [ %i2.ph.ph1.ph, %latchExit.epilog-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %i2.ph.ph1 = phi i32 [ -1, %latch.epil ], [ %i4.epil.init, %header.epil ], [ %i2.ph.ph1.ph, %latchExit.epilog-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: br label %latchExit
; EPILOG-BLOCK: latchExit:
; EPILOG-BLOCK-NEXT: %i2.ph = phi i32 [ %i2.ph.ph, %latchExit.unr-lcssa ], [ %i2.ph.ph1, %latchExit.epilog-lcssa ]
@@ -3300,7 +3288,7 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; EPILOG-NEXT: %1 = add i64 %0, -1
; EPILOG-NEXT: %xtraiter = and i64 %0, 7
; EPILOG-NEXT: %2 = icmp ult i64 %1, 7
-; EPILOG-NEXT: br i1 %2, label %latchexit.unr-lcssa, label %entry.new
+; EPILOG-NEXT: br i1 %2, label %loop_header.epil.preheader, label %entry.new
; EPILOG: entry.new:
; EPILOG-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-NEXT: br label %loop_header
@@ -3390,39 +3378,38 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; EPILOG-NEXT: %sum.next.7 = add i64 %sum.next.6, %add
; EPILOG-NEXT: %niter.next.7 = add i64 %niter, 8
; EPILOG-NEXT: %niter.ncmp.7 = icmp ne i64 %niter.next.7, %unroll_iter
-; EPILOG-NEXT: br i1 %niter.ncmp.7, label %loop_header, label %latchexit.unr-lcssa.loopexit
+; EPILOG-NEXT: br i1 %niter.ncmp.7, label %loop_header, label %latchexit.unr-lcssa
; EPILOG: exit1.loopexit:
; EPILOG-NEXT: %result.ph = phi i64 [ %ivy, %loop_exiting ], [ %ivy, %loop_exiting ], [ %ivy.1, %loop_exiting.1 ], [ %ivy.1, %loop_exiting.1 ], [ %ivy.2, %loop_exiting.2 ], [ %ivy.2, %loop_exiting.2 ], [ %ivy.3, %loop_exiting.3 ], [ %ivy.3, %loop_exiting.3 ], [ %ivy.4, %loop_exiting.4 ], [ %ivy.4, %loop_exiting.4 ], [ %ivy.5, %loop_exiting.5 ], [ %ivy.5, %loop_exiting.5 ], [ %ivy.6, %loop_exiting.6 ], [ %ivy.6, %loop_exiting.6 ], [ %ivy.7, %loop_exiting.7 ], [ %ivy.7, %loop_exiting.7 ]
; EPILOG-NEXT: br label %exit1
-; EPILOG: exit1.loopexit2:
-; EPILOG-NEXT: %result.ph3 = phi i64 [ %ivy.epil, %loop_exiting.epil ], [ %ivy.epil, %loop_exiting.epil ]
+; EPILOG: exit1.loopexit3:
+; EPILOG-NEXT: %result.ph4 = phi i64 [ %ivy.epil, %loop_exiting.epil ], [ %ivy.epil, %loop_exiting.epil ]
; EPILOG-NEXT: br label %exit1
; EPILOG: exit1:
-; EPILOG-NEXT: %result = phi i64 [ %result.ph, %exit1.loopexit ], [ %result.ph3, %exit1.loopexit2 ]
+; EPILOG-NEXT: %result = phi i64 [ %result.ph, %exit1.loopexit ], [ %result.ph4, %exit1.loopexit3 ]
; EPILOG-NEXT: ret i64 %result
-; EPILOG: latchexit.unr-lcssa.loopexit:
-; EPILOG-NEXT: %sum.next.lcssa.ph.ph = phi i64 [ %sum.next.7, %loop_latch.7 ]
-; EPILOG-NEXT: %iv.unr.ph = phi i64 [ %iv_next.7, %loop_latch.7 ]
-; EPILOG-NEXT: %sum.unr.ph = phi i64 [ %sum.next.7, %loop_latch.7 ]
-; EPILOG-NEXT: br label %latchexit.unr-lcssa
; EPILOG: latchexit.unr-lcssa:
-; EPILOG-NEXT: %sum.next.lcssa.ph = phi i64 [ poison, %entry ], [ %sum.next.lcssa.ph.ph, %latchexit.unr-lcssa.loopexit ]
-; EPILOG-NEXT: %iv.unr = phi i64 [ 0, %entry ], [ %iv.unr.ph, %latchexit.unr-lcssa.loopexit ]
-; EPILOG-NEXT: %sum.unr = phi i64 [ 0, %entry ], [ %sum.unr.ph, %latchexit.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %sum.next.lcssa.ph = phi i64 [ %sum.next.7, %loop_latch.7 ]
+; EPILOG-NEXT: %iv.unr = phi i64 [ %iv_next.7, %loop_latch.7 ]
+; EPILOG-NEXT: %sum.unr = phi i64 [ %sum.next.7, %loop_latch.7 ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-NEXT: br i1 %lcmp.mod, label %loop_header.epil.preheader, label %latchexit
; EPILOG: loop_header.epil.preheader:
+; EPILOG-NEXT: %iv.epil.init = phi i64 [ 0, %entry ], [ %iv.unr, %latchexit.unr-lcssa ]
+; EPILOG-NEXT: %sum.epil.init = phi i64 [ 0, %entry ], [ %sum.unr, %latchexit.unr-lcssa ]
+; EPILOG-NEXT: %lcmp.mod2 = icmp ne i64 %xtraiter, 0
+; EPILOG-NEXT: call void @llvm.assume(i1 %lcmp.mod2)
; EPILOG-NEXT: br label %loop_header.epil
; EPILOG: loop_header.epil:
-; EPILOG-NEXT: %iv.epil = phi i64 [ %iv.unr, %loop_header.epil.preheader ], [ %iv_next.epil, %loop_latch.epil ]
-; EPILOG-NEXT: %sum.epil = phi i64 [ %sum.unr, %loop_header.epil.preheader ], [ %sum.next.epil, %loop_latch.epil ]
+; EPILOG-NEXT: %iv.epil = phi i64 [ %iv.epil.init, %loop_header.epil.preheader ], [ %iv_next.epil, %loop_latch.epil ]
+; EPILOG-NEXT: %sum.epil = phi i64 [ %sum.epil.init, %loop_header.epil.preheader ], [ %sum.next.epil, %loop_latch.epil ]
; EPILOG-NEXT: %epil.iter = phi i64 [ 0, %loop_header.epil.preheader ], [ %epil.iter.next, %loop_latch.epil ]
; EPILOG-NEXT: br i1 %cond, label %loop_latch.epil, label %loop_exiting.epil
; EPILOG: loop_exiting.epil:
; EPILOG-NEXT: %ivy.epil = add i64 %iv.epil, %add
; EPILOG-NEXT: switch i64 %sum.epil, label %loop_latch.epil [
-; EPILOG-NEXT: i64 24, label %exit1.loopexit2
-; EPILOG-NEXT: i64 42, label %exit1.loopexit2
+; EPILOG-NEXT: i64 24, label %exit1.loopexit3
+; EPILOG-NEXT: i64 42, label %exit1.loopexit3
; EPILOG-NEXT: ]
; EPILOG: loop_latch.epil:
; EPILOG-NEXT: %iv_next.epil = add nuw nsw i64 %iv.epil, 1
@@ -3444,7 +3431,7 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; EPILOG-BLOCK-NEXT: %1 = add i64 %0, -1
; EPILOG-BLOCK-NEXT: %xtraiter = and i64 %0, 1
; EPILOG-BLOCK-NEXT: %2 = icmp ult i64 %1, 1
-; EPILOG-BLOCK-NEXT: br i1 %2, label %latchexit.unr-lcssa, label %entry.new
+; EPILOG-BLOCK-NEXT: br i1 %2, label %loop_header.epil.preheader, label %entry.new
; EPILOG-BLOCK: entry.new:
; EPILOG-BLOCK-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-BLOCK-NEXT: br label %loop_header
@@ -3474,36 +3461,35 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; EPILOG-BLOCK-NEXT: %sum.next.1 = add i64 %sum.next, %add
; EPILOG-BLOCK-NEXT: %niter.next.1 = add i64 %niter, 2
; EPILOG-BLOCK-NEXT: %niter.ncmp.1 = icmp ne i64 %niter.next.1, %unroll_iter
-; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %loop_header, label %latchexit.unr-lcssa.loopexit, !llvm.loop !9
+; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %loop_header, label %latchexit.unr-lcssa, !llvm.loop !9
; EPILOG-BLOCK: exit1.loopexit:
; EPILOG-BLOCK-NEXT: %result.ph = phi i64 [ %ivy, %loop_exiting ], [ %ivy, %loop_exiting ], [ %ivy.1, %loop_exiting.1 ], [ %ivy.1, %loop_exiting.1 ]
; EPILOG-BLOCK-NEXT: br label %exit1
; EPILOG-BLOCK: exit1:
; EPILOG-BLOCK-NEXT: %result = phi i64 [ %ivy.epil, %loop_exiting.epil ], [ %ivy.epil, %loop_exiting.epil ], [ %result.ph, %exit1.loopexit ]
; EPILOG-BLOCK-NEXT: ret i64 %result
-; EPILOG-BLOCK: latchexit.unr-lcssa.loopexit:
-; EPILOG-BLOCK-NEXT: %sum.next.lcssa.ph.ph = phi i64 [ %sum.next.1, %loop_latch.1 ]
-; EPILOG-BLOCK-NEXT: %iv.unr.ph = phi i64 [ %iv_next.1, %loop_latch.1 ]
-; EPILOG-BLOCK-NEXT: %sum.unr.ph = phi i64 [ %sum.next.1, %loop_latch.1 ]
-; EPILOG-BLOCK-NEXT: br label %latchexit.unr-lcssa
; EPILOG-BLOCK: latchexit.unr-lcssa:
-; EPILOG-BLOCK-NEXT: %sum.next.lcssa.ph = phi i64 [ poison, %entry ], [ %sum.next.lcssa.ph.ph, %latchexit.unr-lcssa.loopexit ]
-; EPILOG-BLOCK-NEXT: %iv.unr = phi i64 [ 0, %entry ], [ %iv.unr.ph, %latchexit.unr-lcssa.loopexit ]
-; EPILOG-BLOCK-NEXT: %sum.unr = phi i64 [ 0, %entry ], [ %sum.unr.ph, %latchexit.unr-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %sum.next.lcssa.ph = phi i64 [ %sum.next.1, %loop_latch.1 ]
+; EPILOG-BLOCK-NEXT: %iv.unr = phi i64 [ %iv_next.1, %loop_latch.1 ]
+; EPILOG-BLOCK-NEXT: %sum.unr = phi i64 [ %sum.next.1, %loop_latch.1 ]
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-BLOCK-NEXT: br i1 %lcmp.mod, label %loop_header.epil.preheader, label %latchexit
; EPILOG-BLOCK: loop_header.epil.preheader:
+; EPILOG-BLOCK-NEXT: %iv.epil.init = phi i64 [ 0, %entry ], [ %iv.unr, %latchexit.unr-lcssa ]
+; EPILOG-BLOCK-NEXT: %sum.epil.init = phi i64 [ 0, %entry ], [ %sum.unr, %latchexit.unr-lcssa ]
+; EPILOG-BLOCK-NEXT: %lcmp.mod2 = icmp ne i64 %xtraiter, 0
+; EPILOG-BLOCK-NEXT: call void @llvm.assume(i1 %lcmp.mod2)
; EPILOG-BLOCK-NEXT: br label %loop_header.epil
; EPILOG-BLOCK: loop_header.epil:
; EPILOG-BLOCK-NEXT: br i1 %cond, label %loop_latch.epil, label %loop_exiting.epil
; EPILOG-BLOCK: loop_exiting.epil:
-; EPILOG-BLOCK-NEXT: %ivy.epil = add i64 %iv.unr, %add
-; EPILOG-BLOCK-NEXT: switch i64 %sum.unr, label %loop_latch.epil [
+; EPILOG-BLOCK-NEXT: %ivy.epil = add i64 %iv.epil.init, %add
+; EPILOG-BLOCK-NEXT: switch i64 %sum.epil.init, label %loop_latch.epil [
; EPILOG-BLOCK-NEXT: i64 24, label %exit1
; EPILOG-BLOCK-NEXT: i64 42, label %exit1
; EPILOG-BLOCK-NEXT: ]
; EPILOG-BLOCK: loop_latch.epil:
-; EPILOG-BLOCK-NEXT: %sum.next.epil = add i64 %sum.unr, %add
+; EPILOG-BLOCK-NEXT: %sum.next.epil = add i64 %sum.epil.init, %add
; EPILOG-BLOCK-NEXT: br label %latchexit
; EPILOG-BLOCK: latchexit:
; EPILOG-BLOCK-NEXT: %sum.next.lcssa = phi i64 [ %sum.next.lcssa.ph, %latchexit.unr-lcssa ], [ %sum.next.epil, %loop_latch.epil ]
@@ -3752,7 +3738,7 @@ define i32 @test6(ptr nocapture %a, i64 %n, i1 %cond, i32 %x) {
; EPILOG-NEXT: %1 = add i64 %0, -1
; EPILOG-NEXT: %xtraiter = and i64 %0, 7
; EPILOG-NEXT: %2 = icmp ult i64 %1, 7
-; EPILOG-NEXT: br i1 %2, label %latch_exit.unr-lcssa, label %entry.new
+; EPILOG-NEXT: br i1 %2, label %header.epil.preheader, label %entry.new
; EPILOG: entry.new:
; EPILOG-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-NEXT: br label %header
@@ -3834,28 +3820,27 @@ define i32 @test6(ptr nocapture %a, i64 %n, i1 %cond, i32 %x) {
; EPILOG-NEXT: %indvars.iv.next.7 = add i64 %indvars.iv, 8
; EPILOG-NEXT: %niter.next.7 = add i64 %niter, 8
; EPILOG-NEXT: %niter.ncmp.7 = icmp eq i64 %niter.next.7, %unroll_iter
-; EPILOG-NEXT: br i1 %niter.ncmp.7, label %latch_exit.unr-lcssa.loopexit, label %header
-; EPILOG: latch_exit.unr-lcssa.loopexit:
-; EPILOG-NEXT: %sum.0.lcssa.ph.ph = phi i32 [ %add.7, %latch.7 ]
-; EPILOG-NEXT: %indvars.iv.unr.ph = phi i64 [ %indvars.iv.next.7, %latch.7 ]
-; EPILOG-NEXT: %sum.02.unr.ph = phi i32 [ %add.7, %latch.7 ]
-; EPILOG-NEXT: br label %latch_exit.unr-lcssa
+; EPILOG-NEXT: br i1 %niter.ncmp.7, label %latch_exit.unr-lcssa, label %header
; EPILOG: latch_exit.unr-lcssa:
-; EPILOG-NEXT: %sum.0.lcssa.ph = phi i32 [ poison, %entry ], [ %sum.0.lcssa.ph.ph, %latch_exit.unr-lcssa.loopexit ]
-; EPILOG-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %latch_exit.unr-lcssa.loopexit ]
-; EPILOG-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %latch_exit.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %sum.0.lcssa.ph = phi i32 [ %add.7, %latch.7 ]
+; EPILOG-NEXT: %indvars.iv.unr = phi i64 [ %indvars.iv.next.7, %latch.7 ]
+; EPILOG-NEXT: %sum.02.unr = phi i32 [ %add.7, %latch.7 ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-NEXT: br i1 %lcmp.mod, label %header.epil.preheader, label %latch_exit
; EPILOG: header.epil.preheader:
+; EPILOG-NEXT: %indvars.iv.epil.init = phi i64 [ 0, %entry ], [ %indvars.iv.unr, %latch_exit.unr-lcssa ]
+; EPILOG-NEXT: %sum.02.epil.init = phi i32 [ 0, %entry ], [ %sum.02.unr, %latch_exit.unr-lcssa ]
+; EPILOG-NEXT: %lcmp.mod2 = icmp ne i64 %xtraiter, 0
+; EPILOG-NEXT: call void @llvm.assume(i1 %lcmp.mod2)
; EPILOG-NEXT: br label %header.epil
; EPILOG: header.epil:
-; EPILOG-NEXT: %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %latch.epil ], [ %indvars.iv.unr, %header.epil.preheader ]
-; EPILOG-NEXT: %sum.02.epil = phi i32 [ %add.epil, %latch.epil ], [ %sum.02.unr, %header.epil.preheader ]
+; EPILOG-NEXT: %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %latch.epil ], [ %indvars.iv.epil.init, %header.epil.preheader ]
+; EPILOG-NEXT: %sum.02.epil = phi i32 [ %add.epil, %latch.epil ], [ %sum.02.epil.init, %header.epil.preheader ]
; EPILOG-NEXT: %epil.iter = phi i64 [ 0, %header.epil.preheader ], [ %epil.iter.next, %latch.epil ]
-; EPILOG-NEXT: br i1 false, label %for.exit2.loopexit2, label %for.exiting_block.epil
+; EPILOG-NEXT: br i1 false, label %for.exit2.loopexit3, label %for.exiting_block.epil
; EPILOG: for.exiting_block.epil:
; EPILOG-NEXT: %cmp.epil = icmp eq i64 %n, 42
-; EPILOG-NEXT: br i1 %cmp.epil, label %for.exit2.loopexit2, label %latch.epil
+; EPILOG-NEXT: br i1 %cmp.epil, label %for.exit2.loopexit3, label %latch.epil
; EPILOG: latch.epil:
; EPILOG-NEXT: %arrayidx.epil = getelementptr inbounds i32, ptr %a, i64 %indvars.iv.epil
; EPILOG-NEXT: %load.epil = load i32, ptr %arrayidx.epil, align 4
@@ -3874,11 +3859,11 @@ define i32 @test6(ptr nocapture %a, i64 %n, i1 %cond, i32 %x) {
; EPILOG: for.exit2.loopexit:
; EPILOG-NEXT: %retval.ph = phi i32 [ 42, %for.exiting_block ], [ %sum.02, %header ], [ %add, %latch ], [ 42, %for.exiting_block.1 ], [ %add.1, %latch.1 ], [ 42, %for.exiting_block.2 ], [ %add.2, %latch.2 ], [ 42, %for.exiting_block.3 ], [ %add.3, %latch.3 ], [ 42, %for.exiting_block.4 ], [ %add.4, %latch.4 ], [ 42, %for.exiting_block.5 ], [ %add.5, %latch.5 ], [ 42, %for.exiting_block.6 ], [ %add.6, %latch.6 ], [ 42, %for.exiting_block.7 ]
; EPILOG-NEXT: br label %for.exit2
-; EPILOG: for.exit2.loopexit2:
-; EPILOG-NEXT: %retval.ph3 = phi i32 [ 42, %for.exiting_block.epil ], [ %sum.02.epil, %header.epil ]
+; EPILOG: for.exit2.loopexit3:
+; EPILOG-NEXT: %retval.ph4 = phi i32 [ 42, %for.exiting_block.epil ], [ %sum.02.epil, %header.epil ]
; EPILOG-NEXT: br label %for.exit2
; EPILOG: for.exit2:
-; EPILOG-NEXT: %retval = phi i32 [ %retval.ph, %for.exit2.loopexit ], [ %retval.ph3, %for.exit2.loopexit2 ]
+; EPILOG-NEXT: %retval = phi i32 [ %retval.ph, %for.exit2.loopexit ], [ %retval.ph4, %for.exit2.loopexit3 ]
; EPILOG-NEXT: %addx = add i32 %retval, %x
; EPILOG-NEXT: br i1 %cond, label %exit_true, label %exit_false
; EPILOG: exit_true:
@@ -3892,7 +3877,7 @@ define i32 @test6(ptr nocapture %a, i64 %n, i1 %cond, i32 %x) {
; EPILOG-BLOCK-NEXT: %1 = add i64 %0, -1
; EPILOG-BLOCK-NEXT: %xtraiter = and i64 %0, 1
; EPILOG-BLOCK-NEXT: %2 = icmp ult i64 %1, 1
-; EPILOG-BLOCK-NEXT: br i1 %2, label %latch_exit.unr-lcssa, label %entry.new
+; EPILOG-BLOCK-NEXT: br i1 %2, label %header.epil.preheader, label %entry.new
; EPILOG-BLOCK: entry.new:
; EPILOG-BLOCK-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-BLOCK-NEXT: br label %header
@@ -3920,19 +3905,18 @@ define i32 @test6(ptr nocapture %a, i64 %n, i1 %cond, i32 %x) {
; EPILOG-BLOCK-NEXT: %indvars.iv.next.1 = add i64 %indvars.iv, 2
; EPILOG-BLOCK-NEXT: %niter.next.1 = add i64 %niter, 2
; EPILOG-BLOCK-NEXT: %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
-; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %latch_exit.unr-lcssa.loopexit, label %header, !llvm.loop !10
-; EPILOG-BLOCK: latch_exit.unr-lcssa.loopexit:
-; EPILOG-BLOCK-NEXT: %sum.0.lcssa.ph.ph = phi i32 [ %add.1, %latch.1 ]
-; EPILOG-BLOCK-NEXT: %indvars.iv.unr.ph = phi i64 [ %indvars.iv.next.1, %latch.1 ]
-; EPILOG-BLOCK-NEXT: %sum.02.unr.ph = phi i32 [ %add.1, %latch.1 ]
-; EPILOG-BLOCK-NEXT: br label %latch_exit.unr-lcssa
+; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %latch_exit.unr-lcssa, label %header, !llvm.loop !10
; EPILOG-BLOCK: latch_exit.unr-lcssa:
-; EPILOG-BLOCK-NEXT: %sum.0.lcssa.ph = phi i32 [ poison, %entry ], [ %sum.0.lcssa.ph.ph, %latch_exit.unr-lcssa.loopexit ]
-; EPILOG-BLOCK-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %latch_exit.unr-lcssa.loopexit ]
-; EPILOG-BLOCK-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %latch_exit.unr-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %sum.0.lcssa.ph = phi i32 [ %add.1, %latch.1 ]
+; EPILOG-BLOCK-NEXT: %indvars.iv.unr = phi i64 [ %indvars.iv.next.1, %latch.1 ]
+; EPILOG-BLOCK-NEXT: %sum.02.unr = phi i32 [ %add.1, %latch.1 ]
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-BLOCK-NEXT: br i1 %lcmp.mod, label %header.epil.preheader, label %latch_exit
; EPILOG-BLOCK: header.epil.preheader:
+; EPILOG-BLOCK-NEXT: %indvars.iv.epil.init = phi i64 [ 0, %entry ], [ %indvars.iv.unr, %latch_exit.unr-lcssa ]
+; EPILOG-BLOCK-NEXT: %sum.02.epil.init = phi i32 [ 0, %entry ], [ %sum.02.unr, %latch_exit.unr-lcssa ]
+; EPILOG-BLOCK-NEXT: %lcmp.mod2 = icmp ne i64 %xtraiter, 0
+; EPILOG-BLOCK-NEXT: call void @llvm.assume(i1 %lcmp.mod2)
; EPILOG-BLOCK-NEXT: br label %header.epil
; EPILOG-BLOCK: header.epil:
; EPILOG-BLOCK-NEXT: br i1 false, label %for.exit2, label %for.exiting_block.epil
@@ -3940,9 +3924,9 @@ define i32 @test6(ptr nocapture %a, i64 %n, i1 %cond, i32 %x) {
; EPILOG-BLOCK-NEXT: %cmp.epil = icmp eq i64 %n, 42
; EPILOG-BLOCK-NEXT: br i1 %cmp.epil, label %for.exit2, label %latch.epil
; EPILOG-BLOCK: latch.epil:
-; EPILOG-BLOCK-NEXT: %arrayidx.epil = getelementptr inbounds i32, ptr %a, i64 %indvars.iv.unr
+; EPILOG-BLOCK-NEXT: %arrayidx.epil = getelementptr inbounds i32, ptr %a, i64 %indvars.iv.epil.init
; EPILOG-BLOCK-NEXT: %load.epil = load i32, ptr %arrayidx.epil, align 4
-; EPILOG-BLOCK-NEXT: %add.epil = add nsw i32 %load.epil, %sum.02.unr
+; EPILOG-BLOCK-NEXT: %add.epil = add nsw i32 %load.epil, %sum.02.epil.init
; EPILOG-BLOCK-NEXT: br label %latch_exit
; EPILOG-BLOCK: latch_exit:
; EPILOG-BLOCK-NEXT: %sum.0.lcssa = phi i32 [ %sum.0.lcssa.ph, %latch_exit.unr-lcssa ], [ %add.epil, %latch.epil ]
@@ -3951,7 +3935,7 @@ define i32 @test6(ptr nocapture %a, i64 %n, i1 %cond, i32 %x) {
; EPILOG-BLOCK-NEXT: %retval.ph = phi i32 [ 42, %for.exiting_block ], [ %sum.02, %header ], [ %add, %latch ], [ 42, %for.exiting_block.1 ]
; EPILOG-BLOCK-NEXT: br label %for.exit2
; EPILOG-BLOCK: for.exit2:
-; EPILOG-BLOCK-NEXT: %retval = phi i32 [ %sum.02.unr, %header.epil ], [ 42, %for.exiting_block.epil ], [ %retval.ph, %for.exit2.loopexit ]
+; EPILOG-BLOCK-NEXT: %retval = phi i32 [ %sum.02.epil.init, %header.epil ], [ 42, %for.exiting_block.epil ], [ %retval.ph, %for.exit2.loopexit ]
; EPILOG-BLOCK-NEXT: %addx = add i32 %retval, %x
; EPILOG-BLOCK-NEXT: br i1 %cond, label %exit_true, label %exit_false
; EPILOG-BLOCK: exit_true:
@@ -4213,7 +4197,7 @@ define i32 @test7(i32 %arg, i32 %arg1, i32 %arg2) {
; EPILOG-NEXT: %2 = add i64 %1, -1
; EPILOG-NEXT: %xtraiter = and i64 %1, 7
; EPILOG-NEXT: %3 = icmp ult i64 %2, 7
-; EPILOG-NEXT: br i1 %3, label %latchexit.unr-lcssa, label %preheader.new
+; EPILOG-NEXT: br i1 %3, label %header.epil.preheader, label %preheader.new
; EPILOG: preheader.new:
; EPILOG-NEXT: %unroll_iter = sub i64 %1, %xtraiter
; EPILOG-NEXT: br label %header
@@ -4239,20 +4223,20 @@ define i32 @test7(i32 %arg, i32 %arg1, i32 %arg2) {
; EPILOG-NEXT: %add.7 = add nuw nsw i64 %i6, 8
; EPILOG-NEXT: %niter.next.7 = add i64 %niter, 8
; EPILOG-NEXT: %niter.ncmp.7 = icmp ne i64 %niter.next.7, %unroll_iter
-; EPILOG-NEXT: br i1 %niter.ncmp.7, label %header, label %latchexit.unr-lcssa.loopexit
-; EPILOG: latchexit.unr-lcssa.loopexit:
-; EPILOG-NEXT: %i6.unr.ph = phi i64 [ %add.7, %latch.7 ]
-; EPILOG-NEXT: br label %latchexit.unr-lcssa
+; EPILOG-NEXT: br i1 %niter.ncmp.7, label %header, label %latchexit.unr-lcssa
; EPILOG: latchexit.unr-lcssa:
-; EPILOG-NEXT: %i6.unr = phi i64 [ 1, %preheader ], [ %i6.unr.ph, %latchexit.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %i6.unr = phi i64 [ %add.7, %latch.7 ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-NEXT: br i1 %lcmp.mod, label %header.epil.preheader, label %latchexit
; EPILOG: header.epil.preheader:
+; EPILOG-NEXT: %i6.epil.init = phi i64 [ 1, %preheader ], [ %i6.unr, %latchexit.unr-lcssa ]
+; EPILOG-NEXT: %lcmp.mod1 = icmp ne i64 %xtraiter, 0
+; EPILOG-NEXT: call void @llvm.assume(i1 %lcmp.mod1)
; EPILOG-NEXT: br label %header.epil
; EPILOG: header.epil:
-; EPILOG-NEXT: %i6.epil = phi i64 [ %i6.unr, %header.epil.preheader ], [ %add.epil, %latch.epil ]
+; EPILOG-NEXT: %i6.epil = phi i64 [ %i6.epil.init, %header.epil.preheader ], [ %add.epil, %latch.epil ]
; EPILOG-NEXT: %epil.iter = phi i64 [ 0, %header.epil.preheader ], [ %epil.iter.next, %latch.epil ]
-; EPILOG-NEXT: br i1 false, label %loopexit1.loopexit1, label %latch.epil
+; EPILOG-NEXT: br i1 false, label %loopexit1.loopexit2, label %latch.epil
; EPILOG: latch.epil:
; EPILOG-NEXT: %add.epil = add nuw nsw i64 %i6.epil, 1
; EPILOG-NEXT: %i9.epil = icmp slt i64 %add.epil, %sext
@@ -4268,11 +4252,11 @@ define i32 @test7(i32 %arg, i32 %arg1, i32 %arg2) {
; EPILOG: loopexit1.loopexit:
; EPILOG-NEXT: %sext3.ph = phi i32 [ %shft, %header ], [ %shft, %latch ], [ %shft, %latch.1 ], [ %shft, %latch.2 ], [ %shft, %latch.3 ], [ %shft, %latch.4 ], [ %shft, %latch.5 ], [ %shft, %latch.6 ]
; EPILOG-NEXT: br label %loopexit1
-; EPILOG: loopexit1.loopexit1:
-; EPILOG-NEXT: %sext3.ph2 = phi i32 [ %shft, %header.epil ]
+; EPILOG: loopexit1.loopexit2:
+; EPILOG-NEXT: %sext3.ph3 = phi i32 [ %shft, %header.epil ]
; EPILOG-NEXT: br label %loopexit1
; EPILOG: loopexit1:
-; EPILOG-NEXT: %sext3 = phi i32 [ %sext3.ph, %loopexit1.loopexit ], [ %sext3.ph2, %loopexit1.loopexit1 ]
+; EPILOG-NEXT: %sext3 = phi i32 [ %sext3.ph, %loopexit1.loopexit ], [ %sext3.ph3, %loopexit1.loopexit2 ]
; EPILOG-NEXT: ret i32 %sext3
;
; EPILOG-BLOCK-LABEL: @test7(
@@ -4287,7 +4271,7 @@ define i32 @test7(i32 %arg, i32 %arg1, i32 %arg2) {
; EPILOG-BLOCK-NEXT: %2 = add i64 %1, -1
; EPILOG-BLOCK-NEXT: %xtraiter = and i64 %1, 1
; EPILOG-BLOCK-NEXT: %3 = icmp ult i64 %2, 1
-; EPILOG-BLOCK-NEXT: br i1 %3, label %latchexit.unr-lcssa, label %preheader.new
+; EPILOG-BLOCK-NEXT: br i1 %3, label %header.epil.preheader, label %preheader.new
; EPILOG-BLOCK: preheader.new:
; EPILOG-BLOCK-NEXT: %unroll_iter = sub i64 %1, %xtraiter
; EPILOG-BLOCK-NEXT: br label %header
@@ -4301,13 +4285,13 @@ define i32 @test7(i32 %arg, i32 %arg1, i32 %arg2) {
; EPILOG-BLOCK-NEXT: %add.1 = add nuw nsw i64 %i6, 2
; EPILOG-BLOCK-NEXT: %niter.next.1 = add i64 %niter, 2
; EPILOG-BLOCK-NEXT: %niter.ncmp.1 = icmp ne i64 %niter.next.1, %unroll_iter
-; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %header, label %latchexit.unr-lcssa.loopexit, !llvm.loop !11
-; EPILOG-BLOCK: latchexit.unr-lcssa.loopexit:
-; EPILOG-BLOCK-NEXT: br label %latchexit.unr-lcssa
+; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %header, label %latchexit.unr-lcssa, !llvm.loop !11
; EPILOG-BLOCK: latchexit.unr-lcssa:
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-BLOCK-NEXT: br i1 %lcmp.mod, label %header.epil.preheader, label %latchexit
; EPILOG-BLOCK: header.epil.preheader:
+; EPILOG-BLOCK-NEXT: %lcmp.mod1 = icmp ne i64 %xtraiter, 0
+; EPILOG-BLOCK-NEXT: call void @llvm.assume(i1 %lcmp.mod1)
; EPILOG-BLOCK-NEXT: br label %header.epil
; EPILOG-BLOCK: header.epil:
; EPILOG-BLOCK-NEXT: br i1 false, label %loopexit1, label %latch.epil
@@ -4480,7 +4464,7 @@ define void @test8() {
; EPILOG-NEXT: br label %outerloop
; EPILOG: outerloop.loopexit.loopexit:
; EPILOG-NEXT: br label %outerloop.loopexit
-; EPILOG: outerloop.loopexit.loopexit1:
+; EPILOG: outerloop.loopexit.loopexit2:
; EPILOG-NEXT: br label %outerloop.loopexit
; EPILOG: outerloop.loopexit:
; EPILOG-NEXT: br label %outerloop
@@ -4490,7 +4474,7 @@ define void @test8() {
; EPILOG-NEXT: %1 = sub i64 99, %i
; EPILOG-NEXT: %xtraiter = and i64 %0, 7
; EPILOG-NEXT: %2 = icmp ult i64 %1, 7
-; EPILOG-NEXT: br i1 %2, label %exit.unr-lcssa, label %outerloop.new
+; EPILOG-NEXT: br i1 %2, label %innerH.epil.preheader, label %outerloop.new
; EPILOG: outerloop.new:
; EPILOG-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-NEXT: br label %innerH
@@ -4516,21 +4500,21 @@ define void @test8() {
; EPILOG: latch.7:
; EPILOG-NEXT: %niter.next.7 = add nuw nsw i64 %niter, 8
; EPILOG-NEXT: %niter.ncmp.7 = icmp ne i64 %niter.next.7, %unroll_iter
-; EPILOG-NEXT: br i1 %niter.ncmp.7, label %innerH, label %exit.unr-lcssa.loopexit
-; EPILOG: exit.unr-lcssa.loopexit:
-; EPILOG-NEXT: %i3.unr.ph = phi i64 [ %i4.7, %latch.7 ]
-; EPILOG-NEXT: br label %exit.unr-lcssa
+; EPILOG-NEXT: br i1 %niter.ncmp.7, label %innerH, label %exit.unr-lcssa
; EPILOG: exit.unr-lcssa:
-; EPILOG-NEXT: %i3.unr = phi i64 [ %i, %outerloop ], [ %i3.unr.ph, %exit.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %i3.unr = phi i64 [ %i4.7, %latch.7 ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-NEXT: br i1 %lcmp.mod, label %innerH.epil.preheader, label %exit.loopexit
; EPILOG: innerH.epil.preheader:
+; EPILOG-NEXT: %i3.epil.init = phi i64 [ %i, %outerloop ], [ %i3.unr, %exit.unr-lcssa ]
+; EPILOG-NEXT: %lcmp.mod1 = icmp ne i64 %xtraiter, 0
+; EPILOG-NEXT: call void @llvm.assume(i1 %lcmp.mod1)
; EPILOG-NEXT: br label %innerH.epil
; EPILOG: innerH.epil:
-; EPILOG-NEXT: %i3.epil = phi i64 [ %i4.epil, %latch.epil ], [ %i3.unr, %innerH.epil.preheader ]
+; EPILOG-NEXT: %i3.epil = phi i64 [ %i4.epil, %latch.epil ], [ %i3.epil.init, %innerH.epil.preheader ]
; EPILOG-NEXT: %epil.iter = phi i64 [ 0, %innerH.epil.preheader ], [ %epil.iter.next, %latch.epil ]
; EPILOG-NEXT: %i4.epil = add nuw nsw i64 %i3.epil, 1
-; EPILOG-NEXT: br i1 false, label %outerloop.loopexit.loopexit1, label %latch.epil
+; EPILOG-NEXT: br i1 false, label %outerloop.loopexit.loopexit2, label %latch.epil
; EPILOG: latch.epil:
; EPILOG-NEXT: %i6.epil = icmp ult i64 %i4.epil, 100
; EPILOG-NEXT: %epil.iter.next = add i64 %epil.iter, 1
@@ -4549,27 +4533,26 @@ define void @test8() {
; EPILOG-BLOCK: outerloop.loopexit.loopexit:
; EPILOG-BLOCK-NEXT: br label %outerloop.loopexit
; EPILOG-BLOCK: outerloop.loopexit:
-; EPILOG-BLOCK-NEXT: br i1 false, label %exit.unr-lcssa.1, label %outerloop.new.1
+; EPILOG-BLOCK-NEXT: br i1 false, label %innerH.epil.preheader.1, label %outerloop.new.1
; EPILOG-BLOCK: outerloop.new.1:
; EPILOG-BLOCK-NEXT: br label %innerH.1
; EPILOG-BLOCK: innerH.1:
; EPILOG-BLOCK-NEXT: %i3.1 = phi i64 [ 0, %outerloop.new.1 ], [ %i4.1.1, %latch.1.1 ]
; EPILOG-BLOCK-NEXT: %niter.1 = phi i64 [ 0, %outerloop.new.1 ], [ %niter.next.1.1, %latch.1.1 ]
-; EPILOG-BLOCK-NEXT: br i1 false, label %outerloop.loopexit.loopexit.1, label %latch.12
-; EPILOG-BLOCK: latch.12:
+; EPILOG-BLOCK-NEXT: br i1 false, label %outerloop.loopexit.loopexit.1, label %latch.13
+; EPILOG-BLOCK: latch.13:
; EPILOG-BLOCK-NEXT: %i4.1.1 = add nuw nsw i64 %i3.1, 2
; EPILOG-BLOCK-NEXT: br i1 false, label %outerloop.loopexit.loopexit.1, label %latch.1.1
; EPILOG-BLOCK: latch.1.1:
; EPILOG-BLOCK-NEXT: %niter.next.1.1 = add i64 %niter.1, 2
; EPILOG-BLOCK-NEXT: %niter.ncmp.1.1 = icmp ne i64 %niter.next.1.1, 100
-; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1.1, label %innerH.1, label %exit.unr-lcssa.loopexit.1, !llvm.loop !12
-; EPILOG-BLOCK: exit.unr-lcssa.loopexit.1:
-; EPILOG-BLOCK-NEXT: br label %exit.unr-lcssa.1
-; EPILOG-BLOCK: outerloop.loopexit.loopexit.1:
-; EPILOG-BLOCK-NEXT: br label %outerloop.loopexit.1
+; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1.1, label %innerH.1, label %exit.unr-lcssa.1, !llvm.loop !12
; EPILOG-BLOCK: exit.unr-lcssa.1:
; EPILOG-BLOCK-NEXT: br i1 false, label %innerH.epil.preheader.1, label %exit.loopexit
+; EPILOG-BLOCK: outerloop.loopexit.loopexit.1:
+; EPILOG-BLOCK-NEXT: br label %outerloop.loopexit.1
; EPILOG-BLOCK: innerH.epil.preheader.1:
+; EPILOG-BLOCK-NEXT: call void @llvm.assume(i1 false)
; EPILOG-BLOCK-NEXT: br label %innerH.epil.1
; EPILOG-BLOCK: innerH.epil.1:
; EPILOG-BLOCK-NEXT: br i1 false, label %outerloop.loopexit.1, label %latch.epil
@@ -4581,7 +4564,7 @@ define void @test8() {
; EPILOG-BLOCK-NEXT: %1 = sub i64 99, %i
; EPILOG-BLOCK-NEXT: %xtraiter = and i64 %0, 1
; EPILOG-BLOCK-NEXT: %2 = icmp ult i64 %1, 1
-; EPILOG-BLOCK-NEXT: br i1 %2, label %exit.unr-lcssa, label %outerloop.new
+; EPILOG-BLOCK-NEXT: br i1 %2, label %innerH.epil.preheader, label %outerloop.new
; EPILOG-BLOCK: outerloop.new:
; EPILOG-BLOCK-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-BLOCK-NEXT: br label %innerH
@@ -4595,13 +4578,13 @@ define void @test8() {
; EPILOG-BLOCK: latch.1:
; EPILOG-BLOCK-NEXT: %niter.next.1 = add i64 %niter, 2
; EPILOG-BLOCK-NEXT: %niter.ncmp.1 = icmp ne i64 %niter.next.1, %unroll_iter
-; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %innerH, label %exit.unr-lcssa.loopexit, !llvm.loop !12
-; EPILOG-BLOCK: exit.unr-lcssa.loopexit:
-; EPILOG-BLOCK-NEXT: br label %exit.unr-lcssa
+; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %innerH, label %exit.unr-lcssa, !llvm.loop !12
; EPILOG-BLOCK: exit.unr-lcssa:
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-BLOCK-NEXT: br i1 %lcmp.mod, label %innerH.epil.preheader, label %exit.loopexit
; EPILOG-BLOCK: innerH.epil.preheader:
+; EPILOG-BLOCK-NEXT: %lcmp.mod1 = icmp ne i64 %xtraiter, 0
+; EPILOG-BLOCK-NEXT: call void @llvm.assume(i1 %lcmp.mod1)
; EPILOG-BLOCK-NEXT: br label %innerH.epil
; EPILOG-BLOCK: innerH.epil:
; EPILOG-BLOCK-NEXT: br i1 false, label %outerloop.loopexit, label %latch.epil
@@ -4788,7 +4771,7 @@ define ptr addrspace(1) @test9(ptr nocapture readonly %arg, i32 %n) {
; EPILOG-NEXT: %2 = add i32 %1, -1
; EPILOG-NEXT: %xtraiter = and i32 %1, 7
; EPILOG-NEXT: %3 = icmp ult i32 %2, 7
-; EPILOG-NEXT: br i1 %3, label %outerLatch.loopexit.unr-lcssa, label %preheader.new
+; EPILOG-NEXT: br i1 %3, label %header.epil.preheader, label %preheader.new
; EPILOG: preheader.new:
; EPILOG-NEXT: %unroll_iter = sub i32 %1, %xtraiter
; EPILOG-NEXT: br label %header
@@ -4799,11 +4782,11 @@ define ptr addrspace(1) @test9(ptr nocapture readonly %arg, i32 %n) {
; EPILOG: innerexit.loopexit:
; EPILOG-NEXT: %trip.lcssa.ph = phi i32 [ %trip, %header ], [ %trip, %latch ], [ %trip, %latch.1 ], [ %trip, %latch.2 ], [ %trip, %latch.3 ], [ %trip, %latch.4 ], [ %trip, %latch.5 ], [ %trip, %latch.6 ]
; EPILOG-NEXT: br label %innerexit
-; EPILOG: innerexit.loopexit1:
-; EPILOG-NEXT: %trip.lcssa.ph2 = phi i32 [ %trip, %header.epil ]
+; EPILOG: innerexit.loopexit2:
+; EPILOG-NEXT: %trip.lcssa.ph3 = phi i32 [ %trip, %header.epil ]
; EPILOG-NEXT: br label %innerexit
; EPILOG: innerexit:
-; EPILOG-NEXT: %trip.lcssa = phi i32 [ %trip.lcssa.ph, %innerexit.loopexit ], [ %trip.lcssa.ph2, %innerexit.loopexit1 ]
+; EPILOG-NEXT: %trip.lcssa = phi i32 [ %trip.lcssa.ph, %innerexit.loopexit ], [ %trip.lcssa.ph3, %innerexit.loopexit2 ]
; EPILOG-NEXT: %i9 = call ptr addrspace(1) @foo(i32 %trip.lcssa)
; EPILOG-NEXT: ret ptr addrspace(1) %i9
; EPILOG: latch:
@@ -4824,21 +4807,21 @@ define ptr addrspace(1) @test9(ptr nocapture readonly %arg, i32 %n) {
; EPILOG-NEXT: %iv.next.7 = add nuw nsw i64 %phi, 8
; EPILOG-NEXT: %niter.next.7 = add i32 %niter, 8
; EPILOG-NEXT: %niter.ncmp.7 = icmp ne i32 %niter.next.7, %unroll_iter
-; EPILOG-NEXT: br i1 %niter.ncmp.7, label %header, label %outerLatch.loopexit.unr-lcssa.loopexit
-; EPILOG: outerLatch.loopexit.unr-lcssa.loopexit:
-; EPILOG-NEXT: %phi.unr.ph = phi i64 [ %iv.next.7, %latch.7 ]
-; EPILOG-NEXT: br label %outerLatch.loopexit.unr-lcssa
+; EPILOG-NEXT: br i1 %niter.ncmp.7, label %header, label %outerLatch.loopexit.unr-lcssa
; EPILOG: outerLatch.loopexit.unr-lcssa:
-; EPILOG-NEXT: %phi.unr = phi i64 [ %i4, %preheader ], [ %phi.unr.ph, %outerLatch.loopexit.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %phi.unr = phi i64 [ %iv.next.7, %latch.7 ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i32 %xtraiter, 0
; EPILOG-NEXT: br i1 %lcmp.mod, label %header.epil.preheader, label %outerLatch.loopexit
; EPILOG: header.epil.preheader:
+; EPILOG-NEXT: %phi.epil.init = phi i64 [ %i4, %preheader ], [ %phi.unr, %outerLatch.loopexit.unr-lcssa ]
+; EPILOG-NEXT: %lcmp.mod1 = icmp ne i32 %xtraiter, 0
+; EPILOG-NEXT: call void @llvm.assume(i1 %lcmp.mod1)
; EPILOG-NEXT: br label %header.epil
; EPILOG: header.epil:
-; EPILOG-NEXT: %phi.epil = phi i64 [ %phi.unr, %header.epil.preheader ], [ %iv.next.epil, %latch.epil ]
+; EPILOG-NEXT: %phi.epil = phi i64 [ %phi.epil.init, %header.epil.preheader ], [ %iv.next.epil, %latch.epil ]
; EPILOG-NEXT: %epil.iter = phi i32 [ 0, %header.epil.preheader ], [ %epil.iter.next, %latch.epil ]
; EPILOG-NEXT: %i7.epil = trunc i64 %phi.epil to i32
-; EPILOG-NEXT: br i1 true, label %latch.epil, label %innerexit.loopexit1
+; EPILOG-NEXT: br i1 true, label %latch.epil, label %innerexit.loopexit2
; EPILOG: latch.epil:
; EPILOG-NEXT: %i11.epil = add nsw i32 %i7.epil, 1
; EPILOG-NEXT: %innercnd.epil = icmp slt i32 %i11.epil, %trip
@@ -4866,7 +4849,7 @@ define ptr addrspace(1) @test9(ptr nocapture readonly %arg, i32 %n) {
; EPILOG-BLOCK-NEXT: %2 = add i32 %1, -1
; EPILOG-BLOCK-NEXT: %xtraiter = and i32 %1, 1
; EPILOG-BLOCK-NEXT: %3 = icmp ult i32 %2, 1
-; EPILOG-BLOCK-NEXT: br i1 %3, label %outerLatch.loopexit.unr-lcssa, label %preheader.new
+; EPILOG-BLOCK-NEXT: br i1 %3, label %header.epil.preheader, label %preheader.new
; EPILOG-BLOCK: preheader.new:
; EPILOG-BLOCK-NEXT: %unroll_iter = sub i32 %1, %xtraiter
; EPILOG-BLOCK-NEXT: br label %header
@@ -4877,17 +4860,17 @@ define ptr addrspace(1) @test9(ptr nocapture readonly %arg, i32 %n) {
; EPILOG-BLOCK: innerexit.loopexit.loopexit:
; EPILOG-BLOCK-NEXT: %trip.lcssa.ph.ph = phi i32 [ %trip, %latch ], [ %trip, %header ]
; EPILOG-BLOCK-NEXT: br label %innerexit.loopexit
-; EPILOG-BLOCK: innerexit.loopexit.loopexit4:
-; EPILOG-BLOCK-NEXT: %trip.lcssa.ph.ph5 = phi i32 [ %trip.1, %latch.13 ], [ %trip.1, %header.1 ]
+; EPILOG-BLOCK: innerexit.loopexit.loopexit5:
+; EPILOG-BLOCK-NEXT: %trip.lcssa.ph.ph6 = phi i32 [ %trip.1, %latch.14 ], [ %trip.1, %header.1 ]
; EPILOG-BLOCK-NEXT: br label %innerexit.loopexit
; EPILOG-BLOCK: innerexit.loopexit:
-; EPILOG-BLOCK-NEXT: %trip.lcssa.ph = phi i32 [ %trip.lcssa.ph.ph, %innerexit.loopexit.loopexit ], [ %trip.lcssa.ph.ph5, %innerexit.loopexit.loopexit4 ]
+; EPILOG-BLOCK-NEXT: %trip.lcssa.ph = phi i32 [ %trip.lcssa.ph.ph, %innerexit.loopexit.loopexit ], [ %trip.lcssa.ph.ph6, %innerexit.loopexit.loopexit5 ]
; EPILOG-BLOCK-NEXT: br label %innerexit
-; EPILOG-BLOCK: innerexit.loopexit1:
-; EPILOG-BLOCK-NEXT: %trip.lcssa.ph2 = phi i32 [ %trip, %header.epil ], [ %trip.1, %header.epil.1 ]
+; EPILOG-BLOCK: innerexit.loopexit2:
+; EPILOG-BLOCK-NEXT: %trip.lcssa.ph3 = phi i32 [ %trip, %header.epil ], [ %trip.1, %header.epil.1 ]
; EPILOG-BLOCK-NEXT: br label %innerexit
; EPILOG-BLOCK: innerexit:
-; EPILOG-BLOCK-NEXT: %trip.lcssa = phi i32 [ %trip.lcssa.ph, %innerexit.loopexit ], [ %trip.lcssa.ph2, %innerexit.loopexit1 ]
+; EPILOG-BLOCK-NEXT: %trip.lcssa = phi i32 [ %trip.lcssa.ph, %innerexit.loopexit ], [ %trip.lcssa.ph3, %innerexit.loopexit2 ]
; EPILOG-BLOCK-NEXT: %i9 = call ptr addrspace(1) @foo(i32 %trip.lcssa)
; EPILOG-BLOCK-NEXT: ret ptr addrspace(1) %i9
; EPILOG-BLOCK: latch:
@@ -4896,16 +4879,16 @@ define ptr addrspace(1) @test9(ptr nocapture readonly %arg, i32 %n) {
; EPILOG-BLOCK-NEXT: %iv.next.1 = add nuw nsw i64 %phi, 2
; EPILOG-BLOCK-NEXT: %niter.next.1 = add i32 %niter, 2
; EPILOG-BLOCK-NEXT: %niter.ncmp.1 = icmp ne i32 %niter.next.1, %unroll_iter
-; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %header, label %outerLatch.loopexit.unr-lcssa.loopexit, !llvm.loop !14
-; EPILOG-BLOCK: outerLatch.loopexit.unr-lcssa.loopexit:
-; EPILOG-BLOCK-NEXT: br label %outerLatch.loopexit.unr-lcssa
+; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %header, label %outerLatch.loopexit.unr-lcssa, !llvm.loop !14
; EPILOG-BLOCK: outerLatch.loopexit.unr-lcssa:
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i32 %xtraiter, 0
; EPILOG-BLOCK-NEXT: br i1 %lcmp.mod, label %header.epil.preheader, label %outerLatch.loopexit
; EPILOG-BLOCK: header.epil.preheader:
+; EPILOG-BLOCK-NEXT: %lcmp.mod1 = icmp ne i32 %xtraiter, 0
+; EPILOG-BLOCK-NEXT: call void @llvm.assume(i1 %lcmp.mod1)
; EPILOG-BLOCK-NEXT: br label %header.epil
; EPILOG-BLOCK: header.epil:
-; EPILOG-BLOCK-NEXT: br i1 true, label %latch.epil, label %innerexit.loopexit1
+; EPILOG-BLOCK-NEXT: br i1 true, label %latch.epil, label %innerexit.loopexit2
; EPILOG-BLOCK: latch.epil:
; EPILOG-BLOCK-NEXT: br label %outerLatch.loopexit
; EPILOG-BLOCK: outerLatch.loopexit:
@@ -4919,30 +4902,30 @@ define ptr addrspace(1) @test9(ptr nocapture readonly %arg, i32 %n) {
; EPILOG-BLOCK-NEXT: %5 = add i32 %4, -1
; EPILOG-BLOCK-NEXT: %xtraiter.1 = and i32 %4, 1
; EPILOG-BLOCK-NEXT: %6 = icmp ult i32 %5, 1
-; EPILOG-BLOCK-NEXT: br i1 %6, label %outerLatch.loopexit.unr-lcssa.1, label %preheader.new.1
+; EPILOG-BLOCK-NEXT: br i1 %6, label %header.epil.preheader.1, label %preheader.new.1
; EPILOG-BLOCK: preheader.new.1:
; EPILOG-BLOCK-NEXT: %unroll_iter.1 = sub i32 %4, %xtraiter.1
; EPILOG-BLOCK-NEXT: br label %header.1
; EPILOG-BLOCK: header.1:
; EPILOG-BLOCK-NEXT: %phi.1 = phi i64 [ 0, %preheader.new.1 ], [ %iv.next.1.1, %latch.1.1 ]
; EPILOG-BLOCK-NEXT: %niter.1 = phi i32 [ 0, %preheader.new.1 ], [ %niter.next.1.1, %latch.1.1 ]
-; EPILOG-BLOCK-NEXT: br i1 true, label %latch.13, label %innerexit.loopexit.loopexit4
-; EPILOG-BLOCK: latch.13:
-; EPILOG-BLOCK-NEXT: br i1 true, label %latch.1.1, label %innerexit.loopexit.loopexit4
+; EPILOG-BLOCK-NEXT: br i1 true, label %latch.14, label %innerexit.loopexit.loopexit5
+; EPILOG-BLOCK: latch.14:
+; EPILOG-BLOCK-NEXT: br i1 true, label %latch.1.1, label %innerexit.loopexit.loopexit5
; EPILOG-BLOCK: latch.1.1:
; EPILOG-BLOCK-NEXT: %iv.next.1.1 = add nuw nsw i64 %phi.1, 2
; EPILOG-BLOCK-NEXT: %niter.next.1.1 = add i32 %niter.1, 2
; EPILOG-BLOCK-NEXT: %niter.ncmp.1.1 = icmp ne i32 %niter.next.1.1, %unroll_iter.1
-; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1.1, label %header.1, label %outerLatch.loopexit.unr-lcssa.loopexit.1, !llvm.loop !14
-; EPILOG-BLOCK: outerLatch.loopexit.unr-lcssa.loopexit.1:
-; EPILOG-BLOCK-NEXT: br label %outerLatch.loopexit.unr-lcssa.1
+; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1.1, label %header.1, label %outerLatch.loopexit.unr-lcssa.1, !llvm.loop !14
; EPILOG-BLOCK: outerLatch.loopexit.unr-lcssa.1:
; EPILOG-BLOCK-NEXT: %lcmp.mod.1 = icmp ne i32 %xtraiter.1, 0
; EPILOG-BLOCK-NEXT: br i1 %lcmp.mod.1, label %header.epil.preheader.1, label %outerLatch.loopexit.1
; EPILOG-BLOCK: header.epil.preheader.1:
+; EPILOG-BLOCK-NEXT: %lcmp.mod1.1 = icmp ne i32 %xtraiter.1, 0
+; EPILOG-BLOCK-NEXT: call void @llvm.assume(i1 %lcmp.mod1.1)
; EPILOG-BLOCK-NEXT: br label %header.epil.1
; EPILOG-BLOCK: header.epil.1:
-; EPILOG-BLOCK-NEXT: br i1 true, label %latch.epil.1, label %innerexit.loopexit1
+; EPILOG-BLOCK-NEXT: br i1 true, label %latch.epil.1, label %innerexit.loopexit2
; EPILOG-BLOCK: latch.epil.1:
; EPILOG-BLOCK-NEXT: br label %outerLatch.loopexit.1
; EPILOG-BLOCK: outerLatch.loopexit.1:
@@ -5171,7 +5154,7 @@ define void @test10(i64 %trip, i64 %trip2) {
; EPILOG-NEXT: %1 = add i64 %0, -1
; EPILOG-NEXT: %xtraiter = and i64 %0, 7
; EPILOG-NEXT: %2 = icmp ult i64 %1, 7
-; EPILOG-NEXT: br i1 %2, label %exit2.unr-lcssa, label %entry.new
+; EPILOG-NEXT: br i1 %2, label %loop_header.epil.preheader, label %entry.new
; EPILOG: entry.new:
; EPILOG-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-NEXT: br label %loop_header
@@ -5220,28 +5203,28 @@ define void @test10(i64 %trip, i64 %trip2) {
; EPILOG-NEXT: %iv_next.7 = add i64 %iv, 8
; EPILOG-NEXT: %niter.next.7 = add i64 %niter, 8
; EPILOG-NEXT: %niter.ncmp.7 = icmp ne i64 %niter.next.7, %unroll_iter
-; EPILOG-NEXT: br i1 %niter.ncmp.7, label %loop_header, label %exit2.unr-lcssa.loopexit
+; EPILOG-NEXT: br i1 %niter.ncmp.7, label %loop_header, label %exit2.unr-lcssa
; EPILOG: exit1.loopexit:
; EPILOG-NEXT: br label %exit1
-; EPILOG: exit1.loopexit1:
+; EPILOG: exit1.loopexit2:
; EPILOG-NEXT: br label %exit1
; EPILOG: exit1:
; EPILOG-NEXT: ret void
-; EPILOG: exit2.unr-lcssa.loopexit:
-; EPILOG-NEXT: %iv.unr.ph = phi i64 [ %iv_next.7, %loop_latch.7 ]
-; EPILOG-NEXT: br label %exit2.unr-lcssa
; EPILOG: exit2.unr-lcssa:
-; EPILOG-NEXT: %iv.unr = phi i64 [ 0, %entry ], [ %iv.unr.ph, %exit2.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %iv.unr = phi i64 [ %iv_next.7, %loop_latch.7 ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-NEXT: br i1 %lcmp.mod, label %loop_header.epil.preheader, label %exit2
; EPILOG: loop_header.epil.preheader:
+; EPILOG-NEXT: %iv.epil.init = phi i64 [ 0, %entry ], [ %iv.unr, %exit2.unr-lcssa ]
+; EPILOG-NEXT: %lcmp.mod1 = icmp ne i64 %xtraiter, 0
+; EPILOG-NEXT: call void @llvm.assume(i1 %lcmp.mod1)
; EPILOG-NEXT: br label %loop_header.epil
; EPILOG: loop_header.epil:
-; EPILOG-NEXT: %iv.epil = phi i64 [ %iv.unr, %loop_header.epil.preheader ], [ %iv_next.epil, %loop_latch.epil ]
+; EPILOG-NEXT: %iv.epil = phi i64 [ %iv.epil.init, %loop_header.epil.preheader ], [ %iv_next.epil, %loop_latch.epil ]
; EPILOG-NEXT: %epil.iter = phi i64 [ 0, %loop_header.epil.preheader ], [ %epil.iter.next, %loop_latch.epil ]
; EPILOG-NEXT: call void @bar()
; EPILOG-NEXT: %cmp_early.epil = icmp ne i64 %iv.epil, %trip2
-; EPILOG-NEXT: br i1 %cmp_early.epil, label %loop_latch.epil, label %exit1.loopexit1
+; EPILOG-NEXT: br i1 %cmp_early.epil, label %loop_latch.epil, label %exit1.loopexit2
; EPILOG: loop_latch.epil:
; EPILOG-NEXT: %iv_next.epil = add i64 %iv.epil, 1
; EPILOG-NEXT: %cmp.epil = icmp ne i64 %iv_next.epil, %trip
@@ -5259,7 +5242,7 @@ define void @test10(i64 %trip, i64 %trip2) {
; EPILOG-BLOCK-NEXT: %1 = add i64 %0, -1
; EPILOG-BLOCK-NEXT: %xtraiter = and i64 %0, 1
; EPILOG-BLOCK-NEXT: %2 = icmp ult i64 %1, 1
-; EPILOG-BLOCK-NEXT: br i1 %2, label %exit2.unr-lcssa, label %entry.new
+; EPILOG-BLOCK-NEXT: br i1 %2, label %loop_header.epil.preheader, label %entry.new
; EPILOG-BLOCK: entry.new:
; EPILOG-BLOCK-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-BLOCK-NEXT: br label %loop_header
@@ -5278,23 +5261,23 @@ define void @test10(i64 %trip, i64 %trip2) {
; EPILOG-BLOCK-NEXT: %iv_next.1 = add i64 %iv, 2
; EPILOG-BLOCK-NEXT: %niter.next.1 = add i64 %niter, 2
; EPILOG-BLOCK-NEXT: %niter.ncmp.1 = icmp ne i64 %niter.next.1, %unroll_iter
-; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %loop_header, label %exit2.unr-lcssa.loopexit, !llvm.loop !16
+; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %loop_header, label %exit2.unr-lcssa, !llvm.loop !16
; EPILOG-BLOCK: exit1.loopexit:
; EPILOG-BLOCK-NEXT: br label %exit1
; EPILOG-BLOCK: exit1:
; EPILOG-BLOCK-NEXT: ret void
-; EPILOG-BLOCK: exit2.unr-lcssa.loopexit:
-; EPILOG-BLOCK-NEXT: %iv.unr.ph = phi i64 [ %iv_next.1, %loop_latch.1 ]
-; EPILOG-BLOCK-NEXT: br label %exit2.unr-lcssa
; EPILOG-BLOCK: exit2.unr-lcssa:
-; EPILOG-BLOCK-NEXT: %iv.unr = phi i64 [ 0, %entry ], [ %iv.unr.ph, %exit2.unr-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %iv.unr = phi i64 [ %iv_next.1, %loop_latch.1 ]
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-BLOCK-NEXT: br i1 %lcmp.mod, label %loop_header.epil.preheader, label %exit2
; EPILOG-BLOCK: loop_header.epil.preheader:
+; EPILOG-BLOCK-NEXT: %iv.epil.init = phi i64 [ 0, %entry ], [ %iv.unr, %exit2.unr-lcssa ]
+; EPILOG-BLOCK-NEXT: %lcmp.mod1 = icmp ne i64 %xtraiter, 0
+; EPILOG-BLOCK-NEXT: call void @llvm.assume(i1 %lcmp.mod1)
; EPILOG-BLOCK-NEXT: br label %loop_header.epil
; EPILOG-BLOCK: loop_header.epil:
; EPILOG-BLOCK-NEXT: call void @bar()
-; EPILOG-BLOCK-NEXT: %cmp_early.epil = icmp ne i64 %iv.unr, %trip2
+; EPILOG-BLOCK-NEXT: %cmp_early.epil = icmp ne i64 %iv.epil.init, %trip2
; EPILOG-BLOCK-NEXT: br i1 %cmp_early.epil, label %loop_latch.epil, label %exit1
; EPILOG-BLOCK: loop_latch.epil:
; EPILOG-BLOCK-NEXT: br label %exit2
@@ -5460,7 +5443,7 @@ define void @test11(i64 %trip, i1 %cond) {
; EPILOG-NEXT: %1 = add i64 %0, -1
; EPILOG-NEXT: %xtraiter = and i64 %0, 7
; EPILOG-NEXT: %2 = icmp ult i64 %1, 7
-; EPILOG-NEXT: br i1 %2, label %exit2.unr-lcssa, label %entry.new
+; EPILOG-NEXT: br i1 %2, label %loop_header.epil.preheader, label %entry.new
; EPILOG: entry.new:
; EPILOG-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-NEXT: br label %loop_header
@@ -5494,27 +5477,27 @@ define void @test11(i64 %trip, i1 %cond) {
; EPILOG-NEXT: %iv_next.7 = add i64 %iv, 8
; EPILOG-NEXT: %niter.next.7 = add i64 %niter, 8
; EPILOG-NEXT: %niter.ncmp.7 = icmp ne i64 %niter.next.7, %unroll_iter
-; EPILOG-NEXT: br i1 %niter.ncmp.7, label %loop_header, label %exit2.unr-lcssa.loopexit
+; EPILOG-NEXT: br i1 %niter.ncmp.7, label %loop_header, label %exit2.unr-lcssa
; EPILOG: exit1.loopexit:
; EPILOG-NEXT: br label %exit1
-; EPILOG: exit1.loopexit1:
+; EPILOG: exit1.loopexit2:
; EPILOG-NEXT: br label %exit1
; EPILOG: exit1:
; EPILOG-NEXT: ret void
-; EPILOG: exit2.unr-lcssa.loopexit:
-; EPILOG-NEXT: %iv.unr.ph = phi i64 [ %iv_next.7, %loop_latch.7 ]
-; EPILOG-NEXT: br label %exit2.unr-lcssa
; EPILOG: exit2.unr-lcssa:
-; EPILOG-NEXT: %iv.unr = phi i64 [ 0, %entry ], [ %iv.unr.ph, %exit2.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %iv.unr = phi i64 [ %iv_next.7, %loop_latch.7 ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-NEXT: br i1 %lcmp.mod, label %loop_header.epil.preheader, label %exit2
; EPILOG: loop_header.epil.preheader:
+; EPILOG-NEXT: %iv.epil.init = phi i64 [ 0, %entry ], [ %iv.unr, %exit2.unr-lcssa ]
+; EPILOG-NEXT: %lcmp.mod1 = icmp ne i64 %xtraiter, 0
+; EPILOG-NEXT: call void @llvm.assume(i1 %lcmp.mod1)
; EPILOG-NEXT: br label %loop_header.epil
; EPILOG: loop_header.epil:
-; EPILOG-NEXT: %iv.epil = phi i64 [ %iv.unr, %loop_header.epil.preheader ], [ %iv_next.epil, %loop_latch.epil ]
+; EPILOG-NEXT: %iv.epil = phi i64 [ %iv.epil.init, %loop_header.epil.preheader ], [ %iv_next.epil, %loop_latch.epil ]
; EPILOG-NEXT: %epil.iter = phi i64 [ 0, %loop_header.epil.preheader ], [ %epil.iter.next, %loop_latch.epil ]
; EPILOG-NEXT: call void @bar()
-; EPILOG-NEXT: br i1 %cond, label %loop_latch.epil, label %exit1.loopexit1
+; EPILOG-NEXT: br i1 %cond, label %loop_latch.epil, label %exit1.loopexit2
; EPILOG: loop_latch.epil:
; EPILOG-NEXT: %iv_next.epil = add i64 %iv.epil, 1
; EPILOG-NEXT: %cmp.epil = icmp ne i64 %iv_next.epil, %trip
@@ -5532,7 +5515,7 @@ define void @test11(i64 %trip, i1 %cond) {
; EPILOG-BLOCK-NEXT: %1 = add i64 %0, -1
; EPILOG-BLOCK-NEXT: %xtraiter = and i64 %0, 1
; EPILOG-BLOCK-NEXT: %2 = icmp ult i64 %1, 1
-; EPILOG-BLOCK-NEXT: br i1 %2, label %exit2.unr-lcssa, label %entry.new
+; EPILOG-BLOCK-NEXT: br i1 %2, label %loop_header.epil.preheader, label %entry.new
; EPILOG-BLOCK: entry.new:
; EPILOG-BLOCK-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-BLOCK-NEXT: br label %loop_header
@@ -5548,17 +5531,17 @@ define void @test11(i64 %trip, i1 %cond) {
; EPILOG-BLOCK-NEXT: %iv_next.1 = add i64 %iv, 2
; EPILOG-BLOCK-NEXT: %niter.next.1 = add i64 %niter, 2
; EPILOG-BLOCK-NEXT: %niter.ncmp.1 = icmp ne i64 %niter.next.1, %unroll_iter
-; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %loop_header, label %exit2.unr-lcssa.loopexit, !llvm.loop !17
+; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %loop_header, label %exit2.unr-lcssa, !llvm.loop !17
; EPILOG-BLOCK: exit1.loopexit:
; EPILOG-BLOCK-NEXT: br label %exit1
; EPILOG-BLOCK: exit1:
; EPILOG-BLOCK-NEXT: ret void
-; EPILOG-BLOCK: exit2.unr-lcssa.loopexit:
-; EPILOG-BLOCK-NEXT: br label %exit2.unr-lcssa
; EPILOG-BLOCK: exit2.unr-lcssa:
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-BLOCK-NEXT: br i1 %lcmp.mod, label %loop_header.epil.preheader, label %exit2
; EPILOG-BLOCK: loop_header.epil.preheader:
+; EPILOG-BLOCK-NEXT: %lcmp.mod1 = icmp ne i64 %xtraiter, 0
+; EPILOG-BLOCK-NEXT: call void @llvm.assume(i1 %lcmp.mod1)
; EPILOG-BLOCK-NEXT: br label %loop_header.epil
; EPILOG-BLOCK: loop_header.epil:
; EPILOG-BLOCK-NEXT: call void @bar()
@@ -5706,7 +5689,7 @@ define void @test12(i64 %trip, i64 %trip2, i1 %cond) {
; EPILOG-NEXT: %1 = add i64 %0, -1
; EPILOG-NEXT: %xtraiter = and i64 %0, 7
; EPILOG-NEXT: %2 = icmp ult i64 %1, 7
-; EPILOG-NEXT: br i1 %2, label %exit1.unr-lcssa, label %entry.new
+; EPILOG-NEXT: br i1 %2, label %loop_header.epil.preheader, label %entry.new
; EPILOG: entry.new:
; EPILOG-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-NEXT: br label %loop_header
@@ -5771,33 +5754,33 @@ define void @test12(i64 %trip, i64 %trip2, i1 %cond) {
; EPILOG-NEXT: %iv_next.7 = add i64 %iv, 8
; EPILOG-NEXT: %niter.next.7 = add i64 %niter, 8
; EPILOG-NEXT: %niter.ncmp.7 = icmp ne i64 %niter.next.7, %unroll_iter
-; EPILOG-NEXT: br i1 %niter.ncmp.7, label %loop_header, label %exit1.unr-lcssa.loopexit
-; EPILOG: exit1.unr-lcssa.loopexit:
-; EPILOG-NEXT: %iv.unr.ph = phi i64 [ %iv_next.7, %loop_latch.7 ]
-; EPILOG-NEXT: br label %exit1.unr-lcssa
+; EPILOG-NEXT: br i1 %niter.ncmp.7, label %loop_header, label %exit1.unr-lcssa
; EPILOG: exit1.unr-lcssa:
-; EPILOG-NEXT: %iv.unr = phi i64 [ 0, %entry ], [ %iv.unr.ph, %exit1.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %iv.unr = phi i64 [ %iv_next.7, %loop_latch.7 ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-NEXT: br i1 %lcmp.mod, label %loop_header.epil.preheader, label %exit1
; EPILOG: loop_header.epil.preheader:
+; EPILOG-NEXT: %iv.epil.init = phi i64 [ 0, %entry ], [ %iv.unr, %exit1.unr-lcssa ]
+; EPILOG-NEXT: %lcmp.mod1 = icmp ne i64 %xtraiter, 0
+; EPILOG-NEXT: call void @llvm.assume(i1 %lcmp.mod1)
; EPILOG-NEXT: br label %loop_header.epil
; EPILOG: loop_header.epil:
-; EPILOG-NEXT: %iv.epil = phi i64 [ %iv.unr, %loop_header.epil.preheader ], [ %iv_next.epil, %loop_latch.epil ]
+; EPILOG-NEXT: %iv.epil = phi i64 [ %iv.epil.init, %loop_header.epil.preheader ], [ %iv_next.epil, %loop_latch.epil ]
; EPILOG-NEXT: %epil.iter = phi i64 [ 0, %loop_header.epil.preheader ], [ %epil.iter.next, %loop_latch.epil ]
; EPILOG-NEXT: call void @bar()
; EPILOG-NEXT: %cmp_early.epil = icmp ne i64 %iv.epil, %trip2
-; EPILOG-NEXT: br i1 %cmp_early.epil, label %loop_exiting_bb2.epil, label %exit1.epilog-lcssa.loopexit1
+; EPILOG-NEXT: br i1 %cmp_early.epil, label %loop_exiting_bb2.epil, label %exit1.epilog-lcssa.loopexit2
; EPILOG: loop_exiting_bb2.epil:
-; EPILOG-NEXT: br i1 %cond, label %loop_latch.epil, label %exit1.epilog-lcssa.loopexit1
+; EPILOG-NEXT: br i1 %cond, label %loop_latch.epil, label %exit1.epilog-lcssa.loopexit2
; EPILOG: loop_latch.epil:
; EPILOG-NEXT: %iv_next.epil = add i64 %iv.epil, 1
; EPILOG-NEXT: %cmp.epil = icmp ne i64 %iv_next.epil, %trip
; EPILOG-NEXT: %epil.iter.next = add i64 %epil.iter, 1
; EPILOG-NEXT: %epil.iter.cmp = icmp ne i64 %epil.iter.next, %xtraiter
-; EPILOG-NEXT: br i1 %epil.iter.cmp, label %loop_header.epil, label %exit1.epilog-lcssa.loopexit1, !llvm.loop !16
+; EPILOG-NEXT: br i1 %epil.iter.cmp, label %loop_header.epil, label %exit1.epilog-lcssa.loopexit2, !llvm.loop !16
; EPILOG: exit1.epilog-lcssa.loopexit:
; EPILOG-NEXT: br label %exit1.epilog-lcssa
-; EPILOG: exit1.epilog-lcssa.loopexit1:
+; EPILOG: exit1.epilog-lcssa.loopexit2:
; EPILOG-NEXT: br label %exit1.epilog-lcssa
; EPILOG: exit1.epilog-lcssa:
; EPILOG-NEXT: br label %exit1
@@ -5810,7 +5793,7 @@ define void @test12(i64 %trip, i64 %trip2, i1 %cond) {
; EPILOG-BLOCK-NEXT: %1 = add i64 %0, -1
; EPILOG-BLOCK-NEXT: %xtraiter = and i64 %0, 1
; EPILOG-BLOCK-NEXT: %2 = icmp ult i64 %1, 1
-; EPILOG-BLOCK-NEXT: br i1 %2, label %exit1.unr-lcssa, label %entry.new
+; EPILOG-BLOCK-NEXT: br i1 %2, label %loop_header.epil.preheader, label %entry.new
; EPILOG-BLOCK: entry.new:
; EPILOG-BLOCK-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-BLOCK-NEXT: br label %loop_header
@@ -5833,19 +5816,19 @@ define void @test12(i64 %trip, i64 %trip2, i1 %cond) {
; EPILOG-BLOCK-NEXT: %iv_next.1 = add i64 %iv, 2
; EPILOG-BLOCK-NEXT: %niter.next.1 = add i64 %niter, 2
; EPILOG-BLOCK-NEXT: %niter.ncmp.1 = icmp ne i64 %niter.next.1, %unroll_iter
-; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %loop_header, label %exit1.unr-lcssa.loopexit, !llvm.loop !18
-; EPILOG-BLOCK: exit1.unr-lcssa.loopexit:
-; EPILOG-BLOCK-NEXT: %iv.unr.ph = phi i64 [ %iv_next.1, %loop_latch.1 ]
-; EPILOG-BLOCK-NEXT: br label %exit1.unr-lcssa
+; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %loop_header, label %exit1.unr-lcssa, !llvm.loop !18
; EPILOG-BLOCK: exit1.unr-lcssa:
-; EPILOG-BLOCK-NEXT: %iv.unr = phi i64 [ 0, %entry ], [ %iv.unr.ph, %exit1.unr-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %iv.unr = phi i64 [ %iv_next.1, %loop_latch.1 ]
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-BLOCK-NEXT: br i1 %lcmp.mod, label %loop_header.epil.preheader, label %exit1
; EPILOG-BLOCK: loop_header.epil.preheader:
+; EPILOG-BLOCK-NEXT: %iv.epil.init = phi i64 [ 0, %entry ], [ %iv.unr, %exit1.unr-lcssa ]
+; EPILOG-BLOCK-NEXT: %lcmp.mod1 = icmp ne i64 %xtraiter, 0
+; EPILOG-BLOCK-NEXT: call void @llvm.assume(i1 %lcmp.mod1)
; EPILOG-BLOCK-NEXT: br label %loop_header.epil
; EPILOG-BLOCK: loop_header.epil:
; EPILOG-BLOCK-NEXT: call void @bar()
-; EPILOG-BLOCK-NEXT: %cmp_early.epil = icmp ne i64 %iv.unr, %trip2
+; EPILOG-BLOCK-NEXT: %cmp_early.epil = icmp ne i64 %iv.epil.init, %trip2
; EPILOG-BLOCK-NEXT: br i1 %cmp_early.epil, label %loop_exiting_bb2.epil, label %exit1.epilog-lcssa
; EPILOG-BLOCK: loop_exiting_bb2.epil:
; EPILOG-BLOCK-NEXT: br i1 %cond, label %loop_latch.epil, label %exit1.epilog-lcssa
@@ -6038,7 +6021,7 @@ define void @test13(i64 %trip, i64 %trip2) {
; EPILOG-NEXT: %1 = add i64 %0, -1
; EPILOG-NEXT: %xtraiter = and i64 %0, 7
; EPILOG-NEXT: %2 = icmp ult i64 %1, 7
-; EPILOG-NEXT: br i1 %2, label %exit1.unr-lcssa, label %entry.new
+; EPILOG-NEXT: br i1 %2, label %loop_header.epil.preheader, label %entry.new
; EPILOG: entry.new:
; EPILOG-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-NEXT: br label %loop_header
@@ -6111,34 +6094,34 @@ define void @test13(i64 %trip, i64 %trip2) {
; EPILOG-NEXT: %iv_next.7 = add i64 %iv, 8
; EPILOG-NEXT: %niter.next.7 = add i64 %niter, 8
; EPILOG-NEXT: %niter.ncmp.7 = icmp ne i64 %niter.next.7, %unroll_iter
-; EPILOG-NEXT: br i1 %niter.ncmp.7, label %loop_header, label %exit1.unr-lcssa.loopexit
-; EPILOG: exit1.unr-lcssa.loopexit:
-; EPILOG-NEXT: %iv.unr.ph = phi i64 [ %iv_next.7, %loop_latch.7 ]
-; EPILOG-NEXT: br label %exit1.unr-lcssa
+; EPILOG-NEXT: br i1 %niter.ncmp.7, label %loop_header, label %exit1.unr-lcssa
; EPILOG: exit1.unr-lcssa:
-; EPILOG-NEXT: %iv.unr = phi i64 [ 0, %entry ], [ %iv.unr.ph, %exit1.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %iv.unr = phi i64 [ %iv_next.7, %loop_latch.7 ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-NEXT: br i1 %lcmp.mod, label %loop_header.epil.preheader, label %exit1
; EPILOG: loop_header.epil.preheader:
+; EPILOG-NEXT: %iv.epil.init = phi i64 [ 0, %entry ], [ %iv.unr, %exit1.unr-lcssa ]
+; EPILOG-NEXT: %lcmp.mod1 = icmp ne i64 %xtraiter, 0
+; EPILOG-NEXT: call void @llvm.assume(i1 %lcmp.mod1)
; EPILOG-NEXT: br label %loop_header.epil
; EPILOG: loop_header.epil:
-; EPILOG-NEXT: %iv.epil = phi i64 [ %iv.unr, %loop_header.epil.preheader ], [ %iv_next.epil, %loop_latch.epil ]
+; EPILOG-NEXT: %iv.epil = phi i64 [ %iv.epil.init, %loop_header.epil.preheader ], [ %iv_next.epil, %loop_latch.epil ]
; EPILOG-NEXT: %epil.iter = phi i64 [ 0, %loop_header.epil.preheader ], [ %epil.iter.next, %loop_latch.epil ]
; EPILOG-NEXT: call void @bar()
; EPILOG-NEXT: %cmp_early.epil = icmp ne i64 %iv.epil, %trip2
-; EPILOG-NEXT: br i1 %cmp_early.epil, label %loop_exiting_bb2.epil, label %exit1.epilog-lcssa.loopexit1
+; EPILOG-NEXT: br i1 %cmp_early.epil, label %loop_exiting_bb2.epil, label %exit1.epilog-lcssa.loopexit2
; EPILOG: loop_exiting_bb2.epil:
; EPILOG-NEXT: %unknown.epil = call i1 @unknown_cond()
-; EPILOG-NEXT: br i1 %unknown.epil, label %loop_latch.epil, label %exit1.epilog-lcssa.loopexit1
+; EPILOG-NEXT: br i1 %unknown.epil, label %loop_latch.epil, label %exit1.epilog-lcssa.loopexit2
; EPILOG: loop_latch.epil:
; EPILOG-NEXT: %iv_next.epil = add i64 %iv.epil, 1
; EPILOG-NEXT: %cmp.epil = icmp ne i64 %iv_next.epil, %trip
; EPILOG-NEXT: %epil.iter.next = add i64 %epil.iter, 1
; EPILOG-NEXT: %epil.iter.cmp = icmp ne i64 %epil.iter.next, %xtraiter
-; EPILOG-NEXT: br i1 %epil.iter.cmp, label %loop_header.epil, label %exit1.epilog-lcssa.loopexit1, !llvm.loop !17
+; EPILOG-NEXT: br i1 %epil.iter.cmp, label %loop_header.epil, label %exit1.epilog-lcssa.loopexit2, !llvm.loop !17
; EPILOG: exit1.epilog-lcssa.loopexit:
; EPILOG-NEXT: br label %exit1.epilog-lcssa
-; EPILOG: exit1.epilog-lcssa.loopexit1:
+; EPILOG: exit1.epilog-lcssa.loopexit2:
; EPILOG-NEXT: br label %exit1.epilog-lcssa
; EPILOG: exit1.epilog-lcssa:
; EPILOG-NEXT: br label %exit1
@@ -6151,7 +6134,7 @@ define void @test13(i64 %trip, i64 %trip2) {
; EPILOG-BLOCK-NEXT: %1 = add i64 %0, -1
; EPILOG-BLOCK-NEXT: %xtraiter = and i64 %0, 1
; EPILOG-BLOCK-NEXT: %2 = icmp ult i64 %1, 1
-; EPILOG-BLOCK-NEXT: br i1 %2, label %exit1.unr-lcssa, label %entry.new
+; EPILOG-BLOCK-NEXT: br i1 %2, label %loop_header.epil.preheader, label %entry.new
; EPILOG-BLOCK: entry.new:
; EPILOG-BLOCK-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-BLOCK-NEXT: br label %loop_header
@@ -6176,19 +6159,19 @@ define void @test13(i64 %trip, i64 %trip2) {
; EPILOG-BLOCK-NEXT: %iv_next.1 = add i64 %iv, 2
; EPILOG-BLOCK-NEXT: %niter.next.1 = add i64 %niter, 2
; EPILOG-BLOCK-NEXT: %niter.ncmp.1 = icmp ne i64 %niter.next.1, %unroll_iter
-; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %loop_header, label %exit1.unr-lcssa.loopexit, !llvm.loop !19
-; EPILOG-BLOCK: exit1.unr-lcssa.loopexit:
-; EPILOG-BLOCK-NEXT: %iv.unr.ph = phi i64 [ %iv_next.1, %loop_latch.1 ]
-; EPILOG-BLOCK-NEXT: br label %exit1.unr-lcssa
+; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %loop_header, label %exit1.unr-lcssa, !llvm.loop !19
; EPILOG-BLOCK: exit1.unr-lcssa:
-; EPILOG-BLOCK-NEXT: %iv.unr = phi i64 [ 0, %entry ], [ %iv.unr.ph, %exit1.unr-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %iv.unr = phi i64 [ %iv_next.1, %loop_latch.1 ]
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-BLOCK-NEXT: br i1 %lcmp.mod, label %loop_header.epil.preheader, label %exit1
; EPILOG-BLOCK: loop_header.epil.preheader:
+; EPILOG-BLOCK-NEXT: %iv.epil.init = phi i64 [ 0, %entry ], [ %iv.unr, %exit1.unr-lcssa ]
+; EPILOG-BLOCK-NEXT: %lcmp.mod1 = icmp ne i64 %xtraiter, 0
+; EPILOG-BLOCK-NEXT: call void @llvm.assume(i1 %lcmp.mod1)
; EPILOG-BLOCK-NEXT: br label %loop_header.epil
; EPILOG-BLOCK: loop_header.epil:
; EPILOG-BLOCK-NEXT: call void @bar()
-; EPILOG-BLOCK-NEXT: %cmp_early.epil = icmp ne i64 %iv.unr, %trip2
+; EPILOG-BLOCK-NEXT: %cmp_early.epil = icmp ne i64 %iv.epil.init, %trip2
; EPILOG-BLOCK-NEXT: br i1 %cmp_early.epil, label %loop_exiting_bb2.epil, label %exit1.epilog-lcssa
; EPILOG-BLOCK: loop_exiting_bb2.epil:
; EPILOG-BLOCK-NEXT: %unknown.epil = call i1 @unknown_cond()
@@ -6393,7 +6376,7 @@ define void @test14(i64 %trip, i1 %cond) {
; EPILOG-NEXT: %1 = add i64 %0, -1
; EPILOG-NEXT: %xtraiter = and i64 %0, 7
; EPILOG-NEXT: %2 = icmp ult i64 %1, 7
-; EPILOG-NEXT: br i1 %2, label %exit1.unr-lcssa, label %entry.new
+; EPILOG-NEXT: br i1 %2, label %loop_header.epil.preheader, label %entry.new
; EPILOG: entry.new:
; EPILOG-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-NEXT: br label %loop_header
@@ -6451,33 +6434,33 @@ define void @test14(i64 %trip, i1 %cond) {
; EPILOG-NEXT: %iv_next.7 = add i64 %iv, 8
; EPILOG-NEXT: %niter.next.7 = add i64 %niter, 8
; EPILOG-NEXT: %niter.ncmp.7 = icmp ne i64 %niter.next.7, %unroll_iter
-; EPILOG-NEXT: br i1 %niter.ncmp.7, label %loop_header, label %exit1.unr-lcssa.loopexit
-; EPILOG: exit1.unr-lcssa.loopexit:
-; EPILOG-NEXT: %iv.unr.ph = phi i64 [ %iv_next.7, %loop_latch.7 ]
-; EPILOG-NEXT: br label %exit1.unr-lcssa
+; EPILOG-NEXT: br i1 %niter.ncmp.7, label %loop_header, label %exit1.unr-lcssa
; EPILOG: exit1.unr-lcssa:
-; EPILOG-NEXT: %iv.unr = phi i64 [ 0, %entry ], [ %iv.unr.ph, %exit1.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %iv.unr = phi i64 [ %iv_next.7, %loop_latch.7 ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-NEXT: br i1 %lcmp.mod, label %loop_header.epil.preheader, label %exit1
; EPILOG: loop_header.epil.preheader:
+; EPILOG-NEXT: %iv.epil.init = phi i64 [ 0, %entry ], [ %iv.unr, %exit1.unr-lcssa ]
+; EPILOG-NEXT: %lcmp.mod1 = icmp ne i64 %xtraiter, 0
+; EPILOG-NEXT: call void @llvm.assume(i1 %lcmp.mod1)
; EPILOG-NEXT: br label %loop_header.epil
; EPILOG: loop_header.epil:
-; EPILOG-NEXT: %iv.epil = phi i64 [ %iv.unr, %loop_header.epil.preheader ], [ %iv_next.epil, %loop_latch.epil ]
+; EPILOG-NEXT: %iv.epil = phi i64 [ %iv.epil.init, %loop_header.epil.preheader ], [ %iv_next.epil, %loop_latch.epil ]
; EPILOG-NEXT: %epil.iter = phi i64 [ 0, %loop_header.epil.preheader ], [ %epil.iter.next, %loop_latch.epil ]
; EPILOG-NEXT: call void @bar()
-; EPILOG-NEXT: br i1 %cond, label %loop_exiting_bb2.epil, label %exit1.epilog-lcssa.loopexit1
+; EPILOG-NEXT: br i1 %cond, label %loop_exiting_bb2.epil, label %exit1.epilog-lcssa.loopexit2
; EPILOG: loop_exiting_bb2.epil:
; EPILOG-NEXT: %unknown.epil = call i1 @unknown_cond()
-; EPILOG-NEXT: br i1 %unknown.epil, label %loop_latch.epil, label %exit1.epilog-lcssa.loopexit1
+; EPILOG-NEXT: br i1 %unknown.epil, label %loop_latch.epil, label %exit1.epilog-lcssa.loopexit2
; EPILOG: loop_latch.epil:
; EPILOG-NEXT: %iv_next.epil = add i64 %iv.epil, 1
; EPILOG-NEXT: %cmp.epil = icmp ne i64 %iv_next.epil, %trip
; EPILOG-NEXT: %epil.iter.next = add i64 %epil.iter, 1
; EPILOG-NEXT: %epil.iter.cmp = icmp ne i64 %epil.iter.next, %xtraiter
-; EPILOG-NEXT: br i1 %epil.iter.cmp, label %loop_header.epil, label %exit1.epilog-lcssa.loopexit1, !llvm.loop !18
+; EPILOG-NEXT: br i1 %epil.iter.cmp, label %loop_header.epil, label %exit1.epilog-lcssa.loopexit2, !llvm.loop !18
; EPILOG: exit1.epilog-lcssa.loopexit:
; EPILOG-NEXT: br label %exit1.epilog-lcssa
-; EPILOG: exit1.epilog-lcssa.loopexit1:
+; EPILOG: exit1.epilog-lcssa.loopexit2:
; EPILOG-NEXT: br label %exit1.epilog-lcssa
; EPILOG: exit1.epilog-lcssa:
; EPILOG-NEXT: br label %exit1
@@ -6490,7 +6473,7 @@ define void @test14(i64 %trip, i1 %cond) {
; EPILOG-BLOCK-NEXT: %1 = add i64 %0, -1
; EPILOG-BLOCK-NEXT: %xtraiter = and i64 %0, 1
; EPILOG-BLOCK-NEXT: %2 = icmp ult i64 %1, 1
-; EPILOG-BLOCK-NEXT: br i1 %2, label %exit1.unr-lcssa, label %entry.new
+; EPILOG-BLOCK-NEXT: br i1 %2, label %loop_header.epil.preheader, label %entry.new
; EPILOG-BLOCK: entry.new:
; EPILOG-BLOCK-NEXT: %unroll_iter = sub i64 %0, %xtraiter
; EPILOG-BLOCK-NEXT: br label %loop_header
@@ -6512,13 +6495,13 @@ define void @test14(i64 %trip, i1 %cond) {
; EPILOG-BLOCK-NEXT: %iv_next.1 = add i64 %iv, 2
; EPILOG-BLOCK-NEXT: %niter.next.1 = add i64 %niter, 2
; EPILOG-BLOCK-NEXT: %niter.ncmp.1 = icmp ne i64 %niter.next.1, %unroll_iter
-; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %loop_header, label %exit1.unr-lcssa.loopexit, !llvm.loop !20
-; EPILOG-BLOCK: exit1.unr-lcssa.loopexit:
-; EPILOG-BLOCK-NEXT: br label %exit1.unr-lcssa
+; EPILOG-BLOCK-NEXT: br i1 %niter.ncmp.1, label %loop_header, label %exit1.unr-lcssa, !llvm.loop !20
; EPILOG-BLOCK: exit1.unr-lcssa:
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
; EPILOG-BLOCK-NEXT: br i1 %lcmp.mod, label %loop_header.epil.preheader, label %exit1
; EPILOG-BLOCK: loop_header.epil.preheader:
+; EPILOG-BLOCK-NEXT: %lcmp.mod1 = icmp ne i64 %xtraiter, 0
+; EPILOG-BLOCK-NEXT: call void @llvm.assume(i1 %lcmp.mod1)
; EPILOG-BLOCK-NEXT: br label %loop_header.epil
; EPILOG-BLOCK: loop_header.epil:
; EPILOG-BLOCK-NEXT: call void @bar()
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-loop.ll b/llvm/test/Transforms/LoopUnroll/runtime-loop.ll
index 8acf74a..492de06 100644
--- a/llvm/test/Transforms/LoopUnroll/runtime-loop.ll
+++ b/llvm/test/Transforms/LoopUnroll/runtime-loop.ll
@@ -22,7 +22,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
; EPILOG: br i1 %cmp1, label %for.end, label %for.body.preheader, !prof [[EPILOG_PROF_0:![0-9]+]]
; EPILOG: for.body.preheader:
; EPILOG: %xtraiter = and i32 %n
-; EPILOG: br i1 %1, label %for.end.loopexit.unr-lcssa, label %for.body.preheader.new, !prof [[EPILOG_PROF_1:![0-9]+]]
+; EPILOG: br i1 %1, label %for.body.epil.preheader, label %for.body.preheader.new, !prof [[EPILOG_PROF_1:![0-9]+]]
; EPILOG: for.end.loopexit.unr-lcssa:
; EPILOG: %lcmp.mod = icmp ne i32 %xtraiter, 0
@@ -41,7 +41,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
; NOPROLOG-NOT: %xtraiter = and i32 %n
; EPILOG: for.body.epil:
-; EPILOG: %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %for.body.epil ], [ %indvars.iv.unr, %for.body.epil.preheader ]
+; EPILOG: %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %for.body.epil ], [ %indvars.iv.epil.init, %for.body.epil.preheader ]
; EPILOG: %epil.iter.next = add i32 %epil.iter, 1
; EPILOG: %epil.iter.cmp = icmp ne i32 %epil.iter.next, %xtraiter
; EPILOG: br i1 %epil.iter.cmp, label %for.body.epil, label %for.end.loopexit.epilog-lcssa, !prof [[EPILOG_PROF_3:![0-9]+]], !llvm.loop [[EPILOG_LOOP:![0-9]+]]
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-loop1.ll b/llvm/test/Transforms/LoopUnroll/runtime-loop1.ll
index 492ddd1..0eeb3ad 100644
--- a/llvm/test/Transforms/LoopUnroll/runtime-loop1.ll
+++ b/llvm/test/Transforms/LoopUnroll/runtime-loop1.ll
@@ -8,9 +8,9 @@
; EPILOG: for.body.preheader:
-; EPILOG: br i1 %1, label %for.end.loopexit.unr-lcssa, label %for.body.preheader.new, !dbg [[PH_LOC:![0-9]+]]
+; EPILOG: br i1 %1, label %for.body.epil.preheader, label %for.body.preheader.new, !dbg [[PH_LOC:![0-9]+]]
; EPILOG: for.body:
-; EPILOG: br i1 %niter.ncmp.1, label %for.end.loopexit.unr-lcssa.loopexit, label %for.body, !dbg [[PH_LOC]]
+; EPILOG: br i1 %niter.ncmp.1, label %for.end.loopexit.unr-lcssa, label %for.body, !dbg [[PH_LOC]]
; EPILOG-NOT: br i1 %niter.ncmp.2, label %for.end.loopexit{{.*}}, label %for.body
; EPILOG: for.body.epil.preheader:
; EPILOG: br label %for.body.epil, !dbg [[PH_LOC]]
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-loop2.ll b/llvm/test/Transforms/LoopUnroll/runtime-loop2.ll
index 0e11fff..a573de2 100644
--- a/llvm/test/Transforms/LoopUnroll/runtime-loop2.ll
+++ b/llvm/test/Transforms/LoopUnroll/runtime-loop2.ll
@@ -8,8 +8,8 @@
; This test makes sure we're not unrolling 'odd' counts
; EPILOG: for.body:
-; EPILOG: br i1 %niter.ncmp.3, label %for.end.loopexit.unr-lcssa.loopexit{{.*}}, label %for.body
-; EPILOG-NOT: br i1 %niter.ncmp.4, label %for.end.loopexit.unr-lcssa.loopexit{{.*}}, label %for.body
+; EPILOG: br i1 %niter.ncmp.3, label %for.end.loopexit.unr-lcssa{{.*}}, label %for.body
+; EPILOG-NOT: br i1 %niter.ncmp.4, label %for.end.loopexit.unr-lcssa{{.*}}, label %for.body
; EPILOG: for.body.epil:
; PROLOG: for.body.prol:
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-loop5.ll b/llvm/test/Transforms/LoopUnroll/runtime-loop5.ll
index fa9f902..0cee4e2 100644
--- a/llvm/test/Transforms/LoopUnroll/runtime-loop5.ll
+++ b/llvm/test/Transforms/LoopUnroll/runtime-loop5.ll
@@ -69,7 +69,7 @@ define i3 @test(ptr %a, i3 %n) {
; UNROLL-4-NEXT: [[TMP0:%.*]] = add i3 [[N]], -1
; UNROLL-4-NEXT: [[XTRAITER:%.*]] = and i3 [[N]], 3
; UNROLL-4-NEXT: [[TMP1:%.*]] = icmp ult i3 [[TMP0]], 3
-; UNROLL-4-NEXT: br i1 [[TMP1]], label [[FOR_END_LOOPEXIT_UNR_LCSSA:%.*]], label [[FOR_BODY_PREHEADER_NEW:%.*]]
+; UNROLL-4-NEXT: br i1 [[TMP1]], label [[FOR_BODY_EPIL_PREHEADER:%.*]], label [[FOR_BODY_PREHEADER_NEW:%.*]]
; UNROLL-4: for.body.preheader.new:
; UNROLL-4-NEXT: [[UNROLL_ITER:%.*]] = sub i3 [[N]], [[XTRAITER]]
; UNROLL-4-NEXT: br label [[FOR_BODY:%.*]]
@@ -95,23 +95,22 @@ define i3 @test(ptr %a, i3 %n) {
; UNROLL-4-NEXT: [[INDVARS_IV_NEXT_3]] = add nuw nsw i64 [[INDVARS_IV]], 4
; UNROLL-4-NEXT: [[NITER_NEXT_3]] = add i3 [[NITER]], -4
; UNROLL-4-NEXT: [[NITER_NCMP_3:%.*]] = icmp eq i3 [[NITER_NEXT_3]], [[UNROLL_ITER]]
-; UNROLL-4-NEXT: br i1 [[NITER_NCMP_3]], label [[FOR_END_LOOPEXIT_UNR_LCSSA_LOOPEXIT:%.*]], label [[FOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
-; UNROLL-4: for.end.loopexit.unr-lcssa.loopexit:
+; UNROLL-4-NEXT: br i1 [[NITER_NCMP_3]], label [[FOR_END_LOOPEXIT_UNR_LCSSA:%.*]], label [[FOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
+; UNROLL-4: for.end.loopexit.unr-lcssa:
; UNROLL-4-NEXT: [[ADD_LCSSA_PH_PH:%.*]] = phi i3 [ [[ADD_3]], [[FOR_BODY]] ]
; UNROLL-4-NEXT: [[INDVARS_IV_UNR_PH:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_3]], [[FOR_BODY]] ]
; UNROLL-4-NEXT: [[SUM_02_UNR_PH:%.*]] = phi i3 [ [[ADD_3]], [[FOR_BODY]] ]
-; UNROLL-4-NEXT: br label [[FOR_END_LOOPEXIT_UNR_LCSSA]]
-; UNROLL-4: for.end.loopexit.unr-lcssa:
-; UNROLL-4-NEXT: [[ADD_LCSSA_PH:%.*]] = phi i3 [ poison, [[FOR_BODY_PREHEADER]] ], [ [[ADD_LCSSA_PH_PH]], [[FOR_END_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
-; UNROLL-4-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[FOR_BODY_PREHEADER]] ], [ [[INDVARS_IV_UNR_PH]], [[FOR_END_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
-; UNROLL-4-NEXT: [[SUM_02_UNR:%.*]] = phi i3 [ 0, [[FOR_BODY_PREHEADER]] ], [ [[SUM_02_UNR_PH]], [[FOR_END_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
; UNROLL-4-NEXT: [[LCMP_MOD:%.*]] = icmp ne i3 [[XTRAITER]], 0
-; UNROLL-4-NEXT: br i1 [[LCMP_MOD]], label [[FOR_BODY_EPIL_PREHEADER:%.*]], label [[FOR_END_LOOPEXIT:%.*]]
+; UNROLL-4-NEXT: br i1 [[LCMP_MOD]], label [[FOR_BODY_EPIL_PREHEADER]], label [[FOR_END_LOOPEXIT:%.*]]
; UNROLL-4: for.body.epil.preheader:
+; UNROLL-4-NEXT: [[INDVARS_IV_EPIL_INIT:%.*]] = phi i64 [ 0, [[FOR_BODY_PREHEADER]] ], [ [[INDVARS_IV_UNR_PH]], [[FOR_END_LOOPEXIT_UNR_LCSSA]] ]
+; UNROLL-4-NEXT: [[SUM_02_EPIL_INIT:%.*]] = phi i3 [ 0, [[FOR_BODY_PREHEADER]] ], [ [[SUM_02_UNR_PH]], [[FOR_END_LOOPEXIT_UNR_LCSSA]] ]
+; UNROLL-4-NEXT: [[LCMP_MOD2:%.*]] = icmp ne i3 [[XTRAITER]], 0
+; UNROLL-4-NEXT: call void @llvm.assume(i1 [[LCMP_MOD2]])
; UNROLL-4-NEXT: br label [[FOR_BODY_EPIL:%.*]]
; UNROLL-4: for.body.epil:
-; UNROLL-4-NEXT: [[INDVARS_IV_EPIL:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_EPIL:%.*]], [[FOR_BODY_EPIL]] ], [ [[INDVARS_IV_UNR]], [[FOR_BODY_EPIL_PREHEADER]] ]
-; UNROLL-4-NEXT: [[SUM_02_EPIL:%.*]] = phi i3 [ [[ADD_EPIL:%.*]], [[FOR_BODY_EPIL]] ], [ [[SUM_02_UNR]], [[FOR_BODY_EPIL_PREHEADER]] ]
+; UNROLL-4-NEXT: [[INDVARS_IV_EPIL:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_EPIL:%.*]], [[FOR_BODY_EPIL]] ], [ [[INDVARS_IV_EPIL_INIT]], [[FOR_BODY_EPIL_PREHEADER]] ]
+; UNROLL-4-NEXT: [[SUM_02_EPIL:%.*]] = phi i3 [ [[ADD_EPIL:%.*]], [[FOR_BODY_EPIL]] ], [ [[SUM_02_EPIL_INIT]], [[FOR_BODY_EPIL_PREHEADER]] ]
; UNROLL-4-NEXT: [[EPIL_ITER:%.*]] = phi i3 [ 0, [[FOR_BODY_EPIL_PREHEADER]] ], [ [[EPIL_ITER_NEXT:%.*]], [[FOR_BODY_EPIL]] ]
; UNROLL-4-NEXT: [[ARRAYIDX_EPIL:%.*]] = getelementptr inbounds i3, ptr [[A]], i64 [[INDVARS_IV_EPIL]]
; UNROLL-4-NEXT: [[TMP6:%.*]] = load i3, ptr [[ARRAYIDX_EPIL]], align 1
@@ -126,7 +125,7 @@ define i3 @test(ptr %a, i3 %n) {
; UNROLL-4-NEXT: [[ADD_LCSSA_PH1:%.*]] = phi i3 [ [[ADD_EPIL]], [[FOR_BODY_EPIL]] ]
; UNROLL-4-NEXT: br label [[FOR_END_LOOPEXIT]]
; UNROLL-4: for.end.loopexit:
-; UNROLL-4-NEXT: [[ADD_LCSSA:%.*]] = phi i3 [ [[ADD_LCSSA_PH]], [[FOR_END_LOOPEXIT_UNR_LCSSA]] ], [ [[ADD_LCSSA_PH1]], [[FOR_END_LOOPEXIT_EPILOG_LCSSA]] ]
+; UNROLL-4-NEXT: [[ADD_LCSSA:%.*]] = phi i3 [ [[ADD_LCSSA_PH_PH]], [[FOR_END_LOOPEXIT_UNR_LCSSA]] ], [ [[ADD_LCSSA_PH1]], [[FOR_END_LOOPEXIT_EPILOG_LCSSA]] ]
; UNROLL-4-NEXT: br label [[FOR_END]]
; UNROLL-4: for.end:
; UNROLL-4-NEXT: [[SUM_0_LCSSA:%.*]] = phi i3 [ 0, [[ENTRY:%.*]] ], [ [[ADD_LCSSA]], [[FOR_END_LOOPEXIT]] ]
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-multiexit-heuristic.ll b/llvm/test/Transforms/LoopUnroll/runtime-multiexit-heuristic.ll
index d3e5e0b..65ef3e4 100644
--- a/llvm/test/Transforms/LoopUnroll/runtime-multiexit-heuristic.ll
+++ b/llvm/test/Transforms/LoopUnroll/runtime-multiexit-heuristic.ll
@@ -19,7 +19,7 @@ define i32 @test1(ptr nocapture %a, i64 %n) {
; CHECK-NEXT: [[TMP1:%.*]] = add i64 [[TMP0]], -1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i64 [[TMP0]], 7
; CHECK-NEXT: [[TMP2:%.*]] = icmp ult i64 [[TMP1]], 7
-; CHECK-NEXT: br i1 [[TMP2]], label [[LATCHEXIT_UNR_LCSSA:%.*]], label [[ENTRY_NEW:%.*]]
+; CHECK-NEXT: br i1 [[TMP2]], label [[HEADER_EPIL_PREHEADER:%.*]], label [[ENTRY_NEW:%.*]]
; CHECK: entry.new:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = and i64 [[TMP0]], -8
; CHECK-NEXT: br label [[HEADER:%.*]]
@@ -94,20 +94,19 @@ define i32 @test1(ptr nocapture %a, i64 %n) {
; CHECK-NEXT: [[INDVARS_IV_NEXT_7]] = add i64 [[INDVARS_IV]], 8
; CHECK-NEXT: [[NITER_NEXT_7]] = add i64 [[NITER]], 8
; CHECK-NEXT: [[NITER_NCMP_7:%.*]] = icmp eq i64 [[NITER_NEXT_7]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_7]], label [[LATCHEXIT_UNR_LCSSA_LOOPEXIT:%.*]], label [[HEADER]]
-; CHECK: latchexit.unr-lcssa.loopexit:
-; CHECK-NEXT: br label [[LATCHEXIT_UNR_LCSSA]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_7]], label [[LATCHEXIT_UNR_LCSSA:%.*]], label [[HEADER]]
; CHECK: latchexit.unr-lcssa:
-; CHECK-NEXT: [[SUM_0_LCSSA_PH:%.*]] = phi i32 [ poison, [[ENTRY:%.*]] ], [ [[ADD_7]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY]] ], [ [[INDVARS_IV_NEXT_7]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[SUM_02_UNR:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[ADD_7]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[LCMP_MOD_NOT:%.*]] = icmp eq i64 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD_NOT]], label [[LATCHEXIT:%.*]], label [[HEADER_EPIL_PREHEADER:%.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD_NOT]], label [[LATCHEXIT:%.*]], label [[HEADER_EPIL_PREHEADER]]
; CHECK: header.epil.preheader:
+; CHECK-NEXT: [[INDVARS_IV_EPIL_INIT:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[INDVARS_IV_NEXT_7]], [[LATCHEXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[SUM_02_EPIL_INIT:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[ADD_7]], [[LATCHEXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD3:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD3]])
; CHECK-NEXT: br label [[HEADER_EPIL:%.*]]
; CHECK: header.epil:
-; CHECK-NEXT: [[INDVARS_IV_EPIL:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_EPIL:%.*]], [[LATCH_EPIL:%.*]] ], [ [[INDVARS_IV_UNR]], [[HEADER_EPIL_PREHEADER]] ]
-; CHECK-NEXT: [[SUM_02_EPIL:%.*]] = phi i32 [ [[ADD_EPIL:%.*]], [[LATCH_EPIL]] ], [ [[SUM_02_UNR]], [[HEADER_EPIL_PREHEADER]] ]
+; CHECK-NEXT: [[INDVARS_IV_EPIL:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_EPIL:%.*]], [[LATCH_EPIL:%.*]] ], [ [[INDVARS_IV_EPIL_INIT]], [[HEADER_EPIL_PREHEADER]] ]
+; CHECK-NEXT: [[SUM_02_EPIL:%.*]] = phi i32 [ [[ADD_EPIL:%.*]], [[LATCH_EPIL]] ], [ [[SUM_02_EPIL_INIT]], [[HEADER_EPIL_PREHEADER]] ]
; CHECK-NEXT: [[EPIL_ITER:%.*]] = phi i64 [ [[EPIL_ITER_NEXT:%.*]], [[LATCH_EPIL]] ], [ 0, [[HEADER_EPIL_PREHEADER]] ]
; CHECK-NEXT: br label [[FOR_EXITING_BLOCK_EPIL:%.*]]
; CHECK: for.exiting_block.epil:
@@ -124,11 +123,11 @@ define i32 @test1(ptr nocapture %a, i64 %n) {
; CHECK: latchexit.epilog-lcssa:
; CHECK-NEXT: br label [[LATCHEXIT]]
; CHECK: latchexit:
-; CHECK-NEXT: [[SUM_0_LCSSA:%.*]] = phi i32 [ [[SUM_0_LCSSA_PH]], [[LATCHEXIT_UNR_LCSSA]] ], [ [[ADD_EPIL]], [[LATCHEXIT_EPILOG_LCSSA]] ]
+; CHECK-NEXT: [[SUM_0_LCSSA:%.*]] = phi i32 [ [[ADD_7]], [[LATCHEXIT_UNR_LCSSA]] ], [ [[ADD_EPIL]], [[LATCHEXIT_EPILOG_LCSSA]] ]
; CHECK-NEXT: ret i32 [[SUM_0_LCSSA]]
; CHECK: otherexit.loopexit:
; CHECK-NEXT: br label [[OTHEREXIT:%.*]]
-; CHECK: otherexit.loopexit3:
+; CHECK: otherexit.loopexit4:
; CHECK-NEXT: br label [[OTHEREXIT]]
; CHECK: otherexit:
; CHECK-NEXT: [[SUM_02_LCSSA:%.*]] = phi i32 [ [[SUM_02]], [[OTHEREXIT_LOOPEXIT]] ], [ [[SUM_02_EPIL]], [[OTHEREXIT_LOOPEXIT3]] ]
@@ -166,7 +165,7 @@ define i32 @test1(ptr nocapture %a, i64 %n) {
; ENABLED-NEXT: [[TMP1:%.*]] = add i64 [[TMP0]], -1
; ENABLED-NEXT: [[XTRAITER:%.*]] = and i64 [[TMP0]], 7
; ENABLED-NEXT: [[TMP2:%.*]] = icmp ult i64 [[TMP1]], 7
-; ENABLED-NEXT: br i1 [[TMP2]], label [[LATCHEXIT_UNR_LCSSA:%.*]], label [[ENTRY_NEW:%.*]]
+; ENABLED-NEXT: br i1 [[TMP2]], label [[HEADER_EPIL_PREHEADER:%.*]], label [[ENTRY_NEW:%.*]]
; ENABLED: entry.new:
; ENABLED-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[TMP0]], [[XTRAITER]]
; ENABLED-NEXT: br label [[HEADER:%.*]]
@@ -248,23 +247,22 @@ define i32 @test1(ptr nocapture %a, i64 %n) {
; ENABLED-NEXT: [[INDVARS_IV_NEXT_7]] = add i64 [[INDVARS_IV]], 8
; ENABLED-NEXT: [[NITER_NEXT_7]] = add i64 [[NITER]], 8
; ENABLED-NEXT: [[NITER_NCMP_7:%.*]] = icmp eq i64 [[NITER_NEXT_7]], [[UNROLL_ITER]]
-; ENABLED-NEXT: br i1 [[NITER_NCMP_7]], label [[LATCHEXIT_UNR_LCSSA_LOOPEXIT:%.*]], label [[HEADER]]
-; ENABLED: latchexit.unr-lcssa.loopexit:
+; ENABLED-NEXT: br i1 [[NITER_NCMP_7]], label [[LATCHEXIT_UNR_LCSSA:%.*]], label [[HEADER]]
+; ENABLED: latchexit.unr-lcssa:
; ENABLED-NEXT: [[SUM_0_LCSSA_PH_PH:%.*]] = phi i32 [ [[ADD_7]], [[LATCH_7]] ]
; ENABLED-NEXT: [[INDVARS_IV_UNR_PH:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_7]], [[LATCH_7]] ]
; ENABLED-NEXT: [[SUM_02_UNR_PH:%.*]] = phi i32 [ [[ADD_7]], [[LATCH_7]] ]
-; ENABLED-NEXT: br label [[LATCHEXIT_UNR_LCSSA]]
-; ENABLED: latchexit.unr-lcssa:
-; ENABLED-NEXT: [[SUM_0_LCSSA_PH:%.*]] = phi i32 [ poison, [[ENTRY:%.*]] ], [ [[SUM_0_LCSSA_PH_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
-; ENABLED-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY]] ], [ [[INDVARS_IV_UNR_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
-; ENABLED-NEXT: [[SUM_02_UNR:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[SUM_02_UNR_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
; ENABLED-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; ENABLED-NEXT: br i1 [[LCMP_MOD]], label [[HEADER_EPIL_PREHEADER:%.*]], label [[LATCHEXIT:%.*]]
+; ENABLED-NEXT: br i1 [[LCMP_MOD]], label [[HEADER_EPIL_PREHEADER]], label [[LATCHEXIT:%.*]]
; ENABLED: header.epil.preheader:
+; ENABLED-NEXT: [[INDVARS_IV_EPIL_INIT:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[INDVARS_IV_UNR_PH]], [[LATCHEXIT_UNR_LCSSA]] ]
+; ENABLED-NEXT: [[SUM_02_EPIL_INIT:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[SUM_02_UNR_PH]], [[LATCHEXIT_UNR_LCSSA]] ]
+; ENABLED-NEXT: [[LCMP_MOD3:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; ENABLED-NEXT: call void @llvm.assume(i1 [[LCMP_MOD3]])
; ENABLED-NEXT: br label [[HEADER_EPIL:%.*]]
; ENABLED: header.epil:
-; ENABLED-NEXT: [[INDVARS_IV_EPIL:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_EPIL:%.*]], [[LATCH_EPIL:%.*]] ], [ [[INDVARS_IV_UNR]], [[HEADER_EPIL_PREHEADER]] ]
-; ENABLED-NEXT: [[SUM_02_EPIL:%.*]] = phi i32 [ [[ADD_EPIL:%.*]], [[LATCH_EPIL]] ], [ [[SUM_02_UNR]], [[HEADER_EPIL_PREHEADER]] ]
+; ENABLED-NEXT: [[INDVARS_IV_EPIL:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_EPIL:%.*]], [[LATCH_EPIL:%.*]] ], [ [[INDVARS_IV_EPIL_INIT]], [[HEADER_EPIL_PREHEADER]] ]
+; ENABLED-NEXT: [[SUM_02_EPIL:%.*]] = phi i32 [ [[ADD_EPIL:%.*]], [[LATCH_EPIL]] ], [ [[SUM_02_EPIL_INIT]], [[HEADER_EPIL_PREHEADER]] ]
; ENABLED-NEXT: [[EPIL_ITER:%.*]] = phi i64 [ 0, [[HEADER_EPIL_PREHEADER]] ], [ [[EPIL_ITER_NEXT:%.*]], [[LATCH_EPIL]] ]
; ENABLED-NEXT: br label [[FOR_EXITING_BLOCK_EPIL:%.*]]
; ENABLED: for.exiting_block.epil:
@@ -283,12 +281,12 @@ define i32 @test1(ptr nocapture %a, i64 %n) {
; ENABLED-NEXT: [[SUM_0_LCSSA_PH2:%.*]] = phi i32 [ [[ADD_EPIL]], [[LATCH_EPIL]] ]
; ENABLED-NEXT: br label [[LATCHEXIT]]
; ENABLED: latchexit:
-; ENABLED-NEXT: [[SUM_0_LCSSA:%.*]] = phi i32 [ [[SUM_0_LCSSA_PH]], [[LATCHEXIT_UNR_LCSSA]] ], [ [[SUM_0_LCSSA_PH2]], [[LATCHEXIT_EPILOG_LCSSA]] ]
+; ENABLED-NEXT: [[SUM_0_LCSSA:%.*]] = phi i32 [ [[SUM_0_LCSSA_PH_PH]], [[LATCHEXIT_UNR_LCSSA]] ], [ [[SUM_0_LCSSA_PH2]], [[LATCHEXIT_EPILOG_LCSSA]] ]
; ENABLED-NEXT: ret i32 [[SUM_0_LCSSA]]
; ENABLED: otherexit.loopexit:
; ENABLED-NEXT: [[SUM_02_LCSSA_PH:%.*]] = phi i32 [ [[SUM_02]], [[FOR_EXITING_BLOCK]] ], [ [[ADD]], [[FOR_EXITING_BLOCK_1]] ], [ [[ADD_1]], [[FOR_EXITING_BLOCK_2]] ], [ [[ADD_2]], [[FOR_EXITING_BLOCK_3]] ], [ [[ADD_3]], [[FOR_EXITING_BLOCK_4]] ], [ [[ADD_4]], [[FOR_EXITING_BLOCK_5]] ], [ [[ADD_5]], [[FOR_EXITING_BLOCK_6]] ], [ [[ADD_6]], [[FOR_EXITING_BLOCK_7]] ]
; ENABLED-NEXT: br label [[OTHEREXIT:%.*]]
-; ENABLED: otherexit.loopexit3:
+; ENABLED: otherexit.loopexit4:
; ENABLED-NEXT: [[SUM_02_LCSSA_PH4:%.*]] = phi i32 [ [[SUM_02_EPIL]], [[FOR_EXITING_BLOCK_EPIL]] ]
; ENABLED-NEXT: br label [[OTHEREXIT]]
; ENABLED: otherexit:
@@ -380,7 +378,7 @@ define i32 @test2(ptr nocapture %a, i64 %n) {
; ENABLED-NEXT: [[TMP1:%.*]] = add i64 [[TMP0]], -1
; ENABLED-NEXT: [[XTRAITER:%.*]] = and i64 [[TMP0]], 7
; ENABLED-NEXT: [[TMP2:%.*]] = icmp ult i64 [[TMP1]], 7
-; ENABLED-NEXT: br i1 [[TMP2]], label [[LATCHEXIT_UNR_LCSSA:%.*]], label [[ENTRY_NEW:%.*]]
+; ENABLED-NEXT: br i1 [[TMP2]], label [[HEADER_EPIL_PREHEADER:%.*]], label [[ENTRY_NEW:%.*]]
; ENABLED: entry.new:
; ENABLED-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[TMP0]], [[XTRAITER]]
; ENABLED-NEXT: br label [[HEADER:%.*]]
@@ -462,23 +460,22 @@ define i32 @test2(ptr nocapture %a, i64 %n) {
; ENABLED-NEXT: [[INDVARS_IV_NEXT_7]] = add i64 [[INDVARS_IV]], 8
; ENABLED-NEXT: [[NITER_NEXT_7]] = add i64 [[NITER]], 8
; ENABLED-NEXT: [[NITER_NCMP_7:%.*]] = icmp eq i64 [[NITER_NEXT_7]], [[UNROLL_ITER]]
-; ENABLED-NEXT: br i1 [[NITER_NCMP_7]], label [[LATCHEXIT_UNR_LCSSA_LOOPEXIT:%.*]], label [[HEADER]]
-; ENABLED: latchexit.unr-lcssa.loopexit:
+; ENABLED-NEXT: br i1 [[NITER_NCMP_7]], label [[LATCHEXIT_UNR_LCSSA:%.*]], label [[HEADER]]
+; ENABLED: latchexit.unr-lcssa:
; ENABLED-NEXT: [[SUM_0_LCSSA_PH_PH:%.*]] = phi i32 [ [[ADD_7]], [[LATCH_7]] ]
; ENABLED-NEXT: [[INDVARS_IV_UNR_PH:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_7]], [[LATCH_7]] ]
; ENABLED-NEXT: [[SUM_02_UNR_PH:%.*]] = phi i32 [ [[ADD_7]], [[LATCH_7]] ]
-; ENABLED-NEXT: br label [[LATCHEXIT_UNR_LCSSA]]
-; ENABLED: latchexit.unr-lcssa:
-; ENABLED-NEXT: [[SUM_0_LCSSA_PH:%.*]] = phi i32 [ poison, [[ENTRY:%.*]] ], [ [[SUM_0_LCSSA_PH_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
-; ENABLED-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY]] ], [ [[INDVARS_IV_UNR_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
-; ENABLED-NEXT: [[SUM_02_UNR:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[SUM_02_UNR_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
; ENABLED-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; ENABLED-NEXT: br i1 [[LCMP_MOD]], label [[HEADER_EPIL_PREHEADER:%.*]], label [[LATCHEXIT:%.*]]
+; ENABLED-NEXT: br i1 [[LCMP_MOD]], label [[HEADER_EPIL_PREHEADER]], label [[LATCHEXIT:%.*]]
; ENABLED: header.epil.preheader:
+; ENABLED-NEXT: [[INDVARS_IV_EPIL_INIT:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[INDVARS_IV_UNR_PH]], [[LATCHEXIT_UNR_LCSSA]] ]
+; ENABLED-NEXT: [[SUM_02_EPIL_INIT:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[SUM_02_UNR_PH]], [[LATCHEXIT_UNR_LCSSA]] ]
+; ENABLED-NEXT: [[LCMP_MOD2:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; ENABLED-NEXT: call void @llvm.assume(i1 [[LCMP_MOD2]])
; ENABLED-NEXT: br label [[HEADER_EPIL:%.*]]
; ENABLED: header.epil:
-; ENABLED-NEXT: [[INDVARS_IV_EPIL:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_EPIL:%.*]], [[LATCH_EPIL:%.*]] ], [ [[INDVARS_IV_UNR]], [[HEADER_EPIL_PREHEADER]] ]
-; ENABLED-NEXT: [[SUM_02_EPIL:%.*]] = phi i32 [ [[ADD_EPIL:%.*]], [[LATCH_EPIL]] ], [ [[SUM_02_UNR]], [[HEADER_EPIL_PREHEADER]] ]
+; ENABLED-NEXT: [[INDVARS_IV_EPIL:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_EPIL:%.*]], [[LATCH_EPIL:%.*]] ], [ [[INDVARS_IV_EPIL_INIT]], [[HEADER_EPIL_PREHEADER]] ]
+; ENABLED-NEXT: [[SUM_02_EPIL:%.*]] = phi i32 [ [[ADD_EPIL:%.*]], [[LATCH_EPIL]] ], [ [[SUM_02_EPIL_INIT]], [[HEADER_EPIL_PREHEADER]] ]
; ENABLED-NEXT: [[EPIL_ITER:%.*]] = phi i64 [ 0, [[HEADER_EPIL_PREHEADER]] ], [ [[EPIL_ITER_NEXT:%.*]], [[LATCH_EPIL]] ]
; ENABLED-NEXT: br label [[FOR_EXITING_BLOCK_EPIL:%.*]]
; ENABLED: for.exiting_block.epil:
@@ -497,12 +494,12 @@ define i32 @test2(ptr nocapture %a, i64 %n) {
; ENABLED-NEXT: [[SUM_0_LCSSA_PH1:%.*]] = phi i32 [ [[ADD_EPIL]], [[LATCH_EPIL]] ]
; ENABLED-NEXT: br label [[LATCHEXIT]]
; ENABLED: latchexit:
-; ENABLED-NEXT: [[SUM_0_LCSSA:%.*]] = phi i32 [ [[SUM_0_LCSSA_PH]], [[LATCHEXIT_UNR_LCSSA]] ], [ [[SUM_0_LCSSA_PH1]], [[LATCHEXIT_EPILOG_LCSSA]] ]
+; ENABLED-NEXT: [[SUM_0_LCSSA:%.*]] = phi i32 [ [[SUM_0_LCSSA_PH_PH]], [[LATCHEXIT_UNR_LCSSA]] ], [ [[SUM_0_LCSSA_PH1]], [[LATCHEXIT_EPILOG_LCSSA]] ]
; ENABLED-NEXT: ret i32 [[SUM_0_LCSSA]]
; ENABLED: otherexit.loopexit:
; ENABLED-NEXT: [[RVAL_PH:%.*]] = phi i32 [ [[SUM_02]], [[FOR_EXITING_BLOCK]] ], [ [[ADD]], [[FOR_EXITING_BLOCK_1]] ], [ [[ADD_1]], [[FOR_EXITING_BLOCK_2]] ], [ [[ADD_2]], [[FOR_EXITING_BLOCK_3]] ], [ [[ADD_3]], [[FOR_EXITING_BLOCK_4]] ], [ [[ADD_4]], [[FOR_EXITING_BLOCK_5]] ], [ [[ADD_5]], [[FOR_EXITING_BLOCK_6]] ], [ [[ADD_6]], [[FOR_EXITING_BLOCK_7]] ]
; ENABLED-NEXT: br label [[OTHEREXIT:%.*]]
-; ENABLED: otherexit.loopexit2:
+; ENABLED: otherexit.loopexit3:
; ENABLED-NEXT: [[RVAL_PH3:%.*]] = phi i32 [ [[SUM_02_EPIL]], [[FOR_EXITING_BLOCK_EPIL]] ]
; ENABLED-NEXT: br label [[OTHEREXIT]]
; ENABLED: otherexit:
@@ -747,7 +744,7 @@ define i32 @test5(ptr nocapture %a, i64 %n) {
; CHECK-NEXT: [[TMP1:%.*]] = add i64 [[TMP0]], -1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i64 [[TMP0]], 7
; CHECK-NEXT: [[TMP2:%.*]] = icmp ult i64 [[TMP1]], 7
-; CHECK-NEXT: br i1 [[TMP2]], label [[LATCHEXIT_UNR_LCSSA:%.*]], label [[ENTRY_NEW:%.*]]
+; CHECK-NEXT: br i1 [[TMP2]], label [[HEADER_EPIL_PREHEADER:%.*]], label [[ENTRY_NEW:%.*]]
; CHECK: entry.new:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = and i64 [[TMP0]], -8
; CHECK-NEXT: br label [[HEADER:%.*]]
@@ -822,20 +819,19 @@ define i32 @test5(ptr nocapture %a, i64 %n) {
; CHECK-NEXT: [[INDVARS_IV_NEXT_7]] = add i64 [[INDVARS_IV]], 8
; CHECK-NEXT: [[NITER_NEXT_7]] = add i64 [[NITER]], 8
; CHECK-NEXT: [[NITER_NCMP_7:%.*]] = icmp eq i64 [[NITER_NEXT_7]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_7]], label [[LATCHEXIT_UNR_LCSSA_LOOPEXIT:%.*]], label [[HEADER]]
-; CHECK: latchexit.unr-lcssa.loopexit:
-; CHECK-NEXT: br label [[LATCHEXIT_UNR_LCSSA]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_7]], label [[LATCHEXIT_UNR_LCSSA:%.*]], label [[HEADER]]
; CHECK: latchexit.unr-lcssa:
-; CHECK-NEXT: [[SUM_0_LCSSA_PH:%.*]] = phi i32 [ poison, [[ENTRY:%.*]] ], [ [[ADD_7]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY]] ], [ [[INDVARS_IV_NEXT_7]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[SUM_02_UNR:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[ADD_7]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[LCMP_MOD_NOT:%.*]] = icmp eq i64 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD_NOT]], label [[LATCHEXIT:%.*]], label [[HEADER_EPIL_PREHEADER:%.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD_NOT]], label [[LATCHEXIT:%.*]], label [[HEADER_EPIL_PREHEADER]]
; CHECK: header.epil.preheader:
+; CHECK-NEXT: [[INDVARS_IV_EPIL_INIT:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[INDVARS_IV_NEXT_7]], [[LATCHEXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[SUM_02_EPIL_INIT:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[ADD_7]], [[LATCHEXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD3:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD3]])
; CHECK-NEXT: br label [[HEADER_EPIL:%.*]]
; CHECK: header.epil:
-; CHECK-NEXT: [[INDVARS_IV_EPIL:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_EPIL:%.*]], [[LATCH_EPIL:%.*]] ], [ [[INDVARS_IV_UNR]], [[HEADER_EPIL_PREHEADER]] ]
-; CHECK-NEXT: [[SUM_02_EPIL:%.*]] = phi i32 [ [[ADD_EPIL:%.*]], [[LATCH_EPIL]] ], [ [[SUM_02_UNR]], [[HEADER_EPIL_PREHEADER]] ]
+; CHECK-NEXT: [[INDVARS_IV_EPIL:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_EPIL:%.*]], [[LATCH_EPIL:%.*]] ], [ [[INDVARS_IV_EPIL_INIT]], [[HEADER_EPIL_PREHEADER]] ]
+; CHECK-NEXT: [[SUM_02_EPIL:%.*]] = phi i32 [ [[ADD_EPIL:%.*]], [[LATCH_EPIL]] ], [ [[SUM_02_EPIL_INIT]], [[HEADER_EPIL_PREHEADER]] ]
; CHECK-NEXT: [[EPIL_ITER:%.*]] = phi i64 [ [[EPIL_ITER_NEXT:%.*]], [[LATCH_EPIL]] ], [ 0, [[HEADER_EPIL_PREHEADER]] ]
; CHECK-NEXT: br label [[FOR_EXITING_BLOCK_EPIL:%.*]]
; CHECK: for.exiting_block.epil:
@@ -852,11 +848,11 @@ define i32 @test5(ptr nocapture %a, i64 %n) {
; CHECK: latchexit.epilog-lcssa:
; CHECK-NEXT: br label [[LATCHEXIT]]
; CHECK: latchexit:
-; CHECK-NEXT: [[SUM_0_LCSSA:%.*]] = phi i32 [ [[SUM_0_LCSSA_PH]], [[LATCHEXIT_UNR_LCSSA]] ], [ [[ADD_EPIL]], [[LATCHEXIT_EPILOG_LCSSA]] ]
+; CHECK-NEXT: [[SUM_0_LCSSA:%.*]] = phi i32 [ [[ADD_7]], [[LATCHEXIT_UNR_LCSSA]] ], [ [[ADD_EPIL]], [[LATCHEXIT_EPILOG_LCSSA]] ]
; CHECK-NEXT: ret i32 [[SUM_0_LCSSA]]
; CHECK: otherexit.loopexit:
; CHECK-NEXT: br label [[OTHEREXIT:%.*]]
-; CHECK: otherexit.loopexit3:
+; CHECK: otherexit.loopexit4:
; CHECK-NEXT: br label [[OTHEREXIT]]
; CHECK: otherexit:
; CHECK-NEXT: [[SUM_02_LCSSA:%.*]] = phi i32 [ [[SUM_02]], [[OTHEREXIT_LOOPEXIT]] ], [ [[SUM_02_EPIL]], [[OTHEREXIT_LOOPEXIT3]] ]
@@ -899,7 +895,7 @@ define i32 @test5(ptr nocapture %a, i64 %n) {
; ENABLED-NEXT: [[TMP1:%.*]] = add i64 [[TMP0]], -1
; ENABLED-NEXT: [[XTRAITER:%.*]] = and i64 [[TMP0]], 7
; ENABLED-NEXT: [[TMP2:%.*]] = icmp ult i64 [[TMP1]], 7
-; ENABLED-NEXT: br i1 [[TMP2]], label [[LATCHEXIT_UNR_LCSSA:%.*]], label [[ENTRY_NEW:%.*]]
+; ENABLED-NEXT: br i1 [[TMP2]], label [[HEADER_EPIL_PREHEADER:%.*]], label [[ENTRY_NEW:%.*]]
; ENABLED: entry.new:
; ENABLED-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[TMP0]], [[XTRAITER]]
; ENABLED-NEXT: br label [[HEADER:%.*]]
@@ -981,23 +977,22 @@ define i32 @test5(ptr nocapture %a, i64 %n) {
; ENABLED-NEXT: [[INDVARS_IV_NEXT_7]] = add i64 [[INDVARS_IV]], 8
; ENABLED-NEXT: [[NITER_NEXT_7]] = add i64 [[NITER]], 8
; ENABLED-NEXT: [[NITER_NCMP_7:%.*]] = icmp eq i64 [[NITER_NEXT_7]], [[UNROLL_ITER]]
-; ENABLED-NEXT: br i1 [[NITER_NCMP_7]], label [[LATCHEXIT_UNR_LCSSA_LOOPEXIT:%.*]], label [[HEADER]]
-; ENABLED: latchexit.unr-lcssa.loopexit:
+; ENABLED-NEXT: br i1 [[NITER_NCMP_7]], label [[LATCHEXIT_UNR_LCSSA:%.*]], label [[HEADER]]
+; ENABLED: latchexit.unr-lcssa:
; ENABLED-NEXT: [[SUM_0_LCSSA_PH_PH:%.*]] = phi i32 [ [[ADD_7]], [[LATCH_7]] ]
; ENABLED-NEXT: [[INDVARS_IV_UNR_PH:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_7]], [[LATCH_7]] ]
; ENABLED-NEXT: [[SUM_02_UNR_PH:%.*]] = phi i32 [ [[ADD_7]], [[LATCH_7]] ]
-; ENABLED-NEXT: br label [[LATCHEXIT_UNR_LCSSA]]
-; ENABLED: latchexit.unr-lcssa:
-; ENABLED-NEXT: [[SUM_0_LCSSA_PH:%.*]] = phi i32 [ poison, [[ENTRY:%.*]] ], [ [[SUM_0_LCSSA_PH_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
-; ENABLED-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY]] ], [ [[INDVARS_IV_UNR_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
-; ENABLED-NEXT: [[SUM_02_UNR:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[SUM_02_UNR_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
; ENABLED-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; ENABLED-NEXT: br i1 [[LCMP_MOD]], label [[HEADER_EPIL_PREHEADER:%.*]], label [[LATCHEXIT:%.*]]
+; ENABLED-NEXT: br i1 [[LCMP_MOD]], label [[HEADER_EPIL_PREHEADER]], label [[LATCHEXIT:%.*]]
; ENABLED: header.epil.preheader:
+; ENABLED-NEXT: [[INDVARS_IV_EPIL_INIT:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[INDVARS_IV_UNR_PH]], [[LATCHEXIT_UNR_LCSSA]] ]
+; ENABLED-NEXT: [[SUM_02_EPIL_INIT:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[SUM_02_UNR_PH]], [[LATCHEXIT_UNR_LCSSA]] ]
+; ENABLED-NEXT: [[LCMP_MOD3:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; ENABLED-NEXT: call void @llvm.assume(i1 [[LCMP_MOD3]])
; ENABLED-NEXT: br label [[HEADER_EPIL:%.*]]
; ENABLED: header.epil:
-; ENABLED-NEXT: [[INDVARS_IV_EPIL:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_EPIL:%.*]], [[LATCH_EPIL:%.*]] ], [ [[INDVARS_IV_UNR]], [[HEADER_EPIL_PREHEADER]] ]
-; ENABLED-NEXT: [[SUM_02_EPIL:%.*]] = phi i32 [ [[ADD_EPIL:%.*]], [[LATCH_EPIL]] ], [ [[SUM_02_UNR]], [[HEADER_EPIL_PREHEADER]] ]
+; ENABLED-NEXT: [[INDVARS_IV_EPIL:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_EPIL:%.*]], [[LATCH_EPIL:%.*]] ], [ [[INDVARS_IV_EPIL_INIT]], [[HEADER_EPIL_PREHEADER]] ]
+; ENABLED-NEXT: [[SUM_02_EPIL:%.*]] = phi i32 [ [[ADD_EPIL:%.*]], [[LATCH_EPIL]] ], [ [[SUM_02_EPIL_INIT]], [[HEADER_EPIL_PREHEADER]] ]
; ENABLED-NEXT: [[EPIL_ITER:%.*]] = phi i64 [ 0, [[HEADER_EPIL_PREHEADER]] ], [ [[EPIL_ITER_NEXT:%.*]], [[LATCH_EPIL]] ]
; ENABLED-NEXT: br label [[FOR_EXITING_BLOCK_EPIL:%.*]]
; ENABLED: for.exiting_block.epil:
@@ -1016,13 +1011,13 @@ define i32 @test5(ptr nocapture %a, i64 %n) {
; ENABLED-NEXT: [[SUM_0_LCSSA_PH2:%.*]] = phi i32 [ [[ADD_EPIL]], [[LATCH_EPIL]] ]
; ENABLED-NEXT: br label [[LATCHEXIT]]
; ENABLED: latchexit:
-; ENABLED-NEXT: [[SUM_0_LCSSA:%.*]] = phi i32 [ [[SUM_0_LCSSA_PH]], [[LATCHEXIT_UNR_LCSSA]] ], [ [[SUM_0_LCSSA_PH2]], [[LATCHEXIT_EPILOG_LCSSA]] ]
+; ENABLED-NEXT: [[SUM_0_LCSSA:%.*]] = phi i32 [ [[SUM_0_LCSSA_PH_PH]], [[LATCHEXIT_UNR_LCSSA]] ], [ [[SUM_0_LCSSA_PH2]], [[LATCHEXIT_EPILOG_LCSSA]] ]
; ENABLED-NEXT: ret i32 [[SUM_0_LCSSA]]
; ENABLED: otherexit.loopexit:
; ENABLED-NEXT: [[SUM_02_LCSSA_PH:%.*]] = phi i32 [ [[SUM_02]], [[FOR_EXITING_BLOCK]] ], [ [[ADD]], [[FOR_EXITING_BLOCK_1]] ], [ [[ADD_1]], [[FOR_EXITING_BLOCK_2]] ], [ [[ADD_2]], [[FOR_EXITING_BLOCK_3]] ], [ [[ADD_3]], [[FOR_EXITING_BLOCK_4]] ], [ [[ADD_4]], [[FOR_EXITING_BLOCK_5]] ], [ [[ADD_5]], [[FOR_EXITING_BLOCK_6]] ], [ [[ADD_6]], [[FOR_EXITING_BLOCK_7]] ]
; ENABLED-NEXT: [[RVAL_PH:%.*]] = phi i32 [ [[SUM_02]], [[FOR_EXITING_BLOCK]] ], [ [[ADD]], [[FOR_EXITING_BLOCK_1]] ], [ [[ADD_1]], [[FOR_EXITING_BLOCK_2]] ], [ [[ADD_2]], [[FOR_EXITING_BLOCK_3]] ], [ [[ADD_3]], [[FOR_EXITING_BLOCK_4]] ], [ [[ADD_4]], [[FOR_EXITING_BLOCK_5]] ], [ [[ADD_5]], [[FOR_EXITING_BLOCK_6]] ], [ [[ADD_6]], [[FOR_EXITING_BLOCK_7]] ]
; ENABLED-NEXT: br label [[OTHEREXIT:%.*]]
-; ENABLED: otherexit.loopexit3:
+; ENABLED: otherexit.loopexit4:
; ENABLED-NEXT: [[SUM_02_LCSSA_PH4:%.*]] = phi i32 [ [[SUM_02_EPIL]], [[FOR_EXITING_BLOCK_EPIL]] ]
; ENABLED-NEXT: [[RVAL_PH5:%.*]] = phi i32 [ [[SUM_02_EPIL]], [[FOR_EXITING_BLOCK_EPIL]] ]
; ENABLED-NEXT: br label [[OTHEREXIT]]
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-unroll-assume-no-remainder.ll b/llvm/test/Transforms/LoopUnroll/runtime-unroll-assume-no-remainder.ll
index 81fceb6..73f7fd3 100644
--- a/llvm/test/Transforms/LoopUnroll/runtime-unroll-assume-no-remainder.ll
+++ b/llvm/test/Transforms/LoopUnroll/runtime-unroll-assume-no-remainder.ll
@@ -91,7 +91,7 @@ define dso_local void @cannotProveDivisibleTC(ptr noalias nocapture %a, ptr noal
; CHECK-NEXT: [[TMP0:%.*]] = add i32 [[N]], -1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i32 [[N]], 1
; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i32 [[TMP0]], 1
-; CHECK-NEXT: br i1 [[TMP1]], label [[EXIT_LOOPEXIT_UNR_LCSSA:%.*]], label [[FOR_BODY_PREHEADER_NEW:%.*]]
+; CHECK-NEXT: br i1 [[TMP1]], label [[FOR_BODY_EPIL_PREHEADER:%.*]], label [[FOR_BODY_PREHEADER_NEW:%.*]]
; CHECK: for.body.preheader.new:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i32 [[N]], [[XTRAITER]]
; CHECK-NEXT: br label [[FOR_BODY:%.*]]
@@ -112,15 +112,15 @@ define dso_local void @cannotProveDivisibleTC(ptr noalias nocapture %a, ptr noal
; CHECK-NEXT: [[INC_1]] = add nuw nsw i32 [[I_011]], 2
; CHECK-NEXT: [[NITER_NEXT_1]] = add i32 [[NITER]], 2
; CHECK-NEXT: [[NITER_NCMP_1:%.*]] = icmp ne i32 [[NITER_NEXT_1]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label [[FOR_BODY]], label [[EXIT_LOOPEXIT_UNR_LCSSA_LOOPEXIT:%.*]], !llvm.loop [[LOOP2:![0-9]+]]
-; CHECK: exit.loopexit.unr-lcssa.loopexit:
-; CHECK-NEXT: [[I_011_UNR_PH:%.*]] = phi i32 [ [[INC_1]], [[FOR_BODY]] ]
-; CHECK-NEXT: br label [[EXIT_LOOPEXIT_UNR_LCSSA]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label [[FOR_BODY]], label [[EXIT_LOOPEXIT_UNR_LCSSA:%.*]], !llvm.loop [[LOOP2:![0-9]+]]
; CHECK: exit.loopexit.unr-lcssa:
-; CHECK-NEXT: [[I_011_UNR:%.*]] = phi i32 [ 0, [[FOR_BODY_PREHEADER]] ], [ [[I_011_UNR_PH]], [[EXIT_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[I_011_UNR1:%.*]] = phi i32 [ [[INC_1]], [[FOR_BODY]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i32 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[FOR_BODY_EPIL_PREHEADER:%.*]], label [[EXIT_LOOPEXIT:%.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[FOR_BODY_EPIL_PREHEADER]], label [[EXIT_LOOPEXIT:%.*]]
; CHECK: for.body.epil.preheader:
+; CHECK-NEXT: [[I_011_UNR:%.*]] = phi i32 [ 0, [[FOR_BODY_PREHEADER]] ], [ [[I_011_UNR1]], [[EXIT_LOOPEXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i32 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; CHECK-NEXT: br label [[FOR_BODY_EPIL:%.*]]
; CHECK: for.body.epil:
; CHECK-NEXT: [[ARRAYIDX_EPIL:%.*]] = getelementptr inbounds i8, ptr [[B]], i32 [[I_011_UNR]]
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-unroll-reductions.ll b/llvm/test/Transforms/LoopUnroll/runtime-unroll-reductions.ll
index 0b9c6ac..a5ac2cf4 100644
--- a/llvm/test/Transforms/LoopUnroll/runtime-unroll-reductions.ll
+++ b/llvm/test/Transforms/LoopUnroll/runtime-unroll-reductions.ll
@@ -8,7 +8,7 @@ define i32 @test_add_reduction(ptr %a, i64 %n) {
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[N]], -1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i64 [[N]], 1
; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i64 [[TMP0]], 1
-; CHECK-NEXT: br i1 [[TMP1]], label %[[EXIT_UNR_LCSSA:.*]], label %[[ENTRY_NEW:.*]]
+; CHECK-NEXT: br i1 [[TMP1]], label %[[LOOP_EPIL_PREHEADER:.*]], label %[[ENTRY_NEW:.*]]
; CHECK: [[ENTRY_NEW]]:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[N]], [[XTRAITER]]
; CHECK-NEXT: br label %[[LOOP:.*]]
@@ -27,28 +27,27 @@ define i32 @test_add_reduction(ptr %a, i64 %n) {
; CHECK-NEXT: [[IV_NEXT_1]] = add nuw nsw i64 [[IV]], 2
; CHECK-NEXT: [[NITER_NEXT_1]] = add i64 [[NITER]], 2
; CHECK-NEXT: [[NITER_NCMP_1:%.*]] = icmp eq i64 [[NITER_NEXT_1]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label %[[EXIT_UNR_LCSSA_LOOPEXIT:.*]], label %[[LOOP]], !llvm.loop [[LOOP0:![0-9]+]]
-; CHECK: [[EXIT_UNR_LCSSA_LOOPEXIT]]:
-; CHECK-NEXT: [[RES_PH_PH:%.*]] = phi i32 [ [[RDX_NEXT_1]], %[[LOOP]] ]
-; CHECK-NEXT: [[IV_UNR_PH:%.*]] = phi i64 [ [[IV_NEXT_1]], %[[LOOP]] ]
-; CHECK-NEXT: [[RDX_UNR_PH:%.*]] = phi i32 [ [[RDX_NEXT_1]], %[[LOOP]] ]
-; CHECK-NEXT: [[BIN_RDX:%.*]] = add i32 [[RDX_NEXT_1]], [[RDX_NEXT]]
-; CHECK-NEXT: br label %[[EXIT_UNR_LCSSA]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label %[[EXIT_UNR_LCSSA:.*]], label %[[LOOP]], !llvm.loop [[LOOP0:![0-9]+]]
; CHECK: [[EXIT_UNR_LCSSA]]:
-; CHECK-NEXT: [[RES_PH:%.*]] = phi i32 [ poison, %[[ENTRY]] ], [ [[BIN_RDX]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[RDX_UNR:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[BIN_RDX]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[RES_PH:%.*]] = phi i32 [ [[RDX_NEXT_1]], %[[LOOP]] ]
+; CHECK-NEXT: [[IV_UNR:%.*]] = phi i64 [ [[IV_NEXT_1]], %[[LOOP]] ]
+; CHECK-NEXT: [[RDX_UNR1:%.*]] = phi i32 [ [[RDX_NEXT_1]], %[[LOOP]] ]
+; CHECK-NEXT: [[BIN_RDX:%.*]] = add i32 [[RDX_NEXT_1]], [[RDX_NEXT]]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_EPIL_PREHEADER:.*]], label %[[EXIT:.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_EPIL_PREHEADER]], label %[[EXIT:.*]]
; CHECK: [[LOOP_EPIL_PREHEADER]]:
+; CHECK-NEXT: [[IV_EPIL_INIT:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR]], %[[EXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[RDX_UNR:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[BIN_RDX]], %[[EXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD2:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD2]])
; CHECK-NEXT: br label %[[LOOP_EPIL:.*]]
; CHECK: [[LOOP_EPIL]]:
-; CHECK-NEXT: [[GEP_A_EPIL:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[IV_UNR]]
+; CHECK-NEXT: [[GEP_A_EPIL:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[IV_EPIL_INIT]]
; CHECK-NEXT: [[TMP4:%.*]] = load i32, ptr [[GEP_A_EPIL]], align 2
; CHECK-NEXT: [[RDX_NEXT_EPIL:%.*]] = add nuw nsw i32 [[RDX_UNR]], [[TMP4]]
; CHECK-NEXT: br label %[[EXIT]]
; CHECK: [[EXIT]]:
-; CHECK-NEXT: [[RES:%.*]] = phi i32 [ [[RES_PH]], %[[EXIT_UNR_LCSSA]] ], [ [[RDX_NEXT_EPIL]], %[[LOOP_EPIL]] ]
+; CHECK-NEXT: [[RES:%.*]] = phi i32 [ [[BIN_RDX]], %[[EXIT_UNR_LCSSA]] ], [ [[RDX_NEXT_EPIL]], %[[LOOP_EPIL]] ]
; CHECK-NEXT: ret i32 [[RES]]
;
entry:
@@ -76,7 +75,7 @@ define i32 @test_add_reduction_constant_op(ptr %a, i64 %n) {
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[N]], -1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i64 [[N]], 1
; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i64 [[TMP0]], 1
-; CHECK-NEXT: br i1 [[TMP1]], label %[[EXIT_UNR_LCSSA:.*]], label %[[ENTRY_NEW:.*]]
+; CHECK-NEXT: br i1 [[TMP1]], label %[[LOOP_EPIL_PREHEADER:.*]], label %[[ENTRY_NEW:.*]]
; CHECK: [[ENTRY_NEW]]:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[N]], [[XTRAITER]]
; CHECK-NEXT: br label %[[LOOP:.*]]
@@ -88,17 +87,16 @@ define i32 @test_add_reduction_constant_op(ptr %a, i64 %n) {
; CHECK-NEXT: [[IV_NEXT_1]] = add nuw nsw i64 [[IV]], 2
; CHECK-NEXT: [[NITER_NEXT_1]] = add i64 [[NITER]], 2
; CHECK-NEXT: [[NITER_NCMP_1:%.*]] = icmp eq i64 [[NITER_NEXT_1]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label %[[EXIT_UNR_LCSSA_LOOPEXIT:.*]], label %[[LOOP]], !llvm.loop [[LOOP2:![0-9]+]]
-; CHECK: [[EXIT_UNR_LCSSA_LOOPEXIT]]:
-; CHECK-NEXT: [[RES_PH_PH:%.*]] = phi i32 [ [[RDX_NEXT_1]], %[[LOOP]] ]
-; CHECK-NEXT: [[RDX_UNR_PH:%.*]] = phi i32 [ [[RDX_NEXT_1]], %[[LOOP]] ]
-; CHECK-NEXT: br label %[[EXIT_UNR_LCSSA]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label %[[EXIT_UNR_LCSSA:.*]], label %[[LOOP]], !llvm.loop [[LOOP2:![0-9]+]]
; CHECK: [[EXIT_UNR_LCSSA]]:
-; CHECK-NEXT: [[RES_PH:%.*]] = phi i32 [ poison, %[[ENTRY]] ], [ [[RES_PH_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[RDX_UNR:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[RDX_UNR_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[RES_PH:%.*]] = phi i32 [ [[RDX_NEXT_1]], %[[LOOP]] ]
+; CHECK-NEXT: [[RDX_UNR1:%.*]] = phi i32 [ [[RDX_NEXT_1]], %[[LOOP]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_EPIL_PREHEADER:.*]], label %[[EXIT:.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_EPIL_PREHEADER]], label %[[EXIT:.*]]
; CHECK: [[LOOP_EPIL_PREHEADER]]:
+; CHECK-NEXT: [[RDX_UNR:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[RDX_UNR1]], %[[EXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD2:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD2]])
; CHECK-NEXT: br label %[[LOOP_EPIL:.*]]
; CHECK: [[LOOP_EPIL]]:
; CHECK-NEXT: [[RDX_NEXT_EPIL:%.*]] = add nuw nsw i32 [[RDX_UNR]], 1
@@ -130,7 +128,7 @@ define i32 @test_add_reduction_8x_unroll(ptr %a, i64 %n) {
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[N]], -1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i64 [[N]], 7
; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i64 [[TMP0]], 7
-; CHECK-NEXT: br i1 [[TMP1]], label %[[EXIT_UNR_LCSSA:.*]], label %[[ENTRY_NEW:.*]]
+; CHECK-NEXT: br i1 [[TMP1]], label %[[LOOP_EPIL_PREHEADER:.*]], label %[[ENTRY_NEW:.*]]
; CHECK: [[ENTRY_NEW]]:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[N]], [[XTRAITER]]
; CHECK-NEXT: br label %[[LOOP:.*]]
@@ -172,23 +170,22 @@ define i32 @test_add_reduction_8x_unroll(ptr %a, i64 %n) {
; CHECK-NEXT: [[IV_NEXT_7]] = add nuw nsw i64 [[IV]], 8
; CHECK-NEXT: [[NITER_NEXT_7]] = add i64 [[NITER]], 8
; CHECK-NEXT: [[NITER_NCMP_7:%.*]] = icmp eq i64 [[NITER_NEXT_7]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_7]], label %[[EXIT_UNR_LCSSA_LOOPEXIT:.*]], label %[[LOOP]], !llvm.loop [[LOOP3:![0-9]+]]
-; CHECK: [[EXIT_UNR_LCSSA_LOOPEXIT]]:
-; CHECK-NEXT: [[RES_PH_PH:%.*]] = phi i32 [ [[RDX_NEXT_7]], %[[LOOP]] ]
-; CHECK-NEXT: [[IV_UNR_PH:%.*]] = phi i64 [ [[IV_NEXT_7]], %[[LOOP]] ]
-; CHECK-NEXT: [[RDX_UNR_PH:%.*]] = phi i32 [ [[RDX_NEXT_7]], %[[LOOP]] ]
-; CHECK-NEXT: br label %[[EXIT_UNR_LCSSA]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_7]], label %[[EXIT_UNR_LCSSA:.*]], label %[[LOOP]], !llvm.loop [[LOOP3:![0-9]+]]
; CHECK: [[EXIT_UNR_LCSSA]]:
-; CHECK-NEXT: [[RES_PH:%.*]] = phi i32 [ poison, %[[ENTRY]] ], [ [[RES_PH_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[RDX_UNR:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[RDX_UNR_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[RES_PH:%.*]] = phi i32 [ [[RDX_NEXT_7]], %[[LOOP]] ]
+; CHECK-NEXT: [[IV_UNR:%.*]] = phi i64 [ [[IV_NEXT_7]], %[[LOOP]] ]
+; CHECK-NEXT: [[RDX_UNR:%.*]] = phi i32 [ [[RDX_NEXT_7]], %[[LOOP]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_EPIL_PREHEADER:.*]], label %[[EXIT:.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_EPIL_PREHEADER]], label %[[EXIT:.*]]
; CHECK: [[LOOP_EPIL_PREHEADER]]:
+; CHECK-NEXT: [[IV_EPIL_INIT:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR]], %[[EXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[RDX_EPIL_INIT:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[RDX_UNR]], %[[EXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD2:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD2]])
; CHECK-NEXT: br label %[[LOOP_EPIL:.*]]
; CHECK: [[LOOP_EPIL]]:
-; CHECK-NEXT: [[IV_EPIL:%.*]] = phi i64 [ [[IV_UNR]], %[[LOOP_EPIL_PREHEADER]] ], [ [[IV_NEXT_EPIL:%.*]], %[[LOOP_EPIL]] ]
-; CHECK-NEXT: [[RDX_EPIL:%.*]] = phi i32 [ [[RDX_UNR]], %[[LOOP_EPIL_PREHEADER]] ], [ [[RDX_NEXT_EPIL:%.*]], %[[LOOP_EPIL]] ]
+; CHECK-NEXT: [[IV_EPIL:%.*]] = phi i64 [ [[IV_EPIL_INIT]], %[[LOOP_EPIL_PREHEADER]] ], [ [[IV_NEXT_EPIL:%.*]], %[[LOOP_EPIL]] ]
+; CHECK-NEXT: [[RDX_EPIL:%.*]] = phi i32 [ [[RDX_EPIL_INIT]], %[[LOOP_EPIL_PREHEADER]] ], [ [[RDX_NEXT_EPIL:%.*]], %[[LOOP_EPIL]] ]
; CHECK-NEXT: [[EPIL_ITER:%.*]] = phi i64 [ 0, %[[LOOP_EPIL_PREHEADER]] ], [ [[EPIL_ITER_NEXT:%.*]], %[[LOOP_EPIL]] ]
; CHECK-NEXT: [[GEP_A_EPIL:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[IV_EPIL]]
; CHECK-NEXT: [[TMP10:%.*]] = load i32, ptr [[GEP_A_EPIL]], align 2
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-unroll-remainder.ll b/llvm/test/Transforms/LoopUnroll/runtime-unroll-remainder.ll
index a3cfeac..5f4bbf1 100644
--- a/llvm/test/Transforms/LoopUnroll/runtime-unroll-remainder.ll
+++ b/llvm/test/Transforms/LoopUnroll/runtime-unroll-remainder.ll
@@ -11,31 +11,30 @@ define i32 @unroll(ptr nocapture readonly %a, ptr nocapture readonly %b, i32 %N)
; CHECK-NEXT: [[WIDE_TRIP_COUNT:%.*]] = zext i32 [[N]] to i64
; CHECK-NEXT: [[XTRAITER:%.*]] = and i64 [[WIDE_TRIP_COUNT]], 3
; CHECK-NEXT: [[TMP0:%.*]] = icmp ult i32 [[N]], 4
-; CHECK-NEXT: br i1 [[TMP0]], label [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA:%.*]], label [[FOR_BODY_LR_PH_NEW:%.*]]
+; CHECK-NEXT: br i1 [[TMP0]], label [[FOR_BODY_EPIL_PREHEADER:%.*]], label [[FOR_BODY_LR_PH_NEW:%.*]]
; CHECK: for.body.lr.ph.new:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = and i64 [[WIDE_TRIP_COUNT]], 4294967292
; CHECK-NEXT: br label [[FOR_BODY:%.*]]
-; CHECK: for.cond.cleanup.loopexit.unr-lcssa.loopexit:
-; CHECK-NEXT: br label [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA]]
; CHECK: for.cond.cleanup.loopexit.unr-lcssa:
-; CHECK-NEXT: [[ADD_LCSSA_PH:%.*]] = phi i32 [ poison, [[FOR_BODY_LR_PH]] ], [ [[ADD_3:%.*]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT:%.*]] ]
-; CHECK-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[FOR_BODY_LR_PH]] ], [ [[INDVARS_IV_NEXT_3:%.*]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[C_010_UNR:%.*]] = phi i32 [ 0, [[FOR_BODY_LR_PH]] ], [ [[ADD_3]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[LCMP_MOD_NOT:%.*]] = icmp eq i64 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD_NOT]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]], label [[FOR_BODY_EPIL_PREHEADER:%.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD_NOT]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]], label [[FOR_BODY_EPIL_PREHEADER]]
; CHECK: for.body.epil.preheader:
+; CHECK-NEXT: [[INDVARS_IV_EPIL_INIT:%.*]] = phi i64 [ 0, [[FOR_BODY_LR_PH]] ], [ [[INDVARS_IV_NEXT_3:%.*]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA:%.*]] ]
+; CHECK-NEXT: [[C_010_EPIL_INIT:%.*]] = phi i32 [ 0, [[FOR_BODY_LR_PH]] ], [ [[ADD_3:%.*]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD2:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD2]])
; CHECK-NEXT: br label [[FOR_BODY_EPIL:%.*]]
; CHECK: for.body.epil:
-; CHECK-NEXT: [[ARRAYIDX_EPIL:%.*]] = getelementptr inbounds i32, ptr [[A:%.*]], i64 [[INDVARS_IV_UNR]]
+; CHECK-NEXT: [[ARRAYIDX_EPIL:%.*]] = getelementptr inbounds i32, ptr [[A:%.*]], i64 [[INDVARS_IV_EPIL_INIT]]
; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[ARRAYIDX_EPIL]], align 4
-; CHECK-NEXT: [[ARRAYIDX2_EPIL:%.*]] = getelementptr inbounds i32, ptr [[B:%.*]], i64 [[INDVARS_IV_UNR]]
+; CHECK-NEXT: [[ARRAYIDX2_EPIL:%.*]] = getelementptr inbounds i32, ptr [[B:%.*]], i64 [[INDVARS_IV_EPIL_INIT]]
; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr [[ARRAYIDX2_EPIL]], align 4
; CHECK-NEXT: [[MUL_EPIL:%.*]] = mul nsw i32 [[TMP2]], [[TMP1]]
-; CHECK-NEXT: [[ADD_EPIL:%.*]] = add nsw i32 [[MUL_EPIL]], [[C_010_UNR]]
+; CHECK-NEXT: [[ADD_EPIL:%.*]] = add nsw i32 [[MUL_EPIL]], [[C_010_EPIL_INIT]]
; CHECK-NEXT: [[EPIL_ITER_CMP_NOT:%.*]] = icmp eq i64 [[XTRAITER]], 1
; CHECK-NEXT: br i1 [[EPIL_ITER_CMP_NOT]], label [[FOR_COND_CLEANUP_LOOPEXIT_EPILOG_LCSSA:%.*]], label [[FOR_BODY_EPIL_1:%.*]]
; CHECK: for.body.epil.1:
-; CHECK-NEXT: [[INDVARS_IV_NEXT_EPIL:%.*]] = add nuw nsw i64 [[INDVARS_IV_UNR]], 1
+; CHECK-NEXT: [[INDVARS_IV_NEXT_EPIL:%.*]] = add nuw nsw i64 [[INDVARS_IV_EPIL_INIT]], 1
; CHECK-NEXT: [[ARRAYIDX_EPIL_1:%.*]] = getelementptr inbounds i32, ptr [[A]], i64 [[INDVARS_IV_NEXT_EPIL]]
; CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr [[ARRAYIDX_EPIL_1]], align 4
; CHECK-NEXT: [[ARRAYIDX2_EPIL_1:%.*]] = getelementptr inbounds i32, ptr [[B]], i64 [[INDVARS_IV_NEXT_EPIL]]
@@ -45,7 +44,7 @@ define i32 @unroll(ptr nocapture readonly %a, ptr nocapture readonly %b, i32 %N)
; CHECK-NEXT: [[EPIL_ITER_CMP_1_NOT:%.*]] = icmp eq i64 [[XTRAITER]], 2
; CHECK-NEXT: br i1 [[EPIL_ITER_CMP_1_NOT]], label [[FOR_COND_CLEANUP_LOOPEXIT_EPILOG_LCSSA]], label [[FOR_BODY_EPIL_2:%.*]]
; CHECK: for.body.epil.2:
-; CHECK-NEXT: [[INDVARS_IV_NEXT_EPIL_1:%.*]] = add nuw nsw i64 [[INDVARS_IV_UNR]], 2
+; CHECK-NEXT: [[INDVARS_IV_NEXT_EPIL_1:%.*]] = add nuw nsw i64 [[INDVARS_IV_EPIL_INIT]], 2
; CHECK-NEXT: [[ARRAYIDX_EPIL_2:%.*]] = getelementptr inbounds i32, ptr [[A]], i64 [[INDVARS_IV_NEXT_EPIL_1]]
; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[ARRAYIDX_EPIL_2]], align 4
; CHECK-NEXT: [[ARRAYIDX2_EPIL_2:%.*]] = getelementptr inbounds i32, ptr [[B]], i64 [[INDVARS_IV_NEXT_EPIL_1]]
@@ -57,7 +56,7 @@ define i32 @unroll(ptr nocapture readonly %a, ptr nocapture readonly %b, i32 %N)
; CHECK-NEXT: [[ADD_LCSSA_PH1:%.*]] = phi i32 [ [[ADD_EPIL]], [[FOR_BODY_EPIL]] ], [ [[ADD_EPIL_1]], [[FOR_BODY_EPIL_1]] ], [ [[ADD_EPIL_2]], [[FOR_BODY_EPIL_2]] ]
; CHECK-NEXT: br label [[FOR_COND_CLEANUP_LOOPEXIT]]
; CHECK: for.cond.cleanup.loopexit:
-; CHECK-NEXT: [[ADD_LCSSA:%.*]] = phi i32 [ [[ADD_LCSSA_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA]] ], [ [[ADD_LCSSA_PH1]], [[FOR_COND_CLEANUP_LOOPEXIT_EPILOG_LCSSA]] ]
+; CHECK-NEXT: [[ADD_LCSSA:%.*]] = phi i32 [ [[ADD_3]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA]] ], [ [[ADD_LCSSA_PH1]], [[FOR_COND_CLEANUP_LOOPEXIT_EPILOG_LCSSA]] ]
; CHECK-NEXT: br label [[FOR_COND_CLEANUP]]
; CHECK: for.cond.cleanup:
; CHECK-NEXT: [[C_0_LCSSA:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[ADD_LCSSA]], [[FOR_COND_CLEANUP_LOOPEXIT]] ]
@@ -96,7 +95,7 @@ define i32 @unroll(ptr nocapture readonly %a, ptr nocapture readonly %b, i32 %N)
; CHECK-NEXT: [[INDVARS_IV_NEXT_3]] = add nuw nsw i64 [[INDVARS_IV]], 4
; CHECK-NEXT: [[NITER_NEXT_3]] = add i64 [[NITER]], 4
; CHECK-NEXT: [[NITER_NCMP_3:%.*]] = icmp eq i64 [[NITER_NEXT_3]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_3]], label [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT]], label [[FOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_3]], label [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA]], label [[FOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
;
entry:
%cmp9 = icmp eq i32 %N, 0
diff --git a/llvm/test/Transforms/LoopUnroll/scev-invalidation-lcssa.ll b/llvm/test/Transforms/LoopUnroll/scev-invalidation-lcssa.ll
index 0a3d201..fd07238 100644
--- a/llvm/test/Transforms/LoopUnroll/scev-invalidation-lcssa.ll
+++ b/llvm/test/Transforms/LoopUnroll/scev-invalidation-lcssa.ll
@@ -30,7 +30,7 @@ define i32 @f(i1 %cond1) #0 !prof !0 {
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[LD_LCSSA]], 1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i64 [[TMP0]], 7
; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i64 [[LD_LCSSA]], 7
-; CHECK-NEXT: br i1 [[TMP1]], label [[EXIT2_UNR_LCSSA:%.*]], label [[ENTRY2_NEW:%.*]]
+; CHECK-NEXT: br i1 [[TMP1]], label [[LOOP2_EPIL_PREHEADER:%.*]], label [[ENTRY2_NEW:%.*]]
; CHECK: entry2.new:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[TMP0]], [[XTRAITER]]
; CHECK-NEXT: br label [[LOOP2:%.*]]
@@ -40,18 +40,18 @@ define i32 @f(i1 %cond1) #0 !prof !0 {
; CHECK-NEXT: [[INC_7]] = add i64 [[PHI]], 8
; CHECK-NEXT: [[NITER_NEXT_7]] = add i64 [[NITER]], 8
; CHECK-NEXT: [[NITER_NCMP_7:%.*]] = icmp eq i64 [[NITER_NEXT_7]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_7]], label [[EXIT2_UNR_LCSSA_LOOPEXIT:%.*]], label [[LOOP2]]
-; CHECK: exit2.unr-lcssa.loopexit:
-; CHECK-NEXT: [[PHI_UNR_PH:%.*]] = phi i64 [ [[INC_7]], [[LOOP2]] ]
-; CHECK-NEXT: br label [[EXIT2_UNR_LCSSA]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_7]], label [[EXIT2_UNR_LCSSA:%.*]], label [[LOOP2]]
; CHECK: exit2.unr-lcssa:
-; CHECK-NEXT: [[PHI_UNR:%.*]] = phi i64 [ 0, [[ENTRY2]] ], [ [[PHI_UNR_PH]], [[EXIT2_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[PHI_UNR:%.*]] = phi i64 [ [[INC_7]], [[LOOP2]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[LOOP2_EPIL_PREHEADER:%.*]], label [[EXIT2:%.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[LOOP2_EPIL_PREHEADER]], label [[EXIT2:%.*]]
; CHECK: loop2.epil.preheader:
+; CHECK-NEXT: [[PHI_EPIL_INIT:%.*]] = phi i64 [ 0, [[ENTRY2]] ], [ [[PHI_UNR]], [[EXIT2_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD2:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD2]])
; CHECK-NEXT: br label [[LOOP2_EPIL:%.*]]
; CHECK: loop2.epil:
-; CHECK-NEXT: [[PHI_EPIL:%.*]] = phi i64 [ [[PHI_UNR]], [[LOOP2_EPIL_PREHEADER]] ], [ [[INC_EPIL:%.*]], [[LOOP2_EPIL]] ]
+; CHECK-NEXT: [[PHI_EPIL:%.*]] = phi i64 [ [[PHI_EPIL_INIT]], [[LOOP2_EPIL_PREHEADER]] ], [ [[INC_EPIL:%.*]], [[LOOP2_EPIL]] ]
; CHECK-NEXT: [[EPIL_ITER:%.*]] = phi i64 [ 0, [[LOOP2_EPIL_PREHEADER]] ], [ [[EPIL_ITER_NEXT:%.*]], [[LOOP2_EPIL]] ]
; CHECK-NEXT: [[INC_EPIL]] = add i64 [[PHI_EPIL]], 1
; CHECK-NEXT: [[COND2_EPIL:%.*]] = icmp eq i64 [[LD_LCSSA]], [[PHI_EPIL]]
diff --git a/llvm/test/Transforms/LoopUnroll/tripcount-overflow.ll b/llvm/test/Transforms/LoopUnroll/tripcount-overflow.ll
index 1481286..f839c88 100644
--- a/llvm/test/Transforms/LoopUnroll/tripcount-overflow.ll
+++ b/llvm/test/Transforms/LoopUnroll/tripcount-overflow.ll
@@ -17,7 +17,7 @@ define i32 @foo(i32 %N) {
; EPILOG-NEXT: [[TMP0:%.*]] = add i32 [[N:%.*]], 1
; EPILOG-NEXT: [[XTRAITER:%.*]] = and i32 [[TMP0]], 1
; EPILOG-NEXT: [[TMP1:%.*]] = icmp ult i32 [[N]], 1
-; EPILOG-NEXT: br i1 [[TMP1]], label [[WHILE_END_UNR_LCSSA:%.*]], label [[ENTRY_NEW:%.*]]
+; EPILOG-NEXT: br i1 [[TMP1]], label [[WHILE_BODY_EPIL_PREHEADER:%.*]], label [[ENTRY_NEW:%.*]]
; EPILOG: entry.new:
; EPILOG-NEXT: [[UNROLL_ITER:%.*]] = sub i32 [[TMP0]], [[XTRAITER]]
; EPILOG-NEXT: br label [[WHILE_BODY:%.*]]
@@ -28,22 +28,21 @@ define i32 @foo(i32 %N) {
; EPILOG-NEXT: [[INC_1]] = add i32 [[I]], 2
; EPILOG-NEXT: [[NITER_NEXT_1]] = add i32 [[NITER]], 2
; EPILOG-NEXT: [[NITER_NCMP_1:%.*]] = icmp eq i32 [[NITER_NEXT_1]], [[UNROLL_ITER]]
-; EPILOG-NEXT: br i1 [[NITER_NCMP_1]], label [[WHILE_END_UNR_LCSSA_LOOPEXIT:%.*]], label [[WHILE_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
-; EPILOG: while.end.unr-lcssa.loopexit:
+; EPILOG-NEXT: br i1 [[NITER_NCMP_1]], label [[WHILE_END_UNR_LCSSA:%.*]], label [[WHILE_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
+; EPILOG: while.end.unr-lcssa:
; EPILOG-NEXT: [[I_LCSSA_PH_PH:%.*]] = phi i32 [ [[INC]], [[WHILE_BODY]] ]
; EPILOG-NEXT: [[I_UNR_PH:%.*]] = phi i32 [ [[INC_1]], [[WHILE_BODY]] ]
-; EPILOG-NEXT: br label [[WHILE_END_UNR_LCSSA]]
-; EPILOG: while.end.unr-lcssa:
-; EPILOG-NEXT: [[I_LCSSA_PH:%.*]] = phi i32 [ poison, [[ENTRY:%.*]] ], [ [[I_LCSSA_PH_PH]], [[WHILE_END_UNR_LCSSA_LOOPEXIT]] ]
-; EPILOG-NEXT: [[I_UNR:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[I_UNR_PH]], [[WHILE_END_UNR_LCSSA_LOOPEXIT]] ]
; EPILOG-NEXT: [[LCMP_MOD:%.*]] = icmp ne i32 [[XTRAITER]], 0
-; EPILOG-NEXT: br i1 [[LCMP_MOD]], label [[WHILE_BODY_EPIL_PREHEADER:%.*]], label [[WHILE_END:%.*]]
+; EPILOG-NEXT: br i1 [[LCMP_MOD]], label [[WHILE_BODY_EPIL_PREHEADER]], label [[WHILE_END:%.*]]
; EPILOG: while.body.epil.preheader:
+; EPILOG-NEXT: [[I_EPIL_INIT:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[I_UNR_PH]], [[WHILE_END_UNR_LCSSA]] ]
+; EPILOG-NEXT: [[LCMP_MOD2:%.*]] = icmp ne i32 [[XTRAITER]], 0
+; EPILOG-NEXT: call void @llvm.assume(i1 [[LCMP_MOD2]])
; EPILOG-NEXT: br label [[WHILE_BODY_EPIL:%.*]]
; EPILOG: while.body.epil:
; EPILOG-NEXT: br label [[WHILE_END]]
; EPILOG: while.end:
-; EPILOG-NEXT: [[I_LCSSA:%.*]] = phi i32 [ [[I_LCSSA_PH]], [[WHILE_END_UNR_LCSSA]] ], [ [[I_UNR]], [[WHILE_BODY_EPIL]] ]
+; EPILOG-NEXT: [[I_LCSSA:%.*]] = phi i32 [ [[I_LCSSA_PH_PH]], [[WHILE_END_UNR_LCSSA]] ], [ [[I_EPIL_INIT]], [[WHILE_BODY_EPIL]] ]
; EPILOG-NEXT: ret i32 [[I_LCSSA]]
;
; PROLOG-LABEL: @foo(
diff --git a/llvm/test/Transforms/LoopUnroll/unroll-heuristics-pgo.ll b/llvm/test/Transforms/LoopUnroll/unroll-heuristics-pgo.ll
index 20a247f..611ee5f 100644
--- a/llvm/test/Transforms/LoopUnroll/unroll-heuristics-pgo.ll
+++ b/llvm/test/Transforms/LoopUnroll/unroll-heuristics-pgo.ll
@@ -8,7 +8,7 @@
; CHECK: %mul.1 = mul
; CHECK: %mul.2 = mul
; CHECK: %mul.3 = mul
-; CHECK: br i1 %niter.ncmp.7, label %loop.end.unr-lcssa.loopexit, label %loop, !prof [[PROF0:![0-9]+]]
+; CHECK: br i1 %niter.ncmp.7, label %loop.end.unr-lcssa, label %loop, !prof [[PROF0:![0-9]+]]
; CHECK: loop.epil:
; CHECK: br i1 %epil.iter.cmp, label %loop.epil, label %loop.end.epilog-lcssa, !prof [[PROF1:![0-9]+]], !llvm.loop {{![0-9]+}}
define i32 @bar_prof(ptr noalias nocapture readonly %src, i64 %c) !prof !1 {
diff --git a/llvm/test/Transforms/LoopUnroll/unroll-loads-cse.ll b/llvm/test/Transforms/LoopUnroll/unroll-loads-cse.ll
index d410525..f85aac7 100644
--- a/llvm/test/Transforms/LoopUnroll/unroll-loads-cse.ll
+++ b/llvm/test/Transforms/LoopUnroll/unroll-loads-cse.ll
@@ -12,7 +12,7 @@ define void @cse_matching_load_from_previous_unrolled_iteration(ptr %src, ptr no
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[N]], -1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i64 [[N]], 1
; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i64 [[TMP0]], 1
-; CHECK-NEXT: br i1 [[TMP1]], label [[EXIT_UNR_LCSSA:%.*]], label [[ENTRY_NEW:%.*]]
+; CHECK-NEXT: br i1 [[TMP1]], label [[LOOP_EPIL_PREHEADER:%.*]], label [[ENTRY_NEW:%.*]]
; CHECK: entry.new:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[N]], [[XTRAITER]]
; CHECK-NEXT: br label [[LOOP:%.*]]
@@ -35,15 +35,15 @@ define void @cse_matching_load_from_previous_unrolled_iteration(ptr %src, ptr no
; CHECK-NEXT: [[IV_NEXT_1]] = add nuw nsw i64 [[IV]], 2
; CHECK-NEXT: [[NITER_NEXT_1]] = add i64 [[NITER]], 2
; CHECK-NEXT: [[NITER_NCMP_1:%.*]] = icmp eq i64 [[NITER_NEXT_1]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label [[EXIT_UNR_LCSSA_LOOPEXIT:%.*]], label [[LOOP]], !llvm.loop [[LOOP0:![0-9]+]]
-; CHECK: exit.unr-lcssa.loopexit:
-; CHECK-NEXT: [[IV_UNR_PH:%.*]] = phi i64 [ [[IV_NEXT_1]], [[LOOP]] ]
-; CHECK-NEXT: br label [[EXIT_UNR_LCSSA]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label [[EXIT_UNR_LCSSA:%.*]], label [[LOOP]], !llvm.loop [[LOOP0:![0-9]+]]
; CHECK: exit.unr-lcssa:
-; CHECK-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[IV_UNR_PH]], [[EXIT_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[IV_UNR1:%.*]] = phi i64 [ [[IV_NEXT_1]], [[LOOP]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[LOOP_EPIL_PREHEADER:%.*]], label [[EXIT:%.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[LOOP_EPIL_PREHEADER]], label [[EXIT:%.*]]
; CHECK: loop.epil.preheader:
+; CHECK-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[IV_UNR1]], [[EXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; CHECK-NEXT: br label [[LOOP_EPIL:%.*]]
; CHECK: loop.epil:
; CHECK-NEXT: [[GEP_SRC_12_EPIL:%.*]] = getelementptr i64, ptr [[SRC_12]], i64 [[IV_UNR]]
@@ -88,7 +88,7 @@ define void @cse_different_load_types(ptr %src, ptr noalias %dst, i64 %N) {
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[N]], -1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i64 [[N]], 1
; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i64 [[TMP0]], 1
-; CHECK-NEXT: br i1 [[TMP1]], label [[EXIT_UNR_LCSSA:%.*]], label [[ENTRY_NEW:%.*]]
+; CHECK-NEXT: br i1 [[TMP1]], label [[LOOP_EPIL_PREHEADER:%.*]], label [[ENTRY_NEW:%.*]]
; CHECK: entry.new:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[N]], [[XTRAITER]]
; CHECK-NEXT: br label [[LOOP:%.*]]
@@ -115,15 +115,15 @@ define void @cse_different_load_types(ptr %src, ptr noalias %dst, i64 %N) {
; CHECK-NEXT: [[IV_NEXT_1]] = add nuw nsw i64 [[IV]], 2
; CHECK-NEXT: [[NITER_NEXT_1]] = add i64 [[NITER]], 2
; CHECK-NEXT: [[NITER_NCMP_1:%.*]] = icmp eq i64 [[NITER_NEXT_1]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label [[EXIT_UNR_LCSSA_LOOPEXIT:%.*]], label [[LOOP]], !llvm.loop [[LOOP3:![0-9]+]]
-; CHECK: exit.unr-lcssa.loopexit:
-; CHECK-NEXT: [[IV_UNR_PH:%.*]] = phi i64 [ [[IV_NEXT_1]], [[LOOP]] ]
-; CHECK-NEXT: br label [[EXIT_UNR_LCSSA]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label [[EXIT_UNR_LCSSA:%.*]], label [[LOOP]], !llvm.loop [[LOOP3:![0-9]+]]
; CHECK: exit.unr-lcssa:
-; CHECK-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[IV_UNR_PH]], [[EXIT_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[IV_UNR1:%.*]] = phi i64 [ [[IV_NEXT_1]], [[LOOP]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[LOOP_EPIL_PREHEADER:%.*]], label [[EXIT:%.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[LOOP_EPIL_PREHEADER]], label [[EXIT:%.*]]
; CHECK: loop.epil.preheader:
+; CHECK-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[IV_UNR1]], [[EXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; CHECK-NEXT: br label [[LOOP_EPIL:%.*]]
; CHECK: loop.epil:
; CHECK-NEXT: [[GEP_SRC_12_EPIL:%.*]] = getelementptr i64, ptr [[SRC_12]], i64 [[IV_UNR]]
@@ -170,7 +170,7 @@ define void @cse_volatile_loads(ptr %src, ptr noalias %dst, i64 %N) {
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[N]], -1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i64 [[N]], 1
; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i64 [[TMP0]], 1
-; CHECK-NEXT: br i1 [[TMP1]], label [[EXIT_UNR_LCSSA:%.*]], label [[ENTRY_NEW:%.*]]
+; CHECK-NEXT: br i1 [[TMP1]], label [[LOOP_EPIL_PREHEADER:%.*]], label [[ENTRY_NEW:%.*]]
; CHECK: entry.new:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[N]], [[XTRAITER]]
; CHECK-NEXT: br label [[LOOP:%.*]]
@@ -195,15 +195,15 @@ define void @cse_volatile_loads(ptr %src, ptr noalias %dst, i64 %N) {
; CHECK-NEXT: [[IV_NEXT_1]] = add nuw nsw i64 [[IV]], 2
; CHECK-NEXT: [[NITER_NEXT_1]] = add i64 [[NITER]], 2
; CHECK-NEXT: [[NITER_NCMP_1:%.*]] = icmp eq i64 [[NITER_NEXT_1]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label [[EXIT_UNR_LCSSA_LOOPEXIT:%.*]], label [[LOOP]], !llvm.loop [[LOOP4:![0-9]+]]
-; CHECK: exit.unr-lcssa.loopexit:
-; CHECK-NEXT: [[IV_UNR_PH:%.*]] = phi i64 [ [[IV_NEXT_1]], [[LOOP]] ]
-; CHECK-NEXT: br label [[EXIT_UNR_LCSSA]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label [[EXIT_UNR_LCSSA:%.*]], label [[LOOP]], !llvm.loop [[LOOP4:![0-9]+]]
; CHECK: exit.unr-lcssa:
-; CHECK-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[IV_UNR_PH]], [[EXIT_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[IV_UNR1:%.*]] = phi i64 [ [[IV_NEXT_1]], [[LOOP]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[LOOP_EPIL_PREHEADER:%.*]], label [[EXIT:%.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[LOOP_EPIL_PREHEADER]], label [[EXIT:%.*]]
; CHECK: loop.epil.preheader:
+; CHECK-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[IV_UNR1]], [[EXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; CHECK-NEXT: br label [[LOOP_EPIL:%.*]]
; CHECK: loop.epil:
; CHECK-NEXT: [[GEP_SRC_12_EPIL:%.*]] = getelementptr i64, ptr [[SRC_12]], i64 [[IV_UNR]]
@@ -248,7 +248,7 @@ define void @cse_atomic_loads(ptr %src, ptr noalias %dst, i64 %N) {
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[N]], -1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i64 [[N]], 1
; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i64 [[TMP0]], 1
-; CHECK-NEXT: br i1 [[TMP1]], label [[EXIT_UNR_LCSSA:%.*]], label [[ENTRY_NEW:%.*]]
+; CHECK-NEXT: br i1 [[TMP1]], label [[LOOP_EPIL_PREHEADER:%.*]], label [[ENTRY_NEW:%.*]]
; CHECK: entry.new:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[N]], [[XTRAITER]]
; CHECK-NEXT: br label [[LOOP:%.*]]
@@ -273,15 +273,15 @@ define void @cse_atomic_loads(ptr %src, ptr noalias %dst, i64 %N) {
; CHECK-NEXT: [[IV_NEXT_1]] = add nuw nsw i64 [[IV]], 2
; CHECK-NEXT: [[NITER_NEXT_1]] = add i64 [[NITER]], 2
; CHECK-NEXT: [[NITER_NCMP_1:%.*]] = icmp eq i64 [[NITER_NEXT_1]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label [[EXIT_UNR_LCSSA_LOOPEXIT:%.*]], label [[LOOP]], !llvm.loop [[LOOP5:![0-9]+]]
-; CHECK: exit.unr-lcssa.loopexit:
-; CHECK-NEXT: [[IV_UNR_PH:%.*]] = phi i64 [ [[IV_NEXT_1]], [[LOOP]] ]
-; CHECK-NEXT: br label [[EXIT_UNR_LCSSA]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label [[EXIT_UNR_LCSSA:%.*]], label [[LOOP]], !llvm.loop [[LOOP5:![0-9]+]]
; CHECK: exit.unr-lcssa:
-; CHECK-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[IV_UNR_PH]], [[EXIT_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[IV_UNR1:%.*]] = phi i64 [ [[IV_NEXT_1]], [[LOOP]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[LOOP_EPIL_PREHEADER:%.*]], label [[EXIT:%.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[LOOP_EPIL_PREHEADER]], label [[EXIT:%.*]]
; CHECK: loop.epil.preheader:
+; CHECK-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[IV_UNR1]], [[EXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; CHECK-NEXT: br label [[LOOP_EPIL:%.*]]
; CHECK: loop.epil:
; CHECK-NEXT: [[GEP_SRC_12_EPIL:%.*]] = getelementptr i64, ptr [[SRC_12]], i64 [[IV_UNR]]
@@ -326,7 +326,7 @@ define void @cse_load_may_be_clobbered(ptr %src, ptr %dst, i64 %N) {
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[N]], -1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i64 [[N]], 1
; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i64 [[TMP0]], 1
-; CHECK-NEXT: br i1 [[TMP1]], label [[EXIT_UNR_LCSSA:%.*]], label [[ENTRY_NEW:%.*]]
+; CHECK-NEXT: br i1 [[TMP1]], label [[LOOP_EPIL_PREHEADER:%.*]], label [[ENTRY_NEW:%.*]]
; CHECK: entry.new:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i64 [[N]], [[XTRAITER]]
; CHECK-NEXT: br label [[LOOP:%.*]]
@@ -351,15 +351,15 @@ define void @cse_load_may_be_clobbered(ptr %src, ptr %dst, i64 %N) {
; CHECK-NEXT: [[IV_NEXT_1]] = add nuw nsw i64 [[IV]], 2
; CHECK-NEXT: [[NITER_NEXT_1]] = add i64 [[NITER]], 2
; CHECK-NEXT: [[NITER_NCMP_1:%.*]] = icmp eq i64 [[NITER_NEXT_1]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label [[EXIT_UNR_LCSSA_LOOPEXIT:%.*]], label [[LOOP]], !llvm.loop [[LOOP6:![0-9]+]]
-; CHECK: exit.unr-lcssa.loopexit:
-; CHECK-NEXT: [[IV_UNR_PH:%.*]] = phi i64 [ [[IV_NEXT_1]], [[LOOP]] ]
-; CHECK-NEXT: br label [[EXIT_UNR_LCSSA]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label [[EXIT_UNR_LCSSA:%.*]], label [[LOOP]], !llvm.loop [[LOOP6:![0-9]+]]
; CHECK: exit.unr-lcssa:
-; CHECK-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[IV_UNR_PH]], [[EXIT_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[IV_UNR1:%.*]] = phi i64 [ [[IV_NEXT_1]], [[LOOP]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[LOOP_EPIL_PREHEADER:%.*]], label [[EXIT:%.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[LOOP_EPIL_PREHEADER]], label [[EXIT:%.*]]
; CHECK: loop.epil.preheader:
+; CHECK-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[IV_UNR1]], [[EXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; CHECK-NEXT: br label [[LOOP_EPIL:%.*]]
; CHECK: loop.epil:
; CHECK-NEXT: [[GEP_SRC_12_EPIL:%.*]] = getelementptr i64, ptr [[SRC_12]], i64 [[IV_UNR]]
diff --git a/llvm/test/Transforms/LoopUnrollAndJam/dependencies_visit_order.ll b/llvm/test/Transforms/LoopUnrollAndJam/dependencies_visit_order.ll
index f1a5adf..3510650 100644
--- a/llvm/test/Transforms/LoopUnrollAndJam/dependencies_visit_order.ll
+++ b/llvm/test/Transforms/LoopUnrollAndJam/dependencies_visit_order.ll
@@ -6,7 +6,7 @@ target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
define void @test1() {
; CHECK-LABEL: @test1(
; CHECK-NEXT: bb:
-; CHECK-NEXT: br i1 false, label [[BB1_BB43_CRIT_EDGE_UNR_LCSSA:%.*]], label [[BB_NEW:%.*]]
+; CHECK-NEXT: br i1 false, label [[BB5_PREHEADER_EPIL_PREHEADER:%.*]], label [[BB_NEW:%.*]]
; CHECK: bb.new:
; CHECK-NEXT: br label [[BB5_PREHEADER:%.*]]
; CHECK: bb5.preheader:
@@ -30,17 +30,16 @@ define void @test1() {
; CHECK-NEXT: br i1 true, label [[BB38]], label [[BB10_PREHEADER]]
; CHECK: bb38:
; CHECK-NEXT: [[NITER_NCMP_3:%.*]] = icmp eq i16 [[NITER_NEXT_3]], -28
-; CHECK-NEXT: br i1 [[NITER_NCMP_3]], label [[BB1_BB43_CRIT_EDGE_UNR_LCSSA_LOOPEXIT:%.*]], label [[BB5_PREHEADER]], !llvm.loop [[LOOP0:![0-9]+]]
-; CHECK: bb1.bb43_crit_edge.unr-lcssa.loopexit:
-; CHECK-NEXT: [[I10_UNR_PH:%.*]] = phi i16 [ [[I42_3]], [[BB38]] ]
-; CHECK-NEXT: br label [[BB1_BB43_CRIT_EDGE_UNR_LCSSA]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_3]], label [[BB1_BB43_CRIT_EDGE_UNR_LCSSA:%.*]], label [[BB5_PREHEADER]], !llvm.loop [[LOOP0:![0-9]+]]
; CHECK: bb1.bb43_crit_edge.unr-lcssa:
-; CHECK-NEXT: [[I10_UNR:%.*]] = phi i16 [ 0, [[BB:%.*]] ], [ [[I10_UNR_PH]], [[BB1_BB43_CRIT_EDGE_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: br i1 true, label [[BB5_PREHEADER_EPIL_PREHEADER:%.*]], label [[BB1_BB43_CRIT_EDGE:%.*]]
+; CHECK-NEXT: [[I10_UNR:%.*]] = phi i16 [ [[I42_3]], [[BB38]] ]
+; CHECK-NEXT: br i1 true, label [[BB5_PREHEADER_EPIL_PREHEADER]], label [[BB1_BB43_CRIT_EDGE:%.*]]
; CHECK: bb5.preheader.epil.preheader:
+; CHECK-NEXT: [[I10_EPIL_INIT:%.*]] = phi i16 [ 0, [[BB:%.*]] ], [ [[I10_UNR]], [[BB1_BB43_CRIT_EDGE_UNR_LCSSA]] ]
+; CHECK-NEXT: call void @llvm.assume(i1 true)
; CHECK-NEXT: br label [[BB5_PREHEADER_EPIL:%.*]]
; CHECK: bb5.preheader.epil:
-; CHECK-NEXT: [[I10_EPIL:%.*]] = phi i16 [ [[I10_UNR]], [[BB5_PREHEADER_EPIL_PREHEADER]] ], [ [[I42_EPIL:%.*]], [[BB38_EPIL:%.*]] ]
+; CHECK-NEXT: [[I10_EPIL:%.*]] = phi i16 [ [[I10_EPIL_INIT]], [[BB5_PREHEADER_EPIL_PREHEADER]] ], [ [[I42_EPIL:%.*]], [[BB38_EPIL:%.*]] ]
; CHECK-NEXT: [[EPIL_ITER:%.*]] = phi i16 [ 0, [[BB5_PREHEADER_EPIL_PREHEADER]] ], [ [[EPIL_ITER_NEXT:%.*]], [[BB38_EPIL]] ]
; CHECK-NEXT: br label [[BB10_PREHEADER_EPIL:%.*]]
; CHECK: bb10.preheader.epil:
diff --git a/llvm/test/Transforms/LoopUnrollAndJam/followup.ll b/llvm/test/Transforms/LoopUnrollAndJam/followup.ll
index 5186f77..c8be48bf 100644
--- a/llvm/test/Transforms/LoopUnrollAndJam/followup.ll
+++ b/llvm/test/Transforms/LoopUnrollAndJam/followup.ll
@@ -52,7 +52,7 @@ for.end:
; CHECK: br i1 %exitcond.3, label %for.latch, label %for.inner, !llvm.loop ![[LOOP_INNER:[0-9]+]]
-; CHECK: br i1 %niter.ncmp.3, label %for.end.loopexit.unr-lcssa.loopexit, label %for.outer, !llvm.loop ![[LOOP_OUTER:[0-9]+]]
+; CHECK: br i1 %niter.ncmp.3, label %for.end.loopexit.unr-lcssa, label %for.outer, !llvm.loop ![[LOOP_OUTER:[0-9]+]]
; CHECK: br i1 %exitcond.epil, label %for.latch.epil, label %for.inner.epil, !llvm.loop ![[LOOP_REMAINDER_INNER:[0-9]+]]
; CHECK: br i1 %exitcond.epil.1, label %for.latch.epil.1, label %for.inner.epil.1, !llvm.loop ![[LOOP_REMAINDER_INNER]]
; CHECK: br i1 %exitcond.epil.2, label %for.latch.epil.2, label %for.inner.epil.2, !llvm.loop ![[LOOP_REMAINDER_INNER]]
diff --git a/llvm/test/Transforms/LoopUnrollAndJam/unroll-and-jam.ll b/llvm/test/Transforms/LoopUnrollAndJam/unroll-and-jam.ll
index 6f48c41..9ee51cf 100644
--- a/llvm/test/Transforms/LoopUnrollAndJam/unroll-and-jam.ll
+++ b/llvm/test/Transforms/LoopUnrollAndJam/unroll-and-jam.ll
@@ -17,7 +17,7 @@ define void @test1(i32 %I, i32 %E, ptr noalias nocapture %A, ptr noalias nocaptu
; CHECK-NEXT: [[TMP0:%.*]] = add i32 [[I]], -1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i32 [[I]], 3
; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i32 [[TMP0]], 3
-; CHECK-NEXT: br i1 [[TMP1]], label %[[FOR_END_LOOPEXIT_UNR_LCSSA:.*]], label %[[FOR_OUTER_PREHEADER_NEW:.*]]
+; CHECK-NEXT: br i1 [[TMP1]], label %[[FOR_OUTER_EPIL_PREHEADER:.*]], label %[[FOR_OUTER_PREHEADER_NEW:.*]]
; CHECK: [[FOR_OUTER_PREHEADER_NEW]]:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i32 [[I]], [[XTRAITER]]
; CHECK-NEXT: br label %[[FOR_OUTER:.*]]
@@ -71,15 +71,15 @@ define void @test1(i32 %I, i32 %E, ptr noalias nocapture %A, ptr noalias nocaptu
; CHECK-NEXT: [[ARRAYIDX6_3:%.*]] = getelementptr inbounds i32, ptr [[A]], i32 [[ADD8_2]]
; CHECK-NEXT: store i32 [[ADD_LCSSA_3]], ptr [[ARRAYIDX6_3]], align 4, !tbaa [[INT_TBAA0]]
; CHECK-NEXT: [[NITER_NCMP_3:%.*]] = icmp eq i32 [[NITER_NEXT_3]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_3]], label %[[FOR_END_LOOPEXIT_UNR_LCSSA_LOOPEXIT:.*]], label %[[FOR_OUTER]], !llvm.loop [[LOOP4:![0-9]+]]
-; CHECK: [[FOR_END_LOOPEXIT_UNR_LCSSA_LOOPEXIT]]:
-; CHECK-NEXT: [[I_UNR_PH:%.*]] = phi i32 [ [[ADD8_3]], %[[FOR_LATCH]] ]
-; CHECK-NEXT: br label %[[FOR_END_LOOPEXIT_UNR_LCSSA]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_3]], label %[[FOR_END_LOOPEXIT_UNR_LCSSA:.*]], label %[[FOR_OUTER]], !llvm.loop [[LOOP4:![0-9]+]]
; CHECK: [[FOR_END_LOOPEXIT_UNR_LCSSA]]:
-; CHECK-NEXT: [[I_UNR:%.*]] = phi i32 [ 0, %[[FOR_OUTER_PREHEADER]] ], [ [[I_UNR_PH]], %[[FOR_END_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[I_UNR1:%.*]] = phi i32 [ [[ADD8_3]], %[[FOR_LATCH]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i32 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label %[[FOR_OUTER_EPIL_PREHEADER:.*]], label %[[FOR_END_LOOPEXIT:.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label %[[FOR_OUTER_EPIL_PREHEADER]], label %[[FOR_END_LOOPEXIT:.*]]
; CHECK: [[FOR_OUTER_EPIL_PREHEADER]]:
+; CHECK-NEXT: [[I_UNR:%.*]] = phi i32 [ 0, %[[FOR_OUTER_PREHEADER]] ], [ [[I_UNR1]], %[[FOR_END_LOOPEXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i32 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; CHECK-NEXT: br label %[[FOR_OUTER_EPIL:.*]]
; CHECK: [[FOR_OUTER_EPIL]]:
; CHECK-NEXT: br label %[[FOR_INNER_EPIL:.*]]
@@ -193,7 +193,7 @@ define void @test2(i32 %I, i32 %E, ptr noalias nocapture %A, ptr noalias nocaptu
; CHECK-NEXT: [[TMP0:%.*]] = add i32 [[I]], -1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i32 [[I]], 3
; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i32 [[TMP0]], 3
-; CHECK-NEXT: br i1 [[TMP1]], label %[[FOR_END10_LOOPEXIT_UNR_LCSSA:.*]], label %[[FOR_OUTER_PREHEADER_NEW:.*]]
+; CHECK-NEXT: br i1 [[TMP1]], label %[[FOR_OUTER_EPIL_PREHEADER:.*]], label %[[FOR_OUTER_PREHEADER_NEW:.*]]
; CHECK: [[FOR_OUTER_PREHEADER_NEW]]:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i32 [[I]], [[XTRAITER]]
; CHECK-NEXT: br label %[[FOR_OUTER:.*]]
@@ -251,15 +251,15 @@ define void @test2(i32 %I, i32 %E, ptr noalias nocapture %A, ptr noalias nocaptu
; CHECK-NEXT: store i32 [[ADD_LCSSA_2]], ptr [[ARRAYIDX_2]], align 4, !tbaa [[INT_TBAA0]]
; CHECK-NEXT: store i32 [[ADD_LCSSA_3]], ptr [[ARRAYIDX_3]], align 4, !tbaa [[INT_TBAA0]]
; CHECK-NEXT: [[NITER_NCMP_3:%.*]] = icmp eq i32 [[NITER_NEXT_3]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_3]], label %[[FOR_END10_LOOPEXIT_UNR_LCSSA_LOOPEXIT:.*]], label %[[FOR_OUTER]], !llvm.loop [[LOOP6:![0-9]+]]
-; CHECK: [[FOR_END10_LOOPEXIT_UNR_LCSSA_LOOPEXIT]]:
-; CHECK-NEXT: [[I_UNR_PH:%.*]] = phi i32 [ [[ADD9_3]], %[[FOR_LATCH]] ]
-; CHECK-NEXT: br label %[[FOR_END10_LOOPEXIT_UNR_LCSSA]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_3]], label %[[FOR_END10_LOOPEXIT_UNR_LCSSA:.*]], label %[[FOR_OUTER]], !llvm.loop [[LOOP6:![0-9]+]]
; CHECK: [[FOR_END10_LOOPEXIT_UNR_LCSSA]]:
-; CHECK-NEXT: [[I_UNR:%.*]] = phi i32 [ 0, %[[FOR_OUTER_PREHEADER]] ], [ [[I_UNR_PH]], %[[FOR_END10_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[I_UNR1:%.*]] = phi i32 [ [[ADD9_3]], %[[FOR_LATCH]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i32 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label %[[FOR_OUTER_EPIL_PREHEADER:.*]], label %[[FOR_END10_LOOPEXIT:.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label %[[FOR_OUTER_EPIL_PREHEADER]], label %[[FOR_END10_LOOPEXIT:.*]]
; CHECK: [[FOR_OUTER_EPIL_PREHEADER]]:
+; CHECK-NEXT: [[I_UNR:%.*]] = phi i32 [ 0, %[[FOR_OUTER_PREHEADER]] ], [ [[I_UNR1]], %[[FOR_END10_LOOPEXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i32 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; CHECK-NEXT: br label %[[FOR_OUTER_EPIL:.*]]
; CHECK: [[FOR_OUTER_EPIL]]:
; CHECK-NEXT: [[ARRAYIDX_EPIL:%.*]] = getelementptr inbounds i32, ptr [[A]], i32 [[I_UNR]]
@@ -615,7 +615,7 @@ define i32 @test6() #0 {
; CHECK-LABEL: define i32 @test6() {
; CHECK-NEXT: [[ENTRY:.*]]:
; CHECK-NEXT: [[F_PROMOTED10:%.*]] = load i32, ptr @f, align 4, !tbaa [[INT_TBAA0]]
-; CHECK-NEXT: br i1 false, label %[[FOR_END_UNR_LCSSA:.*]], label %[[ENTRY_NEW:.*]]
+; CHECK-NEXT: br i1 false, label %[[FOR_OUTER_EPIL_PREHEADER:.*]], label %[[ENTRY_NEW:.*]]
; CHECK: [[ENTRY_NEW]]:
; CHECK-NEXT: br label %[[FOR_OUTER:.*]]
; CHECK: [[FOR_OUTER]]:
@@ -636,18 +636,15 @@ define i32 @test6() #0 {
; CHECK-NEXT: [[EXITCOND_3:%.*]] = icmp ne i32 [[INC_3]], 7
; CHECK-NEXT: br i1 [[EXITCOND_3]], label %[[FOR_INNER]], label %[[FOR_LATCH]]
; CHECK: [[FOR_LATCH]]:
-; CHECK-NEXT: br i1 false, label %[[FOR_OUTER]], label %[[FOR_END_UNR_LCSSA_LOOPEXIT:.*]], !llvm.loop [[LOOP7:![0-9]+]]
-; CHECK: [[FOR_END_UNR_LCSSA_LOOPEXIT]]:
+; CHECK-NEXT: br i1 false, label %[[FOR_OUTER]], label %[[FOR_END_UNR_LCSSA:.*]], !llvm.loop [[LOOP7:![0-9]+]]
+; CHECK: [[FOR_END_UNR_LCSSA]]:
; CHECK-NEXT: [[DOTLCSSA_LCSSA_PH_PH:%.*]] = phi i32 [ 2, %[[FOR_LATCH]] ]
; CHECK-NEXT: [[INC_LCSSA_LCSSA_PH_PH:%.*]] = phi i32 [ 7, %[[FOR_LATCH]] ]
; CHECK-NEXT: [[P0_UNR_PH:%.*]] = phi i32 [ 2, %[[FOR_LATCH]] ]
-; CHECK-NEXT: br label %[[FOR_END_UNR_LCSSA]]
-; CHECK: [[FOR_END_UNR_LCSSA]]:
-; CHECK-NEXT: [[DOTLCSSA_LCSSA_PH:%.*]] = phi i32 [ poison, %[[ENTRY]] ], [ [[DOTLCSSA_LCSSA_PH_PH]], %[[FOR_END_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[INC_LCSSA_LCSSA_PH:%.*]] = phi i32 [ poison, %[[ENTRY]] ], [ [[INC_LCSSA_LCSSA_PH_PH]], %[[FOR_END_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[P0_UNR:%.*]] = phi i32 [ [[F_PROMOTED10]], %[[ENTRY]] ], [ [[P0_UNR_PH]], %[[FOR_END_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: br i1 true, label %[[FOR_OUTER_EPIL_PREHEADER:.*]], label %[[FOR_END:.*]]
+; CHECK-NEXT: br i1 true, label %[[FOR_OUTER_EPIL_PREHEADER]], label %[[FOR_END:.*]]
; CHECK: [[FOR_OUTER_EPIL_PREHEADER]]:
+; CHECK-NEXT: [[P0_UNR:%.*]] = phi i32 [ [[F_PROMOTED10]], %[[ENTRY]] ], [ [[P0_UNR_PH]], %[[FOR_END_UNR_LCSSA]] ]
+; CHECK-NEXT: call void @llvm.assume(i1 true)
; CHECK-NEXT: br label %[[FOR_OUTER_EPIL:.*]]
; CHECK: [[FOR_OUTER_EPIL]]:
; CHECK-NEXT: br label %[[FOR_INNER_EPIL:.*]]
@@ -661,8 +658,8 @@ define i32 @test6() #0 {
; CHECK-NEXT: [[DOTLCSSA_EPIL:%.*]] = phi i32 [ [[P1_EPIL]], %[[FOR_INNER_EPIL]] ]
; CHECK-NEXT: br label %[[FOR_END]]
; CHECK: [[FOR_END]]:
-; CHECK-NEXT: [[DOTLCSSA_LCSSA:%.*]] = phi i32 [ [[DOTLCSSA_LCSSA_PH]], %[[FOR_END_UNR_LCSSA]] ], [ [[DOTLCSSA_EPIL]], %[[FOR_LATCH_EPIL]] ]
-; CHECK-NEXT: [[INC_LCSSA_LCSSA:%.*]] = phi i32 [ [[INC_LCSSA_LCSSA_PH]], %[[FOR_END_UNR_LCSSA]] ], [ 7, %[[FOR_LATCH_EPIL]] ]
+; CHECK-NEXT: [[DOTLCSSA_LCSSA:%.*]] = phi i32 [ [[DOTLCSSA_LCSSA_PH_PH]], %[[FOR_END_UNR_LCSSA]] ], [ [[DOTLCSSA_EPIL]], %[[FOR_LATCH_EPIL]] ]
+; CHECK-NEXT: [[INC_LCSSA_LCSSA:%.*]] = phi i32 [ [[INC_LCSSA_LCSSA_PH_PH]], %[[FOR_END_UNR_LCSSA]] ], [ 7, %[[FOR_LATCH_EPIL]] ]
; CHECK-NEXT: ret i32 0
;
entry:
@@ -708,7 +705,7 @@ define void @test7(i32 %I, i32 %E, ptr noalias nocapture %A, ptr noalias nocaptu
; CHECK-NEXT: [[TMP0:%.*]] = add i32 [[I]], -1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i32 [[I]], 3
; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i32 [[TMP0]], 3
-; CHECK-NEXT: br i1 [[TMP1]], label %[[FOR_END_LOOPEXIT_UNR_LCSSA:.*]], label %[[FOR_PREHEADER_NEW:.*]]
+; CHECK-NEXT: br i1 [[TMP1]], label %[[FOR_OUTER_EPIL_PREHEADER:.*]], label %[[FOR_PREHEADER_NEW:.*]]
; CHECK: [[FOR_PREHEADER_NEW]]:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i32 [[I]], [[XTRAITER]]
; CHECK-NEXT: br label %[[FOR_OUTER:.*]]
@@ -747,7 +744,7 @@ define void @test7(i32 %I, i32 %E, ptr noalias nocapture %A, ptr noalias nocaptu
; CHECK-NEXT: store i32 [[ADD9_LCSSA_2]], ptr [[ARRAYIDX_2]], align 4, !tbaa [[INT_TBAA0]]
; CHECK-NEXT: store i32 [[ADD9_LCSSA_3]], ptr [[ARRAYIDX_3]], align 4, !tbaa [[INT_TBAA0]]
; CHECK-NEXT: [[NITER_NCMP_3:%.*]] = icmp eq i32 [[NITER_NEXT_3]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_3]], label %[[FOR_END_LOOPEXIT_UNR_LCSSA_LOOPEXIT:.*]], label %[[FOR_OUTER]], !llvm.loop [[LOOP8:![0-9]+]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_3]], label %[[FOR_END_LOOPEXIT_UNR_LCSSA:.*]], label %[[FOR_OUTER]], !llvm.loop [[LOOP8:![0-9]+]]
; CHECK: [[FOR_INNER]]:
; CHECK-NEXT: [[SUM:%.*]] = phi i32 [ 0, %[[FOR_OUTER]] ], [ [[ADD9]], %[[FOR_INNER]] ]
; CHECK-NEXT: [[J:%.*]] = phi i32 [ 0, %[[FOR_OUTER]] ], [ [[ADD10:%.*]], %[[FOR_INNER]] ]
@@ -775,14 +772,14 @@ define void @test7(i32 %I, i32 %E, ptr noalias nocapture %A, ptr noalias nocaptu
; CHECK-NEXT: [[ADD10_3]] = add nuw i32 [[J_3]], 1
; CHECK-NEXT: [[EXITCOND_3:%.*]] = icmp eq i32 [[ADD10_3]], [[E]]
; CHECK-NEXT: br i1 [[EXITCOND_3]], label %[[FOR_LATCH]], label %[[FOR_INNER]]
-; CHECK: [[FOR_END_LOOPEXIT_UNR_LCSSA_LOOPEXIT]]:
-; CHECK-NEXT: [[I_UNR_PH:%.*]] = phi i32 [ [[ADD_3]], %[[FOR_LATCH]] ]
-; CHECK-NEXT: br label %[[FOR_END_LOOPEXIT_UNR_LCSSA]]
; CHECK: [[FOR_END_LOOPEXIT_UNR_LCSSA]]:
-; CHECK-NEXT: [[I_UNR:%.*]] = phi i32 [ 0, %[[FOR_PREHEADER]] ], [ [[I_UNR_PH]], %[[FOR_END_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[I_UNR1:%.*]] = phi i32 [ [[ADD_3]], %[[FOR_LATCH]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i32 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label %[[FOR_OUTER_EPIL_PREHEADER:.*]], label %[[FOR_END_LOOPEXIT:.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label %[[FOR_OUTER_EPIL_PREHEADER]], label %[[FOR_END_LOOPEXIT:.*]]
; CHECK: [[FOR_OUTER_EPIL_PREHEADER]]:
+; CHECK-NEXT: [[I_UNR:%.*]] = phi i32 [ 0, %[[FOR_PREHEADER]] ], [ [[I_UNR1]], %[[FOR_END_LOOPEXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i32 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; CHECK-NEXT: br label %[[FOR_OUTER_EPIL:.*]]
; CHECK: [[FOR_OUTER_EPIL]]:
; CHECK-NEXT: [[ARRAYIDX_EPIL:%.*]] = getelementptr inbounds i32, ptr [[A]], i32 [[I_UNR]]
@@ -907,7 +904,7 @@ define void @test8(i32 %I, i32 %E, ptr noalias nocapture %A, ptr noalias nocaptu
; CHECK-NEXT: [[X_038:%.*]] = phi i32 [ [[INC:%.*]], %[[FOR_CLEANUP:.*]] ], [ 0, %[[FOR_PREHEADER]] ]
; CHECK-NEXT: [[XTRAITER:%.*]] = and i32 [[I]], 3
; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i32 [[TMP0]], 3
-; CHECK-NEXT: br i1 [[TMP1]], label %[[FOR_CLEANUP_UNR_LCSSA:.*]], label %[[FOR_OUTEST_NEW:.*]]
+; CHECK-NEXT: br i1 [[TMP1]], label %[[FOR_OUTER_EPIL_PREHEADER:.*]], label %[[FOR_OUTEST_NEW:.*]]
; CHECK: [[FOR_OUTEST_NEW]]:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i32 [[I]], [[XTRAITER]]
; CHECK-NEXT: br label %[[FOR_OUTER:.*]]
@@ -922,10 +919,10 @@ define void @test8(i32 %I, i32 %E, ptr noalias nocapture %A, ptr noalias nocaptu
; CHECK-NEXT: [[ARRAYIDX_1:%.*]] = getelementptr inbounds i32, ptr [[A]], i32 [[ADD]]
; CHECK-NEXT: store i32 0, ptr [[ARRAYIDX_1]], align 4, !tbaa [[INT_TBAA0]]
; CHECK-NEXT: [[ADD_1:%.*]] = add nuw nsw i32 [[I]], 2
-; CHECK-NEXT: [[ARRAYIDX6_1:%.*]] = getelementptr inbounds i32, ptr [[A]], i32 [[ADD_1]]
-; CHECK-NEXT: store i32 2, ptr [[ARRAYIDX6_1]], align 4, !tbaa [[INT_TBAA0]]
; CHECK-NEXT: [[ARRAYIDX_2:%.*]] = getelementptr inbounds i32, ptr [[A]], i32 [[ADD_1]]
-; CHECK-NEXT: store i32 0, ptr [[ARRAYIDX_2]], align 4, !tbaa [[INT_TBAA0]]
+; CHECK-NEXT: store i32 2, ptr [[ARRAYIDX_2]], align 4, !tbaa [[INT_TBAA0]]
+; CHECK-NEXT: [[ARRAYIDX_4:%.*]] = getelementptr inbounds i32, ptr [[A]], i32 [[ADD_1]]
+; CHECK-NEXT: store i32 0, ptr [[ARRAYIDX_4]], align 4, !tbaa [[INT_TBAA0]]
; CHECK-NEXT: [[ADD_2:%.*]] = add nuw nsw i32 [[I]], 3
; CHECK-NEXT: [[ARRAYIDX6_2:%.*]] = getelementptr inbounds i32, ptr [[A]], i32 [[ADD_2]]
; CHECK-NEXT: store i32 2, ptr [[ARRAYIDX6_2]], align 4, !tbaa [[INT_TBAA0]]
@@ -970,18 +967,18 @@ define void @test8(i32 %I, i32 %E, ptr noalias nocapture %A, ptr noalias nocaptu
; CHECK-NEXT: [[ADD9_LCSSA_3:%.*]] = phi i32 [ [[ADD9_3]], %[[FOR_INNER]] ]
; CHECK-NEXT: store i32 [[ADD9_LCSSA]], ptr [[ARRAYIDX]], align 4, !tbaa [[INT_TBAA0]]
; CHECK-NEXT: store i32 [[ADD9_LCSSA_1]], ptr [[ARRAYIDX_1]], align 4, !tbaa [[INT_TBAA0]]
-; CHECK-NEXT: store i32 [[ADD9_LCSSA_2]], ptr [[ARRAYIDX_2]], align 4, !tbaa [[INT_TBAA0]]
+; CHECK-NEXT: store i32 [[ADD9_LCSSA_2]], ptr [[ARRAYIDX_4]], align 4, !tbaa [[INT_TBAA0]]
; CHECK-NEXT: store i32 [[ADD9_LCSSA_3]], ptr [[ARRAYIDX_3]], align 4, !tbaa [[INT_TBAA0]]
; CHECK-NEXT: [[NITER_NCMP_3:%.*]] = icmp eq i32 [[NITER_NEXT_3]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_3]], label %[[FOR_CLEANUP_UNR_LCSSA_LOOPEXIT:.*]], label %[[FOR_OUTER]], !llvm.loop [[LOOP9:![0-9]+]]
-; CHECK: [[FOR_CLEANUP_UNR_LCSSA_LOOPEXIT]]:
-; CHECK-NEXT: [[I_UNR_PH:%.*]] = phi i32 [ [[ADD_3]], %[[FOR_LATCH]] ]
-; CHECK-NEXT: br label %[[FOR_CLEANUP_UNR_LCSSA]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_3]], label %[[FOR_CLEANUP_UNR_LCSSA:.*]], label %[[FOR_OUTER]], !llvm.loop [[LOOP9:![0-9]+]]
; CHECK: [[FOR_CLEANUP_UNR_LCSSA]]:
-; CHECK-NEXT: [[I_UNR:%.*]] = phi i32 [ 0, %[[FOR_OUTEST]] ], [ [[I_UNR_PH]], %[[FOR_CLEANUP_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[I_UNR1:%.*]] = phi i32 [ [[ADD_3]], %[[FOR_LATCH]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i32 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label %[[FOR_OUTER_EPIL_PREHEADER:.*]], label %[[FOR_CLEANUP]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label %[[FOR_OUTER_EPIL_PREHEADER]], label %[[FOR_CLEANUP]]
; CHECK: [[FOR_OUTER_EPIL_PREHEADER]]:
+; CHECK-NEXT: [[I_UNR:%.*]] = phi i32 [ 0, %[[FOR_OUTEST]] ], [ [[I_UNR1]], %[[FOR_CLEANUP_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i32 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; CHECK-NEXT: br label %[[FOR_OUTER_EPIL:.*]]
; CHECK: [[FOR_OUTER_EPIL]]:
; CHECK-NEXT: [[ARRAYIDX_EPIL:%.*]] = getelementptr inbounds i32, ptr [[A]], i32 [[I_UNR]]
@@ -1116,7 +1113,7 @@ define void @test9(i32 %I, i32 %E, ptr nocapture %A, ptr nocapture readonly %B)
; CHECK-NEXT: [[TMP0:%.*]] = add i32 [[I]], -1
; CHECK-NEXT: [[XTRAITER:%.*]] = and i32 [[I]], 3
; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i32 [[TMP0]], 3
-; CHECK-NEXT: br i1 [[TMP1]], label %[[FOR_END_LOOPEXIT_UNR_LCSSA:.*]], label %[[FOR_OUTER_PREHEADER_NEW:.*]]
+; CHECK-NEXT: br i1 [[TMP1]], label %[[FOR_OUTER_EPIL_PREHEADER:.*]], label %[[FOR_OUTER_PREHEADER_NEW:.*]]
; CHECK: [[FOR_OUTER_PREHEADER_NEW]]:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i32 [[I]], [[XTRAITER]]
; CHECK-NEXT: br label %[[FOR_OUTER:.*]]
@@ -1174,15 +1171,15 @@ define void @test9(i32 %I, i32 %E, ptr nocapture %A, ptr nocapture readonly %B)
; CHECK-NEXT: [[ARRAYIDX6_3:%.*]] = getelementptr inbounds i32, ptr [[A]], i32 [[ADD8_2]]
; CHECK-NEXT: store i32 [[ADD_LCSSA_3]], ptr [[ARRAYIDX6_3]], align 4, !tbaa [[INT_TBAA0]]
; CHECK-NEXT: [[NITER_NCMP_3:%.*]] = icmp eq i32 [[NITER_NEXT_3]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_3]], label %[[FOR_END_LOOPEXIT_UNR_LCSSA_LOOPEXIT:.*]], label %[[FOR_OUTER]], !llvm.loop [[LOOP12:![0-9]+]]
-; CHECK: [[FOR_END_LOOPEXIT_UNR_LCSSA_LOOPEXIT]]:
-; CHECK-NEXT: [[I_UNR_PH:%.*]] = phi i32 [ [[ADD8_3]], %[[FOR_LATCH]] ]
-; CHECK-NEXT: br label %[[FOR_END_LOOPEXIT_UNR_LCSSA]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_3]], label %[[FOR_END_LOOPEXIT_UNR_LCSSA:.*]], label %[[FOR_OUTER]], !llvm.loop [[LOOP12:![0-9]+]]
; CHECK: [[FOR_END_LOOPEXIT_UNR_LCSSA]]:
-; CHECK-NEXT: [[I_UNR:%.*]] = phi i32 [ 0, %[[FOR_OUTER_PREHEADER]] ], [ [[I_UNR_PH]], %[[FOR_END_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[I_UNR1:%.*]] = phi i32 [ [[ADD8_3]], %[[FOR_LATCH]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i32 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD]], label %[[FOR_OUTER_EPIL_PREHEADER:.*]], label %[[FOR_END_LOOPEXIT:.*]]
+; CHECK-NEXT: br i1 [[LCMP_MOD]], label %[[FOR_OUTER_EPIL_PREHEADER]], label %[[FOR_END_LOOPEXIT:.*]]
; CHECK: [[FOR_OUTER_EPIL_PREHEADER]]:
+; CHECK-NEXT: [[I_UNR:%.*]] = phi i32 [ 0, %[[FOR_OUTER_PREHEADER]] ], [ [[I_UNR1]], %[[FOR_END_LOOPEXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD1:%.*]] = icmp ne i32 [[XTRAITER]], 0
+; CHECK-NEXT: call void @llvm.assume(i1 [[LCMP_MOD1]])
; CHECK-NEXT: br label %[[FOR_OUTER_EPIL:.*]]
; CHECK: [[FOR_OUTER_EPIL]]:
; CHECK-NEXT: br label %[[FOR_INNER_EPIL:.*]]
@@ -1293,11 +1290,11 @@ for.end:
define signext i16 @test10(i32 %k) #0 {
; CHECK-LABEL: define signext i16 @test10(
; CHECK-SAME: i32 [[K:%.*]]) {
-; CHECK-NEXT: [[ENTRY:.*]]:
+; CHECK-NEXT: [[ENTRY:.*:]]
; CHECK-NEXT: [[TMP0:%.*]] = load i8, ptr @c, align 1
; CHECK-NEXT: [[TOBOOL9:%.*]] = icmp eq i8 [[TMP0]], 0
; CHECK-NEXT: [[TOBOOL13:%.*]] = icmp ne i32 [[K]], 0
-; CHECK-NEXT: br i1 false, label %[[FOR_END26_UNR_LCSSA:.*]], label %[[ENTRY_NEW:.*]]
+; CHECK-NEXT: br i1 false, label %[[FOR_BODY_EPIL_PREHEADER:.*]], label %[[ENTRY_NEW:.*]]
; CHECK: [[ENTRY_NEW]]:
; CHECK-NEXT: br label %[[FOR_BODY:.*]]
; CHECK: [[FOR_BODY]]:
@@ -1325,18 +1322,14 @@ define signext i16 @test10(i32 %k) #0 {
; CHECK-NEXT: br i1 [[TOBOOL9]], label %[[FOR_BODY2_SPLIT_1:.*]], label %[[FOR_BODY2_SPLIT2_1:.*]]
; CHECK: [[FOR_INC24]]:
; CHECK-NEXT: [[STOREMERGE_4_LCSSA_3:%.*]] = phi i64 [ [[STOREMERGE_4_3:%.*]], %[[FOR_INC21_3]] ]
-; CHECK-NEXT: br i1 false, label %[[FOR_BODY]], label %[[FOR_END26_UNR_LCSSA_LOOPEXIT:.*]], !llvm.loop [[LOOP13:![0-9]+]]
-; CHECK: [[FOR_END26_UNR_LCSSA_LOOPEXIT]]:
+; CHECK-NEXT: br i1 false, label %[[FOR_BODY]], label %[[FOR_END26_UNR_LCSSA:.*]], !llvm.loop [[LOOP13:![0-9]+]]
+; CHECK: [[FOR_END26_UNR_LCSSA]]:
; CHECK-NEXT: [[DEC_LCSSA_LCSSA_PH_PH:%.*]] = phi i64 [ 0, %[[FOR_INC24]] ]
; CHECK-NEXT: [[STOREMERGE_4_LCSSA_LCSSA_PH_PH:%.*]] = phi i64 [ [[STOREMERGE_4_LCSSA_3]], %[[FOR_INC24]] ]
; CHECK-NEXT: [[STOREMERGE_5_LCSSA_LCSSA_PH_PH:%.*]] = phi i32 [ 0, %[[FOR_INC24]] ]
-; CHECK-NEXT: br label %[[FOR_END26_UNR_LCSSA]]
-; CHECK: [[FOR_END26_UNR_LCSSA]]:
-; CHECK-NEXT: [[DEC_LCSSA_LCSSA_PH:%.*]] = phi i64 [ poison, %[[ENTRY]] ], [ [[DEC_LCSSA_LCSSA_PH_PH]], %[[FOR_END26_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[STOREMERGE_4_LCSSA_LCSSA_PH:%.*]] = phi i64 [ poison, %[[ENTRY]] ], [ [[STOREMERGE_4_LCSSA_LCSSA_PH_PH]], %[[FOR_END26_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[STOREMERGE_5_LCSSA_LCSSA_PH:%.*]] = phi i32 [ poison, %[[ENTRY]] ], [ [[STOREMERGE_5_LCSSA_LCSSA_PH_PH]], %[[FOR_END26_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: br i1 true, label %[[FOR_BODY_EPIL_PREHEADER:.*]], label %[[FOR_END26:.*]]
+; CHECK-NEXT: br i1 true, label %[[FOR_BODY_EPIL_PREHEADER]], label %[[FOR_END26:.*]]
; CHECK: [[FOR_BODY_EPIL_PREHEADER]]:
+; CHECK-NEXT: call void @llvm.assume(i1 true)
; CHECK-NEXT: br label %[[FOR_BODY_EPIL:.*]]
; CHECK: [[FOR_BODY_EPIL]]:
; CHECK-NEXT: br label %[[FOR_BODY2_EPIL:.*]]
@@ -1360,9 +1353,9 @@ define signext i16 @test10(i32 %k) #0 {
; CHECK-NEXT: [[STOREMERGE_4_LCSSA_EPIL:%.*]] = phi i64 [ [[STOREMERGE_4_EPIL]], %[[FOR_INC21_EPIL]] ]
; CHECK-NEXT: br label %[[FOR_END26]]
; CHECK: [[FOR_END26]]:
-; CHECK-NEXT: [[DEC_LCSSA_LCSSA:%.*]] = phi i64 [ [[DEC_LCSSA_LCSSA_PH]], %[[FOR_END26_UNR_LCSSA]] ], [ 0, %[[FOR_INC24_EPIL]] ]
-; CHECK-NEXT: [[STOREMERGE_4_LCSSA_LCSSA:%.*]] = phi i64 [ [[STOREMERGE_4_LCSSA_LCSSA_PH]], %[[FOR_END26_UNR_LCSSA]] ], [ [[STOREMERGE_4_LCSSA_EPIL]], %[[FOR_INC24_EPIL]] ]
-; CHECK-NEXT: [[STOREMERGE_5_LCSSA_LCSSA:%.*]] = phi i32 [ [[STOREMERGE_5_LCSSA_LCSSA_PH]], %[[FOR_END26_UNR_LCSSA]] ], [ 0, %[[FOR_INC24_EPIL]] ]
+; CHECK-NEXT: [[DEC_LCSSA_LCSSA:%.*]] = phi i64 [ [[DEC_LCSSA_LCSSA_PH_PH]], %[[FOR_END26_UNR_LCSSA]] ], [ 0, %[[FOR_INC24_EPIL]] ]
+; CHECK-NEXT: [[STOREMERGE_4_LCSSA_LCSSA:%.*]] = phi i64 [ [[STOREMERGE_4_LCSSA_LCSSA_PH_PH]], %[[FOR_END26_UNR_LCSSA]] ], [ [[STOREMERGE_4_LCSSA_EPIL]], %[[FOR_INC24_EPIL]] ]
+; CHECK-NEXT: [[STOREMERGE_5_LCSSA_LCSSA:%.*]] = phi i32 [ [[STOREMERGE_5_LCSSA_LCSSA_PH_PH]], %[[FOR_END26_UNR_LCSSA]] ], [ 0, %[[FOR_INC24_EPIL]] ]
; CHECK-NEXT: store i64 [[DEC_LCSSA_LCSSA]], ptr @g, align 8
; CHECK-NEXT: ret i16 0
; CHECK: [[FOR_BODY2_SPLIT2_1]]:
diff --git a/llvm/test/Transforms/LoopVectorize/X86/float-induction-x86.ll b/llvm/test/Transforms/LoopVectorize/X86/float-induction-x86.ll
index 3b0ad73..39217e5 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/float-induction-x86.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/float-induction-x86.ll
@@ -23,7 +23,7 @@ define void @fp_iv_loop1(ptr noalias nocapture %A, i32 %N) #0 {
; AUTO_VEC: [[ITER_CHECK]]:
; AUTO_VEC-NEXT: [[TMP0:%.*]] = zext i32 [[N]] to i64
; AUTO_VEC-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i64 [[TMP0]], 4
-; AUTO_VEC-NEXT: br i1 [[MIN_ITERS_CHECK]], label %[[FOR_BODY:.*]], label %[[VECTOR_MAIN_LOOP_ITER_CHECK:.*]]
+; AUTO_VEC-NEXT: br i1 [[MIN_ITERS_CHECK]], label %[[VEC_EPILOG_SCALAR_PH:.*]], label %[[VECTOR_MAIN_LOOP_ITER_CHECK:.*]]
; AUTO_VEC: [[VECTOR_MAIN_LOOP_ITER_CHECK]]:
; AUTO_VEC-NEXT: [[MIN_ITERS_CHECK1:%.*]] = icmp ult i64 [[TMP0]], 32
; AUTO_VEC-NEXT: br i1 [[MIN_ITERS_CHECK1]], label %[[VEC_EPILOG_PH:.*]], label %[[VECTOR_PH:.*]]
@@ -60,7 +60,7 @@ define void @fp_iv_loop1(ptr noalias nocapture %A, i32 %N) #0 {
; AUTO_VEC-NEXT: [[TMP11:%.*]] = fmul fast float 5.000000e-01, [[DOTCAST12]]
; AUTO_VEC-NEXT: [[IND_END1:%.*]] = fadd fast float 1.000000e+00, [[TMP11]]
; AUTO_VEC-NEXT: [[MIN_EPILOG_ITERS_CHECK:%.*]] = icmp ult i64 [[N_MOD_VF]], 4
-; AUTO_VEC-NEXT: br i1 [[MIN_EPILOG_ITERS_CHECK]], label %[[FOR_BODY]], label %[[VEC_EPILOG_PH]], !prof [[PROF3:![0-9]+]]
+; AUTO_VEC-NEXT: br i1 [[MIN_EPILOG_ITERS_CHECK]], label %[[VEC_EPILOG_SCALAR_PH]], label %[[VEC_EPILOG_PH]], !prof [[PROF3:![0-9]+]]
; AUTO_VEC: [[VEC_EPILOG_PH]]:
; AUTO_VEC-NEXT: [[VEC_EPILOG_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC]], %[[VEC_EPILOG_ITER_CHECK]] ], [ 0, %[[VECTOR_MAIN_LOOP_ITER_CHECK]] ]
; AUTO_VEC-NEXT: [[BC_RESUME_VAL:%.*]] = phi float [ [[IND_END]], %[[VEC_EPILOG_ITER_CHECK]] ], [ 1.000000e+00, %[[VECTOR_MAIN_LOOP_ITER_CHECK]] ]
@@ -84,14 +84,14 @@ define void @fp_iv_loop1(ptr noalias nocapture %A, i32 %N) #0 {
; AUTO_VEC-NEXT: br i1 [[TMP9]], label %[[VEC_EPILOG_MIDDLE_BLOCK:.*]], label %[[VEC_EPILOG_VECTOR_BODY]], !llvm.loop [[LOOP4:![0-9]+]]
; AUTO_VEC: [[VEC_EPILOG_MIDDLE_BLOCK]]:
; AUTO_VEC-NEXT: [[CMP_N9:%.*]] = icmp eq i64 [[TMP0]], [[N_VEC3]]
-; AUTO_VEC-NEXT: br i1 [[CMP_N9]], label %[[FOR_END_LOOPEXIT]], label %[[FOR_BODY]]
-; AUTO_VEC: [[FOR_BODY]]:
+; AUTO_VEC-NEXT: br i1 [[CMP_N9]], label %[[FOR_END_LOOPEXIT]], label %[[VEC_EPILOG_SCALAR_PH]]
+; AUTO_VEC: [[VEC_EPILOG_SCALAR_PH]]:
; AUTO_VEC-NEXT: [[BC_RESUME_VAL10:%.*]] = phi i64 [ [[N_VEC3]], %[[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], %[[VEC_EPILOG_ITER_CHECK]] ], [ 0, %[[ITER_CHECK]] ]
; AUTO_VEC-NEXT: [[BC_RESUME_VAL11:%.*]] = phi float [ [[TMP10]], %[[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[IND_END1]], %[[VEC_EPILOG_ITER_CHECK]] ], [ 1.000000e+00, %[[ITER_CHECK]] ]
; AUTO_VEC-NEXT: br label %[[LOOP:.*]]
; AUTO_VEC: [[LOOP]]:
-; AUTO_VEC-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[INDVARS_IV_NEXT:%.*]], %[[LOOP]] ], [ [[BC_RESUME_VAL10]], %[[FOR_BODY]] ]
-; AUTO_VEC-NEXT: [[X_06:%.*]] = phi float [ [[CONV1:%.*]], %[[LOOP]] ], [ [[BC_RESUME_VAL11]], %[[FOR_BODY]] ]
+; AUTO_VEC-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[INDVARS_IV_NEXT:%.*]], %[[LOOP]] ], [ [[BC_RESUME_VAL10]], %[[VEC_EPILOG_SCALAR_PH]] ]
+; AUTO_VEC-NEXT: [[X_06:%.*]] = phi float [ [[CONV1:%.*]], %[[LOOP]] ], [ [[BC_RESUME_VAL11]], %[[VEC_EPILOG_SCALAR_PH]] ]
; AUTO_VEC-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds float, ptr [[A]], i64 [[INDVARS_IV]]
; AUTO_VEC-NEXT: store float [[X_06]], ptr [[ARRAYIDX]], align 4
; AUTO_VEC-NEXT: [[CONV1]] = fadd fast float [[X_06]], 5.000000e-01
@@ -144,19 +144,19 @@ define void @fp_iv_loop2(ptr noalias nocapture %A, i32 %N) {
; AUTO_VEC-SAME: ptr noalias captures(none) [[A:%.*]], i32 [[N:%.*]]) #[[ATTR0]] {
; AUTO_VEC-NEXT: [[ENTRY:.*:]]
; AUTO_VEC-NEXT: [[CMP4:%.*]] = icmp sgt i32 [[N]], 0
-; AUTO_VEC-NEXT: br i1 [[CMP4]], label %[[FOR_BODY_PREHEADER:.*]], label %[[FOR_END:.*]]
-; AUTO_VEC: [[FOR_BODY_PREHEADER]]:
-; AUTO_VEC-NEXT: br label %[[FOR_BODY:.*]]
-; AUTO_VEC: [[FOR_BODY]]:
-; AUTO_VEC-NEXT: [[INDVARS_IV_EPIL:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_EPIL:%.*]], %[[FOR_BODY]] ], [ 0, %[[FOR_BODY_PREHEADER]] ]
-; AUTO_VEC-NEXT: [[X_06_EPIL:%.*]] = phi float [ [[CONV1_EPIL:%.*]], %[[FOR_BODY]] ], [ 1.000000e+00, %[[FOR_BODY_PREHEADER]] ]
+; AUTO_VEC-NEXT: br i1 [[CMP4]], label %[[LOOP_PREHEADER:.*]], label %[[FOR_END:.*]]
+; AUTO_VEC: [[LOOP_PREHEADER]]:
+; AUTO_VEC-NEXT: br label %[[LOOP:.*]]
+; AUTO_VEC: [[LOOP]]:
+; AUTO_VEC-NEXT: [[INDVARS_IV_EPIL:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_EPIL:%.*]], %[[LOOP]] ], [ 0, %[[LOOP_PREHEADER]] ]
+; AUTO_VEC-NEXT: [[X_06_EPIL:%.*]] = phi float [ [[CONV1_EPIL:%.*]], %[[LOOP]] ], [ 1.000000e+00, %[[LOOP_PREHEADER]] ]
; AUTO_VEC-NEXT: [[ARRAYIDX_EPIL:%.*]] = getelementptr inbounds float, ptr [[A]], i64 [[INDVARS_IV_EPIL]]
; AUTO_VEC-NEXT: store float [[X_06_EPIL]], ptr [[ARRAYIDX_EPIL]], align 4
; AUTO_VEC-NEXT: [[CONV1_EPIL]] = fadd float [[X_06_EPIL]], 5.000000e-01
; AUTO_VEC-NEXT: [[INDVARS_IV_NEXT_EPIL]] = add nuw nsw i64 [[INDVARS_IV_EPIL]], 1
; AUTO_VEC-NEXT: [[LFTR_WIDEIV:%.*]] = trunc i64 [[INDVARS_IV_NEXT_EPIL]] to i32
; AUTO_VEC-NEXT: [[EXITCOND:%.*]] = icmp eq i32 [[LFTR_WIDEIV]], [[N]]
-; AUTO_VEC-NEXT: br i1 [[EXITCOND]], label %[[FOR_END_LOOPEXIT:.*]], label %[[FOR_BODY]]
+; AUTO_VEC-NEXT: br i1 [[EXITCOND]], label %[[FOR_END_LOOPEXIT:.*]], label %[[LOOP]]
; AUTO_VEC: [[FOR_END_LOOPEXIT]]:
; AUTO_VEC-NEXT: br label %[[FOR_END]]
; AUTO_VEC: [[FOR_END]]:
@@ -193,7 +193,7 @@ define double @external_use_with_fast_math(ptr %a, i64 %n) {
; AUTO_VEC-NEXT: [[ENTRY:.*]]:
; AUTO_VEC-NEXT: [[SMAX:%.*]] = call i64 @llvm.smax.i64(i64 [[N]], i64 1)
; AUTO_VEC-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i64 [[SMAX]], 16
-; AUTO_VEC-NEXT: br i1 [[MIN_ITERS_CHECK]], label %[[FOR_BODY:.*]], label %[[VECTOR_PH:.*]]
+; AUTO_VEC-NEXT: br i1 [[MIN_ITERS_CHECK]], label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
; AUTO_VEC: [[VECTOR_PH]]:
; AUTO_VEC-NEXT: [[N_MOD_VF:%.*]] = urem i64 [[SMAX]], 16
; AUTO_VEC-NEXT: [[N_VEC:%.*]] = sub i64 [[SMAX]], [[N_MOD_VF]]
@@ -222,14 +222,14 @@ define double @external_use_with_fast_math(ptr %a, i64 %n) {
; AUTO_VEC: [[MIDDLE_BLOCK]]:
; AUTO_VEC-NEXT: [[CMP_N:%.*]] = icmp eq i64 [[SMAX]], [[N_VEC]]
; AUTO_VEC-NEXT: [[TMP7:%.*]] = fsub fast double [[TMP6]], 3.000000e+00
-; AUTO_VEC-NEXT: br i1 [[CMP_N]], label %[[FOR_END:.*]], label %[[FOR_BODY]]
-; AUTO_VEC: [[FOR_BODY]]:
+; AUTO_VEC-NEXT: br i1 [[CMP_N]], label %[[FOR_END:.*]], label %[[SCALAR_PH]]
+; AUTO_VEC: [[SCALAR_PH]]:
; AUTO_VEC-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC]], %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
; AUTO_VEC-NEXT: [[BC_RESUME_VAL1:%.*]] = phi double [ [[TMP6]], %[[MIDDLE_BLOCK]] ], [ 0.000000e+00, %[[ENTRY]] ]
; AUTO_VEC-NEXT: br label %[[LOOP:.*]]
; AUTO_VEC: [[LOOP]]:
-; AUTO_VEC-NEXT: [[I:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[FOR_BODY]] ], [ [[I_NEXT:%.*]], %[[LOOP]] ]
-; AUTO_VEC-NEXT: [[J:%.*]] = phi double [ [[BC_RESUME_VAL1]], %[[FOR_BODY]] ], [ [[J_NEXT:%.*]], %[[LOOP]] ]
+; AUTO_VEC-NEXT: [[I:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[I_NEXT:%.*]], %[[LOOP]] ]
+; AUTO_VEC-NEXT: [[J:%.*]] = phi double [ [[BC_RESUME_VAL1]], %[[SCALAR_PH]] ], [ [[J_NEXT:%.*]], %[[LOOP]] ]
; AUTO_VEC-NEXT: [[T0:%.*]] = getelementptr double, ptr [[A]], i64 [[I]]
; AUTO_VEC-NEXT: store double [[J]], ptr [[T0]], align 8
; AUTO_VEC-NEXT: [[I_NEXT]] = add i64 [[I]], 1
@@ -261,19 +261,19 @@ for.end:
define double @external_use_without_fast_math(ptr %a, i64 %n) {
; AUTO_VEC-LABEL: define double @external_use_without_fast_math(
; AUTO_VEC-SAME: ptr [[A:%.*]], i64 [[N:%.*]]) #[[ATTR0]] {
-; AUTO_VEC-NEXT: [[ENTRY_NEW:.*]]:
-; AUTO_VEC-NEXT: br label %[[FOR_BODY:.*]]
-; AUTO_VEC: [[FOR_BODY]]:
-; AUTO_VEC-NEXT: [[I:%.*]] = phi i64 [ 0, %[[ENTRY_NEW]] ], [ [[I_NEXT_7:%.*]], %[[FOR_BODY]] ]
-; AUTO_VEC-NEXT: [[J:%.*]] = phi double [ 0.000000e+00, %[[ENTRY_NEW]] ], [ [[J_NEXT_7:%.*]], %[[FOR_BODY]] ]
+; AUTO_VEC-NEXT: [[ENTRY:.*]]:
+; AUTO_VEC-NEXT: br label %[[LOOP:.*]]
+; AUTO_VEC: [[LOOP]]:
+; AUTO_VEC-NEXT: [[I:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[I_NEXT_7:%.*]], %[[LOOP]] ]
+; AUTO_VEC-NEXT: [[J:%.*]] = phi double [ 0.000000e+00, %[[ENTRY]] ], [ [[J_NEXT_7:%.*]], %[[LOOP]] ]
; AUTO_VEC-NEXT: [[TMP7:%.*]] = getelementptr double, ptr [[A]], i64 [[I]]
; AUTO_VEC-NEXT: store double [[J]], ptr [[TMP7]], align 8
; AUTO_VEC-NEXT: [[I_NEXT_7]] = add i64 [[I]], 1
; AUTO_VEC-NEXT: [[J_NEXT_7]] = fadd double [[J]], 3.000000e+00
; AUTO_VEC-NEXT: [[COND:%.*]] = icmp slt i64 [[I_NEXT_7]], [[N]]
-; AUTO_VEC-NEXT: br i1 [[COND]], label %[[FOR_BODY]], label %[[FOR_END:.*]]
+; AUTO_VEC-NEXT: br i1 [[COND]], label %[[LOOP]], label %[[FOR_END:.*]]
; AUTO_VEC: [[FOR_END]]:
-; AUTO_VEC-NEXT: [[J_LCSSA:%.*]] = phi double [ [[J]], %[[FOR_BODY]] ]
+; AUTO_VEC-NEXT: [[J_LCSSA:%.*]] = phi double [ [[J]], %[[LOOP]] ]
; AUTO_VEC-NEXT: ret double [[J_LCSSA]]
;
entry:
@@ -308,7 +308,7 @@ define void @fadd_reassoc_FMF(ptr nocapture %p, i32 %N) {
; AUTO_VEC-NEXT: [[ITER_CHECK:.*]]:
; AUTO_VEC-NEXT: [[TMP0:%.*]] = zext i32 [[N]] to i64
; AUTO_VEC-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i64 [[TMP0]], 4
-; AUTO_VEC-NEXT: br i1 [[MIN_ITERS_CHECK]], label %[[FOR_BODY:.*]], label %[[VECTOR_MAIN_LOOP_ITER_CHECK:.*]]
+; AUTO_VEC-NEXT: br i1 [[MIN_ITERS_CHECK]], label %[[VEC_EPILOG_SCALAR_PH:.*]], label %[[VECTOR_MAIN_LOOP_ITER_CHECK:.*]]
; AUTO_VEC: [[VECTOR_MAIN_LOOP_ITER_CHECK]]:
; AUTO_VEC-NEXT: [[MIN_ITERS_CHECK1:%.*]] = icmp ult i64 [[TMP0]], 32
; AUTO_VEC-NEXT: br i1 [[MIN_ITERS_CHECK1]], label %[[VEC_EPILOG_PH:.*]], label %[[VECTOR_PH:.*]]
@@ -353,7 +353,7 @@ define void @fadd_reassoc_FMF(ptr nocapture %p, i32 %N) {
; AUTO_VEC-NEXT: [[TMP12:%.*]] = fmul reassoc float 4.200000e+01, [[DOTCAST16]]
; AUTO_VEC-NEXT: [[IND_END1:%.*]] = fadd reassoc float 1.000000e+00, [[TMP12]]
; AUTO_VEC-NEXT: [[MIN_EPILOG_ITERS_CHECK:%.*]] = icmp ult i64 [[N_MOD_VF]], 4
-; AUTO_VEC-NEXT: br i1 [[MIN_EPILOG_ITERS_CHECK]], label %[[FOR_BODY]], label %[[VEC_EPILOG_PH]], !prof [[PROF3]]
+; AUTO_VEC-NEXT: br i1 [[MIN_EPILOG_ITERS_CHECK]], label %[[VEC_EPILOG_SCALAR_PH]], label %[[VEC_EPILOG_PH]], !prof [[PROF3]]
; AUTO_VEC: [[VEC_EPILOG_PH]]:
; AUTO_VEC-NEXT: [[VEC_EPILOG_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC]], %[[VEC_EPILOG_ITER_CHECK]] ], [ 0, %[[VECTOR_MAIN_LOOP_ITER_CHECK]] ]
; AUTO_VEC-NEXT: [[BC_RESUME_VAL:%.*]] = phi float [ [[IND_END]], %[[VEC_EPILOG_ITER_CHECK]] ], [ 1.000000e+00, %[[VECTOR_MAIN_LOOP_ITER_CHECK]] ]
@@ -379,14 +379,14 @@ define void @fadd_reassoc_FMF(ptr nocapture %p, i32 %N) {
; AUTO_VEC-NEXT: br i1 [[TMP15]], label %[[VEC_EPILOG_MIDDLE_BLOCK:.*]], label %[[VEC_EPILOG_VECTOR_BODY]], !llvm.loop [[LOOP9:![0-9]+]]
; AUTO_VEC: [[VEC_EPILOG_MIDDLE_BLOCK]]:
; AUTO_VEC-NEXT: [[CMP_N18:%.*]] = icmp eq i64 [[TMP0]], [[N_VEC6]]
-; AUTO_VEC-NEXT: br i1 [[CMP_N18]], label %[[EXIT]], label %[[FOR_BODY]]
-; AUTO_VEC: [[FOR_BODY]]:
+; AUTO_VEC-NEXT: br i1 [[CMP_N18]], label %[[EXIT]], label %[[VEC_EPILOG_SCALAR_PH]]
+; AUTO_VEC: [[VEC_EPILOG_SCALAR_PH]]:
; AUTO_VEC-NEXT: [[BC_RESUME_VAL14:%.*]] = phi i64 [ [[N_VEC6]], %[[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], %[[VEC_EPILOG_ITER_CHECK]] ], [ 0, %[[ITER_CHECK]] ]
; AUTO_VEC-NEXT: [[BC_RESUME_VAL15:%.*]] = phi float [ [[TMP18]], %[[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[IND_END1]], %[[VEC_EPILOG_ITER_CHECK]] ], [ 1.000000e+00, %[[ITER_CHECK]] ]
; AUTO_VEC-NEXT: br label %[[LOOP:.*]]
; AUTO_VEC: [[LOOP]]:
-; AUTO_VEC-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[BC_RESUME_VAL14]], %[[FOR_BODY]] ], [ [[INDVARS_IV_NEXT:%.*]], %[[LOOP]] ]
-; AUTO_VEC-NEXT: [[X_012:%.*]] = phi float [ [[BC_RESUME_VAL15]], %[[FOR_BODY]] ], [ [[ADD3:%.*]], %[[LOOP]] ]
+; AUTO_VEC-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[BC_RESUME_VAL14]], %[[VEC_EPILOG_SCALAR_PH]] ], [ [[INDVARS_IV_NEXT:%.*]], %[[LOOP]] ]
+; AUTO_VEC-NEXT: [[X_012:%.*]] = phi float [ [[BC_RESUME_VAL15]], %[[VEC_EPILOG_SCALAR_PH]] ], [ [[ADD3:%.*]], %[[LOOP]] ]
; AUTO_VEC-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds float, ptr [[P]], i64 [[INDVARS_IV]]
; AUTO_VEC-NEXT: [[TMP16:%.*]] = load float, ptr [[ARRAYIDX]], align 4
; AUTO_VEC-NEXT: [[ADD:%.*]] = fadd reassoc float [[X_012]], [[TMP16]]
diff --git a/llvm/test/Transforms/LoopVectorize/dereferenceable-info-from-assumption-constant-size.ll b/llvm/test/Transforms/LoopVectorize/dereferenceable-info-from-assumption-constant-size.ll
index 75420d4..bcea03a 100644
--- a/llvm/test/Transforms/LoopVectorize/dereferenceable-info-from-assumption-constant-size.ll
+++ b/llvm/test/Transforms/LoopVectorize/dereferenceable-info-from-assumption-constant-size.ll
@@ -1182,31 +1182,13 @@ define void @deref_assumption_in_header_constant_trip_count_nofree_via_context(p
; CHECK: [[VECTOR_PH]]:
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
; CHECK: [[VECTOR_BODY]]:
-; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[PRED_LOAD_CONTINUE2:.*]] ]
+; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
+; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i32, ptr [[A]], i64 [[INDEX]]
; CHECK-NEXT: [[TMP0:%.*]] = getelementptr inbounds i32, ptr [[B]], i64 [[INDEX]]
; CHECK-NEXT: [[WIDE_LOAD1:%.*]] = load <2 x i32>, ptr [[TMP0]], align 4
-; CHECK-NEXT: [[TMP2:%.*]] = icmp slt <2 x i32> [[WIDE_LOAD1]], zeroinitializer
-; CHECK-NEXT: [[TMP13:%.*]] = extractelement <2 x i1> [[TMP2]], i32 0
-; CHECK-NEXT: br i1 [[TMP13]], label %[[PRED_LOAD_IF:.*]], label %[[PRED_LOAD_CONTINUE:.*]]
-; CHECK: [[PRED_LOAD_IF]]:
-; CHECK-NEXT: [[TMP3:%.*]] = add i64 [[INDEX]], 0
-; CHECK-NEXT: [[TMP4:%.*]] = getelementptr i32, ptr [[A]], i64 [[TMP3]]
-; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP4]], align 4
-; CHECK-NEXT: [[TMP6:%.*]] = insertelement <2 x i32> poison, i32 [[TMP5]], i32 0
-; CHECK-NEXT: br label %[[PRED_LOAD_CONTINUE]]
-; CHECK: [[PRED_LOAD_CONTINUE]]:
-; CHECK-NEXT: [[TMP7:%.*]] = phi <2 x i32> [ poison, %[[VECTOR_BODY]] ], [ [[TMP6]], %[[PRED_LOAD_IF]] ]
-; CHECK-NEXT: [[TMP8:%.*]] = extractelement <2 x i1> [[TMP2]], i32 1
-; CHECK-NEXT: br i1 [[TMP8]], label %[[PRED_LOAD_IF1:.*]], label %[[PRED_LOAD_CONTINUE2]]
-; CHECK: [[PRED_LOAD_IF1]]:
-; CHECK-NEXT: [[TMP9:%.*]] = add i64 [[INDEX]], 1
-; CHECK-NEXT: [[TMP10:%.*]] = getelementptr i32, ptr [[A]], i64 [[TMP9]]
-; CHECK-NEXT: [[TMP11:%.*]] = load i32, ptr [[TMP10]], align 4
-; CHECK-NEXT: [[TMP12:%.*]] = insertelement <2 x i32> [[TMP7]], i32 [[TMP11]], i32 1
-; CHECK-NEXT: br label %[[PRED_LOAD_CONTINUE2]]
-; CHECK: [[PRED_LOAD_CONTINUE2]]:
-; CHECK-NEXT: [[WIDE_LOAD:%.*]] = phi <2 x i32> [ [[TMP7]], %[[PRED_LOAD_CONTINUE]] ], [ [[TMP12]], %[[PRED_LOAD_IF1]] ]
-; CHECK-NEXT: [[PREDPHI:%.*]] = select <2 x i1> [[TMP2]], <2 x i32> [[WIDE_LOAD]], <2 x i32> [[WIDE_LOAD1]]
+; CHECK-NEXT: [[TMP2:%.*]] = icmp sge <2 x i32> [[WIDE_LOAD1]], zeroinitializer
+; CHECK-NEXT: [[WIDE_LOAD2:%.*]] = load <2 x i32>, ptr [[TMP1]], align 4
+; CHECK-NEXT: [[PREDPHI:%.*]] = select <2 x i1> [[TMP2]], <2 x i32> [[WIDE_LOAD1]], <2 x i32> [[WIDE_LOAD2]]
; CHECK-NEXT: [[TMP14:%.*]] = getelementptr inbounds i32, ptr [[C]], i64 [[INDEX]]
; CHECK-NEXT: store <2 x i32> [[PREDPHI]], ptr [[TMP14]], align 4
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
diff --git a/llvm/test/Transforms/LoopVectorize/epilog-vectorization-scev-expansion.ll b/llvm/test/Transforms/LoopVectorize/epilog-vectorization-scev-expansion.ll
new file mode 100644
index 0000000..b020e59
--- /dev/null
+++ b/llvm/test/Transforms/LoopVectorize/epilog-vectorization-scev-expansion.ll
@@ -0,0 +1,73 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals none --version 6
+; RUN: opt -p loop-vectorize -force-vector-width=4 -enable-epilogue-vectorization -epilogue-vectorization-force-VF=4 -S %s | FileCheck %s
+
+@end = external global [128 x i8]
+
+; Test case for https://github.com/llvm/llvm-project/issues/162128.
+define void @test_epilogue_step_scev_expansion(ptr %dst) {
+; CHECK-LABEL: define void @test_epilogue_step_scev_expansion(
+; CHECK-SAME: ptr [[DST:%.*]]) {
+; CHECK-NEXT: [[ITER_CHECK:.*]]:
+; CHECK-NEXT: br i1 false, label %[[VEC_EPILOG_SCALAR_PH:.*]], label %[[VECTOR_MAIN_LOOP_ITER_CHECK:.*]]
+; CHECK: [[VECTOR_MAIN_LOOP_ITER_CHECK]]:
+; CHECK-NEXT: br i1 false, label %[[VEC_EPILOG_PH:.*]], label %[[VECTOR_PH:.*]]
+; CHECK: [[VECTOR_PH]]:
+; CHECK-NEXT: [[N_MOD_VF:%.*]] = urem i64 sub (i64 0, i64 ptrtoint (ptr @end to i64)), 4
+; CHECK-NEXT: [[N_VEC:%.*]] = sub i64 sub (i64 0, i64 ptrtoint (ptr @end to i64)), [[N_MOD_VF]]
+; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
+; CHECK: [[VECTOR_BODY]]:
+; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
+; CHECK-NEXT: [[TMP0:%.*]] = getelementptr i8, ptr [[DST]], i64 [[INDEX]]
+; CHECK-NEXT: store <4 x i8> zeroinitializer, ptr [[TMP0]], align 1
+; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 4
+; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
+; CHECK-NEXT: br i1 [[TMP1]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
+; CHECK: [[MIDDLE_BLOCK]]:
+; CHECK-NEXT: [[CMP_N:%.*]] = icmp eq i64 sub (i64 0, i64 ptrtoint (ptr @end to i64)), [[N_VEC]]
+; CHECK-NEXT: br i1 [[CMP_N]], label %[[EXIT:.*]], label %[[VEC_EPILOG_ITER_CHECK:.*]]
+; CHECK: [[VEC_EPILOG_ITER_CHECK]]:
+; CHECK-NEXT: [[N_VEC_REMAINING:%.*]] = sub i64 sub (i64 0, i64 ptrtoint (ptr @end to i64)), [[N_VEC]]
+; CHECK-NEXT: [[MIN_EPILOG_ITERS_CHECK:%.*]] = icmp ult i64 [[N_VEC_REMAINING]], 4
+; CHECK-NEXT: br i1 [[MIN_EPILOG_ITERS_CHECK]], label %[[VEC_EPILOG_SCALAR_PH]], label %[[VEC_EPILOG_PH]], !prof [[PROF3:![0-9]+]]
+; CHECK: [[VEC_EPILOG_PH]]:
+; CHECK-NEXT: [[VEC_EPILOG_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC]], %[[VEC_EPILOG_ITER_CHECK]] ], [ 0, %[[VECTOR_MAIN_LOOP_ITER_CHECK]] ]
+; CHECK-NEXT: [[N_MOD_VF1:%.*]] = urem i64 sub (i64 0, i64 ptrtoint (ptr @end to i64)), 4
+; CHECK-NEXT: [[N_VEC2:%.*]] = sub i64 sub (i64 0, i64 ptrtoint (ptr @end to i64)), [[N_MOD_VF1]]
+; CHECK-NEXT: br label %[[VEC_EPILOG_VECTOR_BODY:.*]]
+; CHECK: [[VEC_EPILOG_VECTOR_BODY]]:
+; CHECK-NEXT: [[INDEX3:%.*]] = phi i64 [ [[VEC_EPILOG_RESUME_VAL]], %[[VEC_EPILOG_PH]] ], [ [[INDEX_NEXT4:%.*]], %[[VEC_EPILOG_VECTOR_BODY]] ]
+; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[DST]], i64 [[INDEX3]]
+; CHECK-NEXT: store <4 x i8> zeroinitializer, ptr [[TMP2]], align 1
+; CHECK-NEXT: [[INDEX_NEXT4]] = add nuw i64 [[INDEX3]], 4
+; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i64 [[INDEX_NEXT4]], [[N_VEC2]]
+; CHECK-NEXT: br i1 [[TMP3]], label %[[VEC_EPILOG_MIDDLE_BLOCK:.*]], label %[[VEC_EPILOG_VECTOR_BODY]], !llvm.loop [[LOOP4:![0-9]+]]
+; CHECK: [[VEC_EPILOG_MIDDLE_BLOCK]]:
+; CHECK-NEXT: [[CMP_N5:%.*]] = icmp eq i64 sub (i64 0, i64 ptrtoint (ptr @end to i64)), [[N_VEC2]]
+; CHECK-NEXT: br i1 [[CMP_N5]], label %[[EXIT]], label %[[VEC_EPILOG_SCALAR_PH]]
+; CHECK: [[VEC_EPILOG_SCALAR_PH]]:
+; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC2]], %[[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], %[[VEC_EPILOG_ITER_CHECK]] ], [ 0, %[[ITER_CHECK]] ]
+; CHECK-NEXT: br label %[[LOOP:.*]]
+; CHECK: [[LOOP]]:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP]] ]
+; CHECK-NEXT: [[GEP_DST:%.*]] = getelementptr i8, ptr [[DST]], i64 [[IV]]
+; CHECK-NEXT: store i8 0, ptr [[GEP_DST]], align 1
+; CHECK-NEXT: [[IV_NEXT]] = add i64 [[IV]], 1
+; CHECK-NEXT: [[EC:%.*]] = icmp eq i64 [[IV]], sub (i64 0, i64 ptrtoint (ptr getelementptr inbounds nuw (i8, ptr @end, i64 1) to i64))
+; CHECK-NEXT: br i1 [[EC]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP5:![0-9]+]]
+; CHECK: [[EXIT]]:
+; CHECK-NEXT: ret void
+;
+entry:
+ br label %loop
+
+loop:
+ %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
+ %gep.dst = getelementptr i8, ptr %dst, i64 %iv
+ store i8 0, ptr %gep.dst, align 1
+ %iv.next = add i64 %iv, 1
+ %ec = icmp eq i64 %iv, sub (i64 0, i64 ptrtoint (ptr getelementptr inbounds nuw (i8, ptr @end, i64 1) to i64))
+ br i1 %ec, label %exit, label %loop
+
+exit:
+ ret void
+}
diff --git a/llvm/test/Transforms/LoopVectorize/single-early-exit-deref-assumptions.ll b/llvm/test/Transforms/LoopVectorize/single-early-exit-deref-assumptions.ll
index f794620..cc3bda4 100644
--- a/llvm/test/Transforms/LoopVectorize/single-early-exit-deref-assumptions.ll
+++ b/llvm/test/Transforms/LoopVectorize/single-early-exit-deref-assumptions.ll
@@ -504,24 +504,35 @@ exit:
define i64 @early_exit_alignment_and_deref_known_via_assumption_with_constant_size_nofree_via_context(ptr noalias %p1, ptr noalias %p2) nosync {
; CHECK-LABEL: define i64 @early_exit_alignment_and_deref_known_via_assumption_with_constant_size_nofree_via_context(
; CHECK-SAME: ptr noalias [[P1:%.*]], ptr noalias [[P2:%.*]]) #[[ATTR1:[0-9]+]] {
-; CHECK-NEXT: [[ENTRY:.*]]:
+; CHECK-NEXT: [[ENTRY:.*:]]
; CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(ptr [[P1]], i64 4), "dereferenceable"(ptr [[P1]], i64 1024) ]
; CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(ptr [[P2]], i64 4), "dereferenceable"(ptr [[P2]], i64 1024) ]
-; CHECK-NEXT: br label %[[LOOP:.*]]
-; CHECK: [[LOOP]]:
-; CHECK-NEXT: [[INDEX1:%.*]] = phi i64 [ [[INDEX_NEXT:%.*]], %[[LOOP_INC:.*]] ], [ 0, %[[ENTRY]] ]
+; CHECK-NEXT: br label %[[VECTOR_PH:.*]]
+; CHECK: [[VECTOR_PH]]:
+; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
+; CHECK: [[VECTOR_BODY]]:
+; CHECK-NEXT: [[INDEX1:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT3:%.*]], %[[VECTOR_BODY]] ]
; CHECK-NEXT: [[ARRAYIDX2:%.*]] = getelementptr inbounds i8, ptr [[P1]], i64 [[INDEX1]]
-; CHECK-NEXT: [[LD1:%.*]] = load i8, ptr [[ARRAYIDX2]], align 1
+; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <4 x i8>, ptr [[ARRAYIDX2]], align 1
; CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds i8, ptr [[P2]], i64 [[INDEX1]]
-; CHECK-NEXT: [[LD2:%.*]] = load i8, ptr [[TMP1]], align 1
-; CHECK-NEXT: [[CMP3:%.*]] = icmp eq i8 [[LD1]], [[LD2]]
-; CHECK-NEXT: br i1 [[CMP3]], label %[[LOOP_INC]], label %[[LOOP_END:.*]]
-; CHECK: [[LOOP_INC]]:
-; CHECK-NEXT: [[INDEX_NEXT]] = add i64 [[INDEX1]], 1
-; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[INDEX_NEXT]], 1024
-; CHECK-NEXT: br i1 [[EXITCOND]], label %[[LOOP]], label %[[LOOP_END]]
+; CHECK-NEXT: [[WIDE_LOAD2:%.*]] = load <4 x i8>, ptr [[TMP1]], align 1
+; CHECK-NEXT: [[TMP2:%.*]] = icmp ne <4 x i8> [[WIDE_LOAD]], [[WIDE_LOAD2]]
+; CHECK-NEXT: [[INDEX_NEXT3]] = add nuw i64 [[INDEX1]], 4
+; CHECK-NEXT: [[TMP3:%.*]] = freeze <4 x i1> [[TMP2]]
+; CHECK-NEXT: [[TMP4:%.*]] = call i1 @llvm.vector.reduce.or.v4i1(<4 x i1> [[TMP3]])
+; CHECK-NEXT: [[TMP5:%.*]] = icmp eq i64 [[INDEX_NEXT3]], 1024
+; CHECK-NEXT: [[TMP6:%.*]] = or i1 [[TMP4]], [[TMP5]]
+; CHECK-NEXT: br i1 [[TMP6]], label %[[MIDDLE_SPLIT:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP7:![0-9]+]]
+; CHECK: [[MIDDLE_SPLIT]]:
+; CHECK-NEXT: br i1 [[TMP4]], label %[[VECTOR_EARLY_EXIT:.*]], label %[[MIDDLE_BLOCK:.*]]
+; CHECK: [[MIDDLE_BLOCK]]:
+; CHECK-NEXT: br label %[[LOOP_END:.*]]
+; CHECK: [[VECTOR_EARLY_EXIT]]:
+; CHECK-NEXT: [[TMP7:%.*]] = call i64 @llvm.experimental.cttz.elts.i64.v4i1(<4 x i1> [[TMP2]], i1 true)
+; CHECK-NEXT: [[TMP8:%.*]] = add i64 [[INDEX1]], [[TMP7]]
+; CHECK-NEXT: br label %[[LOOP_END]]
; CHECK: [[LOOP_END]]:
-; CHECK-NEXT: [[RETVAL:%.*]] = phi i64 [ [[INDEX1]], %[[LOOP]] ], [ -1, %[[LOOP_INC]] ]
+; CHECK-NEXT: [[RETVAL:%.*]] = phi i64 [ -1, %[[MIDDLE_BLOCK]] ], [ [[TMP8]], %[[VECTOR_EARLY_EXIT]] ]
; CHECK-NEXT: ret i64 [[RETVAL]]
;
entry:
diff --git a/llvm/test/Transforms/LowerTypeTests/simple.ll b/llvm/test/Transforms/LowerTypeTests/simple.ll
index 6fb8f6f..173a6ae 100644
--- a/llvm/test/Transforms/LowerTypeTests/simple.ll
+++ b/llvm/test/Transforms/LowerTypeTests/simple.ll
@@ -56,7 +56,7 @@ define i1 @foo(ptr %p) {
; CHECK: [[R8:%[^ ]*]] = getelementptr i8, ptr @bits_use.{{[0-9]*}}, i32 [[R5]]
; CHECK: [[R9:%[^ ]*]] = load i8, ptr [[R8]]
- ; CHECK: [[R10:%[^ ]*]] = and i8 [[R9]], 1
+ ; CHECK: [[R10:%[^ ]*]] = and i8 [[R9]], ptrtoint (ptr inttoptr (i8 1 to ptr) to i8)
; CHECK: [[R11:%[^ ]*]] = icmp ne i8 [[R10]], 0
; CHECK: [[R16:%[^ ]*]] = phi i1 [ false, {{%[^ ]*}} ], [ [[R11]], {{%[^ ]*}} ]
@@ -91,7 +91,7 @@ define i1 @baz(ptr %p) {
; CHECK: [[T8:%[^ ]*]] = getelementptr i8, ptr @bits_use{{(\.[0-9]*)?}}, i32 [[T5]]
; CHECK: [[T9:%[^ ]*]] = load i8, ptr [[T8]]
- ; CHECK: [[T10:%[^ ]*]] = and i8 [[T9]], 2
+ ; CHECK: [[T10:%[^ ]*]] = and i8 [[T9]], ptrtoint (ptr inttoptr (i8 2 to ptr) to i8)
; CHECK: [[T11:%[^ ]*]] = icmp ne i8 [[T10]], 0
; CHECK: [[T16:%[^ ]*]] = phi i1 [ false, {{%[^ ]*}} ], [ [[T11]], {{%[^ ]*}} ]
diff --git a/llvm/test/Transforms/PhaseOrdering/AArch64/extra-unroll-simplifications.ll b/llvm/test/Transforms/PhaseOrdering/AArch64/extra-unroll-simplifications.ll
index d8fc42b..57dacd4 100644
--- a/llvm/test/Transforms/PhaseOrdering/AArch64/extra-unroll-simplifications.ll
+++ b/llvm/test/Transforms/PhaseOrdering/AArch64/extra-unroll-simplifications.ll
@@ -14,7 +14,7 @@ define void @partial_unroll_forced(i32 %N, ptr %src, ptr noalias %dst) {
; CHECK-NEXT: [[WIDE_TRIP_COUNT:%.*]] = zext nneg i32 [[N]] to i64
; CHECK-NEXT: [[XTRAITER:%.*]] = and i64 [[WIDE_TRIP_COUNT]], 1
; CHECK-NEXT: [[TMP0:%.*]] = icmp eq i32 [[N]], 1
-; CHECK-NEXT: br i1 [[TMP0]], label [[EXIT_LOOPEXIT_UNR_LCSSA:%.*]], label [[LOOP_LATCH_PREHEADER_NEW:%.*]]
+; CHECK-NEXT: br i1 [[TMP0]], label [[LOOP_LATCH_EPIL_PREHEADER:%.*]], label [[LOOP_LATCH_PREHEADER_NEW:%.*]]
; CHECK: loop.latch.preheader.new:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = and i64 [[WIDE_TRIP_COUNT]], 2147483646
; CHECK-NEXT: br label [[LOOP_LATCH:%.*]]
@@ -35,12 +35,14 @@ define void @partial_unroll_forced(i32 %N, ptr %src, ptr noalias %dst) {
; CHECK-NEXT: [[INDVARS_IV_NEXT_1]] = add nuw nsw i64 [[INDVARS_IV]], 2
; CHECK-NEXT: [[NITER_NEXT_1]] = add i64 [[NITER]], 2
; CHECK-NEXT: [[NITER_NCMP_1:%.*]] = icmp eq i64 [[NITER_NEXT_1]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label [[EXIT_LOOPEXIT_UNR_LCSSA]], label [[LOOP_LATCH]], !llvm.loop [[LOOP0:![0-9]+]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label [[EXIT_LOOPEXIT_UNR_LCSSA:%.*]], label [[LOOP_LATCH]], !llvm.loop [[LOOP0:![0-9]+]]
; CHECK: exit.loopexit.unr-lcssa:
-; CHECK-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[LOOP_LATCH_PREHEADER]] ], [ [[INDVARS_IV_NEXT_1]], [[LOOP_LATCH]] ]
; CHECK-NEXT: [[LCMP_MOD_NOT:%.*]] = icmp eq i64 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD_NOT]], label [[EXIT]], label [[LOOP_LATCH_EPIL:%.*]]
-; CHECK: loop.latch.epil:
+; CHECK-NEXT: br i1 [[LCMP_MOD_NOT]], label [[EXIT]], label [[LOOP_LATCH_EPIL_PREHEADER]]
+; CHECK: loop.latch.epil.preheader:
+; CHECK-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[LOOP_LATCH_PREHEADER]] ], [ [[INDVARS_IV_NEXT_1]], [[EXIT_LOOPEXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD4:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; CHECK-NEXT: tail call void @llvm.assume(i1 [[LCMP_MOD4]])
; CHECK-NEXT: [[SRC_IDX_EPIL:%.*]] = getelementptr <8 x half>, ptr [[SRC]], i64 [[INDVARS_IV_UNR]]
; CHECK-NEXT: [[L_EPIL:%.*]] = load <8 x half>, ptr [[SRC_IDX_EPIL]], align 16
; CHECK-NEXT: [[DST_IDX_EPIL:%.*]] = getelementptr <8 x half>, ptr [[DST]], i64 [[INDVARS_IV_UNR]]
@@ -84,7 +86,7 @@ define void @cse_matching_load_from_previous_unrolled_iteration(i32 %N, ptr %src
; CHECK-NEXT: [[WIDE_TRIP_COUNT:%.*]] = zext nneg i32 [[N]] to i64
; CHECK-NEXT: [[XTRAITER:%.*]] = and i64 [[WIDE_TRIP_COUNT]], 1
; CHECK-NEXT: [[TMP0:%.*]] = icmp eq i32 [[N]], 1
-; CHECK-NEXT: br i1 [[TMP0]], label [[EXIT_LOOPEXIT_UNR_LCSSA:%.*]], label [[LOOP_LATCH_PREHEADER_NEW:%.*]]
+; CHECK-NEXT: br i1 [[TMP0]], label [[LOOP_LATCH_EPIL_PREHEADER:%.*]], label [[LOOP_LATCH_PREHEADER_NEW:%.*]]
; CHECK: loop.latch.preheader.new:
; CHECK-NEXT: [[UNROLL_ITER:%.*]] = and i64 [[WIDE_TRIP_COUNT]], 2147483646
; CHECK-NEXT: br label [[LOOP_LATCH:%.*]]
@@ -107,12 +109,14 @@ define void @cse_matching_load_from_previous_unrolled_iteration(i32 %N, ptr %src
; CHECK-NEXT: [[INDVARS_IV_NEXT_1]] = add nuw nsw i64 [[INDVARS_IV]], 2
; CHECK-NEXT: [[NITER_NEXT_1]] = add i64 [[NITER]], 2
; CHECK-NEXT: [[NITER_NCMP_1:%.*]] = icmp eq i64 [[NITER_NEXT_1]], [[UNROLL_ITER]]
-; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label [[EXIT_LOOPEXIT_UNR_LCSSA]], label [[LOOP_LATCH]], !llvm.loop [[LOOP3:![0-9]+]]
+; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label [[EXIT_LOOPEXIT_UNR_LCSSA:%.*]], label [[LOOP_LATCH]], !llvm.loop [[LOOP3:![0-9]+]]
; CHECK: exit.loopexit.unr-lcssa:
-; CHECK-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[LOOP_LATCH_PREHEADER]] ], [ [[INDVARS_IV_NEXT_1]], [[LOOP_LATCH]] ]
; CHECK-NEXT: [[LCMP_MOD_NOT:%.*]] = icmp eq i64 [[XTRAITER]], 0
-; CHECK-NEXT: br i1 [[LCMP_MOD_NOT]], label [[EXIT]], label [[LOOP_LATCH_EPIL:%.*]]
-; CHECK: loop.latch.epil:
+; CHECK-NEXT: br i1 [[LCMP_MOD_NOT]], label [[EXIT]], label [[LOOP_LATCH_EPIL_PREHEADER]]
+; CHECK: loop.latch.epil.preheader:
+; CHECK-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[LOOP_LATCH_PREHEADER]] ], [ [[INDVARS_IV_NEXT_1]], [[EXIT_LOOPEXIT_UNR_LCSSA]] ]
+; CHECK-NEXT: [[LCMP_MOD4:%.*]] = icmp ne i64 [[XTRAITER]], 0
+; CHECK-NEXT: tail call void @llvm.assume(i1 [[LCMP_MOD4]])
; CHECK-NEXT: [[GEP_SRC_12_EPIL:%.*]] = getelementptr <2 x i32>, ptr [[SRC_12]], i64 [[INDVARS_IV_UNR]]
; CHECK-NEXT: [[L_12_EPIL:%.*]] = load <2 x i32>, ptr [[GEP_SRC_12_EPIL]], align 8
; CHECK-NEXT: [[GEP_SRC_4_EPIL:%.*]] = getelementptr <2 x i32>, ptr [[SRC_4]], i64 [[INDVARS_IV_UNR]]
diff --git a/llvm/test/Transforms/SCCP/binaryops-constexprs.ll b/llvm/test/Transforms/SCCP/binaryops-constexprs.ll
index 31d816c..bf4a366 100644
--- a/llvm/test/Transforms/SCCP/binaryops-constexprs.ll
+++ b/llvm/test/Transforms/SCCP/binaryops-constexprs.ll
@@ -8,10 +8,12 @@ define void @and_constexpr(i32 %a) {
; CHECK-LABEL: @and_constexpr(
; CHECK-NEXT: entry:
; CHECK-NEXT: call void @use.i32(i32 0)
-; CHECK-NEXT: [[AND_2:%.*]] = and i32 20, [[A:%.*]]
+; CHECK-NEXT: [[AND_2:%.*]] = and i32 ptrtoint (ptr inttoptr (i32 20 to ptr) to i32), [[A:%.*]]
; CHECK-NEXT: call void @use.i32(i32 [[AND_2]])
-; CHECK-NEXT: call void @use.i1(i1 true)
-; CHECK-NEXT: call void @use.i1(i1 false)
+; CHECK-NEXT: [[TRUE_1:%.*]] = icmp ne i32 [[AND_2]], 100
+; CHECK-NEXT: call void @use.i1(i1 [[TRUE_1]])
+; CHECK-NEXT: [[FALSE_1:%.*]] = icmp eq i32 [[AND_2]], 100
+; CHECK-NEXT: call void @use.i1(i1 [[FALSE_1]])
; CHECK-NEXT: [[COND_1:%.*]] = icmp eq i32 [[AND_2]], 10
; CHECK-NEXT: call void @use.i1(i1 [[COND_1]])
; CHECK-NEXT: call void @use.i32(i32 4)
@@ -38,7 +40,7 @@ define void @add_constexpr(i32 %a) {
; CHECK-NEXT: entry:
; CHECK-NEXT: [[ADD_1:%.*]] = add nuw nsw i32 0, [[A:%.*]]
; CHECK-NEXT: call void @use.i32(i32 [[ADD_1]])
-; CHECK-NEXT: [[ADD_2:%.*]] = add i32 20, [[A]]
+; CHECK-NEXT: [[ADD_2:%.*]] = add i32 ptrtoint (ptr inttoptr (i32 20 to ptr) to i32), [[A]]
; CHECK-NEXT: call void @use.i32(i32 [[ADD_2]])
; CHECK-NEXT: [[COND_1:%.*]] = icmp ne i32 [[ADD_2]], 100
; CHECK-NEXT: call void @use.i1(i1 [[COND_1]])
@@ -46,7 +48,7 @@ define void @add_constexpr(i32 %a) {
; CHECK-NEXT: call void @use.i1(i1 [[COND_2]])
; CHECK-NEXT: [[COND_3:%.*]] = icmp eq i32 [[ADD_2]], 10
; CHECK-NEXT: call void @use.i1(i1 [[COND_3]])
-; CHECK-NEXT: call void @use.i32(i32 120)
+; CHECK-NEXT: call void @use.i32(i32 add (i32 ptrtoint (ptr inttoptr (i32 20 to ptr) to i32), i32 ptrtoint (ptr inttoptr (i32 100 to ptr) to i32)))
; CHECK-NEXT: ret void
;
entry:
@@ -69,7 +71,7 @@ define void @mul_constexpr(i32 %a) {
; CHECK-LABEL: @mul_constexpr(
; CHECK-NEXT: entry:
; CHECK-NEXT: call void @use.i32(i32 0)
-; CHECK-NEXT: [[MUL_2:%.*]] = mul i32 20, [[A:%.*]]
+; CHECK-NEXT: [[MUL_2:%.*]] = mul i32 ptrtoint (ptr inttoptr (i32 20 to ptr) to i32), [[A:%.*]]
; CHECK-NEXT: call void @use.i32(i32 [[MUL_2]])
; CHECK-NEXT: [[COND_1:%.*]] = icmp ne i32 [[MUL_2]], 100
; CHECK-NEXT: call void @use.i1(i1 [[COND_1]])
@@ -77,7 +79,8 @@ define void @mul_constexpr(i32 %a) {
; CHECK-NEXT: call void @use.i1(i1 [[COND_2]])
; CHECK-NEXT: [[COND_3:%.*]] = icmp eq i32 [[MUL_2]], 10
; CHECK-NEXT: call void @use.i1(i1 [[COND_3]])
-; CHECK-NEXT: call void @use.i32(i32 2000)
+; CHECK-NEXT: [[MUL_3:%.*]] = mul i32 ptrtoint (ptr inttoptr (i32 20 to ptr) to i32), ptrtoint (ptr inttoptr (i32 100 to ptr) to i32)
+; CHECK-NEXT: call void @use.i32(i32 [[MUL_3]])
; CHECK-NEXT: ret void
;
entry:
@@ -100,13 +103,16 @@ define void @udiv_constexpr(i32 %a) {
; CHECK-LABEL: @udiv_constexpr(
; CHECK-NEXT: entry:
; CHECK-NEXT: call void @use.i32(i32 0)
-; CHECK-NEXT: [[UDIV_2:%.*]] = udiv i32 20, [[A:%.*]]
+; CHECK-NEXT: [[UDIV_2:%.*]] = udiv i32 ptrtoint (ptr inttoptr (i32 20 to ptr) to i32), [[A:%.*]]
; CHECK-NEXT: call void @use.i32(i32 [[UDIV_2]])
-; CHECK-NEXT: call void @use.i1(i1 true)
-; CHECK-NEXT: call void @use.i1(i1 false)
+; CHECK-NEXT: [[TRUE_1:%.*]] = icmp ne i32 [[UDIV_2]], 100
+; CHECK-NEXT: call void @use.i1(i1 [[TRUE_1]])
+; CHECK-NEXT: [[FALSE_1:%.*]] = icmp eq i32 [[UDIV_2]], 50
+; CHECK-NEXT: call void @use.i1(i1 [[FALSE_1]])
; CHECK-NEXT: [[COND_1:%.*]] = icmp eq i32 [[UDIV_2]], 10
; CHECK-NEXT: call void @use.i1(i1 [[COND_1]])
-; CHECK-NEXT: call void @use.i32(i32 0)
+; CHECK-NEXT: [[UDIV_3:%.*]] = udiv i32 ptrtoint (ptr inttoptr (i32 20 to ptr) to i32), ptrtoint (ptr inttoptr (i32 100 to ptr) to i32)
+; CHECK-NEXT: call void @use.i32(i32 [[UDIV_3]])
; CHECK-NEXT: ret void
;
entry:
diff --git a/llvm/test/Transforms/SimplifyCFG/merge-calls-alloc-token.ll b/llvm/test/Transforms/SimplifyCFG/merge-calls-alloc-token.ll
new file mode 100644
index 0000000..9bbe3eb
--- /dev/null
+++ b/llvm/test/Transforms/SimplifyCFG/merge-calls-alloc-token.ll
@@ -0,0 +1,104 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
+; RUN: opt < %s -passes=simplifycfg -S | FileCheck %s
+
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
+
+declare ptr @_Znwm(i64)
+
+define ptr @test_merge_alloc_token_same(i1 %b) {
+; CHECK-LABEL: define ptr @test_merge_alloc_token_same(
+; CHECK-SAME: i1 [[B:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[CALL:%.*]] = call ptr @_Znwm(i64 4), !alloc_token [[META0:![0-9]+]]
+; CHECK-NEXT: ret ptr [[CALL]]
+;
+entry:
+ br i1 %b, label %if.then, label %if.else
+
+if.then:
+ %call = call ptr @_Znwm(i64 4), !alloc_token !0
+ br label %if.end
+
+if.else:
+ %call1 = call ptr @_Znwm(i64 4), !alloc_token !0
+ br label %if.end
+
+if.end:
+ %x.0 = phi ptr [ %call, %if.then ], [ %call1, %if.else ]
+ ret ptr %x.0
+}
+
+define ptr @test_merge_alloc_token_different(i1 %b) {
+; CHECK-LABEL: define ptr @test_merge_alloc_token_different(
+; CHECK-SAME: i1 [[B:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[CALL:%.*]] = call ptr @_Znwm(i64 4)
+; CHECK-NEXT: ret ptr [[CALL]]
+;
+entry:
+ br i1 %b, label %if.then, label %if.else
+
+if.then:
+ %call = call ptr @_Znwm(i64 4), !alloc_token !0
+ br label %if.end
+
+if.else:
+ %call1 = call ptr @_Znwm(i64 4), !alloc_token !1
+ br label %if.end
+
+if.end:
+ %x.0 = phi ptr [ %call, %if.then ], [ %call1, %if.else ]
+ ret ptr %x.0
+}
+
+define ptr @test_merge_alloc_token_some1(i1 %b) {
+; CHECK-LABEL: define ptr @test_merge_alloc_token_some1(
+; CHECK-SAME: i1 [[B:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[CALL:%.*]] = call ptr @_Znwm(i64 4)
+; CHECK-NEXT: ret ptr [[CALL]]
+;
+entry:
+ br i1 %b, label %if.then, label %if.else
+
+if.then:
+ %call = call ptr @_Znwm(i64 4), !alloc_token !0
+ br label %if.end
+
+if.else:
+ %call1 = call ptr @_Znwm(i64 4)
+ br label %if.end
+
+if.end:
+ %x.0 = phi ptr [ %call, %if.then ], [ %call1, %if.else ]
+ ret ptr %x.0
+}
+
+define ptr @test_merge_alloc_token_some2(i1 %b) {
+; CHECK-LABEL: define ptr @test_merge_alloc_token_some2(
+; CHECK-SAME: i1 [[B:%.*]]) {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[CALL:%.*]] = call ptr @_Znwm(i64 4)
+; CHECK-NEXT: ret ptr [[CALL]]
+;
+entry:
+ br i1 %b, label %if.then, label %if.else
+
+if.then:
+ %call = call ptr @_Znwm(i64 4)
+ br label %if.end
+
+if.else:
+ %call1 = call ptr @_Znwm(i64 4), !alloc_token !0
+ br label %if.end
+
+if.end:
+ %x.0 = phi ptr [ %call, %if.then ], [ %call1, %if.else ]
+ ret ptr %x.0
+}
+
+!0 = !{!"int"}
+!1 = !{!"char[4]"}
+;.
+; CHECK: [[META0]] = !{!"int"}
+;.
diff --git a/llvm/test/tools/llvm-ar/extract.test b/llvm/test/tools/llvm-ar/extract.test
index bf46cc0..f8be7fd 100644
--- a/llvm/test/tools/llvm-ar/extract.test
+++ b/llvm/test/tools/llvm-ar/extract.test
@@ -1,5 +1,4 @@
## Test extract operation.
-# XFAIL: target={{.*}}-darwin{{.*}}
# RUN: rm -rf %t && mkdir -p %t/extracted/
@@ -9,7 +8,7 @@
# RUN: echo filea > %t/a.txt
# RUN: echo fileb > %t/b.txt
-# RUN: llvm-ar rc %t/archive.a %t/a.txt %t/b.txt
+# RUN: llvm-ar rc --format=gnu %t/archive.a %t/a.txt %t/b.txt
## Single member:
# RUN: cd %t/extracted && llvm-ar xv %t/archive.a a.txt | FileCheck %s --check-prefix=A
diff --git a/llvm/test/tools/llvm-ar/print.test b/llvm/test/tools/llvm-ar/print.test
index 997c05f..c104fb4 100644
--- a/llvm/test/tools/llvm-ar/print.test
+++ b/llvm/test/tools/llvm-ar/print.test
@@ -1,12 +1,11 @@
## Test Print output
-# XFAIL: target={{.*}}-darwin{{.*}}
# RUN: rm -rf %t && mkdir -p %t
# RUN: echo file1 > %t/1.txt
# RUN: echo file2 > %t/2.txt
# RUN: echo file3 > %t/3.txt
-# RUN: llvm-ar -rc %t/archive.a %t/1.txt %t/2.txt %t/3.txt
+# RUN: llvm-ar -rc --format=gnu %t/archive.a %t/1.txt %t/2.txt %t/3.txt
## Print empty archive:
# RUN: llvm-ar --format=gnu cr %t/empty.a
diff --git a/llvm/test/tools/llvm-exegesis/AArch64/no-aliasing-ld-str.s b/llvm/test/tools/llvm-exegesis/AArch64/no-aliasing-ld-str.s
index c8a5746..da83c54 100644
--- a/llvm/test/tools/llvm-exegesis/AArch64/no-aliasing-ld-str.s
+++ b/llvm/test/tools/llvm-exegesis/AArch64/no-aliasing-ld-str.s
@@ -2,8 +2,8 @@ REQUIRES: aarch64-registered-target
// Flakey on SVE buildbots, disabled pending invesgitation.
UNSUPPORTED: target={{.*}}
-RUN: llvm-exegesis -mtriple=aarch64 -mcpu=neoverse-v2 -mode=latency --dump-object-to-disk=%d --opcode-name=FMOVWSr --benchmark-phase=assemble-measured-code 2>&1
-RUN: llvm-objdump -d %d > %t.s
+RUN: llvm-exegesis -mtriple=aarch64 -mcpu=neoverse-v2 -mode=latency --dump-object-to-disk=%t.obj --opcode-name=FMOVWSr --benchmark-phase=assemble-measured-code 2>&1
+RUN: llvm-objdump -d %t.obj > %t.s
RUN: FileCheck %s < %t.s
CHECK-NOT: ld{{[1-4]}}
diff --git a/llvm/test/tools/llvm-mca/RISCV/SiFive7/vector-fp.s b/llvm/test/tools/llvm-mca/RISCV/SiFive7/vector-fp.s
new file mode 100644
index 0000000..b20206f
--- /dev/null
+++ b/llvm/test/tools/llvm-mca/RISCV/SiFive7/vector-fp.s
@@ -0,0 +1,4848 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=riscv64 -mcpu=sifive-x280 -instruction-tables=full -iterations=1 < %s | FileCheck %s
+
+# The legal (SEW, LMUL) pairs for FP on sifive-x390 are:
+# (e16, mf4) (e16, mf2) (e16, m1) (e16, m2) (e16, m4) (e16, m8)
+# (e32, mf2) (e32, m1) (e32, m2) (e32, m4) (e32, m8)
+# (e64, m1) (e64, m2) (e64, m4) (e64, m8)
+# Widening instructions do not have e64
+
+# Vector Single-Width FP
+vsetvli zero, zero, e16, mf4, tu, mu
+vfadd.vv v8, v16, v24
+vfadd.vf v8, v16, f8
+vfsub.vv v8, v16, v24
+vfsub.vf v8, v16, f8
+vfrsub.vf v8, v16, f8
+vfmul.vv v8, v16, v24
+vfmul.vf v8, v16, f8
+vfdiv.vv v8, v16, v24
+vfdiv.vf v8, v16, f8
+vfrdiv.vf v8, v16, f8
+vfmacc.vv v8, v16, v24
+vfmacc.vf v8, f8, v24
+vfnmacc.vv v8, v16, v24
+vfnmacc.vf v8, f8, v24
+vfmsac.vv v8, v16, v24
+vfmsac.vf v8, f8, v24
+vfnmsac.vv v8, v16, v24
+vfnmsac.vf v8, f8, v24
+vfmadd.vv v8, v16, v24
+vfmadd.vf v8, f8, v24
+vfnmadd.vv v8, v16, v24
+vfnmadd.vf v8, f8, v24
+vfmsub.vv v8, v16, v24
+vfmsub.vf v8, f8, v24
+vfnmsub.vv v8, v16, v24
+vfnmsub.vf v8, f8, v24
+vfsqrt.v v8, v24
+vfrsqrt7.v v8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e16, mf2, tu, mu
+vfadd.vv v8, v16, v24
+vfadd.vf v8, v16, f8
+vfsub.vv v8, v16, v24
+vfsub.vf v8, v16, f8
+vfrsub.vf v8, v16, f8
+vfmul.vv v8, v16, v24
+vfmul.vf v8, v16, f8
+vfdiv.vv v8, v16, v24
+vfdiv.vf v8, v16, f8
+vfrdiv.vf v8, v16, f8
+vfmacc.vv v8, v16, v24
+vfmacc.vf v8, f8, v24
+vfnmacc.vv v8, v16, v24
+vfnmacc.vf v8, f8, v24
+vfmsac.vv v8, v16, v24
+vfmsac.vf v8, f8, v24
+vfnmsac.vv v8, v16, v24
+vfnmsac.vf v8, f8, v24
+vfmadd.vv v8, v16, v24
+vfmadd.vf v8, f8, v24
+vfnmadd.vv v8, v16, v24
+vfnmadd.vf v8, f8, v24
+vfmsub.vv v8, v16, v24
+vfmsub.vf v8, f8, v24
+vfnmsub.vv v8, v16, v24
+vfnmsub.vf v8, f8, v24
+vfsqrt.v v8, v24
+vfrsqrt7.v v8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e16, m1, tu, mu
+vfadd.vv v8, v16, v24
+vfadd.vf v8, v16, f8
+vfsub.vv v8, v16, v24
+vfsub.vf v8, v16, f8
+vfrsub.vf v8, v16, f8
+vfmul.vv v8, v16, v24
+vfmul.vf v8, v16, f8
+vfdiv.vv v8, v16, v24
+vfdiv.vf v8, v16, f8
+vfrdiv.vf v8, v16, f8
+vfmacc.vv v8, v16, v24
+vfmacc.vf v8, f8, v24
+vfnmacc.vv v8, v16, v24
+vfnmacc.vf v8, f8, v24
+vfmsac.vv v8, v16, v24
+vfmsac.vf v8, f8, v24
+vfnmsac.vv v8, v16, v24
+vfnmsac.vf v8, f8, v24
+vfmadd.vv v8, v16, v24
+vfmadd.vf v8, f8, v24
+vfnmadd.vv v8, v16, v24
+vfnmadd.vf v8, f8, v24
+vfmsub.vv v8, v16, v24
+vfmsub.vf v8, f8, v24
+vfnmsub.vv v8, v16, v24
+vfnmsub.vf v8, f8, v24
+vfsqrt.v v8, v24
+vfrsqrt7.v v8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e16, m2, tu, mu
+vfadd.vv v8, v16, v24
+vfadd.vf v8, v16, f8
+vfsub.vv v8, v16, v24
+vfsub.vf v8, v16, f8
+vfrsub.vf v8, v16, f8
+vfmul.vv v8, v16, v24
+vfmul.vf v8, v16, f8
+vfdiv.vv v8, v16, v24
+vfdiv.vf v8, v16, f8
+vfrdiv.vf v8, v16, f8
+vfmacc.vv v8, v16, v24
+vfmacc.vf v8, f8, v24
+vfnmacc.vv v8, v16, v24
+vfnmacc.vf v8, f8, v24
+vfmsac.vv v8, v16, v24
+vfmsac.vf v8, f8, v24
+vfnmsac.vv v8, v16, v24
+vfnmsac.vf v8, f8, v24
+vfmadd.vv v8, v16, v24
+vfmadd.vf v8, f8, v24
+vfnmadd.vv v8, v16, v24
+vfnmadd.vf v8, f8, v24
+vfmsub.vv v8, v16, v24
+vfmsub.vf v8, f8, v24
+vfnmsub.vv v8, v16, v24
+vfnmsub.vf v8, f8, v24
+vfsqrt.v v8, v24
+vfrsqrt7.v v8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e16, m4, tu, mu
+vfadd.vv v8, v16, v24
+vfadd.vf v8, v16, f8
+vfsub.vv v8, v16, v24
+vfsub.vf v8, v16, f8
+vfrsub.vf v8, v16, f8
+vfmul.vv v8, v16, v24
+vfmul.vf v8, v16, f8
+vfdiv.vv v8, v16, v24
+vfdiv.vf v8, v16, f8
+vfrdiv.vf v8, v16, f8
+vfmacc.vv v8, v16, v24
+vfmacc.vf v8, f8, v24
+vfnmacc.vv v8, v16, v24
+vfnmacc.vf v8, f8, v24
+vfmsac.vv v8, v16, v24
+vfmsac.vf v8, f8, v24
+vfnmsac.vv v8, v16, v24
+vfnmsac.vf v8, f8, v24
+vfmadd.vv v8, v16, v24
+vfmadd.vf v8, f8, v24
+vfnmadd.vv v8, v16, v24
+vfnmadd.vf v8, f8, v24
+vfmsub.vv v8, v16, v24
+vfmsub.vf v8, f8, v24
+vfnmsub.vv v8, v16, v24
+vfnmsub.vf v8, f8, v24
+vfsqrt.v v8, v24
+vfrsqrt7.v v8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e16, m8, tu, mu
+vfadd.vv v8, v16, v24
+vfadd.vf v8, v16, f8
+vfsub.vv v8, v16, v24
+vfsub.vf v8, v16, f8
+vfrsub.vf v8, v16, f8
+vfmul.vv v8, v16, v24
+vfmul.vf v8, v16, f8
+vfdiv.vv v8, v16, v24
+vfdiv.vf v8, v16, f8
+vfrdiv.vf v8, v16, f8
+vfmacc.vv v8, v16, v24
+vfmacc.vf v8, f8, v24
+vfnmacc.vv v8, v16, v24
+vfnmacc.vf v8, f8, v24
+vfmsac.vv v8, v16, v24
+vfmsac.vf v8, f8, v24
+vfnmsac.vv v8, v16, v24
+vfnmsac.vf v8, f8, v24
+vfmadd.vv v8, v16, v24
+vfmadd.vf v8, f8, v24
+vfnmadd.vv v8, v16, v24
+vfnmadd.vf v8, f8, v24
+vfmsub.vv v8, v16, v24
+vfmsub.vf v8, f8, v24
+vfnmsub.vv v8, v16, v24
+vfnmsub.vf v8, f8, v24
+vfsqrt.v v8, v24
+vfrsqrt7.v v8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e32, mf2, tu, mu
+vfadd.vv v8, v16, v24
+vfadd.vf v8, v16, f8
+vfsub.vv v8, v16, v24
+vfsub.vf v8, v16, f8
+vfrsub.vf v8, v16, f8
+vfmul.vv v8, v16, v24
+vfmul.vf v8, v16, f8
+vfdiv.vv v8, v16, v24
+vfdiv.vf v8, v16, f8
+vfrdiv.vf v8, v16, f8
+vfmacc.vv v8, v16, v24
+vfmacc.vf v8, f8, v24
+vfnmacc.vv v8, v16, v24
+vfnmacc.vf v8, f8, v24
+vfmsac.vv v8, v16, v24
+vfmsac.vf v8, f8, v24
+vfnmsac.vv v8, v16, v24
+vfnmsac.vf v8, f8, v24
+vfmadd.vv v8, v16, v24
+vfmadd.vf v8, f8, v24
+vfnmadd.vv v8, v16, v24
+vfnmadd.vf v8, f8, v24
+vfmsub.vv v8, v16, v24
+vfmsub.vf v8, f8, v24
+vfnmsub.vv v8, v16, v24
+vfnmsub.vf v8, f8, v24
+vfsqrt.v v8, v24
+vfrsqrt7.v v8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e32, m1, tu, mu
+vfadd.vv v8, v16, v24
+vfadd.vf v8, v16, f8
+vfsub.vv v8, v16, v24
+vfsub.vf v8, v16, f8
+vfrsub.vf v8, v16, f8
+vfmul.vv v8, v16, v24
+vfmul.vf v8, v16, f8
+vfdiv.vv v8, v16, v24
+vfdiv.vf v8, v16, f8
+vfrdiv.vf v8, v16, f8
+vfmacc.vv v8, v16, v24
+vfmacc.vf v8, f8, v24
+vfnmacc.vv v8, v16, v24
+vfnmacc.vf v8, f8, v24
+vfmsac.vv v8, v16, v24
+vfmsac.vf v8, f8, v24
+vfnmsac.vv v8, v16, v24
+vfnmsac.vf v8, f8, v24
+vfmadd.vv v8, v16, v24
+vfmadd.vf v8, f8, v24
+vfnmadd.vv v8, v16, v24
+vfnmadd.vf v8, f8, v24
+vfmsub.vv v8, v16, v24
+vfmsub.vf v8, f8, v24
+vfnmsub.vv v8, v16, v24
+vfnmsub.vf v8, f8, v24
+vfsqrt.v v8, v24
+vfrsqrt7.v v8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e32, m2, tu, mu
+vfadd.vv v8, v16, v24
+vfadd.vf v8, v16, f8
+vfsub.vv v8, v16, v24
+vfsub.vf v8, v16, f8
+vfrsub.vf v8, v16, f8
+vfmul.vv v8, v16, v24
+vfmul.vf v8, v16, f8
+vfdiv.vv v8, v16, v24
+vfdiv.vf v8, v16, f8
+vfrdiv.vf v8, v16, f8
+vfmacc.vv v8, v16, v24
+vfmacc.vf v8, f8, v24
+vfnmacc.vv v8, v16, v24
+vfnmacc.vf v8, f8, v24
+vfmsac.vv v8, v16, v24
+vfmsac.vf v8, f8, v24
+vfnmsac.vv v8, v16, v24
+vfnmsac.vf v8, f8, v24
+vfmadd.vv v8, v16, v24
+vfmadd.vf v8, f8, v24
+vfnmadd.vv v8, v16, v24
+vfnmadd.vf v8, f8, v24
+vfmsub.vv v8, v16, v24
+vfmsub.vf v8, f8, v24
+vfnmsub.vv v8, v16, v24
+vfnmsub.vf v8, f8, v24
+vfsqrt.v v8, v24
+vfrsqrt7.v v8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e32, m4, tu, mu
+vfadd.vv v8, v16, v24
+vfadd.vf v8, v16, f8
+vfsub.vv v8, v16, v24
+vfsub.vf v8, v16, f8
+vfrsub.vf v8, v16, f8
+vfmul.vv v8, v16, v24
+vfmul.vf v8, v16, f8
+vfdiv.vv v8, v16, v24
+vfdiv.vf v8, v16, f8
+vfrdiv.vf v8, v16, f8
+vfmacc.vv v8, v16, v24
+vfmacc.vf v8, f8, v24
+vfnmacc.vv v8, v16, v24
+vfnmacc.vf v8, f8, v24
+vfmsac.vv v8, v16, v24
+vfmsac.vf v8, f8, v24
+vfnmsac.vv v8, v16, v24
+vfnmsac.vf v8, f8, v24
+vfmadd.vv v8, v16, v24
+vfmadd.vf v8, f8, v24
+vfnmadd.vv v8, v16, v24
+vfnmadd.vf v8, f8, v24
+vfmsub.vv v8, v16, v24
+vfmsub.vf v8, f8, v24
+vfnmsub.vv v8, v16, v24
+vfnmsub.vf v8, f8, v24
+vfsqrt.v v8, v24
+vfrsqrt7.v v8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e32, m8, tu, mu
+vfadd.vv v8, v16, v24
+vfadd.vf v8, v16, f8
+vfsub.vv v8, v16, v24
+vfsub.vf v8, v16, f8
+vfrsub.vf v8, v16, f8
+vfmul.vv v8, v16, v24
+vfmul.vf v8, v16, f8
+vfdiv.vv v8, v16, v24
+vfdiv.vf v8, v16, f8
+vfrdiv.vf v8, v16, f8
+vfmacc.vv v8, v16, v24
+vfmacc.vf v8, f8, v24
+vfnmacc.vv v8, v16, v24
+vfnmacc.vf v8, f8, v24
+vfmsac.vv v8, v16, v24
+vfmsac.vf v8, f8, v24
+vfnmsac.vv v8, v16, v24
+vfnmsac.vf v8, f8, v24
+vfmadd.vv v8, v16, v24
+vfmadd.vf v8, f8, v24
+vfnmadd.vv v8, v16, v24
+vfnmadd.vf v8, f8, v24
+vfmsub.vv v8, v16, v24
+vfmsub.vf v8, f8, v24
+vfnmsub.vv v8, v16, v24
+vfnmsub.vf v8, f8, v24
+vfsqrt.v v8, v24
+vfrsqrt7.v v8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e64, m1, tu, mu
+vfadd.vv v8, v16, v24
+vfadd.vf v8, v16, f8
+vfsub.vv v8, v16, v24
+vfsub.vf v8, v16, f8
+vfrsub.vf v8, v16, f8
+vfmul.vv v8, v16, v24
+vfmul.vf v8, v16, f8
+vfdiv.vv v8, v16, v24
+vfdiv.vf v8, v16, f8
+vfrdiv.vf v8, v16, f8
+vfmacc.vv v8, v16, v24
+vfmacc.vf v8, f8, v24
+vfnmacc.vv v8, v16, v24
+vfnmacc.vf v8, f8, v24
+vfmsac.vv v8, v16, v24
+vfmsac.vf v8, f8, v24
+vfnmsac.vv v8, v16, v24
+vfnmsac.vf v8, f8, v24
+vfmadd.vv v8, v16, v24
+vfmadd.vf v8, f8, v24
+vfnmadd.vv v8, v16, v24
+vfnmadd.vf v8, f8, v24
+vfmsub.vv v8, v16, v24
+vfmsub.vf v8, f8, v24
+vfnmsub.vv v8, v16, v24
+vfnmsub.vf v8, f8, v24
+vfsqrt.v v8, v24
+vfrsqrt7.v v8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e64, m2, tu, mu
+vfadd.vv v8, v16, v24
+vfadd.vf v8, v16, f8
+vfsub.vv v8, v16, v24
+vfsub.vf v8, v16, f8
+vfrsub.vf v8, v16, f8
+vfmul.vv v8, v16, v24
+vfmul.vf v8, v16, f8
+vfdiv.vv v8, v16, v24
+vfdiv.vf v8, v16, f8
+vfrdiv.vf v8, v16, f8
+vfmacc.vv v8, v16, v24
+vfmacc.vf v8, f8, v24
+vfnmacc.vv v8, v16, v24
+vfnmacc.vf v8, f8, v24
+vfmsac.vv v8, v16, v24
+vfmsac.vf v8, f8, v24
+vfnmsac.vv v8, v16, v24
+vfnmsac.vf v8, f8, v24
+vfmadd.vv v8, v16, v24
+vfmadd.vf v8, f8, v24
+vfnmadd.vv v8, v16, v24
+vfnmadd.vf v8, f8, v24
+vfmsub.vv v8, v16, v24
+vfmsub.vf v8, f8, v24
+vfnmsub.vv v8, v16, v24
+vfnmsub.vf v8, f8, v24
+vfsqrt.v v8, v24
+vfrsqrt7.v v8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e64, m4, tu, mu
+vfadd.vv v8, v16, v24
+vfadd.vf v8, v16, f8
+vfsub.vv v8, v16, v24
+vfsub.vf v8, v16, f8
+vfrsub.vf v8, v16, f8
+vfmul.vv v8, v16, v24
+vfmul.vf v8, v16, f8
+vfdiv.vv v8, v16, v24
+vfdiv.vf v8, v16, f8
+vfrdiv.vf v8, v16, f8
+vfmacc.vv v8, v16, v24
+vfmacc.vf v8, f8, v24
+vfnmacc.vv v8, v16, v24
+vfnmacc.vf v8, f8, v24
+vfmsac.vv v8, v16, v24
+vfmsac.vf v8, f8, v24
+vfnmsac.vv v8, v16, v24
+vfnmsac.vf v8, f8, v24
+vfmadd.vv v8, v16, v24
+vfmadd.vf v8, f8, v24
+vfnmadd.vv v8, v16, v24
+vfnmadd.vf v8, f8, v24
+vfmsub.vv v8, v16, v24
+vfmsub.vf v8, f8, v24
+vfnmsub.vv v8, v16, v24
+vfnmsub.vf v8, f8, v24
+vfsqrt.v v8, v24
+vfrsqrt7.v v8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e64, m8, tu, mu
+vfadd.vv v8, v16, v24
+vfadd.vf v8, v16, f8
+vfsub.vv v8, v16, v24
+vfsub.vf v8, v16, f8
+vfrsub.vf v8, v16, f8
+vfmul.vv v8, v16, v24
+vfmul.vf v8, v16, f8
+vfdiv.vv v8, v16, v24
+vfdiv.vf v8, v16, f8
+vfrdiv.vf v8, v16, f8
+vfmacc.vv v8, v16, v24
+vfmacc.vf v8, f8, v24
+vfnmacc.vv v8, v16, v24
+vfnmacc.vf v8, f8, v24
+vfmsac.vv v8, v16, v24
+vfmsac.vf v8, f8, v24
+vfnmsac.vv v8, v16, v24
+vfnmsac.vf v8, f8, v24
+vfmadd.vv v8, v16, v24
+vfmadd.vf v8, f8, v24
+vfnmadd.vv v8, v16, v24
+vfnmadd.vf v8, f8, v24
+vfmsub.vv v8, v16, v24
+vfmsub.vf v8, f8, v24
+vfnmsub.vv v8, v16, v24
+vfnmsub.vf v8, f8, v24
+vfsqrt.v v8, v24
+vfrsqrt7.v v8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+# Vector Widening FP
+# no e64
+vsetvli zero, zero, e16, mf4, tu, mu
+vfwadd.vv v8, v16, v24
+vfwadd.vf v8, v16, f8
+vfwsub.vv v8, v16, v24
+vfwsub.vf v8, v16, f8
+vfwadd.wv v8, v16, v24
+vfwadd.wf v8, v16, f8
+vfwsub.wv v8, v16, v24
+vfwsub.wf v8, v16, f8
+vfwmul.vv v8, v16, v24
+vfwmul.vf v8, v16, f8
+vfwmacc.vv v8, v16, v24
+vfwmacc.vf v8, f8, v24
+vfwnmacc.vv v8, v16, v24
+vfwnmacc.vf v8, f8, v24
+vfwmsac.vv v8, v16, v24
+vfwmsac.vf v8, f8, v24
+vfwnmsac.vv v8, v16, v24
+vfwnmsac.vf v8, f8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e16, mf2, tu, mu
+vfwadd.vv v8, v16, v24
+vfwadd.vf v8, v16, f8
+vfwsub.vv v8, v16, v24
+vfwsub.vf v8, v16, f8
+vfwadd.wv v8, v16, v24
+vfwadd.wf v8, v16, f8
+vfwsub.wv v8, v16, v24
+vfwsub.wf v8, v16, f8
+vfwmul.vv v8, v16, v24
+vfwmul.vf v8, v16, f8
+vfwmacc.vv v8, v16, v24
+vfwmacc.vf v8, f8, v24
+vfwnmacc.vv v8, v16, v24
+vfwnmacc.vf v8, f8, v24
+vfwmsac.vv v8, v16, v24
+vfwmsac.vf v8, f8, v24
+vfwnmsac.vv v8, v16, v24
+vfwnmsac.vf v8, f8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e16, m1, tu, mu
+vfwadd.vv v8, v16, v24
+vfwadd.vf v8, v16, f8
+vfwsub.vv v8, v16, v24
+vfwsub.vf v8, v16, f8
+vfwadd.wv v8, v16, v24
+vfwadd.wf v8, v16, f8
+vfwsub.wv v8, v16, v24
+vfwsub.wf v8, v16, f8
+vfwmul.vv v8, v16, v24
+vfwmul.vf v8, v16, f8
+vfwmacc.vv v8, v16, v24
+vfwmacc.vf v8, f8, v24
+vfwnmacc.vv v8, v16, v24
+vfwnmacc.vf v8, f8, v24
+vfwmsac.vv v8, v16, v24
+vfwmsac.vf v8, f8, v24
+vfwnmsac.vv v8, v16, v24
+vfwnmsac.vf v8, f8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e16, m2, tu, mu
+vfwadd.vv v8, v16, v24
+vfwadd.vf v8, v16, f8
+vfwsub.vv v8, v16, v24
+vfwsub.vf v8, v16, f8
+vfwadd.wv v8, v16, v24
+vfwadd.wf v8, v16, f8
+vfwsub.wv v8, v16, v24
+vfwsub.wf v8, v16, f8
+vfwmul.vv v8, v16, v24
+vfwmul.vf v8, v16, f8
+vfwmacc.vv v8, v16, v24
+vfwmacc.vf v8, f8, v24
+vfwnmacc.vv v8, v16, v24
+vfwnmacc.vf v8, f8, v24
+vfwmsac.vv v8, v16, v24
+vfwmsac.vf v8, f8, v24
+vfwnmsac.vv v8, v16, v24
+vfwnmsac.vf v8, f8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e16, m4, tu, mu
+vfwadd.vv v8, v16, v24
+vfwadd.vf v8, v16, f8
+vfwsub.vv v8, v16, v24
+vfwsub.vf v8, v16, f8
+vfwadd.wv v8, v16, v24
+vfwadd.wf v8, v16, f8
+vfwsub.wv v8, v16, v24
+vfwsub.wf v8, v16, f8
+vfwmul.vv v8, v16, v24
+vfwmul.vf v8, v16, f8
+vfwmacc.vv v8, v16, v24
+vfwmacc.vf v8, f8, v24
+vfwnmacc.vv v8, v16, v24
+vfwnmacc.vf v8, f8, v24
+vfwmsac.vv v8, v16, v24
+vfwmsac.vf v8, f8, v24
+vfwnmsac.vv v8, v16, v24
+vfwnmsac.vf v8, f8, v24
+vsetvli zero, zero, e16, m8, tu, mu
+vfwadd.vv v8, v16, v24
+vfwadd.vf v8, v16, f8
+vfwsub.vv v8, v16, v24
+vfwsub.vf v8, v16, f8
+vfwadd.wv v8, v16, v24
+vfwadd.wf v8, v16, f8
+vfwsub.wv v8, v16, v24
+vfwsub.wf v8, v16, f8
+vfwmul.vv v8, v16, v24
+vfwmul.vf v8, v16, f8
+vfwmacc.vv v8, v16, v24
+vfwmacc.vf v8, f8, v24
+vfwnmacc.vv v8, v16, v24
+vfwnmacc.vf v8, f8, v24
+vfwmsac.vv v8, v16, v24
+vfwmsac.vf v8, f8, v24
+vfwnmsac.vv v8, v16, v24
+vfwnmsac.vf v8, f8, v24
+vsetvli zero, zero, e32, mf2, tu, mu
+vfwadd.vv v8, v16, v24
+vfwadd.vf v8, v16, f8
+vfwsub.vv v8, v16, v24
+vfwsub.vf v8, v16, f8
+vfwadd.wv v8, v16, v24
+vfwadd.wf v8, v16, f8
+vfwsub.wv v8, v16, v24
+vfwsub.wf v8, v16, f8
+vfwmul.vv v8, v16, v24
+vfwmul.vf v8, v16, f8
+vfwmacc.vv v8, v16, v24
+vfwmacc.vf v8, f8, v24
+vfwnmacc.vv v8, v16, v24
+vfwnmacc.vf v8, f8, v24
+vfwmsac.vv v8, v16, v24
+vfwmsac.vf v8, f8, v24
+vfwnmsac.vv v8, v16, v24
+vfwnmsac.vf v8, f8, v24
+vsetvli zero, zero, e32, m1, tu, mu
+vfwadd.vv v8, v16, v24
+vfwadd.vf v8, v16, f8
+vfwsub.vv v8, v16, v24
+vfwsub.vf v8, v16, f8
+vfwadd.wv v8, v16, v24
+vfwadd.wf v8, v16, f8
+vfwsub.wv v8, v16, v24
+vfwsub.wf v8, v16, f8
+vfwmul.vv v8, v16, v24
+vfwmul.vf v8, v16, f8
+vfwmacc.vv v8, v16, v24
+vfwmacc.vf v8, f8, v24
+vfwnmacc.vv v8, v16, v24
+vfwnmacc.vf v8, f8, v24
+vfwmsac.vv v8, v16, v24
+vfwmsac.vf v8, f8, v24
+vfwnmsac.vv v8, v16, v24
+vfwnmsac.vf v8, f8, v24
+vsetvli zero, zero, e32, m2, tu, mu
+vfwadd.vv v8, v16, v24
+vfwadd.vf v8, v16, f8
+vfwsub.vv v8, v16, v24
+vfwsub.vf v8, v16, f8
+vfwadd.wv v8, v16, v24
+vfwadd.wf v8, v16, f8
+vfwsub.wv v8, v16, v24
+vfwsub.wf v8, v16, f8
+vfwmul.vv v8, v16, v24
+vfwmul.vf v8, v16, f8
+vfwmacc.vv v8, v16, v24
+vfwmacc.vf v8, f8, v24
+vfwnmacc.vv v8, v16, v24
+vfwnmacc.vf v8, f8, v24
+vfwmsac.vv v8, v16, v24
+vfwmsac.vf v8, f8, v24
+vfwnmsac.vv v8, v16, v24
+vfwnmsac.vf v8, f8, v24
+vsetvli zero, zero, e32, m4, tu, mu
+vfwadd.vv v8, v16, v24
+vfwadd.vf v8, v16, f8
+vfwsub.vv v8, v16, v24
+vfwsub.vf v8, v16, f8
+vfwadd.wv v8, v16, v24
+vfwadd.wf v8, v16, f8
+vfwsub.wv v8, v16, v24
+vfwsub.wf v8, v16, f8
+vfwmul.vv v8, v16, v24
+vfwmul.vf v8, v16, f8
+vfwmacc.vv v8, v16, v24
+vfwmacc.vf v8, f8, v24
+vfwnmacc.vv v8, v16, v24
+vfwnmacc.vf v8, f8, v24
+vfwmsac.vv v8, v16, v24
+vfwmsac.vf v8, f8, v24
+vfwnmsac.vv v8, v16, v24
+vfwnmsac.vf v8, f8, v24
+vsetvli zero, zero, e32, m8, tu, mu
+vfwadd.vv v8, v16, v24
+vfwadd.vf v8, v16, f8
+vfwsub.vv v8, v16, v24
+vfwsub.vf v8, v16, f8
+vfwadd.wv v8, v16, v24
+vfwadd.wf v8, v16, f8
+vfwsub.wv v8, v16, v24
+vfwsub.wf v8, v16, f8
+vfwmul.vv v8, v16, v24
+vfwmul.vf v8, v16, f8
+vfwmacc.vv v8, v16, v24
+vfwmacc.vf v8, f8, v24
+vfwnmacc.vv v8, v16, v24
+vfwnmacc.vf v8, f8, v24
+vfwmsac.vv v8, v16, v24
+vfwmsac.vf v8, f8, v24
+vfwnmsac.vv v8, v16, v24
+vfwnmsac.vf v8, f8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e16, m8, tu, mu
+vfwadd.vv v8, v16, v24
+vfwadd.vf v8, v16, f8
+vfwsub.vv v8, v16, v24
+vfwsub.vf v8, v16, f8
+vfwadd.wv v8, v16, v24
+vfwadd.wf v8, v16, f8
+vfwsub.wv v8, v16, v24
+vfwsub.wf v8, v16, f8
+vfwmul.vv v8, v16, v24
+vfwmul.vf v8, v16, f8
+vfwmacc.vv v8, v16, v24
+vfwmacc.vf v8, f8, v24
+vfwnmacc.vv v8, v16, v24
+vfwnmacc.vf v8, f8, v24
+vfwmsac.vv v8, v16, v24
+vfwmsac.vf v8, f8, v24
+vfwnmsac.vv v8, v16, v24
+vfwnmsac.vf v8, f8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e32, mf2, tu, mu
+vfwadd.vv v8, v16, v24
+vfwadd.vf v8, v16, f8
+vfwsub.vv v8, v16, v24
+vfwsub.vf v8, v16, f8
+vfwadd.wv v8, v16, v24
+vfwadd.wf v8, v16, f8
+vfwsub.wv v8, v16, v24
+vfwsub.wf v8, v16, f8
+vfwmul.vv v8, v16, v24
+vfwmul.vf v8, v16, f8
+vfwmacc.vv v8, v16, v24
+vfwmacc.vf v8, f8, v24
+vfwnmacc.vv v8, v16, v24
+vfwnmacc.vf v8, f8, v24
+vfwmsac.vv v8, v16, v24
+vfwmsac.vf v8, f8, v24
+vfwnmsac.vv v8, v16, v24
+vfwnmsac.vf v8, f8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e32, m1, tu, mu
+vfwadd.vv v8, v16, v24
+vfwadd.vf v8, v16, f8
+vfwsub.vv v8, v16, v24
+vfwsub.vf v8, v16, f8
+vfwadd.wv v8, v16, v24
+vfwadd.wf v8, v16, f8
+vfwsub.wv v8, v16, v24
+vfwsub.wf v8, v16, f8
+vfwmul.vv v8, v16, v24
+vfwmul.vf v8, v16, f8
+vfwmacc.vv v8, v16, v24
+vfwmacc.vf v8, f8, v24
+vfwnmacc.vv v8, v16, v24
+vfwnmacc.vf v8, f8, v24
+vfwmsac.vv v8, v16, v24
+vfwmsac.vf v8, f8, v24
+vfwnmsac.vv v8, v16, v24
+vfwnmsac.vf v8, f8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e32, m2, tu, mu
+vfwadd.vv v8, v16, v24
+vfwadd.vf v8, v16, f8
+vfwsub.vv v8, v16, v24
+vfwsub.vf v8, v16, f8
+vfwadd.wv v8, v16, v24
+vfwadd.wf v8, v16, f8
+vfwsub.wv v8, v16, v24
+vfwsub.wf v8, v16, f8
+vfwmul.vv v8, v16, v24
+vfwmul.vf v8, v16, f8
+vfwmacc.vv v8, v16, v24
+vfwmacc.vf v8, f8, v24
+vfwnmacc.vv v8, v16, v24
+vfwnmacc.vf v8, f8, v24
+vfwmsac.vv v8, v16, v24
+vfwmsac.vf v8, f8, v24
+vfwnmsac.vv v8, v16, v24
+vfwnmsac.vf v8, f8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e32, m4, tu, mu
+vfwadd.vv v8, v16, v24
+vfwadd.vf v8, v16, f8
+vfwsub.vv v8, v16, v24
+vfwsub.vf v8, v16, f8
+vfwadd.wv v8, v16, v24
+vfwadd.wf v8, v16, f8
+vfwsub.wv v8, v16, v24
+vfwsub.wf v8, v16, f8
+vfwmul.vv v8, v16, v24
+vfwmul.vf v8, v16, f8
+vfwmacc.vv v8, v16, v24
+vfwmacc.vf v8, f8, v24
+vfwnmacc.vv v8, v16, v24
+vfwnmacc.vf v8, f8, v24
+vfwmsac.vv v8, v16, v24
+vfwmsac.vf v8, f8, v24
+vfwnmsac.vv v8, v16, v24
+vfwnmsac.vf v8, f8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+vsetvli zero, zero, e32, m8, tu, mu
+vfwadd.vv v8, v16, v24
+vfwadd.vf v8, v16, f8
+vfwsub.vv v8, v16, v24
+vfwsub.vf v8, v16, f8
+vfwadd.wv v8, v16, v24
+vfwadd.wf v8, v16, f8
+vfwsub.wv v8, v16, v24
+vfwsub.wf v8, v16, f8
+vfwmul.vv v8, v16, v24
+vfwmul.vf v8, v16, f8
+vfwmacc.vv v8, v16, v24
+vfwmacc.vf v8, f8, v24
+vfwnmacc.vv v8, v16, v24
+vfwnmacc.vf v8, f8, v24
+vfwmsac.vv v8, v16, v24
+vfwmsac.vf v8, f8, v24
+vfwnmsac.vv v8, v16, v24
+vfwnmsac.vf v8, f8, v24
+vfrec7.v v8, v24
+vfmin.vv v8, v16, v24
+vfmin.vf v8, v16, f8
+vfmax.vv v8, v16, v24
+vfmax.vf v8, v16, f8
+vfsgnj.vv v8, v16, v24
+vfsgnj.vf v8, v16, f8
+vfsgnjn.vv v8, v16, v24
+vfsgnjn.vf v8, v16, f8
+vfsgnjx.vv v8, v16, v24
+vfsgnjx.vf v8, v16, f8
+vfcvt.xu.f.v v8, v16
+vfcvt.x.f.v v8, v16
+vfcvt.rtz.xu.f.v v8, v16
+vfcvt.rtz.x.f.v v8, v16
+vfcvt.f.xu.v v8, v16
+vfcvt.f.x.v v8, v16
+vfwcvt.xu.f.v v8, v16
+vfwcvt.x.f.v v8, v16
+vfwcvt.rtz.xu.f.v v8, v16
+vfwcvt.rtz.x.f.v v8, v16
+vfwcvt.f.xu.v v8, v16
+vfwcvt.f.x.v v8, v16
+vfwcvt.f.f.v v8, v16
+vfncvt.xu.f.w v8, v16
+vfncvt.x.f.w v8, v16
+vfncvt.rtz.xu.f.w v8, v16
+vfncvt.rtz.x.f.w v8, v16
+vfncvt.f.xu.w v8, v16
+vfncvt.f.x.w v8, v16
+vfncvt.f.f.w v8, v16
+vfncvt.rod.f.f.w v8, v16
+
+# CHECK: Resources:
+# CHECK-NEXT: [0] - VLEN512SiFive7FDiv:1
+# CHECK-NEXT: [1] - VLEN512SiFive7IDiv:1
+# CHECK-NEXT: [2] - VLEN512SiFive7PipeA:1
+# CHECK-NEXT: [3] - VLEN512SiFive7PipeAB:2 VLEN512SiFive7PipeA, VLEN512SiFive7PipeB
+# CHECK-NEXT: [4] - VLEN512SiFive7PipeB:1
+# CHECK-NEXT: [5] - VLEN512SiFive7VA:1
+# CHECK-NEXT: [6] - VLEN512SiFive7VCQ:1
+# CHECK-NEXT: [7] - VLEN512SiFive7VL:1
+# CHECK-NEXT: [8] - VLEN512SiFive7VS:1
+
+# CHECK: Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+# CHECK-NEXT: [7]: Bypass Latency
+# CHECK-NEXT: [8]: Resources (<Name> | <Name>[<ReleaseAtCycle>] | <Name>[<AcquireAtCycle>,<ReleaseAtCycle])
+# CHECK-NEXT: [9]: LLVM Opcode Name
+
+# CHECK: [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e16, mf4, tu, mu
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFADD_VV vfadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFADD_VF vfadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSUB_VV vfsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSUB_VF vfsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFRSUB_VF vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMUL_VV vfmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMUL_VF vfmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 30 30.00 30 VLEN512SiFive7VA[1,31],VLEN512SiFive7VCQ VFDIV_VV vfdiv.vv v8, v16, v24
+# CHECK-NEXT: 1 30 30.00 30 VLEN512SiFive7VA[1,31],VLEN512SiFive7VCQ VFDIV_VF vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 30 30.00 30 VLEN512SiFive7VA[1,31],VLEN512SiFive7VCQ VFRDIV_VF vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMACC_VV vfmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMACC_VF vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMACC_VV vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMACC_VF vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMSAC_VV vfmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMSAC_VF vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMSAC_VV vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMSAC_VF vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMADD_VV vfmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMADD_VF vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMADD_VV vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMADD_VF vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMSUB_VV vfmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMSUB_VF vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMSUB_VV vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMSUB_VF vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 30 30.00 30 VLEN512SiFive7VA[1,31],VLEN512SiFive7VCQ VFSQRT_V vfsqrt.v v8, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFRSQRT7_V vfrsqrt7.v v8, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e16, mf2, tu, mu
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFADD_VV vfadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFADD_VF vfadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSUB_VV vfsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSUB_VF vfsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFRSUB_VF vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMUL_VV vfmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMUL_VF vfmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 60 60.00 60 VLEN512SiFive7VA[1,61],VLEN512SiFive7VCQ VFDIV_VV vfdiv.vv v8, v16, v24
+# CHECK-NEXT: 1 60 60.00 60 VLEN512SiFive7VA[1,61],VLEN512SiFive7VCQ VFDIV_VF vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 60 60.00 60 VLEN512SiFive7VA[1,61],VLEN512SiFive7VCQ VFRDIV_VF vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMACC_VV vfmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMACC_VF vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMACC_VV vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMACC_VF vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMSAC_VV vfmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMSAC_VF vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMSAC_VV vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMSAC_VF vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMADD_VV vfmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMADD_VF vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMADD_VV vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMADD_VF vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMSUB_VV vfmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMSUB_VF vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMSUB_VV vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMSUB_VF vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 60 60.00 60 VLEN512SiFive7VA[1,61],VLEN512SiFive7VCQ VFSQRT_V vfsqrt.v v8, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFRSQRT7_V vfrsqrt7.v v8, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e16, m1, tu, mu
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFADD_VV vfadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFADD_VF vfadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSUB_VV vfsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSUB_VF vfsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFRSUB_VF vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMUL_VV vfmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMUL_VF vfmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 120 120.00 120 VLEN512SiFive7VA[1,121],VLEN512SiFive7VCQ VFDIV_VV vfdiv.vv v8, v16, v24
+# CHECK-NEXT: 1 120 120.00 120 VLEN512SiFive7VA[1,121],VLEN512SiFive7VCQ VFDIV_VF vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 120 120.00 120 VLEN512SiFive7VA[1,121],VLEN512SiFive7VCQ VFRDIV_VF vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMACC_VV vfmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMACC_VF vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMACC_VV vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMACC_VF vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMSAC_VV vfmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMSAC_VF vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMSAC_VV vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMSAC_VF vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMADD_VV vfmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMADD_VF vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMADD_VV vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMADD_VF vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMSUB_VV vfmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMSUB_VF vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMSUB_VV vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMSUB_VF vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 120 120.00 120 VLEN512SiFive7VA[1,121],VLEN512SiFive7VCQ VFSQRT_V vfsqrt.v v8, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFRSQRT7_V vfrsqrt7.v v8, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e16, m2, tu, mu
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFADD_VV vfadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFADD_VF vfadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSUB_VV vfsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSUB_VF vfsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFRSUB_VF vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMUL_VV vfmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMUL_VF vfmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 240 240.00 240 VLEN512SiFive7VA[1,241],VLEN512SiFive7VCQ VFDIV_VV vfdiv.vv v8, v16, v24
+# CHECK-NEXT: 1 240 240.00 240 VLEN512SiFive7VA[1,241],VLEN512SiFive7VCQ VFDIV_VF vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 240 240.00 240 VLEN512SiFive7VA[1,241],VLEN512SiFive7VCQ VFRDIV_VF vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMACC_VV vfmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMACC_VF vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMACC_VV vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMACC_VF vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMSAC_VV vfmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMSAC_VF vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMSAC_VV vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMSAC_VF vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMADD_VV vfmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMADD_VF vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMADD_VV vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMADD_VF vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMSUB_VV vfmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMSUB_VF vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMSUB_VV vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMSUB_VF vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 240 240.00 240 VLEN512SiFive7VA[1,241],VLEN512SiFive7VCQ VFSQRT_V vfsqrt.v v8, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFRSQRT7_V vfrsqrt7.v v8, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e16, m4, tu, mu
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFADD_VV vfadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFADD_VF vfadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSUB_VV vfsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSUB_VF vfsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFRSUB_VF vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMUL_VV vfmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMUL_VF vfmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 480 480.00 480 VLEN512SiFive7VA[1,481],VLEN512SiFive7VCQ VFDIV_VV vfdiv.vv v8, v16, v24
+# CHECK-NEXT: 1 480 480.00 480 VLEN512SiFive7VA[1,481],VLEN512SiFive7VCQ VFDIV_VF vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 480 480.00 480 VLEN512SiFive7VA[1,481],VLEN512SiFive7VCQ VFRDIV_VF vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMACC_VV vfmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMACC_VF vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMACC_VV vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMACC_VF vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMSAC_VV vfmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMSAC_VF vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMSAC_VV vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMSAC_VF vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMADD_VV vfmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMADD_VF vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMADD_VV vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMADD_VF vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMSUB_VV vfmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMSUB_VF vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMSUB_VV vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMSUB_VF vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 480 480.00 480 VLEN512SiFive7VA[1,481],VLEN512SiFive7VCQ VFSQRT_V vfsqrt.v v8, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFRSQRT7_V vfrsqrt7.v v8, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e16, m8, tu, mu
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFADD_VV vfadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFADD_VF vfadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSUB_VV vfsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSUB_VF vfsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFRSUB_VF vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMUL_VV vfmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMUL_VF vfmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 960 960.00 960 VLEN512SiFive7VA[1,961],VLEN512SiFive7VCQ VFDIV_VV vfdiv.vv v8, v16, v24
+# CHECK-NEXT: 1 960 960.00 960 VLEN512SiFive7VA[1,961],VLEN512SiFive7VCQ VFDIV_VF vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 960 960.00 960 VLEN512SiFive7VA[1,961],VLEN512SiFive7VCQ VFRDIV_VF vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMACC_VV vfmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMACC_VF vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMACC_VV vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMACC_VF vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMSAC_VV vfmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMSAC_VF vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMSAC_VV vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMSAC_VF vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMADD_VV vfmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMADD_VF vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMADD_VV vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMADD_VF vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMSUB_VV vfmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMSUB_VF vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMSUB_VV vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMSUB_VF vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 960 960.00 960 VLEN512SiFive7VA[1,961],VLEN512SiFive7VCQ VFSQRT_V vfsqrt.v v8, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFRSQRT7_V vfrsqrt7.v v8, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e32, mf2, tu, mu
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFADD_VV vfadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFADD_VF vfadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSUB_VV vfsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSUB_VF vfsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFRSUB_VF vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMUL_VV vfmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMUL_VF vfmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 56 56.00 56 VLEN512SiFive7VA[1,57],VLEN512SiFive7VCQ VFDIV_VV vfdiv.vv v8, v16, v24
+# CHECK-NEXT: 1 56 56.00 56 VLEN512SiFive7VA[1,57],VLEN512SiFive7VCQ VFDIV_VF vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 56 56.00 56 VLEN512SiFive7VA[1,57],VLEN512SiFive7VCQ VFRDIV_VF vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMACC_VV vfmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMACC_VF vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMACC_VV vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMACC_VF vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMSAC_VV vfmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMSAC_VF vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMSAC_VV vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMSAC_VF vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMADD_VV vfmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMADD_VF vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMADD_VV vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMADD_VF vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMSUB_VV vfmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMSUB_VF vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMSUB_VV vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNMSUB_VF vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 56 56.00 56 VLEN512SiFive7VA[1,57],VLEN512SiFive7VCQ VFSQRT_V vfsqrt.v v8, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFRSQRT7_V vfrsqrt7.v v8, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e32, m1, tu, mu
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFADD_VV vfadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFADD_VF vfadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSUB_VV vfsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSUB_VF vfsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFRSUB_VF vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMUL_VV vfmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMUL_VF vfmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 112 112.00 112 VLEN512SiFive7VA[1,113],VLEN512SiFive7VCQ VFDIV_VV vfdiv.vv v8, v16, v24
+# CHECK-NEXT: 1 112 112.00 112 VLEN512SiFive7VA[1,113],VLEN512SiFive7VCQ VFDIV_VF vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 112 112.00 112 VLEN512SiFive7VA[1,113],VLEN512SiFive7VCQ VFRDIV_VF vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMACC_VV vfmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMACC_VF vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMACC_VV vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMACC_VF vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMSAC_VV vfmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMSAC_VF vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMSAC_VV vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMSAC_VF vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMADD_VV vfmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMADD_VF vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMADD_VV vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMADD_VF vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMSUB_VV vfmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMSUB_VF vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMSUB_VV vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMSUB_VF vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 112 112.00 112 VLEN512SiFive7VA[1,113],VLEN512SiFive7VCQ VFSQRT_V vfsqrt.v v8, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFRSQRT7_V vfrsqrt7.v v8, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e32, m2, tu, mu
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFADD_VV vfadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFADD_VF vfadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSUB_VV vfsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSUB_VF vfsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFRSUB_VF vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMUL_VV vfmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMUL_VF vfmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 224 224.00 224 VLEN512SiFive7VA[1,225],VLEN512SiFive7VCQ VFDIV_VV vfdiv.vv v8, v16, v24
+# CHECK-NEXT: 1 224 224.00 224 VLEN512SiFive7VA[1,225],VLEN512SiFive7VCQ VFDIV_VF vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 224 224.00 224 VLEN512SiFive7VA[1,225],VLEN512SiFive7VCQ VFRDIV_VF vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMACC_VV vfmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMACC_VF vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMACC_VV vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMACC_VF vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMSAC_VV vfmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMSAC_VF vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMSAC_VV vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMSAC_VF vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMADD_VV vfmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMADD_VF vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMADD_VV vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMADD_VF vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMSUB_VV vfmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMSUB_VF vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMSUB_VV vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMSUB_VF vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 224 224.00 224 VLEN512SiFive7VA[1,225],VLEN512SiFive7VCQ VFSQRT_V vfsqrt.v v8, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFRSQRT7_V vfrsqrt7.v v8, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e32, m4, tu, mu
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFADD_VV vfadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFADD_VF vfadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSUB_VV vfsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSUB_VF vfsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFRSUB_VF vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMUL_VV vfmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMUL_VF vfmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 448 448.00 448 VLEN512SiFive7VA[1,449],VLEN512SiFive7VCQ VFDIV_VV vfdiv.vv v8, v16, v24
+# CHECK-NEXT: 1 448 448.00 448 VLEN512SiFive7VA[1,449],VLEN512SiFive7VCQ VFDIV_VF vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 448 448.00 448 VLEN512SiFive7VA[1,449],VLEN512SiFive7VCQ VFRDIV_VF vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMACC_VV vfmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMACC_VF vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMACC_VV vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMACC_VF vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMSAC_VV vfmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMSAC_VF vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMSAC_VV vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMSAC_VF vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMADD_VV vfmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMADD_VF vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMADD_VV vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMADD_VF vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMSUB_VV vfmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMSUB_VF vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMSUB_VV vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMSUB_VF vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 448 448.00 448 VLEN512SiFive7VA[1,449],VLEN512SiFive7VCQ VFSQRT_V vfsqrt.v v8, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFRSQRT7_V vfrsqrt7.v v8, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e32, m8, tu, mu
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFADD_VV vfadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFADD_VF vfadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSUB_VV vfsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSUB_VF vfsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFRSUB_VF vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMUL_VV vfmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMUL_VF vfmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 896 896.00 896 VLEN512SiFive7VA[1,897],VLEN512SiFive7VCQ VFDIV_VV vfdiv.vv v8, v16, v24
+# CHECK-NEXT: 1 896 896.00 896 VLEN512SiFive7VA[1,897],VLEN512SiFive7VCQ VFDIV_VF vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 896 896.00 896 VLEN512SiFive7VA[1,897],VLEN512SiFive7VCQ VFRDIV_VF vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMACC_VV vfmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMACC_VF vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMACC_VV vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMACC_VF vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMSAC_VV vfmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMSAC_VF vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMSAC_VV vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMSAC_VF vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMADD_VV vfmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMADD_VF vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMADD_VV vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMADD_VF vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMSUB_VV vfmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMSUB_VF vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMSUB_VV vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMSUB_VF vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 896 896.00 896 VLEN512SiFive7VA[1,897],VLEN512SiFive7VCQ VFSQRT_V vfsqrt.v v8, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFRSQRT7_V vfrsqrt7.v v8, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e64, m1, tu, mu
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFADD_VV vfadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFADD_VF vfadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSUB_VV vfsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSUB_VF vfsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFRSUB_VF vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMUL_VV vfmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMUL_VF vfmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 114 114.00 114 VLEN512SiFive7VA[1,115],VLEN512SiFive7VCQ VFDIV_VV vfdiv.vv v8, v16, v24
+# CHECK-NEXT: 1 114 114.00 114 VLEN512SiFive7VA[1,115],VLEN512SiFive7VCQ VFDIV_VF vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 114 114.00 114 VLEN512SiFive7VA[1,115],VLEN512SiFive7VCQ VFRDIV_VF vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMACC_VV vfmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMACC_VF vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMACC_VV vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMACC_VF vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMSAC_VV vfmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMSAC_VF vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMSAC_VV vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMSAC_VF vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMADD_VV vfmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMADD_VF vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMADD_VV vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMADD_VF vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMSUB_VV vfmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMSUB_VF vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMSUB_VV vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNMSUB_VF vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 114 114.00 114 VLEN512SiFive7VA[1,115],VLEN512SiFive7VCQ VFSQRT_V vfsqrt.v v8, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFRSQRT7_V vfrsqrt7.v v8, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e64, m2, tu, mu
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFADD_VV vfadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFADD_VF vfadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSUB_VV vfsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSUB_VF vfsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFRSUB_VF vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMUL_VV vfmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMUL_VF vfmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 228 228.00 228 VLEN512SiFive7VA[1,229],VLEN512SiFive7VCQ VFDIV_VV vfdiv.vv v8, v16, v24
+# CHECK-NEXT: 1 228 228.00 228 VLEN512SiFive7VA[1,229],VLEN512SiFive7VCQ VFDIV_VF vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 228 228.00 228 VLEN512SiFive7VA[1,229],VLEN512SiFive7VCQ VFRDIV_VF vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMACC_VV vfmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMACC_VF vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMACC_VV vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMACC_VF vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMSAC_VV vfmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMSAC_VF vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMSAC_VV vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMSAC_VF vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMADD_VV vfmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMADD_VF vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMADD_VV vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMADD_VF vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMSUB_VV vfmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMSUB_VF vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMSUB_VV vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNMSUB_VF vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 228 228.00 228 VLEN512SiFive7VA[1,229],VLEN512SiFive7VCQ VFSQRT_V vfsqrt.v v8, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFRSQRT7_V vfrsqrt7.v v8, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e64, m4, tu, mu
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFADD_VV vfadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFADD_VF vfadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSUB_VV vfsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSUB_VF vfsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFRSUB_VF vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMUL_VV vfmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMUL_VF vfmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 456 456.00 456 VLEN512SiFive7VA[1,457],VLEN512SiFive7VCQ VFDIV_VV vfdiv.vv v8, v16, v24
+# CHECK-NEXT: 1 456 456.00 456 VLEN512SiFive7VA[1,457],VLEN512SiFive7VCQ VFDIV_VF vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 456 456.00 456 VLEN512SiFive7VA[1,457],VLEN512SiFive7VCQ VFRDIV_VF vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMACC_VV vfmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMACC_VF vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMACC_VV vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMACC_VF vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMSAC_VV vfmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMSAC_VF vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMSAC_VV vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMSAC_VF vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMADD_VV vfmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMADD_VF vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMADD_VV vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMADD_VF vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMSUB_VV vfmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMSUB_VF vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMSUB_VV vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNMSUB_VF vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 456 456.00 456 VLEN512SiFive7VA[1,457],VLEN512SiFive7VCQ VFSQRT_V vfsqrt.v v8, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFRSQRT7_V vfrsqrt7.v v8, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e64, m8, tu, mu
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFADD_VV vfadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFADD_VF vfadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSUB_VV vfsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSUB_VF vfsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFRSUB_VF vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMUL_VV vfmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMUL_VF vfmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 912 912.00 912 VLEN512SiFive7VA[1,913],VLEN512SiFive7VCQ VFDIV_VV vfdiv.vv v8, v16, v24
+# CHECK-NEXT: 1 912 912.00 912 VLEN512SiFive7VA[1,913],VLEN512SiFive7VCQ VFDIV_VF vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 912 912.00 912 VLEN512SiFive7VA[1,913],VLEN512SiFive7VCQ VFRDIV_VF vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMACC_VV vfmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMACC_VF vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMACC_VV vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMACC_VF vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMSAC_VV vfmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMSAC_VF vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMSAC_VV vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMSAC_VF vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMADD_VV vfmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMADD_VF vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMADD_VV vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMADD_VF vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMSUB_VV vfmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMSUB_VF vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMSUB_VV vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNMSUB_VF vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: 1 912 912.00 912 VLEN512SiFive7VA[1,913],VLEN512SiFive7VCQ VFSQRT_V vfsqrt.v v8, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFRSQRT7_V vfrsqrt7.v v8, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e16, mf4, tu, mu
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWADD_VV vfwadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWADD_VF vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWSUB_VV vfwsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWSUB_VF vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWADD_WV vfwadd.wv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWADD_WF vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWSUB_WV vfwsub.wv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWSUB_WF vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMUL_VV vfwmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMUL_VF vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMACC_VV vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMACC_VF vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWNMACC_VV vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWNMACC_VF vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMSAC_VV vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMSAC_VF vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWNMSAC_VV vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWNMSAC_VF vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e16, mf2, tu, mu
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWADD_VV vfwadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWADD_VF vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWSUB_VV vfwsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWSUB_VF vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWADD_WV vfwadd.wv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWADD_WF vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWSUB_WV vfwsub.wv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWSUB_WF vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMUL_VV vfwmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMUL_VF vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMACC_VV vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMACC_VF vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWNMACC_VV vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWNMACC_VF vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMSAC_VV vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMSAC_VF vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWNMSAC_VV vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWNMSAC_VF vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e16, m1, tu, mu
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWADD_VV vfwadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWADD_VF vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWSUB_VV vfwsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWSUB_VF vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWADD_WV vfwadd.wv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWADD_WF vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWSUB_WV vfwsub.wv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWSUB_WF vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWMUL_VV vfwmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWMUL_VF vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWMACC_VV vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWMACC_VF vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWNMACC_VV vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWNMACC_VF vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWMSAC_VV vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWMSAC_VF vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWNMSAC_VV vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWNMSAC_VF vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e16, m2, tu, mu
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWADD_VV vfwadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWADD_VF vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWSUB_VV vfwsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWSUB_VF vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWADD_WV vfwadd.wv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWADD_WF vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWSUB_WV vfwsub.wv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWSUB_WF vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWMUL_VV vfwmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWMUL_VF vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWMACC_VV vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWMACC_VF vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWNMACC_VV vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWNMACC_VF vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWMSAC_VV vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWMSAC_VF vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWNMSAC_VV vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWNMSAC_VF vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e16, m4, tu, mu
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_VV vfwadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_VF vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_VV vfwsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_VF vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_WV vfwadd.wv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_WF vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_WV vfwsub.wv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_WF vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMUL_VV vfwmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMUL_VF vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMACC_VV vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMACC_VF vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMACC_VV vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMACC_VF vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMSAC_VV vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMSAC_VF vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMSAC_VV vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMSAC_VF vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e16, m8, tu, mu
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_VV vfwadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_VF vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_VV vfwsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_VF vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_WV vfwadd.wv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_WF vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_WV vfwsub.wv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_WF vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMUL_VV vfwmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMUL_VF vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMACC_VV vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMACC_VF vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMACC_VV vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMACC_VF vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMSAC_VV vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMSAC_VF vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMSAC_VV vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMSAC_VF vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e32, mf2, tu, mu
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWADD_VV vfwadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWADD_VF vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWSUB_VV vfwsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWSUB_VF vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWADD_WV vfwadd.wv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWADD_WF vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWSUB_WV vfwsub.wv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWSUB_WF vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMUL_VV vfwmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMUL_VF vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMACC_VV vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMACC_VF vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWNMACC_VV vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWNMACC_VF vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMSAC_VV vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMSAC_VF vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWNMSAC_VV vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWNMSAC_VF vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e32, m1, tu, mu
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWADD_VV vfwadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWADD_VF vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWSUB_VV vfwsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWSUB_VF vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWADD_WV vfwadd.wv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWADD_WF vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWSUB_WV vfwsub.wv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWSUB_WF vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWMUL_VV vfwmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWMUL_VF vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWMACC_VV vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWMACC_VF vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWNMACC_VV vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWNMACC_VF vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWMSAC_VV vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWMSAC_VF vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWNMSAC_VV vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWNMSAC_VF vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e32, m2, tu, mu
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWADD_VV vfwadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWADD_VF vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWSUB_VV vfwsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWSUB_VF vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWADD_WV vfwadd.wv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWADD_WF vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWSUB_WV vfwsub.wv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWSUB_WF vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWMUL_VV vfwmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWMUL_VF vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWMACC_VV vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWMACC_VF vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWNMACC_VV vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWNMACC_VF vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWMSAC_VV vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWMSAC_VF vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWNMSAC_VV vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWNMSAC_VF vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e32, m4, tu, mu
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_VV vfwadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_VF vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_VV vfwsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_VF vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_WV vfwadd.wv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_WF vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_WV vfwsub.wv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_WF vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMUL_VV vfwmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMUL_VF vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMACC_VV vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMACC_VF vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMACC_VV vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMACC_VF vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMSAC_VV vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMSAC_VF vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMSAC_VV vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMSAC_VF vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e32, m8, tu, mu
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_VV vfwadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_VF vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_VV vfwsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_VF vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_WV vfwadd.wv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_WF vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_WV vfwsub.wv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_WF vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMUL_VV vfwmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMUL_VF vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMACC_VV vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMACC_VF vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMACC_VV vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMACC_VF vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMSAC_VV vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMSAC_VF vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMSAC_VV vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMSAC_VF vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e16, m8, tu, mu
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_VV vfwadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_VF vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_VV vfwsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_VF vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_WV vfwadd.wv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_WF vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_WV vfwsub.wv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_WF vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMUL_VV vfwmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMUL_VF vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMACC_VV vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMACC_VF vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMACC_VV vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMACC_VF vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMSAC_VV vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMSAC_VF vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMSAC_VV vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMSAC_VF vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e32, mf2, tu, mu
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWADD_VV vfwadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWADD_VF vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWSUB_VV vfwsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWSUB_VF vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWADD_WV vfwadd.wv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWADD_WF vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWSUB_WV vfwsub.wv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWSUB_WF vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMUL_VV vfwmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMUL_VF vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMACC_VV vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMACC_VF vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWNMACC_VV vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWNMACC_VF vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMSAC_VV vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWMSAC_VF vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWNMSAC_VV vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWNMSAC_VF vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 1.00 4 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 1.00 8 VLEN512SiFive7VA[1,2],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e32, m1, tu, mu
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWADD_VV vfwadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWADD_VF vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWSUB_VV vfwsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWSUB_VF vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWADD_WV vfwadd.wv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWADD_WF vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWSUB_WV vfwsub.wv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWSUB_WF vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWMUL_VV vfwmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWMUL_VF vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWMACC_VV vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWMACC_VF vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWNMACC_VV vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWNMACC_VF vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWMSAC_VV vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWMSAC_VF vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWNMSAC_VV vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWNMSAC_VF vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 2.00 4 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 2.00 8 VLEN512SiFive7VA[1,3],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e32, m2, tu, mu
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWADD_VV vfwadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWADD_VF vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWSUB_VV vfwsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWSUB_VF vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWADD_WV vfwadd.wv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWADD_WF vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWSUB_WV vfwsub.wv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWSUB_WF vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWMUL_VV vfwmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWMUL_VF vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWMACC_VV vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWMACC_VF vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWNMACC_VV vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWNMACC_VF vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWMSAC_VV vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWMSAC_VF vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWNMSAC_VV vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWNMSAC_VF vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 4.00 4 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 4.00 8 VLEN512SiFive7VA[1,5],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e32, m4, tu, mu
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_VV vfwadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_VF vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_VV vfwsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_VF vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_WV vfwadd.wv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_WF vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_WV vfwsub.wv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_WF vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMUL_VV vfwmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMUL_VF vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMACC_VV vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMACC_VF vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMACC_VV vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMACC_VF vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMSAC_VV vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMSAC_VF vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMSAC_VV vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMSAC_VF vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 8.00 4 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: 1 3 1.00 U 1 VLEN512SiFive7PipeA,VLEN512SiFive7PipeAB VSETVLI vsetvli zero, zero, e32, m8, tu, mu
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_VV vfwadd.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_VF vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_VV vfwsub.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_VF vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_WV vfwadd.wv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWADD_WF vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_WV vfwsub.wv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWSUB_WF vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMUL_VV vfwmul.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMUL_VF vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMACC_VV vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMACC_VF vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMACC_VV vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMACC_VF vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMSAC_VV vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWMSAC_VF vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMSAC_VV vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWNMSAC_VF vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFREC7_V vfrec7.v v8, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMIN_VV vfmin.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMIN_VF vfmin.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMAX_VV vfmax.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFMAX_VF vfmax.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJ_VV vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJ_VF vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJN_VV vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJN_VF vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJX_VV vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: 1 4 16.00 4 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFSGNJX_VF vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_XU_F_V vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_X_F_V vfcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_RTZ_XU_F_V vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_RTZ_X_F_V vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_F_XU_V vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFCVT_F_X_V vfcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_XU_F_V vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_X_F_V vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_RTZ_XU_F_V vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_RTZ_X_F_V vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_XU_V vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_X_V vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: 1 8 8.00 8 VLEN512SiFive7VA[1,9],VLEN512SiFive7VCQ VFWCVT_F_F_V vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_XU_F_W vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_X_F_W vfncvt.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_RTZ_XU_F_W vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_RTZ_X_F_W vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_XU_W vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_X_W vfncvt.f.x.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_F_F_W vfncvt.f.f.w v8, v16
+# CHECK-NEXT: 1 8 16.00 8 VLEN512SiFive7VA[1,17],VLEN512SiFive7VCQ VFNCVT_ROD_F_F_W vfncvt.rod.f.f.w v8, v16
+
+# CHECK: Resources:
+# CHECK-NEXT: [0] - VLEN512SiFive7FDiv
+# CHECK-NEXT: [1] - VLEN512SiFive7IDiv
+# CHECK-NEXT: [2] - VLEN512SiFive7PipeA
+# CHECK-NEXT: [3] - VLEN512SiFive7PipeB
+# CHECK-NEXT: [4] - VLEN512SiFive7VA
+# CHECK-NEXT: [5] - VLEN512SiFive7VCQ
+# CHECK-NEXT: [6] - VLEN512SiFive7VL
+# CHECK-NEXT: [7] - VLEN512SiFive7VS
+
+# CHECK: Resource pressure per iteration:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7]
+# CHECK-NEXT: - - 32.00 - 32088.00 1558.00 - -
+
+# CHECK: Resource pressure by instruction:
+# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions:
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e16, mf4, tu, mu
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 31.00 1.00 - - vfdiv.vv v8, v16, v24
+# CHECK-NEXT: - - - - 31.00 1.00 - - vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 31.00 1.00 - - vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 31.00 1.00 - - vfsqrt.v v8, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfrsqrt7.v v8, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e16, mf2, tu, mu
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 61.00 1.00 - - vfdiv.vv v8, v16, v24
+# CHECK-NEXT: - - - - 61.00 1.00 - - vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 61.00 1.00 - - vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 61.00 1.00 - - vfsqrt.v v8, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfrsqrt7.v v8, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e16, m1, tu, mu
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 121.00 1.00 - - vfdiv.vv v8, v16, v24
+# CHECK-NEXT: - - - - 121.00 1.00 - - vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 121.00 1.00 - - vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 121.00 1.00 - - vfsqrt.v v8, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfrsqrt7.v v8, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e16, m2, tu, mu
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 241.00 1.00 - - vfdiv.vv v8, v16, v24
+# CHECK-NEXT: - - - - 241.00 1.00 - - vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 241.00 1.00 - - vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 241.00 1.00 - - vfsqrt.v v8, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfrsqrt7.v v8, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e16, m4, tu, mu
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 481.00 1.00 - - vfdiv.vv v8, v16, v24
+# CHECK-NEXT: - - - - 481.00 1.00 - - vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 481.00 1.00 - - vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 481.00 1.00 - - vfsqrt.v v8, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfrsqrt7.v v8, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e16, m8, tu, mu
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 961.00 1.00 - - vfdiv.vv v8, v16, v24
+# CHECK-NEXT: - - - - 961.00 1.00 - - vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 961.00 1.00 - - vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 961.00 1.00 - - vfsqrt.v v8, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfrsqrt7.v v8, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e32, mf2, tu, mu
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 57.00 1.00 - - vfdiv.vv v8, v16, v24
+# CHECK-NEXT: - - - - 57.00 1.00 - - vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 57.00 1.00 - - vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 57.00 1.00 - - vfsqrt.v v8, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfrsqrt7.v v8, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e32, m1, tu, mu
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 113.00 1.00 - - vfdiv.vv v8, v16, v24
+# CHECK-NEXT: - - - - 113.00 1.00 - - vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 113.00 1.00 - - vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 113.00 1.00 - - vfsqrt.v v8, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfrsqrt7.v v8, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e32, m2, tu, mu
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 225.00 1.00 - - vfdiv.vv v8, v16, v24
+# CHECK-NEXT: - - - - 225.00 1.00 - - vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 225.00 1.00 - - vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 225.00 1.00 - - vfsqrt.v v8, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfrsqrt7.v v8, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e32, m4, tu, mu
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 449.00 1.00 - - vfdiv.vv v8, v16, v24
+# CHECK-NEXT: - - - - 449.00 1.00 - - vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 449.00 1.00 - - vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 449.00 1.00 - - vfsqrt.v v8, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfrsqrt7.v v8, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e32, m8, tu, mu
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 897.00 1.00 - - vfdiv.vv v8, v16, v24
+# CHECK-NEXT: - - - - 897.00 1.00 - - vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 897.00 1.00 - - vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 897.00 1.00 - - vfsqrt.v v8, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfrsqrt7.v v8, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e64, m1, tu, mu
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 115.00 1.00 - - vfdiv.vv v8, v16, v24
+# CHECK-NEXT: - - - - 115.00 1.00 - - vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 115.00 1.00 - - vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 115.00 1.00 - - vfsqrt.v v8, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfrsqrt7.v v8, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e64, m2, tu, mu
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 229.00 1.00 - - vfdiv.vv v8, v16, v24
+# CHECK-NEXT: - - - - 229.00 1.00 - - vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 229.00 1.00 - - vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 229.00 1.00 - - vfsqrt.v v8, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfrsqrt7.v v8, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e64, m4, tu, mu
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 457.00 1.00 - - vfdiv.vv v8, v16, v24
+# CHECK-NEXT: - - - - 457.00 1.00 - - vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 457.00 1.00 - - vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 457.00 1.00 - - vfsqrt.v v8, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfrsqrt7.v v8, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e64, m8, tu, mu
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfrsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 913.00 1.00 - - vfdiv.vv v8, v16, v24
+# CHECK-NEXT: - - - - 913.00 1.00 - - vfdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 913.00 1.00 - - vfrdiv.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmadd.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfnmsub.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 913.00 1.00 - - vfsqrt.v v8, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfrsqrt7.v v8, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e16, mf4, tu, mu
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwadd.wv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwsub.wv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e16, mf2, tu, mu
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwadd.wv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwsub.wv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e16, m1, tu, mu
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwadd.wv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwsub.wv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e16, m2, tu, mu
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwadd.wv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwsub.wv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e16, m4, tu, mu
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.wv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.wv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e16, m8, tu, mu
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.wv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.wv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e32, mf2, tu, mu
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwadd.wv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwsub.wv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e32, m1, tu, mu
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwadd.wv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwsub.wv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e32, m2, tu, mu
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwadd.wv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwsub.wv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e32, m4, tu, mu
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.wv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.wv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e32, m8, tu, mu
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.wv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.wv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e16, m8, tu, mu
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.wv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.wv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e32, mf2, tu, mu
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwadd.wv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwsub.wv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 2.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e32, m1, tu, mu
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwadd.wv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwsub.wv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 3.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e32, m2, tu, mu
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwadd.wv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwsub.wv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 5.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e32, m4, tu, mu
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.wv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.wv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rod.f.f.w v8, v16
+# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, zero, e32, m8, tu, mu
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.wv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwadd.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.wv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwsub.wf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmul.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmul.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmacc.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmacc.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmsac.vv v8, v16, v24
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwnmsac.vf v8, fs0, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfrec7.v v8, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmin.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmin.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmax.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfmax.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnj.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnj.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjn.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjn.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjx.vv v8, v16, v24
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfsgnjx.vf v8, v16, fs0
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.rtz.xu.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.rtz.x.f.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.xu.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.x.v v8, v16
+# CHECK-NEXT: - - - - 9.00 1.00 - - vfwcvt.f.f.v v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rtz.xu.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rtz.x.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.xu.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.x.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.f.f.w v8, v16
+# CHECK-NEXT: - - - - 17.00 1.00 - - vfncvt.rod.f.f.w v8, v16
diff --git a/llvm/test/tools/llvm-mca/RISCV/SpacemitX60/atomic.s b/llvm/test/tools/llvm-mca/RISCV/SpacemitX60/atomic.s
index 8838c86..ecd96a3 100644
--- a/llvm/test/tools/llvm-mca/RISCV/SpacemitX60/atomic.s
+++ b/llvm/test/tools/llvm-mca/RISCV/SpacemitX60/atomic.s
@@ -126,19 +126,19 @@ amomaxu.d.aqrl s5, s4, (s3)
# CHECK-NEXT: 1 8 0.50 * 8 SMX60_LS LR_W lr.w t0, (t1)
# CHECK-NEXT: 1 8 0.50 * 8 SMX60_LS LR_W_AQ lr.w.aq t1, (t2)
# CHECK-NEXT: 1 8 0.50 * 8 SMX60_LS LR_W_RL lr.w.rl t2, (t3)
-# CHECK-NEXT: 1 8 0.50 * 8 SMX60_LS LR_W_AQ_RL lr.w.aqrl t3, (t4)
+# CHECK-NEXT: 1 8 0.50 * 8 SMX60_LS LR_W_AQRL lr.w.aqrl t3, (t4)
# CHECK-NEXT: 1 8 0.50 * 8 SMX60_LS SC_W sc.w t6, t5, (t4)
# CHECK-NEXT: 1 8 0.50 * 8 SMX60_LS SC_W_AQ sc.w.aq t5, t4, (t3)
# CHECK-NEXT: 1 8 0.50 * 8 SMX60_LS SC_W_RL sc.w.rl t4, t3, (t2)
-# CHECK-NEXT: 1 8 0.50 * 8 SMX60_LS SC_W_AQ_RL sc.w.aqrl t3, t2, (t1)
+# CHECK-NEXT: 1 8 0.50 * 8 SMX60_LS SC_W_AQRL sc.w.aqrl t3, t2, (t1)
# CHECK-NEXT: 1 8 0.50 * 8 SMX60_LS LR_D lr.d t0, (t1)
# CHECK-NEXT: 1 8 0.50 * 8 SMX60_LS LR_D_AQ lr.d.aq t1, (t2)
# CHECK-NEXT: 1 8 0.50 * 8 SMX60_LS LR_D_RL lr.d.rl t2, (t3)
-# CHECK-NEXT: 1 8 0.50 * 8 SMX60_LS LR_D_AQ_RL lr.d.aqrl t3, (t4)
+# CHECK-NEXT: 1 8 0.50 * 8 SMX60_LS LR_D_AQRL lr.d.aqrl t3, (t4)
# CHECK-NEXT: 1 8 0.50 * 8 SMX60_LS SC_D sc.d t6, t5, (t4)
# CHECK-NEXT: 1 8 0.50 * 8 SMX60_LS SC_D_AQ sc.d.aq t5, t4, (t3)
# CHECK-NEXT: 1 8 0.50 * 8 SMX60_LS SC_D_RL sc.d.rl t4, t3, (t2)
-# CHECK-NEXT: 1 8 0.50 * 8 SMX60_LS SC_D_AQ_RL sc.d.aqrl t3, t2, (t1)
+# CHECK-NEXT: 1 8 0.50 * 8 SMX60_LS SC_D_AQRL sc.d.aqrl t3, t2, (t1)
# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOSWAP_W amoswap.w a4, ra, (s0)
# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOADD_W amoadd.w a1, a2, (a3)
# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOXOR_W amoxor.w a2, a3, (a4)
@@ -166,15 +166,15 @@ amomaxu.d.aqrl s5, s4, (s3)
# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMAX_W_RL amomax.w.rl s7, s6, (s5)
# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMINU_W_RL amominu.w.rl s6, s5, (s4)
# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMAXU_W_RL amomaxu.w.rl s5, s4, (s3)
-# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOSWAP_W_AQ_RL amoswap.w.aqrl a4, ra, (s0)
-# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOADD_W_AQ_RL amoadd.w.aqrl a1, a2, (a3)
-# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOXOR_W_AQ_RL amoxor.w.aqrl a2, a3, (a4)
-# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOAND_W_AQ_RL amoand.w.aqrl a3, a4, (a5)
-# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOOR_W_AQ_RL amoor.w.aqrl a4, a5, (a6)
-# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMIN_W_AQ_RL amomin.w.aqrl a5, a6, (a7)
-# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMAX_W_AQ_RL amomax.w.aqrl s7, s6, (s5)
-# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMINU_W_AQ_RL amominu.w.aqrl s6, s5, (s4)
-# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMAXU_W_AQ_RL amomaxu.w.aqrl s5, s4, (s3)
+# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOSWAP_W_AQRL amoswap.w.aqrl a4, ra, (s0)
+# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOADD_W_AQRL amoadd.w.aqrl a1, a2, (a3)
+# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOXOR_W_AQRL amoxor.w.aqrl a2, a3, (a4)
+# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOAND_W_AQRL amoand.w.aqrl a3, a4, (a5)
+# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOOR_W_AQRL amoor.w.aqrl a4, a5, (a6)
+# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMIN_W_AQRL amomin.w.aqrl a5, a6, (a7)
+# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMAX_W_AQRL amomax.w.aqrl s7, s6, (s5)
+# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMINU_W_AQRL amominu.w.aqrl s6, s5, (s4)
+# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMAXU_W_AQRL amomaxu.w.aqrl s5, s4, (s3)
# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOSWAP_D amoswap.d a4, ra, (s0)
# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOADD_D amoadd.d a1, a2, (a3)
# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOXOR_D amoxor.d a2, a3, (a4)
@@ -202,15 +202,15 @@ amomaxu.d.aqrl s5, s4, (s3)
# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMAX_D_RL amomax.d.rl s7, s6, (s5)
# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMINU_D_RL amominu.d.rl s6, s5, (s4)
# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMAXU_D_RL amomaxu.d.rl s5, s4, (s3)
-# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOSWAP_D_AQ_RL amoswap.d.aqrl a4, ra, (s0)
-# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOADD_D_AQ_RL amoadd.d.aqrl a1, a2, (a3)
-# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOXOR_D_AQ_RL amoxor.d.aqrl a2, a3, (a4)
-# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOAND_D_AQ_RL amoand.d.aqrl a3, a4, (a5)
-# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOOR_D_AQ_RL amoor.d.aqrl a4, a5, (a6)
-# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMIN_D_AQ_RL amomin.d.aqrl a5, a6, (a7)
-# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMAX_D_AQ_RL amomax.d.aqrl s7, s6, (s5)
-# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMINU_D_AQ_RL amominu.d.aqrl s6, s5, (s4)
-# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMAXU_D_AQ_RL amomaxu.d.aqrl s5, s4, (s3)
+# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOSWAP_D_AQRL amoswap.d.aqrl a4, ra, (s0)
+# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOADD_D_AQRL amoadd.d.aqrl a1, a2, (a3)
+# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOXOR_D_AQRL amoxor.d.aqrl a2, a3, (a4)
+# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOAND_D_AQRL amoand.d.aqrl a3, a4, (a5)
+# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOOR_D_AQRL amoor.d.aqrl a4, a5, (a6)
+# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMIN_D_AQRL amomin.d.aqrl a5, a6, (a7)
+# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMAX_D_AQRL amomax.d.aqrl s7, s6, (s5)
+# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMINU_D_AQRL amominu.d.aqrl s6, s5, (s4)
+# CHECK-NEXT: 1 12 0.50 * * 12 SMX60_LS AMOMAXU_D_AQRL amomaxu.d.aqrl s5, s4, (s3)
# CHECK: Resources:
# CHECK-NEXT: [0] - SMX60_FP
diff --git a/llvm/test/tools/llvm-offload-binary/llvm-offload-binary.ll b/llvm/test/tools/llvm-offload-binary/llvm-offload-binary.ll
new file mode 100644
index 0000000..c6027b3
--- /dev/null
+++ b/llvm/test/tools/llvm-offload-binary/llvm-offload-binary.ll
@@ -0,0 +1,14 @@
+; RUN: llvm-offload-binary -o %t --image=file=%s,arch=abc,triple=x-y-z
+; RUN: llvm-objdump --offloading %t | FileCheck %s
+; RUN: llvm-offload-binary %t --image=file=%t2,arch=abc,triple=x-y-z
+; RUN: diff %s %t2
+
+; CHECK: OFFLOADING IMAGE [0]:
+; CHECK-NEXT: kind <none>
+; CHECK-NEXT: arch abc
+; CHECK-NEXT: triple x-y-z
+; CHECK-NEXT: producer none
+
+; RUN: llvm-offload-binary -o %t3 --image=file=%s
+; RUN: llvm-offload-binary %t3 --image=file=%t4
+; RUN: diff %s %t4
diff --git a/llvm/test/tools/llvm-reduce/inline-call-sites-cost.ll b/llvm/test/tools/llvm-reduce/inline-call-sites-cost.ll
new file mode 100644
index 0000000..fc25ca4
--- /dev/null
+++ b/llvm/test/tools/llvm-reduce/inline-call-sites-cost.ll
@@ -0,0 +1,95 @@
+; RUN: llvm-reduce --abort-on-invalid-reduction --delta-passes=inline-call-sites -reduce-callsite-inline-threshold=3 --test FileCheck --test-arg --check-prefix=CHECK --test-arg %s --test-arg --input-file %s -o %t
+; RUN: FileCheck -check-prefixes=RESULT,CHECK %s < %t
+
+declare void @extern_b()
+declare void @extern_a()
+
+; RESULT: @gv_init = global ptr @no_inline_noncall_user
+@gv_init = global ptr @no_inline_noncall_user
+
+
+; CHECK-LABEL: define void @no_inline_noncall_user(
+define void @no_inline_noncall_user() {
+ call void @extern_a()
+ call void @extern_a()
+ call void @extern_a()
+ call void @extern_a()
+ ret void
+}
+
+; RESULT-LABEL: define void @noncall_user_call() {
+; RESULT-NEXT: call void @no_inline_noncall_user()
+; RESULT-NEXT: ret void
+define void @noncall_user_call() {
+ call void @no_inline_noncall_user()
+ ret void
+}
+
+; RESULT-LABEL: define void @big_callee_small_caller_callee() {
+define void @big_callee_small_caller_callee() {
+ call void @extern_a()
+ call void @extern_a()
+ call void @extern_a()
+ call void @extern_a()
+ ret void
+}
+
+; RESULT-LABEL: define void @big_callee_small_caller_caller() {
+; RESULT-NEXT: call void @extern_b()
+; RESULT-NEXT: call void @extern_a()
+; RESULT-NEXT: call void @extern_a()
+; RESULT-NEXT: call void @extern_a()
+; RESULT-NEXT: call void @extern_a()
+; RESULT-NEXT: ret void
+define void @big_callee_small_caller_caller() {
+ call void @extern_b()
+ call void @big_callee_small_caller_callee()
+ ret void
+}
+
+; RESULT-LABEL: define void @small_callee_big_caller_callee() {
+; RESULT-NEXT: call void @extern_a()
+; RESULT-NEXT: ret void
+define void @small_callee_big_caller_callee() {
+ call void @extern_a()
+ ret void
+}
+
+; RESULT-LABEL: define void @small_callee_big_caller_caller() {
+; RESULT-NEXT: call void @extern_b()
+; RESULT-NEXT: call void @extern_a()
+; RESULT-NEXT: call void @extern_b()
+; RESULT-NEXT: call void @extern_b()
+; RESULT-NEXT: ret void
+define void @small_callee_big_caller_caller() {
+ call void @extern_b()
+ call void @small_callee_big_caller_callee()
+ call void @extern_b()
+ call void @extern_b()
+ ret void
+}
+
+; RESULT-LABEL: define void @big_callee_big_caller_callee() {
+define void @big_callee_big_caller_callee() {
+ call void @extern_a()
+ call void @extern_a()
+ call void @extern_a()
+ call void @extern_a()
+ ret void
+}
+
+; RESULT-LABEL: define void @big_callee_big_caller_caller() {
+; RESULT-NEXT: call void @extern_b()
+; RESULT-NEXT: call void @big_callee_big_caller_callee()
+; RESULT-NEXT: call void @extern_b()
+; RESULT-NEXT: call void @extern_b()
+; RESULT-NEXT: call void @extern_b()
+; RESULT-NEXT: ret void
+define void @big_callee_big_caller_caller() {
+ call void @extern_b()
+ call void @big_callee_big_caller_callee()
+ call void @extern_b()
+ call void @extern_b()
+ call void @extern_b()
+ ret void
+}
diff --git a/llvm/test/tools/llvm-reduce/inline-call-sites.ll b/llvm/test/tools/llvm-reduce/inline-call-sites.ll
new file mode 100644
index 0000000..34775d9
--- /dev/null
+++ b/llvm/test/tools/llvm-reduce/inline-call-sites.ll
@@ -0,0 +1,765 @@
+; RUN: llvm-reduce --abort-on-invalid-reduction --delta-passes=inline-call-sites -reduce-callsite-inline-threshold=-1 --test FileCheck --test-arg --check-prefixes=CHECK,INTERESTING --test-arg %s --test-arg --input-file %s -o %t
+; RUN: FileCheck -check-prefixes=RESULT,CHECK %s < %t
+
+; RESULT: @gv = global [2 x ptr] [ptr @only_gv_user, ptr @simple_callee]
+@gv = global [2 x ptr] [ptr @only_gv_user, ptr @simple_callee]
+
+; RESULT: @indirectbr.L = internal unnamed_addr constant [3 x ptr] [ptr blockaddress(@callee_with_indirectbr, %L1), ptr blockaddress(@callee_with_indirectbr, %L2), ptr null], align 8
+@indirectbr.L = internal unnamed_addr constant [3 x ptr] [ptr blockaddress(@callee_with_indirectbr, %L1), ptr blockaddress(@callee_with_indirectbr, %L2), ptr null], align 8
+
+
+; CHECK-LABEL: define void @simple_callee(
+; RESULT-NEXT: store i32 123, ptr %arg, align 4
+; RESULT-NEXT: ret void
+define void @simple_callee(ptr %arg) {
+ store i32 123, ptr %arg
+ ret void
+}
+
+; CHECK-LABEL: define void @simple_caller(
+; RESULT-NEXT: store i32 123, ptr %outer.arg, align 4
+; RESULT-NEXT: ret void
+define void @simple_caller(ptr %outer.arg) {
+ call void @simple_callee(ptr %outer.arg)
+ ret void
+}
+
+; CHECK-LABEL: define void @multi_simple_caller(
+; RESULT-NEXT: store i32 123, ptr %outer.arg, align 4
+; RESULT-NEXT: store i32 123, ptr %outer.arg, align 4
+; RESULT-NEXT: store i32 123, ptr null, align 4
+; RESULT-NEXT: ret void
+define void @multi_simple_caller(ptr %outer.arg) {
+ call void @simple_callee(ptr %outer.arg)
+ call void @simple_callee(ptr %outer.arg)
+ call void @simple_callee(ptr null)
+ ret void
+}
+
+; CHECK-LABEL: define void @only_gv_user(
+; RESULT-NEXT: store i32 666, ptr %arg, align 4
+; RESULT-NEXT: ret void
+define void @only_gv_user(ptr %arg) {
+ store i32 666, ptr %arg
+ ret void
+}
+
+; CHECK-LABEL: define void @recursive(
+; RESULT-NEXT: call void @recursive(ptr %arg)
+; RESULT-NEXT: ret void
+define void @recursive(ptr %arg) {
+ call void @recursive(ptr %arg)
+ ret void
+}
+
+; CHECK-LABEL: define void @recursive_with_wrong_callsite_type(
+; RESULT-NEXT: call void @recursive_with_wrong_callsite_type(ptr %arg, i32 2)
+; RESULT-NEXT: ret void
+define void @recursive_with_wrong_callsite_type(ptr %arg) {
+ call void @recursive_with_wrong_callsite_type(ptr %arg, i32 2)
+ ret void
+}
+
+; CHECK-LABEL: define void @non_callee_use(
+; RESULT-NEXT: store i32 567, ptr %arg, align 4
+; RESULT-NEXT: ret void
+define void @non_callee_use(ptr %arg) {
+ store i32 567, ptr %arg
+ ret void
+}
+
+declare void @extern_ptr_use(ptr)
+
+; CHECK-LABEL: define void @non_callee_user(
+; RESULT-NEXT: call void @extern_ptr_use(ptr @non_callee_use)
+; RESULT-NEXT: ret void
+define void @non_callee_user() {
+ call void @extern_ptr_use(ptr @non_callee_use)
+ ret void
+}
+
+; CHECK-LABEL: define void @non_call_inst_use(
+define void @non_call_inst_use(ptr %arg) {
+ store i32 999, ptr %arg
+ ret void
+}
+
+; CHECK-LABEL: define void @non_call_inst_user(
+; RESULT-NEXT: store ptr @non_call_inst_use, ptr %arg, align 8
+; RESULT-NEXT: ret void
+define void @non_call_inst_user(ptr %arg) {
+ store ptr @non_call_inst_use, ptr %arg
+ ret void
+}
+
+; CHECK-LABEL: define i32 @used_wrong_call_type(
+; RESULT-NEXT: store i32 123, ptr %arg, align 4
+; RESULT-NEXT: ret i32 8
+define i32 @used_wrong_call_type(ptr %arg) {
+ store i32 123, ptr %arg
+ ret i32 8
+}
+
+; Inlining doesn't support the UB cases
+; CHECK-LABEL: define void @use_wrong_call_type(
+; RESULT-NEXT: call void @used_wrong_call_type(ptr %outer.arg)
+; RESULT-NEXT: ret void
+define void @use_wrong_call_type(ptr %outer.arg) {
+ call void @used_wrong_call_type(ptr %outer.arg)
+ ret void
+}
+
+; INTERESTING-LABEL: define void @incompatible_gc_callee(
+
+; RESULT-LABEL: define void @incompatible_gc_callee(ptr %arg) gc "gc0" {
+; RESULT-NEXT: store i32 10000, ptr %arg, align 4
+; RESULT-NEXT: ret void
+define void @incompatible_gc_callee(ptr %arg) gc "gc0" {
+ store i32 10000, ptr %arg
+ ret void
+}
+
+; INTERESTING-LABEL: define void @incompatible_gc_caller(
+
+; RESULT-LABEL: define void @incompatible_gc_caller(ptr %outer.arg) gc "gc1" {
+; RESULT-NEXT: call void @incompatible_gc_callee(ptr %outer.arg)
+; RESULT-NEXT: ret void
+define void @incompatible_gc_caller(ptr %outer.arg) gc "gc1" {
+ call void @incompatible_gc_callee(ptr %outer.arg)
+ ret void
+}
+
+; INTERESTING-LABEL: define void @propagate_callee_gc(
+
+; RESULT-LABEL: define void @propagate_callee_gc(ptr %arg) gc "propagate-gc" {
+; RESULT-NEXT: store i32 10000, ptr %arg, align 4
+; RESULT-NEXT: ret void
+define void @propagate_callee_gc(ptr %arg) gc "propagate-gc" {
+ store i32 10000, ptr %arg
+ ret void
+}
+
+; INTERESTING-LABEL: define void @propagate_caller_gc(
+
+; RESULT-LABEL: define void @propagate_caller_gc(ptr %arg) gc "propagate-gc" {
+; RESULT-NEXT: store i32 10000, ptr %arg, align 4
+; RESULT-NEXT: ret void
+define void @propagate_caller_gc(ptr %arg) {
+ call void @propagate_callee_gc(ptr %arg)
+ ret void
+}
+
+declare i32 @__gxx_personality_v0(...)
+
+; INTERESTING-LABEL: define void @propagate_callee_personality(
+
+; RESULT-LABEL: define void @propagate_callee_personality(ptr %arg) personality ptr @__gxx_personality_v0 {
+; RESULT-NEXT: store i32 2000, ptr %arg, align 4
+; RESULT-NEXT: ret void
+define void @propagate_callee_personality(ptr %arg) personality ptr @__gxx_personality_v0 {
+ store i32 2000, ptr %arg
+ ret void
+}
+
+; INTERESTING-LABEL: define void @propagate_caller_personality(
+
+; RESULT-LABEL: define void @propagate_caller_personality(ptr %arg) personality ptr @__gxx_personality_v0 {
+; RESULT-NEXT: store i32 2000, ptr %arg, align 4
+; RESULT-NEXT: ret void
+define void @propagate_caller_personality(ptr %arg) {
+ call void @propagate_callee_personality(ptr %arg)
+ ret void
+}
+
+; CHECK-LABEL: define void @callee_with_indirectbr(
+define void @callee_with_indirectbr() {
+entry:
+ br label %L1
+
+L1: ; preds = %entry, %L1
+ %i = phi i32 [ 0, %entry ], [ %inc, %L1 ]
+ %inc = add i32 %i, 1
+ %idxprom = zext i32 %i to i64
+ %arrayidx = getelementptr inbounds [3 x ptr], ptr @indirectbr.L, i64 0, i64 %idxprom
+ %brtarget = load ptr, ptr %arrayidx, align 8
+ indirectbr ptr %brtarget, [label %L1, label %L2]
+
+L2: ; preds = %L1
+ ret void
+}
+
+; CHECK-LABEL: define void @calls_func_with_indirectbr(
+
+; RESULT: L1.i:
+; RESULT-NEXT: %i.i = phi i32 [ 0, %call ], [ %inc.i, %L1.i ]
+; RESULT-NEXT: %inc.i = add i32 %i.i, 1
+; RESULT-NEXT: %idxprom.i = zext i32 %i.i to i64
+; RESULT-NEXT: %arrayidx.i = getelementptr inbounds [3 x ptr], ptr @indirectbr.L, i64 0, i64 %idxprom.i
+; RESULT-NEXT: %brtarget.i = load ptr, ptr %arrayidx.i, align 8
+; RESULT-NEXT: indirectbr ptr %brtarget.i, [label %L1.i, label %callee_with_indirectbr.exit]
+
+define void @calls_func_with_indirectbr(i1 %arg0) {
+entry:
+ br i1 %arg0, label %call, label %ret
+
+call:
+ call void @callee_with_indirectbr()
+ br label %ret
+
+ret:
+ ret void
+}
+
+
+; CHECK-LABEL: define ptr @callee_with_blockaddress_use(
+; RESULT: L2:
+; RESULT-NEXT: store ptr blockaddress(@callee_with_blockaddress_use, %L1), ptr %alloca, align 8
+; RESULT-NEXT: store ptr blockaddress(@callee_with_blockaddress_use, %L2), ptr %alloca, align 8
+; RESULT-NEXT: store ptr blockaddress(@callee_with_blockaddress_use, %L3), ptr %alloca, align 8
+; RESULT-NEXT: %cond1 = load volatile i1, ptr addrspace(1) null
+; RESULT-NEXT: br i1 %cond1, label %L1, label %L3
+define ptr @callee_with_blockaddress_use() {
+entry:
+ %alloca = alloca ptr
+ %cond0 = load volatile i1, ptr addrspace(1) null
+ br i1 %cond0, label %L1, label %L2
+
+L1:
+ br label %L2
+
+L2:
+ ; reference an earlier block
+ store ptr blockaddress(@callee_with_blockaddress_use, %L1), ptr %alloca
+
+ ; reference the block itself from the block
+ store ptr blockaddress(@callee_with_blockaddress_use, %L2), ptr %alloca
+
+ ; reference a later block
+ store ptr blockaddress(@callee_with_blockaddress_use, %L3), ptr %alloca
+
+ %cond1 = load volatile i1, ptr addrspace(1) null
+ br i1 %cond1, label %L1, label %L3
+
+L3:
+ %load = load ptr, ptr %alloca
+ ret ptr %load
+}
+
+; FIXME: This is not correctly remapping the blockaddress use
+; CHECK-LABEL: define void @calls_func_with_blockaddress_use(
+; RESULT: entry:
+; RESULT-NEXT: %alloca.i = alloca ptr, align 8
+; RESULT-NEXT: store i32 1000, ptr null, align 4
+; RESULT-NEXT: br i1 %arg0, label %call, label %ret
+
+; RESULT: call:
+; RESULT-NEXT: store i32 2000, ptr null, align 4
+; RESULT-NEXT: call void @llvm.lifetime.start.p0(ptr %alloca.i)
+; RESULT-NEXT: %cond0.i = load volatile i1, ptr addrspace(1) null, align 1
+; RESULT-NEXT: br i1 %cond0.i, label %L1.i, label %L2.i
+
+; RESULT: L1.i: ; preds = %L2.i, %call
+; RESULT-NEXT: br label %L2.i
+
+; RESULT: L2.i: ; preds = %L1.i, %call
+; RESULT-NEXT: store ptr blockaddress(@callee_with_blockaddress_use, %L1), ptr %alloca.i, align 8
+; RESULT-NEXT: store ptr blockaddress(@calls_func_with_blockaddress_use, %L2.i), ptr %alloca.i, align 8
+; RESULT-NEXT: store ptr blockaddress(@callee_with_blockaddress_use, %L3), ptr %alloca.i, align 8
+; RESULT-NEXT: %cond1.i = load volatile i1, ptr addrspace(1) null, align 1
+; RESULT-NEXT: br i1 %cond1.i, label %L1.i, label %callee_with_blockaddress_use.exit
+
+; RESULT: callee_with_blockaddress_use.exit: ; preds = %L2.i
+; RESULT-NEXT: %load.i = load ptr, ptr %alloca.i, align 8
+; RESULT-NEXT: call void @llvm.lifetime.end.p0(ptr %alloca.i)
+; RESULT-NEXT: store i32 3000, ptr null, align 4
+; RESULT-NEXT: br label %ret
+
+; RESULT: ret: ; preds = %callee_with_blockaddress_use.exit, %entry
+; RESULT-NEXT: store i32 4000, ptr null, align 4
+; RESULT-NEXT: ret void
+define void @calls_func_with_blockaddress_use(i1 %arg0) {
+entry:
+ store i32 1000, ptr null
+ br i1 %arg0, label %call, label %ret
+
+call:
+ store i32 2000, ptr null
+ call ptr @callee_with_blockaddress_use()
+ store i32 3000, ptr null
+ br label %ret
+
+ret:
+ store i32 4000, ptr null
+ ret void
+}
+
+; CHECK-LABEL: define void @callee_with_fallthrough_blockaddress_use(
+; RESULT: L2:
+; RESULT-NEXT: store ptr blockaddress(@callee_with_fallthrough_blockaddress_use, %L1), ptr %alloca, align 8
+; RESULT-NEXT: store ptr blockaddress(@callee_with_fallthrough_blockaddress_use, %L2), ptr %alloca, align 8
+; RESULT-NEXT: store ptr blockaddress(@callee_with_fallthrough_blockaddress_use, %L3), ptr %alloca, align 8
+; RESULT-NEXT: br label %L3
+define void @callee_with_fallthrough_blockaddress_use() {
+entry:
+ %alloca = alloca ptr
+ br label %L1
+
+L1:
+ store i32 999, ptr null
+ br label %L2
+
+L2: ; preds = %entry, %L1
+ ; reference a block before this block
+ store ptr blockaddress(@callee_with_fallthrough_blockaddress_use, %L1), ptr %alloca
+
+ ; reference the block itself from the block
+ store ptr blockaddress(@callee_with_fallthrough_blockaddress_use, %L2), ptr %alloca
+
+ ; reference a block after this block
+ store ptr blockaddress(@callee_with_fallthrough_blockaddress_use, %L3), ptr %alloca
+ br label %L3
+
+L3: ; preds = %L1
+ %load = load ptr, ptr %alloca
+ ret void
+}
+
+
+; CHECK-LABEL: define void @calls_func_with_fallthrough_blockaddress_use(
+; RESULT: entry:
+; RESULT-NEXT: %alloca.i = alloca ptr, align 8
+; RESULT-NEXT: store i32 1000, ptr null
+; RESULT-NEXT: br i1 %arg0, label %call, label %ret
+
+; RESULT: call:
+; RESULT-NEXT: store i32 2000, ptr null, align 4
+; RESULT-NEXT: call void @llvm.lifetime.start.p0(ptr %alloca.i)
+; RESULT-NEXT: br label %L1.i
+
+; RESULT: L1.i: ; preds = %call
+; RESULT-NEXT: store i32 999, ptr null, align 4
+; RESULT-NEXT: br label %L2.i
+
+; RESULT: L2.i:
+; RESULT-NEXT: store ptr blockaddress(@calls_func_with_fallthrough_blockaddress_use, %L1.i), ptr %alloca.i, align 8
+; RESULT-NEXT: store ptr blockaddress(@calls_func_with_fallthrough_blockaddress_use, %L2.i), ptr %alloca.i, align 8
+; RESULT-NEXT: store ptr blockaddress(@callee_with_fallthrough_blockaddress_use, %L3), ptr %alloca.i, align 8
+; RESULT-NEXT: br label %callee_with_fallthrough_blockaddress_use.exit
+
+; RESULT: callee_with_fallthrough_blockaddress_use.exit: ; preds = %L2.i
+; RESULT-NEXT: %load.i = load ptr, ptr %alloca.i, align 8
+; RESULT-NEXT: call void @llvm.lifetime.end.p0(ptr %alloca.i)
+; RESULT-NEXT: store i32 3000, ptr null, align 4
+; RESULT-NEXT: br label %ret
+
+; RESULT: ret:
+; RESULT-NEXT: store i32 4000, ptr null, align 4
+; RESULT-NEXT: ret void
+define void @calls_func_with_fallthrough_blockaddress_use(i1 %arg0) {
+entry:
+ store i32 1000, ptr null
+ br i1 %arg0, label %call, label %ret
+
+call:
+ store i32 2000, ptr null
+ call void @callee_with_fallthrough_blockaddress_use()
+ store i32 3000, ptr null
+ br label %ret
+
+ret:
+ store i32 4000, ptr null
+ ret void
+}
+
+declare i32 @extern_returns_twice() returns_twice
+
+; CHECK-LABEL: define i32 @callee_returns_twice(
+; RESULT-NEXT: %call = call i32 @extern_returns_twice()
+; RESULT-NEXT: %add = add nsw i32 1, %call
+; RESULT-NEXT: ret i32 %add
+define i32 @callee_returns_twice() {
+ %call = call i32 @extern_returns_twice()
+ %add = add nsw i32 1, %call
+ ret i32 %add
+}
+
+; CHECK-LABEL: define i32 @caller_returns_twice_calls_callee_returns_twice(
+; RESULT-NEXT: %call.i = call i32 @extern_returns_twice()
+; RESULT-NEXT: %add.i = add nsw i32 1, %call.i
+; RESULT-NEXT: %add = add nsw i32 1, %add.i
+; RESULT-NEXT: ret i32 %add
+ define i32 @caller_returns_twice_calls_callee_returns_twice() returns_twice {
+ %call = call i32 @callee_returns_twice()
+ %add = add nsw i32 1, %call
+ ret i32 %add
+}
+
+; Inliner usually blocks inlining of returns_twice functions into
+; non-returns_twice functions
+; CHECK-LABEL: define i32 @regular_caller_calls_callee_returns_twice() {
+; RESULT-NEXT: %call.i = call i32 @extern_returns_twice()
+; RESULT-NEXT: %add.i = add nsw i32 1, %call.i
+; RESULT-NEXT: %add = add nsw i32 1, %add.i
+; RESULT-NEXT: ret i32 %add
+define i32 @regular_caller_calls_callee_returns_twice() {
+ %call = call i32 @callee_returns_twice()
+ %add = add nsw i32 1, %call
+ ret i32 %add
+}
+
+; CHECK-LABEL: define void @caller_with_vastart(
+; RESULT-NEXT: %ap = alloca ptr, align 4
+; RESULT-NEXT: %ap2 = alloca ptr, align 4
+; RESULT-NEXT: call void @llvm.va_start.p0(ptr nonnull %ap)
+; RESULT-NEXT: call void @llvm.va_end.p0(ptr nonnull %ap)
+; RESULT-NEXT: call void @llvm.va_start.p0(ptr nonnull %ap)
+; RESULT-NEXT: call void @llvm.va_end.p0(ptr nonnull %ap)
+; RESULT-NEXT: ret void
+define void @caller_with_vastart(ptr noalias nocapture readnone %args, ...) {
+ %ap = alloca ptr, align 4
+ %ap2 = alloca ptr, align 4
+ call void @llvm.va_start.p0(ptr nonnull %ap)
+ call fastcc void @callee_with_vaend(ptr nonnull %ap)
+ call void @llvm.va_start.p0(ptr nonnull %ap)
+ call fastcc void @callee_with_vaend_alwaysinline(ptr nonnull %ap)
+ ret void
+}
+
+; CHECK-LABEL: define fastcc void @callee_with_vaend(
+; RESULT-NEXT: tail call void @llvm.va_end.p0(ptr %a)
+; RESULT-NEXT: ret void
+define fastcc void @callee_with_vaend(ptr %a) {
+ tail call void @llvm.va_end.p0(ptr %a)
+ ret void
+}
+
+; CHECK-LABEL: define internal fastcc void @callee_with_vaend_alwaysinline(
+; RESULT-NEXT: tail call void @llvm.va_end.p0(ptr %a)
+; RESULT-NEXT: ret void
+define internal fastcc void @callee_with_vaend_alwaysinline(ptr %a) alwaysinline {
+ tail call void @llvm.va_end.p0(ptr %a)
+ ret void
+}
+
+; CHECK-LABEL: define i32 @callee_with_va_start(
+define i32 @callee_with_va_start(ptr %a, ...) {
+ %vargs = alloca ptr, align 8
+ tail call void @llvm.va_start.p0(ptr %a)
+ %va1 = va_arg ptr %vargs, i32
+ call void @llvm.va_end(ptr %vargs)
+ ret i32 %va1
+}
+
+; CHECK-LABEL: define i32 @callee_vastart_caller(
+; RESULT-NEXT: %vargs.i = alloca ptr, align 8
+; RESULT-NEXT: %ap = alloca ptr, align 4
+; RESULT-NEXT: %b = load i32, ptr null, align 4
+; RESULT-NEXT: call void @llvm.lifetime.start.p0(ptr %vargs.i)
+; RESULT-NEXT: call void @llvm.va_start.p0(ptr nonnull %ap)
+; RESULT-NEXT: %va1.i = va_arg ptr %vargs.i, i32
+; RESULT-NEXT: call void @llvm.va_end.p0(ptr %vargs.i)
+; RESULT-NEXT: call void @llvm.lifetime.end.p0(ptr %vargs.i)
+; RESULT-NEXT: ret i32 %va1.i
+define i32 @callee_vastart_caller(ptr noalias nocapture readnone %args, ...) {
+ %ap = alloca ptr, align 4
+ %b = load i32, ptr null
+ %result = call i32 (ptr, ...) @callee_with_va_start(ptr nonnull %ap, i32 %b)
+ ret i32 %result
+}
+
+declare void @llvm.localescape(...)
+
+; CHECK-LABEL: define internal void @callee_uses_localrecover(
+define internal void @callee_uses_localrecover(ptr %fp) {
+ %a.i8 = call ptr @llvm.localrecover(ptr @callee_uses_localescape, ptr %fp, i32 0)
+ store i32 42, ptr %a.i8
+ ret void
+}
+
+; CHECK-LABEL: define i32 @callee_uses_localescape(
+; RESULT-NEXT: %a = alloca i32, align 4
+; RESULT-NEXT: call void (...) @llvm.localescape(ptr %a)
+; RESULT-NEXT: %fp = call ptr @llvm.frameaddress.p0(i32 0)
+; RESULT-NEXT: %a.i8.i = call ptr @llvm.localrecover(ptr @callee_uses_localescape, ptr %fp, i32 0)
+; RESULT-NEXT: store i32 42, ptr %a.i8.i, align 4
+; RESULT-NEXT: %r = load i32, ptr %a, align 4
+; RESULT-NEXT: ret i32 %r
+define i32 @callee_uses_localescape() alwaysinline {
+ %a = alloca i32
+ call void (...) @llvm.localescape(ptr %a)
+ %fp = call ptr @llvm.frameaddress(i32 0)
+ tail call void @callee_uses_localrecover(ptr %fp)
+ %r = load i32, ptr %a
+ ret i32 %r
+}
+
+; CHECK-LABEL: define i32 @callee_uses_localescape_caller(
+; RESULT-NEXT: %a.i = alloca i32, align 4
+; RESULT-NEXT: call void @llvm.lifetime.start.p0(ptr %a.i)
+; RESULT-NEXT: call void (...) @llvm.localescape(ptr %a.i)
+; RESULT-NEXT: %fp.i = call ptr @llvm.frameaddress.p0(i32 0)
+; RESULT-NEXT: %a.i8.i.i = call ptr @llvm.localrecover(ptr @callee_uses_localescape, ptr %fp.i, i32 0)
+; RESULT-NEXT: store i32 42, ptr %a.i8.i.i, align 4
+; RESULT-NEXT: %r.i = load i32, ptr %a.i, align 4
+; RESULT-NEXT: call void @llvm.lifetime.end.p0(ptr %a.i)
+; RESULT-NEXT: ret i32 %r.i
+define i32 @callee_uses_localescape_caller() {
+ %r = tail call i32 @callee_uses_localescape()
+ ret i32 %r
+}
+
+declare void @llvm.icall.branch.funnel(...)
+
+; CHECK-LABEL: define void @callee_uses_branch_funnel(
+; RESULT-NEXT: musttail call void (...) @llvm.icall.branch.funnel(...)
+; RESULT-NEXT: ret void
+define void @callee_uses_branch_funnel(...) {
+ musttail call void (...) @llvm.icall.branch.funnel(...)
+ ret void
+}
+
+; FIXME: This should fail the verifier after inlining
+; CHECK-LABEL: define void @callee_branch_funnel_musttail_caller(
+; RESULT-NEXT: call void (...) @llvm.icall.branch.funnel()
+; RESULT-NEXT: ret void
+define void @callee_branch_funnel_musttail_caller() {
+ call void (...) @callee_uses_branch_funnel()
+ ret void
+}
+
+; Ignore noinline on the callee function
+; CHECK-LABEL: define void @noinline_callee(
+; RESULT-NEXT: store i32 123, ptr %arg, align 4
+; RESULT-NEXT: ret void
+define void @noinline_callee(ptr %arg) {
+ store i32 123, ptr %arg
+ ret void
+}
+
+; CHECK-LABEL: define void @calls_noinline_func(
+; RESULT-NEXT: store i32 123, ptr %outer.arg, align 4
+; RESULT-NEXT: ret void
+define void @calls_noinline_func(ptr %outer.arg) {
+ call void @noinline_callee(ptr %outer.arg)
+ ret void
+}
+
+; Ignore noinline on the callsite
+; CHECK-LABEL: define void @calls_noinline_callsite(
+; RESULT-NEXT: store i32 123, ptr %outer.arg, align 4
+; RESULT-NEXT: ret void
+define void @calls_noinline_callsite(ptr %outer.arg) {
+ call void @simple_callee(ptr %outer.arg) noinline
+ ret void
+}
+
+; Ignore optnone
+; CHECK-LABEL: define void @optnone_callee(
+; RESULT-NEXT: store i32 5555, ptr %arg, align 4
+; RESULT-NEXT: ret void
+define void @optnone_callee(ptr %arg) optnone noinline {
+ store i32 5555, ptr %arg
+ ret void
+}
+
+; CHECK-LABEL: define void @calls_optnone_callee(
+; RESULT-NEXT: store i32 5555, ptr %outer.arg, align 4
+; RESULT-NEXT: ret void
+define void @calls_optnone_callee(ptr %outer.arg) {
+ call void @optnone_callee(ptr %outer.arg)
+ ret void
+}
+
+; CHECK-LABEL: define void @optnone_caller(
+; RESULT-NEXT: store i32 123, ptr %outer.arg, align 4
+; RESULT-NEXT: ret void
+define void @optnone_caller(ptr %outer.arg) optnone noinline {
+ call void @simple_callee(ptr %outer.arg)
+ ret void
+}
+
+; CHECK-LABEL: define weak void @interposable_callee(
+; RESULT-NEXT: store i32 2024, ptr %arg, align 4
+; RESULT-NEXT: ret void
+define weak void @interposable_callee(ptr %arg) {
+ store i32 2024, ptr %arg
+ ret void
+}
+
+; Ignore interposable linkage
+; CHECK-LABEL: @calls_interposable_callee(
+; RESULT-NEXT: store i32 2024, ptr %arg, align 4
+; RESULT-NEXT: ret void
+define void @calls_interposable_callee(ptr %arg) {
+ call void @interposable_callee(ptr %arg)
+ ret void
+}
+
+; Ignore null_pointer_is_valid
+; CHECK-LABEL: @null_pointer_is_valid_callee(
+; RESULT-NEXT: store i32 42069, ptr %arg, align 4
+; RESULT-NEXT: ret void
+define void @null_pointer_is_valid_callee(ptr %arg) null_pointer_is_valid {
+ store i32 42069, ptr %arg
+ ret void
+}
+
+; CHECK-LABEL: @calls_null_pointer_is_valid_callee(
+; RESULT-NEXT: store i32 42069, ptr %arg, align 4
+; RESULT-NEXT: ret void
+define void @calls_null_pointer_is_valid_callee(ptr %arg) {
+ call void @null_pointer_is_valid_callee(ptr %arg)
+ ret void
+}
+
+; CHECK-LABEL: @byval_arg_uses_non_alloca_addrspace(
+; RESULT-NEXT: %load = load i32, ptr addrspace(1) %arg, align 4
+; RESULT-NEXT: ret i32 %load
+define i32 @byval_arg_uses_non_alloca_addrspace(ptr addrspace(1) byval(i32) %arg) {
+ %load = load i32, ptr addrspace(1) %arg
+ ret i32 %load
+}
+
+; CHECK-LABEL: @calls_byval_arg_uses_non_alloca_addrspace(
+; RESULT-NEXT: %arg1 = alloca i32, align 4, addrspace(1)
+; RESULT-NEXT: call void @llvm.lifetime.start.p1(ptr addrspace(1) %arg1)
+; RESULT-NEXT: call void @llvm.memcpy.p1.p1.i64(ptr addrspace(1) align 4 %arg1, ptr addrspace(1) %arg, i64 4, i1 false)
+; RESULT-NEXT: %load.i = load i32, ptr addrspace(1) %arg1, align 4
+; RESULT-NEXT: call void @llvm.lifetime.end.p1(ptr addrspace(1) %arg1)
+; RESULT-NEXT: ret i32 %load.i
+define i32 @calls_byval_arg_uses_non_alloca_addrspace(ptr addrspace(1) %arg) {
+ %call = call i32 @byval_arg_uses_non_alloca_addrspace(ptr addrspace(1) byval(i32) %arg)
+ ret i32 %call
+}
+
+; CHECK-LABEL: define void @callee_stacksize(
+; RESULT-NEXT: %alloca = alloca [4096 x i32]
+; RESULT-NEXT: store i32 12345678, ptr %arg
+; RESULT-NEXT: store i32 0, ptr %alloca
+; RESULT-NEXT: ret void
+define void @callee_stacksize(ptr %arg) "inline-max-stacksize"="4" {
+ %alloca = alloca [4096 x i32]
+ store i32 12345678, ptr %arg
+ store i32 0, ptr %alloca
+ ret void
+}
+
+; CHECK-LABEL: define void @caller_stacksize(
+; RESULT-NEXT: %alloca.i = alloca [4096 x i32], align 4
+; RESULT-NEXT: call void @llvm.lifetime.start.p0(ptr %alloca.i)
+; RESULT-NEXT: store i32 12345678, ptr %arg, align 4
+; RESULT-NEXT: store i32 0, ptr %alloca.i, align 4
+; RESULT-NEXT: call void @llvm.lifetime.end.p0(ptr %alloca.i)
+; RESULT-NEXT: ret void
+define void @caller_stacksize(ptr %arg) {
+ call void @callee_stacksize(ptr %arg)
+ ret void
+}
+
+; CHECK-LABEL: define void @callee_dynamic_alloca(
+; RESULT-NEXT: %alloca = alloca i32, i32 %n, align 4
+; RESULT-NEXT: store i32 12345678, ptr %arg, align 4
+; RESULT-NEXT: store i32 0, ptr %alloca, align 4
+; RESULT-NEXT: ret void
+define void @callee_dynamic_alloca(ptr %arg, i32 %n) "inline-max-stacksize"="4" {
+ %alloca = alloca i32, i32 %n
+ store i32 12345678, ptr %arg
+ store i32 0, ptr %alloca
+ ret void
+}
+
+; CHECK-LABEL: define void @caller_dynamic_alloca(
+; RESULT-NEXT: %savedstack = call ptr @llvm.stacksave.p0()
+; RESULT-NEXT: %alloca.i = alloca i32, i32 %size, align 4
+; RESULT-NEXT: store i32 12345678, ptr %arg, align 4
+; RESULT-NEXT: store i32 0, ptr %alloca.i, align 4
+; RESULT-NEXT: call void @llvm.stackrestore.p0(ptr %savedstack)
+; RESULT-NEXT: ret void
+define void @caller_dynamic_alloca(ptr %arg, i32 %size) {
+ call void @callee_dynamic_alloca(ptr %arg, i32 %size)
+ ret void
+}
+
+declare void @extern_noduplicate() noduplicate
+
+; CHECK-LABEL: define void @callee_noduplicate_calls(
+; RESULT-NEXT: call void @extern_noduplicate()
+; RESULT-NEXT: call void @extern_noduplicate()
+; RESULT-NEXT: ret void
+define void @callee_noduplicate_calls() {
+ call void @extern_noduplicate()
+ call void @extern_noduplicate()
+ ret void
+}
+
+; Ignore noduplicate restrictions
+; CHECK-LABEL: define void @caller_noduplicate_calls_callee(
+; RESULT-NEXT: call void @extern_noduplicate()
+; RESULT-NEXT: call void @extern_noduplicate()
+; RESULT-NEXT: call void @extern_noduplicate()
+; RESULT-NEXT: call void @extern_noduplicate()
+; RESULT-NEXT: ret void
+define void @caller_noduplicate_calls_callee() {
+ call void @callee_noduplicate_calls()
+ call void @callee_noduplicate_calls()
+ ret void
+}
+
+; CHECK-LABEL: define void @sanitize_address_callee(
+; RESULT-NEXT: store i32 333, ptr %arg
+; RESULT-NEXT: ret void
+define void @sanitize_address_callee(ptr %arg) sanitize_address {
+ store i32 333, ptr %arg
+ ret void
+}
+
+; CHECK-LABEL: define void @no_sanitize_address_caller(
+; RESULT-NEXT: store i32 333, ptr %arg
+; RESULT-NEXT: ret void
+define void @no_sanitize_address_caller(ptr %arg) {
+ call void @sanitize_address_callee(ptr %arg)
+ ret void
+}
+
+; CHECK-LABEL: define float @nonstrictfp_callee(
+; RESULT-NEXT: %add = fadd float %a, %a
+; RESULT-NEXT: ret float %add
+define float @nonstrictfp_callee(float %a) {
+ %add = fadd float %a, %a
+ ret float %add
+}
+
+; CHECK-LABEL: define float @strictfp_caller(
+; RESULT-NEXT: call float @llvm.experimental.constrained.fadd.f32(
+; RESULT-NEXT: call float @llvm.experimental.constrained.fadd.f32(
+; RESULT-NEXT: ret float %add
+define float @strictfp_caller(float %a) strictfp {
+ %call = call float @nonstrictfp_callee(float %a) strictfp
+ %add = call float @llvm.experimental.constrained.fadd.f32(float %call, float 2.0, metadata !"round.dynamic", metadata !"fpexcept.strict")
+ ret float %add
+}
+
+; CHECK-LABEL: define float @strictfp_callee(
+; RESULT-NEXT: call float @llvm.experimental.constrained.fadd.f32(
+; RESULT-NEXT: ret float
+define float @strictfp_callee(float %a) strictfp {
+ %add = call float @llvm.experimental.constrained.fadd.f32(float %a, float %a, metadata !"round.dynamic", metadata !"fpexcept.strict")
+ ret float %add
+}
+
+; FIXME: This should not inline. The inlined case should fail the
+; verifier, but it does not.
+; CHECK-LABEL: define float @nonstrictfp_caller(
+; RESULT-NEXT: call float @llvm.experimental.constrained.fadd.f32(
+; RESULT-NEXT: fadd float
+; RESULT-NEXT: ret float
+define float @nonstrictfp_caller(float %a) {
+ %call = call float @strictfp_callee(float %a)
+ %add1 = fadd float %call, 2.0
+ ret float %add1
+}
+
+define void @caller_also_has_non_callee_use() {
+ call void @simple_callee(ptr @simple_callee)
+ ret void
+}
diff --git a/llvm/tools/llc/llc.cpp b/llvm/tools/llc/llc.cpp
index a2327fb..7551a80 100644
--- a/llvm/tools/llc/llc.cpp
+++ b/llvm/tools/llc/llc.cpp
@@ -67,26 +67,25 @@ static codegen::RegisterCodeGenFlags CGF;
// and back-end code generation options are specified with the target machine.
//
static cl::opt<std::string>
-InputFilename(cl::Positional, cl::desc("<input bitcode>"), cl::init("-"));
+ InputFilename(cl::Positional, cl::desc("<input bitcode>"), cl::init("-"));
static cl::list<std::string>
InstPrinterOptions("M", cl::desc("InstPrinter options"));
static cl::opt<std::string>
-InputLanguage("x", cl::desc("Input language ('ir' or 'mir')"));
+ InputLanguage("x", cl::desc("Input language ('ir' or 'mir')"));
-static cl::opt<std::string>
-OutputFilename("o", cl::desc("Output filename"), cl::value_desc("filename"));
+static cl::opt<std::string> OutputFilename("o", cl::desc("Output filename"),
+ cl::value_desc("filename"));
static cl::opt<std::string>
- SplitDwarfOutputFile("split-dwarf-output",
- cl::desc(".dwo output filename"),
+ SplitDwarfOutputFile("split-dwarf-output", cl::desc(".dwo output filename"),
cl::value_desc("filename"));
static cl::opt<unsigned>
-TimeCompilations("time-compilations", cl::Hidden, cl::init(1u),
- cl::value_desc("N"),
- cl::desc("Repeat compilation N times for timing"));
+ TimeCompilations("time-compilations", cl::Hidden, cl::init(1u),
+ cl::value_desc("N"),
+ cl::desc("Repeat compilation N times for timing"));
static cl::opt<bool> TimeTrace("time-trace", cl::desc("Record time trace"));
@@ -123,7 +122,7 @@ static cl::opt<char>
cl::Prefix, cl::init('2'));
static cl::opt<std::string>
-TargetTriple("mtriple", cl::desc("Override target triple for module"));
+ TargetTriple("mtriple", cl::desc("Override target triple for module"));
static cl::opt<std::string> SplitDwarfFile(
"split-dwarf-file",
@@ -167,6 +166,11 @@ static cl::opt<bool> DiscardValueNames(
cl::desc("Discard names from Value (other than GlobalValue)."),
cl::init(false), cl::Hidden);
+static cl::opt<bool>
+ PrintMIR2VecVocab("print-mir2vec-vocab", cl::Hidden,
+ cl::desc("Print MIR2Vec vocabulary contents"),
+ cl::init(false));
+
static cl::list<std::string> IncludeDirs("I", cl::desc("include search path"));
static cl::opt<bool> RemarksWithHotness(
@@ -409,8 +413,8 @@ int main(int argc, char **argv) {
return 0;
}
-static bool addPass(PassManagerBase &PM, const char *argv0,
- StringRef PassName, TargetPassConfig &TPC) {
+static bool addPass(PassManagerBase &PM, const char *argv0, StringRef PassName,
+ TargetPassConfig &TPC) {
if (PassName == "none")
return false;
@@ -610,7 +614,8 @@ static int compileModule(char **argv, LLVMContext &Context) {
// Figure out where we are going to send the output.
std::unique_ptr<ToolOutputFile> Out =
GetOutputStream(TheTarget->getName(), TheTriple.getOS(), argv[0]);
- if (!Out) return 1;
+ if (!Out)
+ return 1;
// Ensure the filename is passed down to CodeViewDebug.
Target->Options.ObjectFilenameForDebug = Out->outputFilename();
@@ -623,7 +628,7 @@ static int compileModule(char **argv, LLVMContext &Context) {
if (!SplitDwarfOutputFile.empty()) {
std::error_code EC;
DwoOut = std::make_unique<ToolOutputFile>(SplitDwarfOutputFile, EC,
- sys::fs::OF_None);
+ sys::fs::OF_None);
if (EC)
reportError(EC.message(), SplitDwarfOutputFile);
}
@@ -725,12 +730,25 @@ static int compileModule(char **argv, LLVMContext &Context) {
}
TPC.setInitialized();
PM.add(createPrintMIRPass(*OS));
+
+ // Add MIR2Vec vocabulary printer if requested
+ if (PrintMIR2VecVocab) {
+ PM.add(createMIR2VecVocabPrinterLegacyPass(errs()));
+ }
+
PM.add(createFreeMachineFunctionPass());
- } else if (Target->addPassesToEmitFile(
- PM, *OS, DwoOut ? &DwoOut->os() : nullptr,
- codegen::getFileType(), NoVerify, MMIWP)) {
- if (!HasMCErrors)
- reportError("target does not support generation of this file type");
+ } else {
+ if (Target->addPassesToEmitFile(PM, *OS, DwoOut ? &DwoOut->os() : nullptr,
+ codegen::getFileType(), NoVerify,
+ MMIWP)) {
+ if (!HasMCErrors)
+ reportError("target does not support generation of this file type");
+ }
+
+ // Add MIR2Vec vocabulary printer if requested
+ if (PrintMIR2VecVocab) {
+ PM.add(createMIR2VecVocabPrinterLegacyPass(errs()));
+ }
}
Target->getObjFileLowering()->Initialize(MMIWP->getMMI().getContext(),
diff --git a/llvm/tools/lli/ForwardingMemoryManager.h b/llvm/tools/lli/ForwardingMemoryManager.h
index e5c10d6..d193bef 100644
--- a/llvm/tools/lli/ForwardingMemoryManager.h
+++ b/llvm/tools/lli/ForwardingMemoryManager.h
@@ -109,8 +109,11 @@ public:
if (Syms->size() != 1)
return make_error<StringError>("Unexpected remote lookup result",
inconvertibleErrorCode());
- return JITSymbol(Syms->front().getAddress().getValue(),
- Syms->front().getFlags());
+ if (!Syms->front())
+ return make_error<StringError>("Expected valid address",
+ inconvertibleErrorCode());
+ return JITSymbol(Syms->front()->getAddress().getValue(),
+ Syms->front()->getFlags());
} else
return Syms.takeError();
}
diff --git a/llvm/tools/llvm-offload-binary/CMakeLists.txt b/llvm/tools/llvm-offload-binary/CMakeLists.txt
new file mode 100644
index 0000000..6f46f1b
--- /dev/null
+++ b/llvm/tools/llvm-offload-binary/CMakeLists.txt
@@ -0,0 +1,13 @@
+set(LLVM_LINK_COMPONENTS
+ BinaryFormat
+ Object
+ Support)
+
+add_llvm_tool(llvm-offload-binary
+ llvm-offload-binary.cpp
+
+ DEPENDS
+ intrinsics_gen
+ )
+# Legacy binary name to be removed at a later release.
+add_llvm_tool_symlink(clang-offload-packager llvm-offload-binary)
diff --git a/llvm/tools/llvm-offload-binary/llvm-offload-binary.cpp b/llvm/tools/llvm-offload-binary/llvm-offload-binary.cpp
new file mode 100644
index 0000000..e22d13b
--- /dev/null
+++ b/llvm/tools/llvm-offload-binary/llvm-offload-binary.cpp
@@ -0,0 +1,258 @@
+//===-- llvm-offload-binary.cpp - offload binary management utility -------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+// This tool takes several device object files and bundles them into a single
+// binary image using a custom binary format. This is intended to be used to
+// embed many device files into an application to create a fat binary. It also
+// supports extracting these files from a known location.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/ADT/StringExtras.h"
+#include "llvm/BinaryFormat/Magic.h"
+#include "llvm/Object/ArchiveWriter.h"
+#include "llvm/Object/OffloadBinary.h"
+#include "llvm/Support/CommandLine.h"
+#include "llvm/Support/FileOutputBuffer.h"
+#include "llvm/Support/FileSystem.h"
+#include "llvm/Support/MemoryBuffer.h"
+#include "llvm/Support/Path.h"
+#include "llvm/Support/Signals.h"
+#include "llvm/Support/StringSaver.h"
+#include "llvm/Support/WithColor.h"
+
+using namespace llvm;
+using namespace llvm::object;
+
+static cl::opt<bool> Help("h", cl::desc("Alias for -help"), cl::Hidden);
+
+static cl::OptionCategory OffloadBinaryCategory("llvm-offload-binary options");
+
+static cl::opt<std::string> OutputFile("o", cl::desc("Write output to <file>."),
+ cl::value_desc("file"),
+ cl::cat(OffloadBinaryCategory));
+
+static cl::opt<std::string> InputFile(cl::Positional,
+ cl::desc("Extract from <file>."),
+ cl::value_desc("file"),
+ cl::cat(OffloadBinaryCategory));
+
+static cl::list<std::string>
+ DeviceImages("image",
+ cl::desc("List of key and value arguments. Required keywords "
+ "are 'file' and 'triple'."),
+ cl::value_desc("<key>=<value>,..."),
+ cl::cat(OffloadBinaryCategory));
+
+static cl::opt<bool>
+ CreateArchive("archive",
+ cl::desc("Write extracted files to a static archive"),
+ cl::cat(OffloadBinaryCategory));
+
+/// Path of the current binary.
+static const char *PackagerExecutable;
+
+// Get a map containing all the arguments for the image. Repeated arguments will
+// be placed in a comma separated list.
+static DenseMap<StringRef, StringRef> getImageArguments(StringRef Image,
+ StringSaver &Saver) {
+ DenseMap<StringRef, StringRef> Args;
+ for (StringRef Arg : llvm::split(Image, ",")) {
+ auto [Key, Value] = Arg.split("=");
+ auto [It, Inserted] = Args.try_emplace(Key, Value);
+ if (!Inserted)
+ It->second = Saver.save(It->second + "," + Value);
+ }
+
+ return Args;
+}
+
+static Error writeFile(StringRef Filename, StringRef Data) {
+ Expected<std::unique_ptr<FileOutputBuffer>> OutputOrErr =
+ FileOutputBuffer::create(Filename, Data.size());
+ if (!OutputOrErr)
+ return OutputOrErr.takeError();
+ std::unique_ptr<FileOutputBuffer> Output = std::move(*OutputOrErr);
+ llvm::copy(Data, Output->getBufferStart());
+ if (Error E = Output->commit())
+ return E;
+ return Error::success();
+}
+
+static Error bundleImages() {
+ SmallVector<char, 1024> BinaryData;
+ raw_svector_ostream OS(BinaryData);
+ for (StringRef Image : DeviceImages) {
+ BumpPtrAllocator Alloc;
+ StringSaver Saver(Alloc);
+ DenseMap<StringRef, StringRef> Args = getImageArguments(Image, Saver);
+
+ if (!Args.count("file"))
+ return createStringError(inconvertibleErrorCode(),
+ "'file' is a required image arguments");
+
+ // Permit using multiple instances of `file` in a single string.
+ for (auto &File : llvm::split(Args["file"], ",")) {
+ OffloadBinary::OffloadingImage ImageBinary{};
+
+ llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> ObjectOrErr =
+ llvm::MemoryBuffer::getFileOrSTDIN(File);
+ if (std::error_code EC = ObjectOrErr.getError())
+ return errorCodeToError(EC);
+
+ // Clang uses the '.o' suffix for LTO bitcode.
+ if (identify_magic((*ObjectOrErr)->getBuffer()) == file_magic::bitcode)
+ ImageBinary.TheImageKind = object::IMG_Bitcode;
+ else if (sys::path::has_extension(File))
+ ImageBinary.TheImageKind =
+ getImageKind(sys::path::extension(File).drop_front());
+ else
+ ImageBinary.TheImageKind = IMG_None;
+ ImageBinary.Image = std::move(*ObjectOrErr);
+ for (const auto &[Key, Value] : Args) {
+ if (Key == "kind") {
+ ImageBinary.TheOffloadKind = getOffloadKind(Value);
+ } else if (Key != "file") {
+ ImageBinary.StringData[Key] = Value;
+ }
+ }
+ llvm::SmallString<0> Buffer = OffloadBinary::write(ImageBinary);
+ if (Buffer.size() % OffloadBinary::getAlignment() != 0)
+ return createStringError(inconvertibleErrorCode(),
+ "Offload binary has invalid size alignment");
+ OS << Buffer;
+ }
+ }
+
+ if (Error E = writeFile(OutputFile,
+ StringRef(BinaryData.begin(), BinaryData.size())))
+ return E;
+ return Error::success();
+}
+
+static Error unbundleImages() {
+ ErrorOr<std::unique_ptr<MemoryBuffer>> BufferOrErr =
+ MemoryBuffer::getFileOrSTDIN(InputFile);
+ if (std::error_code EC = BufferOrErr.getError())
+ return createFileError(InputFile, EC);
+ std::unique_ptr<MemoryBuffer> Buffer = std::move(*BufferOrErr);
+
+ // This data can be misaligned if extracted from an archive.
+ if (!isAddrAligned(Align(OffloadBinary::getAlignment()),
+ Buffer->getBufferStart()))
+ Buffer = MemoryBuffer::getMemBufferCopy(Buffer->getBuffer(),
+ Buffer->getBufferIdentifier());
+
+ SmallVector<OffloadFile> Binaries;
+ if (Error Err = extractOffloadBinaries(*Buffer, Binaries))
+ return Err;
+
+ // Try to extract each device image specified by the user from the input file.
+ for (StringRef Image : DeviceImages) {
+ BumpPtrAllocator Alloc;
+ StringSaver Saver(Alloc);
+ auto Args = getImageArguments(Image, Saver);
+
+ SmallVector<const OffloadBinary *> Extracted;
+ for (const OffloadFile &File : Binaries) {
+ const auto *Binary = File.getBinary();
+ // We handle the 'file' and 'kind' identifiers differently.
+ bool Match = llvm::all_of(Args, [&](auto &Arg) {
+ const auto [Key, Value] = Arg;
+ if (Key == "file")
+ return true;
+ if (Key == "kind")
+ return Binary->getOffloadKind() == getOffloadKind(Value);
+ return Binary->getString(Key) == Value;
+ });
+ if (Match)
+ Extracted.push_back(Binary);
+ }
+
+ if (Extracted.empty())
+ continue;
+
+ if (CreateArchive) {
+ if (!Args.count("file"))
+ return createStringError(inconvertibleErrorCode(),
+ "Image must have a 'file' argument.");
+
+ SmallVector<NewArchiveMember> Members;
+ for (const OffloadBinary *Binary : Extracted)
+ Members.emplace_back(MemoryBufferRef(
+ Binary->getImage(),
+ Binary->getMemoryBufferRef().getBufferIdentifier()));
+
+ if (Error E = writeArchive(
+ Args["file"], Members, SymtabWritingMode::NormalSymtab,
+ Archive::getDefaultKind(), true, false, nullptr))
+ return E;
+ } else if (auto It = Args.find("file"); It != Args.end()) {
+ if (Extracted.size() > 1)
+ WithColor::warning(errs(), PackagerExecutable)
+ << "Multiple inputs match to a single file, '" << It->second
+ << "'\n";
+ if (Error E = writeFile(It->second, Extracted.back()->getImage()))
+ return E;
+ } else {
+ uint64_t Idx = 0;
+ for (const OffloadBinary *Binary : Extracted) {
+ StringRef Filename =
+ Saver.save(sys::path::stem(InputFile) + "-" + Binary->getTriple() +
+ "-" + Binary->getArch() + "." + std::to_string(Idx++) +
+ "." + getImageKindName(Binary->getImageKind()));
+ if (Error E = writeFile(Filename, Binary->getImage()))
+ return E;
+ }
+ }
+ }
+
+ return Error::success();
+}
+
+int main(int argc, const char **argv) {
+ sys::PrintStackTraceOnErrorSignal(argv[0]);
+ cl::HideUnrelatedOptions(OffloadBinaryCategory);
+ cl::ParseCommandLineOptions(
+ argc, argv,
+ "A utility for bundling several object files into a single binary.\n"
+ "The output binary can then be embedded into the host section table\n"
+ "to create a fatbinary containing offloading code.\n");
+
+ if (sys::path::stem(argv[0]).ends_with("clang-offload-packager"))
+ WithColor::warning(errs(), PackagerExecutable)
+ << "'clang-offload-packager' is deprecated. Use 'llvm-offload-binary' "
+ "instead.\n";
+
+ if (Help || (OutputFile.empty() && InputFile.empty())) {
+ cl::PrintHelpMessage();
+ return EXIT_SUCCESS;
+ }
+
+ PackagerExecutable = argv[0];
+ auto reportError = [argv](Error E) {
+ logAllUnhandledErrors(std::move(E), WithColor::error(errs(), argv[0]));
+ return EXIT_FAILURE;
+ };
+
+ if (!InputFile.empty() && !OutputFile.empty())
+ return reportError(
+ createStringError(inconvertibleErrorCode(),
+ "Packaging to an output file and extracting from an "
+ "input file are mutually exclusive."));
+
+ if (!OutputFile.empty()) {
+ if (Error Err = bundleImages())
+ return reportError(std::move(Err));
+ } else if (!InputFile.empty()) {
+ if (Error Err = unbundleImages())
+ return reportError(std::move(Err));
+ }
+
+ return EXIT_SUCCESS;
+}
diff --git a/llvm/tools/llvm-profdata/CMakeLists.txt b/llvm/tools/llvm-profdata/CMakeLists.txt
index 165be9a2..e5aa858 100644
--- a/llvm/tools/llvm-profdata/CMakeLists.txt
+++ b/llvm/tools/llvm-profdata/CMakeLists.txt
@@ -10,9 +10,6 @@ add_llvm_tool(llvm-profdata
DEPENDS
intrinsics_gen
- GENERATE_DRIVER
)
-if(NOT LLVM_TOOL_LLVM_DRIVER_BUILD)
- target_link_libraries(llvm-profdata PRIVATE LLVMDebuginfod)
-endif()
+target_link_libraries(llvm-profdata PRIVATE LLVMDebuginfod)
diff --git a/llvm/tools/llvm-profdata/llvm-profdata.cpp b/llvm/tools/llvm-profdata/llvm-profdata.cpp
index d658ea9..15ddb05 100644
--- a/llvm/tools/llvm-profdata/llvm-profdata.cpp
+++ b/llvm/tools/llvm-profdata/llvm-profdata.cpp
@@ -3464,10 +3464,7 @@ static int order_main() {
return 0;
}
-int llvm_profdata_main(int argc, char **argvNonConst,
- const llvm::ToolContext &) {
- const char **argv = const_cast<const char **>(argvNonConst);
-
+int main(int argc, const char *argv[]) {
StringRef ProgName(sys::path::filename(argv[0]));
if (argc < 2) {
diff --git a/llvm/tools/llvm-reduce/CMakeLists.txt b/llvm/tools/llvm-reduce/CMakeLists.txt
index 7be90bc..c8673b4 100644
--- a/llvm/tools/llvm-reduce/CMakeLists.txt
+++ b/llvm/tools/llvm-reduce/CMakeLists.txt
@@ -39,6 +39,7 @@ add_llvm_tool(llvm-reduce
deltas/ReduceGlobalValues.cpp
deltas/ReduceGlobalVarInitializers.cpp
deltas/ReduceGlobalVars.cpp
+ deltas/ReduceInlineCallSites.cpp
deltas/ReduceInstructions.cpp
deltas/ReduceInstructionFlags.cpp
deltas/ReduceInvokes.cpp
diff --git a/llvm/tools/llvm-reduce/DeltaManager.cpp b/llvm/tools/llvm-reduce/DeltaManager.cpp
index f5c6276..9b13202 100644
--- a/llvm/tools/llvm-reduce/DeltaManager.cpp
+++ b/llvm/tools/llvm-reduce/DeltaManager.cpp
@@ -28,6 +28,7 @@
#include "deltas/ReduceGlobalVarInitializers.h"
#include "deltas/ReduceGlobalVars.h"
#include "deltas/ReduceIRReferences.h"
+#include "deltas/ReduceInlineCallSites.h"
#include "deltas/ReduceInstructionFlags.h"
#include "deltas/ReduceInstructionFlagsMIR.h"
#include "deltas/ReduceInstructions.h"
diff --git a/llvm/tools/llvm-reduce/DeltaPasses.def b/llvm/tools/llvm-reduce/DeltaPasses.def
index 3aed0cc..845b106 100644
--- a/llvm/tools/llvm-reduce/DeltaPasses.def
+++ b/llvm/tools/llvm-reduce/DeltaPasses.def
@@ -58,7 +58,7 @@ DELTA_PASS_IR("volatile", reduceVolatileInstructionsDeltaPass, "Reducing Volatil
DELTA_PASS_IR("atomic-ordering", reduceAtomicOrderingDeltaPass, "Reducing Atomic Ordering")
DELTA_PASS_IR("syncscopes", reduceAtomicSyncScopesDeltaPass, "Reducing Atomic Sync Scopes")
DELTA_PASS_IR("instruction-flags", reduceInstructionFlagsDeltaPass, "Reducing Instruction Flags")
-
+DELTA_PASS_IR("inline-call-sites", reduceInlineCallSitesDeltaPass, "Inlining callsites")
#ifndef DELTA_PASS_MIR
#define DELTA_PASS_MIR(NAME, FUNC, DESC)
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceInlineCallSites.cpp b/llvm/tools/llvm-reduce/deltas/ReduceInlineCallSites.cpp
new file mode 100644
index 0000000..cfef367
--- /dev/null
+++ b/llvm/tools/llvm-reduce/deltas/ReduceInlineCallSites.cpp
@@ -0,0 +1,103 @@
+//===- ReduceInlineCallSites.cpp ------------------------------------------===//
+//
+// 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 "ReduceInlineCallSites.h"
+#include "llvm/IR/InstrTypes.h"
+#include "llvm/Support/CommandLine.h"
+#include "llvm/Transforms/Utils/Cloning.h"
+
+using namespace llvm;
+
+extern cl::OptionCategory LLVMReduceOptions;
+
+static cl::opt<int> CallsiteInlineThreshold(
+ "reduce-callsite-inline-threshold",
+ cl::desc("Number of instructions in a function to unconditionally inline "
+ "(-1 for inline all)"),
+ cl::init(5), cl::cat(LLVMReduceOptions));
+
+static bool functionHasMoreThanNonTerminatorInsts(const Function &F,
+ uint64_t NumInsts) {
+ uint64_t InstCount = 0;
+ for (const BasicBlock &BB : F) {
+ for (const Instruction &I : make_range(BB.begin(), std::prev(BB.end()))) {
+ (void)I;
+ if (InstCount++ > NumInsts)
+ return true;
+ }
+ }
+
+ return false;
+}
+
+static bool hasOnlyOneCallUse(const Function &F) {
+ unsigned UseCount = 0;
+ for (const Use &U : F.uses()) {
+ const CallBase *CB = dyn_cast<CallBase>(U.getUser());
+ if (!CB || !CB->isCallee(&U))
+ return false;
+ if (UseCount++ > 1)
+ return false;
+ }
+
+ return UseCount == 1;
+}
+
+// TODO: This could use more thought.
+static bool inlineWillReduceComplexity(const Function &Caller,
+ const Function &Callee) {
+ // Backdoor to force all possible inlining.
+ if (CallsiteInlineThreshold < 0)
+ return true;
+
+ if (!hasOnlyOneCallUse(Callee))
+ return false;
+
+ // Permit inlining small functions into big functions, or big functions into
+ // small functions.
+ if (!functionHasMoreThanNonTerminatorInsts(Callee, CallsiteInlineThreshold) &&
+ !functionHasMoreThanNonTerminatorInsts(Caller, CallsiteInlineThreshold))
+ return true;
+
+ return false;
+}
+
+static void reduceCallSites(Oracle &O, Function &F) {
+ std::vector<std::pair<CallBase *, InlineFunctionInfo>> CallSitesToInline;
+
+ for (Use &U : F.uses()) {
+ if (CallBase *CB = dyn_cast<CallBase>(U.getUser())) {
+ // Ignore callsites with wrong call type.
+ if (!CB->isCallee(&U))
+ continue;
+
+ // We do not consider isInlineViable here. It is overly conservative in
+ // cases that the inliner should handle correctly (e.g. disallowing inline
+ // of of functions with indirectbr). Some of the other cases are for other
+ // correctness issues which we do need to worry about here.
+
+ // TODO: Should we delete the function body?
+ InlineFunctionInfo IFI;
+ if (CanInlineCallSite(*CB, IFI).isSuccess() &&
+ inlineWillReduceComplexity(*CB->getFunction(), F) && !O.shouldKeep())
+ CallSitesToInline.emplace_back(CB, std::move(IFI));
+ }
+ }
+
+ // TODO: InlineFunctionImpl will implicitly perform some simplifications /
+ // optimizations which we should be able to opt-out of.
+ for (auto [CB, IFI] : CallSitesToInline)
+ InlineFunctionImpl(*CB, IFI);
+}
+
+void llvm::reduceInlineCallSitesDeltaPass(Oracle &O, ReducerWorkItem &Program) {
+ for (Function &F : Program.getModule()) {
+ if (!F.isDeclaration())
+ reduceCallSites(O, F);
+ }
+}
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceInlineCallSites.h b/llvm/tools/llvm-reduce/deltas/ReduceInlineCallSites.h
new file mode 100644
index 0000000..1df31a1
--- /dev/null
+++ b/llvm/tools/llvm-reduce/deltas/ReduceInlineCallSites.h
@@ -0,0 +1,18 @@
+//===- ReduceInlineCallSites.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_TOOLS_LLVM_REDUCE_DELTAS_REDUCEINLINECALLSITES_H
+#define LLVM_TOOLS_LLVM_REDUCE_DELTAS_REDUCEINLINECALLSITES_H
+
+#include "Delta.h"
+
+namespace llvm {
+void reduceInlineCallSitesDeltaPass(Oracle &O, ReducerWorkItem &Program);
+} // namespace llvm
+
+#endif
diff --git a/llvm/unittests/Analysis/IR2VecTest.cpp b/llvm/unittests/Analysis/IR2VecTest.cpp
index d136cb6..40b4aa2 100644
--- a/llvm/unittests/Analysis/IR2VecTest.cpp
+++ b/llvm/unittests/Analysis/IR2VecTest.cpp
@@ -430,6 +430,60 @@ TEST_F(IR2VecTestFixture, GetFunctionVector_FlowAware) {
EXPECT_TRUE(FuncVec.approximatelyEquals(Embedding(2, 58.1)));
}
+TEST_F(IR2VecTestFixture, MultipleComputeEmbeddingsConsistency_Symbolic) {
+ auto Emb = Embedder::create(IR2VecKind::Symbolic, *F, *V);
+ ASSERT_TRUE(static_cast<bool>(Emb));
+
+ // Get initial function vector
+ const auto &FuncVec1 = Emb->getFunctionVector();
+
+ // Compute embeddings again by calling getFunctionVector multiple times
+ const auto &FuncVec2 = Emb->getFunctionVector();
+ const auto &FuncVec3 = Emb->getFunctionVector();
+
+ // All function vectors should be identical
+ EXPECT_TRUE(FuncVec1.approximatelyEquals(FuncVec2));
+ EXPECT_TRUE(FuncVec1.approximatelyEquals(FuncVec3));
+ EXPECT_TRUE(FuncVec2.approximatelyEquals(FuncVec3));
+
+ // Also check that instruction vectors remain consistent
+ const auto &InstMap1 = Emb->getInstVecMap();
+ const auto &InstMap2 = Emb->getInstVecMap();
+
+ EXPECT_EQ(InstMap1.size(), InstMap2.size());
+ for (const auto &[Inst, Vec1] : InstMap1) {
+ ASSERT_TRUE(InstMap2.count(Inst));
+ EXPECT_TRUE(Vec1.approximatelyEquals(InstMap2.at(Inst)));
+ }
+}
+
+TEST_F(IR2VecTestFixture, MultipleComputeEmbeddingsConsistency_FlowAware) {
+ auto Emb = Embedder::create(IR2VecKind::FlowAware, *F, *V);
+ ASSERT_TRUE(static_cast<bool>(Emb));
+
+ // Get initial function vector
+ const auto &FuncVec1 = Emb->getFunctionVector();
+
+ // Compute embeddings again by calling getFunctionVector multiple times
+ const auto &FuncVec2 = Emb->getFunctionVector();
+ const auto &FuncVec3 = Emb->getFunctionVector();
+
+ // All function vectors should be identical
+ EXPECT_TRUE(FuncVec1.approximatelyEquals(FuncVec2));
+ EXPECT_TRUE(FuncVec1.approximatelyEquals(FuncVec3));
+ EXPECT_TRUE(FuncVec2.approximatelyEquals(FuncVec3));
+
+ // Also check that instruction vectors remain consistent
+ const auto &InstMap1 = Emb->getInstVecMap();
+ const auto &InstMap2 = Emb->getInstVecMap();
+
+ EXPECT_EQ(InstMap1.size(), InstMap2.size());
+ for (const auto &[Inst, Vec1] : InstMap1) {
+ ASSERT_TRUE(InstMap2.count(Inst));
+ EXPECT_TRUE(Vec1.approximatelyEquals(InstMap2.at(Inst)));
+ }
+}
+
static constexpr unsigned MaxOpcodes = Vocabulary::MaxOpcodes;
[[maybe_unused]]
static constexpr unsigned MaxTypeIDs = Vocabulary::MaxTypeIDs;
diff --git a/llvm/unittests/CodeGen/CMakeLists.txt b/llvm/unittests/CodeGen/CMakeLists.txt
index 22dbdaa..18332d2 100644
--- a/llvm/unittests/CodeGen/CMakeLists.txt
+++ b/llvm/unittests/CodeGen/CMakeLists.txt
@@ -37,6 +37,7 @@ add_llvm_unittest(CodeGenTests
MachineInstrBundleIteratorTest.cpp
MachineInstrTest.cpp
MachineOperandTest.cpp
+ MIR2VecTest.cpp
RegAllocScoreTest.cpp
PassManagerTest.cpp
ScalableVectorMVTsTest.cpp
diff --git a/llvm/unittests/CodeGen/MIR2VecTest.cpp b/llvm/unittests/CodeGen/MIR2VecTest.cpp
new file mode 100644
index 0000000..d243d82
--- /dev/null
+++ b/llvm/unittests/CodeGen/MIR2VecTest.cpp
@@ -0,0 +1,217 @@
+//===- MIR2VecTest.cpp ---------------------------------------------------===//
+//
+// 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 "llvm/CodeGen/MIR2Vec.h"
+#include "llvm/CodeGen/MachineBasicBlock.h"
+#include "llvm/CodeGen/MachineFunction.h"
+#include "llvm/CodeGen/MachineInstr.h"
+#include "llvm/CodeGen/MachineModuleInfo.h"
+#include "llvm/CodeGen/TargetInstrInfo.h"
+#include "llvm/CodeGen/TargetSubtargetInfo.h"
+#include "llvm/IR/IRBuilder.h"
+#include "llvm/IR/Module.h"
+#include "llvm/MC/TargetRegistry.h"
+#include "llvm/Support/TargetSelect.h"
+#include "llvm/Target/TargetMachine.h"
+#include "llvm/Target/TargetOptions.h"
+#include "llvm/TargetParser/Triple.h"
+#include "gtest/gtest.h"
+
+using namespace llvm;
+using namespace mir2vec;
+using VocabMap = std::map<std::string, ir2vec::Embedding>;
+
+namespace {
+
+TEST(MIR2VecTest, RegexExtraction) {
+ // Test simple instruction names
+ EXPECT_EQ(MIRVocabulary::extractBaseOpcodeName("NOP"), "NOP");
+ EXPECT_EQ(MIRVocabulary::extractBaseOpcodeName("RET"), "RET");
+ EXPECT_EQ(MIRVocabulary::extractBaseOpcodeName("ADD16ri"), "ADD");
+ EXPECT_EQ(MIRVocabulary::extractBaseOpcodeName("ADD32rr"), "ADD");
+ EXPECT_EQ(MIRVocabulary::extractBaseOpcodeName("ADD64rm"), "ADD");
+ EXPECT_EQ(MIRVocabulary::extractBaseOpcodeName("MOV8ri"), "MOV");
+ EXPECT_EQ(MIRVocabulary::extractBaseOpcodeName("MOV32mr"), "MOV");
+ EXPECT_EQ(MIRVocabulary::extractBaseOpcodeName("PUSH64r"), "PUSH");
+ EXPECT_EQ(MIRVocabulary::extractBaseOpcodeName("POP64r"), "POP");
+ EXPECT_EQ(MIRVocabulary::extractBaseOpcodeName("JMP_4"), "JMP");
+ EXPECT_EQ(MIRVocabulary::extractBaseOpcodeName("CALL64pcrel32"), "CALL");
+ EXPECT_EQ(MIRVocabulary::extractBaseOpcodeName("SOME_INSTR_123"),
+ "SOME_INSTR");
+ EXPECT_EQ(MIRVocabulary::extractBaseOpcodeName("123ADD"), "ADD");
+ EXPECT_FALSE(MIRVocabulary::extractBaseOpcodeName("123").empty());
+}
+
+class MIR2VecVocabTestFixture : public ::testing::Test {
+protected:
+ std::unique_ptr<LLVMContext> Ctx;
+ std::unique_ptr<Module> M;
+ std::unique_ptr<TargetMachine> TM;
+ const TargetInstrInfo *TII;
+
+ static void SetUpTestCase() {
+ InitializeAllTargets();
+ InitializeAllTargetMCs();
+ }
+
+ void SetUp() override {
+ Triple TargetTriple("x86_64-unknown-linux-gnu");
+ std::string Error;
+ const Target *T = TargetRegistry::lookupTarget("", TargetTriple, Error);
+ if (!T) {
+ GTEST_SKIP() << "x86_64-unknown-linux-gnu target triple not available; "
+ "Skipping test";
+ return;
+ }
+
+ Ctx = std::make_unique<LLVMContext>();
+ M = std::make_unique<Module>("test", *Ctx);
+ M->setTargetTriple(TargetTriple);
+
+ TargetOptions Options;
+ TM = std::unique_ptr<TargetMachine>(
+ T->createTargetMachine(TargetTriple, "", "", Options, std::nullopt));
+ if (!TM) {
+ GTEST_SKIP() << "Failed to create X86 target machine; Skipping test";
+ return;
+ }
+
+ // Create a dummy function to get subtarget info
+ FunctionType *FT = FunctionType::get(Type::getVoidTy(*Ctx), false);
+ Function *F =
+ Function::Create(FT, Function::ExternalLinkage, "test", M.get());
+
+ // Get the target instruction info
+ TII = TM->getSubtargetImpl(*F)->getInstrInfo();
+ if (!TII) {
+ GTEST_SKIP() << "Failed to get target instruction info; Skipping test";
+ return;
+ }
+ }
+};
+
+// Function to find an opcode by name
+static int findOpcodeByName(const TargetInstrInfo *TII, StringRef Name) {
+ for (unsigned Opcode = 1; Opcode < TII->getNumOpcodes(); ++Opcode) {
+ if (TII->getName(Opcode) == Name)
+ return Opcode;
+ }
+ return -1; // Not found
+}
+
+TEST_F(MIR2VecVocabTestFixture, CanonicalOpcodeMappingTest) {
+ // Test that same base opcodes get same canonical indices
+ std::string BaseName1 = MIRVocabulary::extractBaseOpcodeName("ADD16ri");
+ std::string BaseName2 = MIRVocabulary::extractBaseOpcodeName("ADD32rr");
+ std::string BaseName3 = MIRVocabulary::extractBaseOpcodeName("ADD64rm");
+
+ EXPECT_EQ(BaseName1, BaseName2);
+ EXPECT_EQ(BaseName2, BaseName3);
+
+ // Create a MIRVocabulary instance to test the mapping
+ // Use a minimal MIRVocabulary to trigger canonical mapping construction
+ VocabMap VMap;
+ Embedding Val = Embedding(64, 1.0f);
+ VMap["ADD"] = Val;
+ MIRVocabulary TestVocab(std::move(VMap), TII);
+
+ unsigned Index1 = TestVocab.getCanonicalIndexForBaseName(BaseName1);
+ unsigned Index2 = TestVocab.getCanonicalIndexForBaseName(BaseName2);
+ unsigned Index3 = TestVocab.getCanonicalIndexForBaseName(BaseName3);
+ EXPECT_EQ(Index1, Index2);
+ EXPECT_EQ(Index2, Index3);
+
+ // Test that different base opcodes get different canonical indices
+ std::string AddBase = MIRVocabulary::extractBaseOpcodeName("ADD32rr");
+ std::string SubBase = MIRVocabulary::extractBaseOpcodeName("SUB32rr");
+ std::string MovBase = MIRVocabulary::extractBaseOpcodeName("MOV32rr");
+
+ unsigned AddIndex = TestVocab.getCanonicalIndexForBaseName(AddBase);
+ unsigned SubIndex = TestVocab.getCanonicalIndexForBaseName(SubBase);
+ unsigned MovIndex = TestVocab.getCanonicalIndexForBaseName(MovBase);
+
+ EXPECT_NE(AddIndex, SubIndex);
+ EXPECT_NE(SubIndex, MovIndex);
+ EXPECT_NE(AddIndex, MovIndex);
+
+ // Even though we only added "ADD" to the vocab, the canonical mapping
+ // should assign unique indices to all the base opcodes of the target
+ // Ideally, we would check against the exact number of unique base opcodes
+ // for X86, but that would make the test brittle. So we just check that
+ // the number is reasonably closer to the expected number (>6880) and not just
+ // opcodes that we added.
+ EXPECT_GT(TestVocab.getCanonicalSize(),
+ 6880u); // X86 has >6880 unique base opcodes
+
+ // Check that the embeddings for opcodes not in the vocab are zero vectors
+ int Add32rrOpcode = findOpcodeByName(TII, "ADD32rr");
+ ASSERT_NE(Add32rrOpcode, -1) << "ADD32rr opcode not found";
+ EXPECT_TRUE(TestVocab[Add32rrOpcode].approximatelyEquals(Val));
+
+ int Sub32rrOpcode = findOpcodeByName(TII, "SUB32rr");
+ ASSERT_NE(Sub32rrOpcode, -1) << "SUB32rr opcode not found";
+ EXPECT_TRUE(
+ TestVocab[Sub32rrOpcode].approximatelyEquals(Embedding(64, 0.0f)));
+
+ int Mov32rrOpcode = findOpcodeByName(TII, "MOV32rr");
+ ASSERT_NE(Mov32rrOpcode, -1) << "MOV32rr opcode not found";
+ EXPECT_TRUE(
+ TestVocab[Mov32rrOpcode].approximatelyEquals(Embedding(64, 0.0f)));
+}
+
+// Test deterministic mapping
+TEST_F(MIR2VecVocabTestFixture, DeterministicMapping) {
+ // Test that the same base name always maps to the same canonical index
+ std::string BaseName = "ADD";
+
+ // Create a MIRVocabulary instance to test deterministic mapping
+ // Use a minimal MIRVocabulary to trigger canonical mapping construction
+ VocabMap VMap;
+ VMap["ADD"] = Embedding(64, 1.0f);
+ MIRVocabulary TestVocab(std::move(VMap), TII);
+
+ unsigned Index1 = TestVocab.getCanonicalIndexForBaseName(BaseName);
+ unsigned Index2 = TestVocab.getCanonicalIndexForBaseName(BaseName);
+ unsigned Index3 = TestVocab.getCanonicalIndexForBaseName(BaseName);
+
+ EXPECT_EQ(Index1, Index2);
+ EXPECT_EQ(Index2, Index3);
+
+ // Test across multiple runs
+ for (int Pos = 0; Pos < 100; ++Pos) {
+ unsigned Index = TestVocab.getCanonicalIndexForBaseName(BaseName);
+ EXPECT_EQ(Index, Index1);
+ }
+}
+
+// Test MIRVocabulary construction
+TEST_F(MIR2VecVocabTestFixture, VocabularyConstruction) {
+ VocabMap VMap;
+ VMap["ADD"] = Embedding(128, 1.0f); // Dimension 128, all values 1.0
+ VMap["SUB"] = Embedding(128, 2.0f); // Dimension 128, all values 2.0
+
+ MIRVocabulary Vocab(std::move(VMap), TII);
+ EXPECT_TRUE(Vocab.isValid());
+ EXPECT_EQ(Vocab.getDimension(), 128u);
+
+ // Test iterator - iterates over individual embeddings
+ auto IT = Vocab.begin();
+ EXPECT_NE(IT, Vocab.end());
+
+ // Check first embedding exists and has correct dimension
+ EXPECT_EQ((*IT).size(), 128u);
+
+ size_t Count = 0;
+ for (auto IT = Vocab.begin(); IT != Vocab.end(); ++IT) {
+ EXPECT_EQ((*IT).size(), 128u);
+ ++Count;
+ }
+ EXPECT_GT(Count, 0u);
+}
+
+} // namespace \ No newline at end of file
diff --git a/llvm/unittests/ExecutionEngine/Orc/ObjectLinkingLayerTest.cpp b/llvm/unittests/ExecutionEngine/Orc/ObjectLinkingLayerTest.cpp
index 8a6549b..5ff3e26 100644
--- a/llvm/unittests/ExecutionEngine/Orc/ObjectLinkingLayerTest.cpp
+++ b/llvm/unittests/ExecutionEngine/Orc/ObjectLinkingLayerTest.cpp
@@ -301,7 +301,7 @@ TEST(ObjectLinkingLayerSearchGeneratorTest, AbsoluteSymbolsObjectLayer) {
void lookupSymbolsAsync(ArrayRef<LookupRequest> Request,
SymbolLookupCompleteFn Complete) override {
- std::vector<ExecutorSymbolDef> Result;
+ std::vector<std::optional<ExecutorSymbolDef>> Result;
EXPECT_EQ(Request.size(), 1u);
for (auto &LR : Request) {
EXPECT_EQ(LR.Symbols.size(), 1u);
@@ -309,7 +309,7 @@ TEST(ObjectLinkingLayerSearchGeneratorTest, AbsoluteSymbolsObjectLayer) {
if (*Sym.first == "_testFunc") {
ExecutorSymbolDef Def{ExecutorAddr::fromPtr((void *)0x1000),
JITSymbolFlags::Exported};
- Result.push_back(Def);
+ Result.emplace_back(Def);
} else {
ADD_FAILURE() << "unexpected symbol request " << *Sym.first;
}
diff --git a/llvm/unittests/IR/FunctionTest.cpp b/llvm/unittests/IR/FunctionTest.cpp
index 7ba7584..8ed7699 100644
--- a/llvm/unittests/IR/FunctionTest.cpp
+++ b/llvm/unittests/IR/FunctionTest.cpp
@@ -625,4 +625,23 @@ TEST(FunctionTest, Personality) {
EXPECT_FALSE(LLVMHasPersonalityFn(wrap(F)));
}
+TEST(FunctionTest, LLVMGetOrInsertFunction) {
+ LLVMContext Ctx;
+ Module M("test", Ctx);
+ Type *Int8Ty = Type::getInt8Ty(Ctx);
+ FunctionType *FTy = FunctionType::get(Int8Ty, false);
+
+ // Create the function using the C API
+ LLVMValueRef FuncRef = LLVMGetOrInsertFunction(wrap(&M), "F", 1, wrap(FTy));
+
+ // Verify that the returned value is a function and has the correct type
+ Function *Func = unwrap<Function>(FuncRef);
+ EXPECT_EQ(Func->getName(), "F");
+ EXPECT_EQ(Func->getFunctionType(), FTy);
+
+ // Call LLVMGetOrInsertFunction again to ensure it returns the same function
+ LLVMValueRef FuncRef2 = LLVMGetOrInsertFunction(wrap(&M), "F", 1, wrap(FTy));
+ EXPECT_EQ(FuncRef, FuncRef2);
+}
+
} // end namespace
diff --git a/llvm/unittests/IR/InstructionsTest.cpp b/llvm/unittests/IR/InstructionsTest.cpp
index 21d4596..fe9e7e8 100644
--- a/llvm/unittests/IR/InstructionsTest.cpp
+++ b/llvm/unittests/IR/InstructionsTest.cpp
@@ -606,82 +606,63 @@ TEST(InstructionTest, ConstrainedTrans) {
TEST(InstructionsTest, isEliminableCastPair) {
LLVMContext C;
+ DataLayout DL1("p1:32:32");
- Type* Int16Ty = Type::getInt16Ty(C);
- Type* Int32Ty = Type::getInt32Ty(C);
- Type* Int64Ty = Type::getInt64Ty(C);
- Type *Int64PtrTy = PointerType::get(C, 0);
+ Type *Int16Ty = Type::getInt16Ty(C);
+ Type *Int64Ty = Type::getInt64Ty(C);
+ Type *PtrTy64 = PointerType::get(C, 0);
+ Type *PtrTy32 = PointerType::get(C, 1);
// Source and destination pointers have same size -> bitcast.
EXPECT_EQ(CastInst::isEliminableCastPair(CastInst::PtrToInt,
- CastInst::IntToPtr,
- Int64PtrTy, Int64Ty, Int64PtrTy,
- Int32Ty, nullptr, Int32Ty),
- CastInst::BitCast);
-
- // Source and destination have unknown sizes, but the same address space and
- // the intermediate int is the maximum pointer size -> bitcast
- EXPECT_EQ(CastInst::isEliminableCastPair(CastInst::PtrToInt,
- CastInst::IntToPtr,
- Int64PtrTy, Int64Ty, Int64PtrTy,
- nullptr, nullptr, nullptr),
+ CastInst::IntToPtr, PtrTy32, Int64Ty,
+ PtrTy32, &DL1),
CastInst::BitCast);
- // Source and destination have unknown sizes, but the same address space and
- // the intermediate int is not the maximum pointer size -> nothing
+ // Source and destination have unknown sizes.
EXPECT_EQ(CastInst::isEliminableCastPair(CastInst::PtrToInt,
- CastInst::IntToPtr,
- Int64PtrTy, Int32Ty, Int64PtrTy,
- nullptr, nullptr, nullptr),
+ CastInst::IntToPtr, PtrTy32, Int64Ty,
+ PtrTy32, nullptr),
0U);
// Middle pointer big enough -> bitcast.
EXPECT_EQ(CastInst::isEliminableCastPair(CastInst::IntToPtr,
- CastInst::PtrToInt,
- Int64Ty, Int64PtrTy, Int64Ty,
- nullptr, Int64Ty, nullptr),
+ CastInst::PtrToInt, Int64Ty, PtrTy64,
+ Int64Ty, &DL1),
CastInst::BitCast);
// Middle pointer too small -> fail.
EXPECT_EQ(CastInst::isEliminableCastPair(CastInst::IntToPtr,
- CastInst::PtrToInt,
- Int64Ty, Int64PtrTy, Int64Ty,
- nullptr, Int32Ty, nullptr),
+ CastInst::PtrToInt, Int64Ty, PtrTy32,
+ Int64Ty, &DL1),
0U);
// Test that we don't eliminate bitcasts between different address spaces,
// or if we don't have available pointer size information.
- DataLayout DL("e-p:32:32:32-p1:16:16:16-p2:64:64:64-i1:8:8-i8:8:8-i16:16:16"
- "-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64"
- "-v128:128:128-a:0:64-s:64:64-f80:128:128-n8:16:32:64-S128");
+ DataLayout DL2("e-p:32:32:32-p1:16:16:16-p2:64:64:64-i1:8:8-i8:8:8-i16:16:16"
+ "-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64"
+ "-v128:128:128-a:0:64-s:64:64-f80:128:128-n8:16:32:64-S128");
Type *Int64PtrTyAS1 = PointerType::get(C, 1);
Type *Int64PtrTyAS2 = PointerType::get(C, 2);
- IntegerType *Int16SizePtr = DL.getIntPtrType(C, 1);
- IntegerType *Int64SizePtr = DL.getIntPtrType(C, 2);
-
// Cannot simplify inttoptr, addrspacecast
EXPECT_EQ(CastInst::isEliminableCastPair(CastInst::IntToPtr,
- CastInst::AddrSpaceCast,
- Int16Ty, Int64PtrTyAS1, Int64PtrTyAS2,
- nullptr, Int16SizePtr, Int64SizePtr),
+ CastInst::AddrSpaceCast, Int16Ty,
+ Int64PtrTyAS1, Int64PtrTyAS2, &DL2),
0U);
// Cannot simplify addrspacecast, ptrtoint
EXPECT_EQ(CastInst::isEliminableCastPair(CastInst::AddrSpaceCast,
- CastInst::PtrToInt,
- Int64PtrTyAS1, Int64PtrTyAS2, Int16Ty,
- Int64SizePtr, Int16SizePtr, nullptr),
+ CastInst::PtrToInt, Int64PtrTyAS1,
+ Int64PtrTyAS2, Int16Ty, &DL2),
0U);
// Pass since the bitcast address spaces are the same
- EXPECT_EQ(CastInst::isEliminableCastPair(CastInst::IntToPtr,
- CastInst::BitCast,
- Int16Ty, Int64PtrTyAS1, Int64PtrTyAS1,
- nullptr, nullptr, nullptr),
+ EXPECT_EQ(CastInst::isEliminableCastPair(
+ CastInst::IntToPtr, CastInst::BitCast, Int16Ty, Int64PtrTyAS1,
+ Int64PtrTyAS1, nullptr),
CastInst::IntToPtr);
-
}
TEST(InstructionsTest, CloneCall) {
diff --git a/llvm/unittests/TargetParser/RISCVISAInfoTest.cpp b/llvm/unittests/TargetParser/RISCVISAInfoTest.cpp
index 5c6c824..5d69a31 100644
--- a/llvm/unittests/TargetParser/RISCVISAInfoTest.cpp
+++ b/llvm/unittests/TargetParser/RISCVISAInfoTest.cpp
@@ -552,7 +552,7 @@ TEST(ParseArchString,
const auto &Exts = (*MaybeISAInfo)->getExtensions();
EXPECT_EQ(Exts.size(), 2UL);
EXPECT_EQ(Exts.count("zalasr"), 1U);
- auto MaybeISAInfo2 = RISCVISAInfo::parseArchString("rv64izalasr0p1", true);
+ auto MaybeISAInfo2 = RISCVISAInfo::parseArchString("rv64izalasr0p9", true);
ASSERT_THAT_EXPECTED(MaybeISAInfo2, Succeeded());
const auto &Exts2 = (*MaybeISAInfo2)->getExtensions();
EXPECT_EQ(Exts2.size(), 2UL);
@@ -581,7 +581,7 @@ TEST(ParseArchString, RejectsUnrecognizedVersionForExperimentalExtension) {
toString(
RISCVISAInfo::parseArchString("rv64izalasr9p9", true).takeError()),
"unsupported version number 9.9 for experimental extension 'zalasr' "
- "(this compiler supports 0.1)");
+ "(this compiler supports 0.9)");
}
TEST(ParseArchString, RejectsExtensionVersionForG) {
@@ -1188,7 +1188,7 @@ Experimental extensions
zibi 0.1
zicfilp 1.0 This is a long dummy description
zicfiss 1.0
- zalasr 0.1
+ zalasr 0.9
zvbc32e 0.7
zvfbfa 0.1
zvfofp8min 0.2
diff --git a/llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.cpp b/llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.cpp
index c96331c..10f0213 100644
--- a/llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.cpp
+++ b/llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.cpp
@@ -543,8 +543,11 @@ void RuntimeLibcallEmitter::emitSystemRuntimeLibrarySetCalls(
OS << "void llvm::RTLIB::RuntimeLibcallsInfo::setTargetRuntimeLibcallSets("
"const llvm::Triple &TT, ExceptionHandling ExceptionModel, "
"FloatABI::ABIType FloatABI, EABI EABIVersion, "
- "StringRef ABIName) {\n";
-
+ "StringRef ABIName) {\n"
+ " struct LibcallImplPair {\n"
+ " RTLIB::Libcall Func;\n"
+ " RTLIB::LibcallImpl Impl;\n"
+ " };\n";
ArrayRef<const Record *> AllLibs =
Records.getAllDerivedDefinitions("SystemRuntimeLibrary");
@@ -669,20 +672,36 @@ void RuntimeLibcallEmitter::emitSystemRuntimeLibrarySetCalls(
Funcs.erase(UniqueI, Funcs.end());
- StringRef CCEnum;
+ OS << indent(IndentDepth + 2)
+ << "static const LibcallImplPair LibraryCalls";
+ SubsetPredicate.emitTableVariableNameSuffix(OS);
if (FuncsWithCC.CallingConv)
- CCEnum = FuncsWithCC.CallingConv->getValueAsString("CallingConv");
+ OS << '_' << FuncsWithCC.CallingConv->getName();
+ OS << "[] = {\n";
for (const RuntimeLibcallImpl *LibCallImpl : Funcs) {
- OS << indent(IndentDepth + 2);
- LibCallImpl->emitSetImplCall(OS);
+ OS << indent(IndentDepth + 6);
+ LibCallImpl->emitTableEntry(OS);
+ }
- if (FuncsWithCC.CallingConv) {
- OS << indent(IndentDepth + 2) << "setLibcallImplCallingConv(";
- LibCallImpl->emitEnumEntry(OS);
- OS << ", " << CCEnum << ");\n";
- }
+ OS << indent(IndentDepth + 2) << "};\n\n"
+ << indent(IndentDepth + 2)
+ << "for (const auto [Func, Impl] : LibraryCalls";
+ SubsetPredicate.emitTableVariableNameSuffix(OS);
+ if (FuncsWithCC.CallingConv)
+ OS << '_' << FuncsWithCC.CallingConv->getName();
+
+ OS << ") {\n"
+ << indent(IndentDepth + 4) << "setLibcallImpl(Func, Impl);\n";
+
+ if (FuncsWithCC.CallingConv) {
+ StringRef CCEnum =
+ FuncsWithCC.CallingConv->getValueAsString("CallingConv");
+ OS << indent(IndentDepth + 4) << "setLibcallImplCallingConv(Impl, "
+ << CCEnum << ");\n";
}
+
+ OS << indent(IndentDepth + 2) << "}\n";
OS << '\n';
if (!SubsetPredicate.isAlwaysAvailable()) {
diff --git a/llvm/utils/emacs/llvm-mode.el b/llvm/utils/emacs/llvm-mode.el
index 660d071..240c133 100644
--- a/llvm/utils/emacs/llvm-mode.el
+++ b/llvm/utils/emacs/llvm-mode.el
@@ -34,7 +34,7 @@
"inaccessiblemem_or_argmemonly" "inalloca" "inlinehint" "jumptable" "minsize" "mustprogress" "naked" "nobuiltin" "nonnull" "nocapture"
"nocallback" "nocf_check" "noduplicate" "noext" "nofree" "noimplicitfloat" "noinline" "nomerge" "nonlazybind" "noprofile" "noredzone" "noreturn"
"norecurse" "nosync" "noundef" "nounwind" "nosanitize_bounds" "nosanitize_coverage" "null_pointer_is_valid" "optdebug" "optforfuzzing" "optnone" "optsize" "preallocated" "readnone" "readonly" "returned" "returns_twice"
- "shadowcallstack" "signext" "speculatable" "speculative_load_hardening" "ssp" "sspreq" "sspstrong" "safestack" "sanitize_address" "sanitize_hwaddress" "sanitize_memtag"
+ "shadowcallstack" "signext" "speculatable" "speculative_load_hardening" "ssp" "sspreq" "sspstrong" "safestack" "sanitize_address" "sanitize_alloc_token" "sanitize_hwaddress" "sanitize_memtag"
"sanitize_thread" "sanitize_memory" "strictfp" "swifterror" "uwtable" "vscale_range" "willreturn" "writeonly" "zeroext") 'symbols) . font-lock-constant-face)
;; Variables
'("%[-a-zA-Z$._][-a-zA-Z$._0-9]*" . font-lock-variable-name-face)
diff --git a/llvm/utils/gn/secondary/bolt/lib/Passes/BUILD.gn b/llvm/utils/gn/secondary/bolt/lib/Passes/BUILD.gn
index a7975bd..393309e 100644
--- a/llvm/utils/gn/secondary/bolt/lib/Passes/BUILD.gn
+++ b/llvm/utils/gn/secondary/bolt/lib/Passes/BUILD.gn
@@ -30,12 +30,14 @@ static_library("Passes") {
"IdenticalCodeFolding.cpp",
"IndirectCallPromotion.cpp",
"Inliner.cpp",
+ "InsertNegateRAStatePass.cpp",
"Instrumentation.cpp",
"JTFootprintReduction.cpp",
"LivenessAnalysis.cpp",
"LongJmp.cpp",
"LoopInversionPass.cpp",
"MCF.cpp",
+ "MarkRAStates.cpp",
"PAuthGadgetScanner.cpp",
"PLTCall.cpp",
"PatchEntries.cpp",
diff --git a/llvm/utils/gn/secondary/clang/test/BUILD.gn b/llvm/utils/gn/secondary/clang/test/BUILD.gn
index 0944216..5c58903 100644
--- a/llvm/utils/gn/secondary/clang/test/BUILD.gn
+++ b/llvm/utils/gn/secondary/clang/test/BUILD.gn
@@ -185,6 +185,7 @@ group("test") {
"//llvm/tools/llvm-nm:symlinks",
"//llvm/tools/llvm-objcopy:symlinks",
"//llvm/tools/llvm-objdump:symlinks",
+ "//llvm/tools/llvm-offload-binary",
"//llvm/tools/llvm-pdbutil",
"//llvm/tools/llvm-profdata",
"//llvm/tools/llvm-rc:symlinks",
diff --git a/llvm/utils/gn/secondary/clang/tools/clang-offload-packager/BUILD.gn b/llvm/utils/gn/secondary/clang/tools/clang-offload-packager/BUILD.gn
deleted file mode 100644
index b33b534..0000000
--- a/llvm/utils/gn/secondary/clang/tools/clang-offload-packager/BUILD.gn
+++ /dev/null
@@ -1,10 +0,0 @@
-executable("clang-offload-packager") {
- configs += [ "//llvm/utils/gn/build:clang_code" ]
- deps = [
- "//clang/lib/Basic",
- "//llvm/lib/Object",
- "//llvm/lib/Support",
- "//llvm/lib/Target:TargetsToBuild",
- ]
- sources = [ "ClangOffloadPackager.cpp" ]
-}
diff --git a/llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn b/llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn
index 6f00fca..54fca3b 100644
--- a/llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn
+++ b/llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn
@@ -60,7 +60,6 @@ driver_executable("clang") {
"//clang/tools/clang-linker-wrapper",
"//clang/tools/clang-nvlink-wrapper",
"//clang/tools/clang-offload-bundler",
- "//clang/tools/clang-offload-packager",
"//llvm/include/llvm/Config:llvm-config",
"//llvm/lib/Analysis",
"//llvm/lib/CodeGen",
diff --git a/llvm/utils/gn/secondary/llvm/lib/ExecutionEngine/Orc/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/ExecutionEngine/Orc/BUILD.gn
index a68cee4..9b69a44 100644
--- a/llvm/utils/gn/secondary/llvm/lib/ExecutionEngine/Orc/BUILD.gn
+++ b/llvm/utils/gn/secondary/llvm/lib/ExecutionEngine/Orc/BUILD.gn
@@ -34,6 +34,7 @@ static_library("Orc") {
"EPCIndirectionUtils.cpp",
"ExecutionUtils.cpp",
"ExecutorProcessControl.cpp",
+ "ExecutorResolutionGenerator.cpp",
"GetDylibInterface.cpp",
"IRCompileLayer.cpp",
"IRPartitionLayer.cpp",
diff --git a/llvm/utils/gn/secondary/llvm/lib/ExecutionEngine/Orc/TargetProcess/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/ExecutionEngine/Orc/TargetProcess/BUILD.gn
index 0104684..c4ce990 100644
--- a/llvm/utils/gn/secondary/llvm/lib/ExecutionEngine/Orc/TargetProcess/BUILD.gn
+++ b/llvm/utils/gn/secondary/llvm/lib/ExecutionEngine/Orc/TargetProcess/BUILD.gn
@@ -7,6 +7,7 @@ static_library("TargetProcess") {
]
sources = [
"DefaultHostBootstrapValues.cpp",
+ "ExecutorResolver.cpp",
"ExecutorSharedMemoryMapperService.cpp",
"JITLoaderGDB.cpp",
"JITLoaderPerf.cpp",
diff --git a/llvm/utils/gn/secondary/llvm/lib/Transforms/Instrumentation/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/Transforms/Instrumentation/BUILD.gn
index a8eb834..2c6204e 100644
--- a/llvm/utils/gn/secondary/llvm/lib/Transforms/Instrumentation/BUILD.gn
+++ b/llvm/utils/gn/secondary/llvm/lib/Transforms/Instrumentation/BUILD.gn
@@ -11,6 +11,7 @@ static_library("Instrumentation") {
]
sources = [
"AddressSanitizer.cpp",
+ "AllocToken.cpp",
"BlockCoverageInference.cpp",
"BoundsChecking.cpp",
"CGProfile.cpp",
diff --git a/llvm/utils/gn/secondary/llvm/test/BUILD.gn b/llvm/utils/gn/secondary/llvm/test/BUILD.gn
index 0b6c81c6..b297dbd 100644
--- a/llvm/utils/gn/secondary/llvm/test/BUILD.gn
+++ b/llvm/utils/gn/secondary/llvm/test/BUILD.gn
@@ -303,6 +303,7 @@ group("test") {
"//llvm/tools/llvm-nm",
"//llvm/tools/llvm-objcopy:symlinks",
"//llvm/tools/llvm-objdump:symlinks",
+ "//llvm/tools/llvm-offload-binary",
"//llvm/tools/llvm-offload-wrapper",
"//llvm/tools/llvm-opt-fuzzer",
"//llvm/tools/llvm-opt-report",
diff --git a/llvm/utils/gn/secondary/llvm/tools/llvm-offload-binary/BUILD.gn b/llvm/utils/gn/secondary/llvm/tools/llvm-offload-binary/BUILD.gn
new file mode 100644
index 0000000..4cc0161
--- /dev/null
+++ b/llvm/utils/gn/secondary/llvm/tools/llvm-offload-binary/BUILD.gn
@@ -0,0 +1,8 @@
+executable("llvm-offload-binary") {
+ deps = [
+ "//llvm/lib/BinaryFormat",
+ "//llvm/lib/Object",
+ "//llvm/lib/Support",
+ ]
+ sources = [ "llvm-offload-binary.cpp" ]
+}
diff --git a/llvm/utils/gn/secondary/llvm/tools/llvm-profdata/BUILD.gn b/llvm/utils/gn/secondary/llvm/tools/llvm-profdata/BUILD.gn
index 959fb44..2f6399f 100644
--- a/llvm/utils/gn/secondary/llvm/tools/llvm-profdata/BUILD.gn
+++ b/llvm/utils/gn/secondary/llvm/tools/llvm-profdata/BUILD.gn
@@ -1,6 +1,6 @@
import("//llvm/utils/gn/build/driver_executable.gni")
-driver_executable("llvm-profdata") {
+executable("llvm-profdata") {
deps = [
"//llvm/lib/Debuginfod",
"//llvm/lib/IR",
diff --git a/llvm/utils/gn/secondary/llvm/tools/llvm-reduce/BUILD.gn b/llvm/utils/gn/secondary/llvm/tools/llvm-reduce/BUILD.gn
index 6aa49d0..0c7affb 100644
--- a/llvm/utils/gn/secondary/llvm/tools/llvm-reduce/BUILD.gn
+++ b/llvm/utils/gn/secondary/llvm/tools/llvm-reduce/BUILD.gn
@@ -31,6 +31,7 @@ executable("llvm-reduce") {
"deltas/ReduceGlobalVarInitializers.cpp",
"deltas/ReduceGlobalVars.cpp",
"deltas/ReduceIRReferences.cpp",
+ "deltas/ReduceInlineCallSites.cpp",
"deltas/ReduceInstructionFlags.cpp",
"deltas/ReduceInstructionFlagsMIR.cpp",
"deltas/ReduceInstructions.cpp",
diff --git a/llvm/utils/llvm.grm b/llvm/utils/llvm.grm
index 4113231..dddfe3c 100644
--- a/llvm/utils/llvm.grm
+++ b/llvm/utils/llvm.grm
@@ -173,6 +173,7 @@ FuncAttr ::= noreturn
| returns_twice
| nonlazybind
| sanitize_address
+ | sanitize_alloc_token
| sanitize_thread
| sanitize_memory
| mustprogress
diff --git a/llvm/utils/profcheck-xfail.txt b/llvm/utils/profcheck-xfail.txt
index bbc8f59..74ed172 100644
--- a/llvm/utils/profcheck-xfail.txt
+++ b/llvm/utils/profcheck-xfail.txt
@@ -711,11 +711,6 @@ Transforms/CorrelatedValuePropagation/urem.ll
Transforms/CrossDSOCFI/basic.ll
Transforms/CrossDSOCFI/cfi_functions.ll
Transforms/CrossDSOCFI/thumb.ll
-Transforms/DFAJumpThreading/dfa-jump-threading-analysis.ll
-Transforms/DFAJumpThreading/dfa-jump-threading-transform.ll
-Transforms/DFAJumpThreading/dfa-unfold-select.ll
-Transforms/DFAJumpThreading/max-path-length.ll
-Transforms/DFAJumpThreading/negative.ll
Transforms/ExpandFp/AMDGPU/frem-inf.ll
Transforms/ExpandFp/AMDGPU/frem.ll
Transforms/ExpandLargeDivRem/X86/sdiv129.ll
diff --git a/llvm/utils/vim/syntax/llvm.vim b/llvm/utils/vim/syntax/llvm.vim
index e3b8ff8..e048caa 100644
--- a/llvm/utils/vim/syntax/llvm.vim
+++ b/llvm/utils/vim/syntax/llvm.vim
@@ -163,6 +163,7 @@ syn keyword llvmKeyword
\ returns_twice
\ safestack
\ sanitize_address
+ \ sanitize_alloc_token
\ sanitize_hwaddress
\ sanitize_memory
\ sanitize_memtag
diff --git a/llvm/utils/vscode/llvm/syntaxes/ll.tmLanguage.yaml b/llvm/utils/vscode/llvm/syntaxes/ll.tmLanguage.yaml
index b644823..1faaf6b 100644
--- a/llvm/utils/vscode/llvm/syntaxes/ll.tmLanguage.yaml
+++ b/llvm/utils/vscode/llvm/syntaxes/ll.tmLanguage.yaml
@@ -258,6 +258,7 @@ patterns:
\\breturns_twice\\b|\
\\bsafestack\\b|\
\\bsanitize_address\\b|\
+ \\bsanitize_alloc_token\\b|\
\\bsanitize_hwaddress\\b|\
\\bsanitize_memory\\b|\
\\bsanitize_memtag\\b|\