Lines Matching full:vixl
37 using namespace vixl; // NOLINT(build/namespaces)
40 #error "ARM64 Codegen VIXL macro-assembler macro already defined."
410 vixl::Label* GetReturnLabel() {
426 vixl::Label return_label_;
566 vixl::Label* target_label = codegen->GetLabelOf(successors[i]);
686 // calls to vixl::MacroAssembler::Lsl and
687 // vixl::MacroAssembler::Mov below), but it has
953 // VIXL uses at most 1 GPR. VIXL has 2 GPR and 1 FPR temps, and there should be no intersecting
954 // cycles on ARM64, so we always have 1 GPR and 1 FPR available VIXL temps to resolve the
971 // Allocate from VIXL temp registers.
1046 vixl::CPURegList CodeGeneratorARM64::GetFramePreservedCoreRegisters() const {
1048 return vixl::CPURegList(vixl::CPURegister::kRegister, vixl::kXRegSize,
1052 vixl::CPURegList CodeGeneratorARM64::GetFramePreservedFPRegisters() const {
1055 return vixl::CPURegList(vixl::CPURegister::kFPRegister, vixl::kDRegSize,
1080 vixl::Label done;
1097 // ip1 : VIXL core temp.
1098 // ip0 : VIXL core temp.
1101 // d31 : VIXL fp temp.
1329 // TODO(vixl): Let the MacroAssembler handle MemOperand.
1420 // TODO(vixl): Let the MacroAssembler handle this.
1476 vixl::Register class_reg) {
1482 // TODO(vixl): Let the MacroAssembler handle MemOperand.
1919 // operand. Note that VIXL would still manage if it was passed by generating
2000 vixl::Instruction* prev = masm->GetCursorAddress<vixl::Instruction*>() - vixl::kInstructionSize;
2003 vixl::CodeBufferCheckScope scope(masm,
2004 vixl::kInstructionSize,
2005 vixl::CodeBufferCheckScope::kCheck,
2006 vixl::CodeBufferCheckScope::kExactSize);
2196 vixl::Label done;
2221 vixl::Label non_zero;
2275 vixl::Label do_put;
2808 vixl::Label* true_target,
2809 vixl::Label* false_target) {
2812 vixl::Label fallthrough_target;
2870 vixl::Label* non_fallthrough_target;
2929 vixl::Label* true_target = codegen_->GoesToNextBlock(if_instr->GetBlock(), true_successor) ?
2931 vixl::Label* false_target = codegen_->GoesToNextBlock(if_instr->GetBlock(), false_successor) ?
3154 vixl::Label done, zero;
3179 vixl::Label loop, success;
3196 vixl::Label loop, success;
3215 vixl::Label exact_check;
3352 vixl::Label done;
3374 vixl::Label loop, compare_classes;
3401 vixl::Label loop;
3426 vixl::Label check_non_primitive_component_type;
3537 // art_quick_imt_conflict_trampoline, so prevent VIXL from using it.
3650 vixl::Label* adrp_label = NewPcRelativeDexCacheArrayPatch(dex_file, element_offset);
3652 vixl::SingleEmissionCheckScope guard(GetVIXLAssembler());
3657 vixl::Label* ldr_label =
3660 vixl::SingleEmissionCheckScope guard(GetVIXLAssembler());
3697 vixl::Label* label = &relative_call_patches_.back().label;
3698 vixl::SingleEmissionCheckScope guard(GetVIXLAssembler());
3757 vixl::Label* CodeGeneratorARM64::NewPcRelativeStringPatch(const DexFile& dex_file,
3759 vixl::Label* adrp_label) {
3763 vixl::Label* CodeGeneratorARM64::NewPcRelativeDexCacheArrayPatch(const DexFile& dex_file,
3765 vixl::Label* adrp_label) {
3769 vixl::Label* CodeGeneratorARM64::NewPcRelativePatch(const DexFile& dex_file,
3771 vixl::Label* adrp_label,
3776 vixl::Label* label = &info->label;
3782 vixl::Literal<uint32_t>* CodeGeneratorARM64::DeduplicateBootImageStringLiteral(
3789 vixl::Literal<uint32_t>* CodeGeneratorARM64::DeduplicateBootImageAddressLiteral(uint64_t address) {
3795 vixl::Literal<uint64_t>* CodeGeneratorARM64::DeduplicateDexCacheAddressLiteral(uint64_t address) {
3812 vixl::Literal<uint64_t>* literal = entry.second;
3819 vixl::Literal<uint64_t>* literal = entry.second;
3824 for (const MethodPatchInfo<vixl::Label>& info : relative_call_patches_) {
3837 vixl::Literal<uint32_t>* literal = entry.second;
3850 vixl::Literal<uint32_t>* literal = entry.second;
3855 vixl::Literal<uint32_t>* CodeGeneratorARM64::DeduplicateUint32Literal(uint32_t value,
3862 vixl::Literal<uint64_t>* CodeGeneratorARM64::DeduplicateUint64Literal(uint64_t value) {
3868 vixl::Literal<uint64_t>* CodeGeneratorARM64::DeduplicateMethodLiteral(
3876 vixl::Literal<uint64_t>* CodeGeneratorARM64::DeduplicateMethodAddressLiteral(
3881 vixl::Literal<uint64_t>* CodeGeneratorARM64::DeduplicateMethodCodeLiteral(
3918 LocationFrom(vixl::x0),
4050 vixl::Label* adrp_label = codegen_->NewPcRelativeStringPatch(dex_file, string_index);
4052 vixl::SingleEmissionCheckScope guard(GetVIXLAssembler());
4057 vixl::Label* add_label =
4060 vixl::SingleEmissionCheckScope guard(GetVIXLAssembler());
4091 vixl::Label* adrp_label = codegen_->NewPcRelativeDexCacheArrayPatch(dex_file, element_offset);
4093 vixl::SingleEmissionCheckScope guard(GetVIXLAssembler());
4098 vixl::Label* ldr_label =
4318 __ Eor(OutputRegister(instruction), InputRegisterAt(instruction, 0), vixl::Operand(1));
4750 static constexpr int32_t kMaxExpectedSizePerHInstruction = 16 * vixl::kInstructionSize;
4807 // In current VIXL implementation, it won't require any blocked registers to encode the
4808 // immediate value for Adr. So we are free to use both VIXL blocked registers to reduce the
4895 vixl::Register obj,
4897 vixl::Label* fixup_label) {
4913 vixl::SingleEmissionCheckScope guard(GetVIXLAssembler());
4944 vixl::SingleEmissionCheckScope guard(GetVIXLAssembler());
4957 vixl::SingleEmissionCheckScope guard(GetVIXLAssembler());
4968 vixl::Register obj,
4984 vixl::Register obj,
5004 vixl::Register obj,