diff options
author | 2019-07-05 18:23:03 +0100 | |
---|---|---|
committer | 2020-10-28 12:03:34 +0000 | |
commit | 4955036617ff4940bd35fa8ce63f0728c1042902 (patch) | |
tree | 20ebe9c047b9ed5e21e99f2f0a00a3946fa731e8 | |
parent | 036b0708c12a33469db4a5adde9ded152b5eb700 (diff) |
ART: Fix breaking changes from recent VIXL update.
Also fixes the vixl-related headers includes.
Test: test-art-target, test-art-host
Change-Id: I752a0b0baf741aa2a0693253155042104c8b3b27
-rw-r--r-- | compiler/optimizing/code_generator_arm64.cc | 16 | ||||
-rw-r--r-- | compiler/optimizing/common_arm64.h | 14 | ||||
-rw-r--r-- | compiler/optimizing/intrinsics_arm64.cc | 8 | ||||
-rw-r--r-- | compiler/optimizing/nodes_shared.cc | 2 | ||||
-rw-r--r-- | compiler/utils/arm64/assembler_arm64.cc | 3 | ||||
-rw-r--r-- | compiler/utils/arm64/assembler_arm64.h | 8 | ||||
-rw-r--r-- | dex2oat/linker/arm64/relative_patcher_arm64.cc | 1 |
7 files changed, 27 insertions, 25 deletions
diff --git a/compiler/optimizing/code_generator_arm64.cc b/compiler/optimizing/code_generator_arm64.cc index 5920a48586..6cfe67b3ed 100644 --- a/compiler/optimizing/code_generator_arm64.cc +++ b/compiler/optimizing/code_generator_arm64.cc @@ -6901,11 +6901,11 @@ void CodeGeneratorARM64::CompileBakerReadBarrierThunk(Arm64Assembler& assembler, switch (kind) { case BakerReadBarrierKind::kField: case BakerReadBarrierKind::kAcquire: { - auto base_reg = - Register::GetXRegFromCode(BakerReadBarrierFirstRegField::Decode(encoded_data)); + Register base_reg = + vixl::aarch64::XRegister(BakerReadBarrierFirstRegField::Decode(encoded_data)); CheckValidReg(base_reg.GetCode()); - auto holder_reg = - Register::GetXRegFromCode(BakerReadBarrierSecondRegField::Decode(encoded_data)); + Register holder_reg = + vixl::aarch64::XRegister(BakerReadBarrierSecondRegField::Decode(encoded_data)); CheckValidReg(holder_reg.GetCode()); UseScratchRegisterScope temps(assembler.GetVIXLAssembler()); temps.Exclude(ip0, ip1); @@ -6951,8 +6951,8 @@ void CodeGeneratorARM64::CompileBakerReadBarrierThunk(Arm64Assembler& assembler, break; } case BakerReadBarrierKind::kArray: { - auto base_reg = - Register::GetXRegFromCode(BakerReadBarrierFirstRegField::Decode(encoded_data)); + Register base_reg = + vixl::aarch64::XRegister(BakerReadBarrierFirstRegField::Decode(encoded_data)); CheckValidReg(base_reg.GetCode()); DCHECK_EQ(kBakerReadBarrierInvalidEncodedReg, BakerReadBarrierSecondRegField::Decode(encoded_data)); @@ -6980,8 +6980,8 @@ void CodeGeneratorARM64::CompileBakerReadBarrierThunk(Arm64Assembler& assembler, // and it does not have a forwarding address), call the correct introspection entrypoint; // otherwise return the reference (or the extracted forwarding address). // There is no gray bit check for GC roots. - auto root_reg = - Register::GetWRegFromCode(BakerReadBarrierFirstRegField::Decode(encoded_data)); + Register root_reg = + vixl::aarch64::WRegister(BakerReadBarrierFirstRegField::Decode(encoded_data)); CheckValidReg(root_reg.GetCode()); DCHECK_EQ(kBakerReadBarrierInvalidEncodedReg, BakerReadBarrierSecondRegField::Decode(encoded_data)); diff --git a/compiler/optimizing/common_arm64.h b/compiler/optimizing/common_arm64.h index 41f284fad2..d652492c24 100644 --- a/compiler/optimizing/common_arm64.h +++ b/compiler/optimizing/common_arm64.h @@ -65,12 +65,12 @@ inline int ARTRegCodeFromVIXL(int code) { inline vixl::aarch64::Register XRegisterFrom(Location location) { DCHECK(location.IsRegister()) << location; - return vixl::aarch64::Register::GetXRegFromCode(VIXLRegCodeFromART(location.reg())); + return vixl::aarch64::XRegister(VIXLRegCodeFromART(location.reg())); } inline vixl::aarch64::Register WRegisterFrom(Location location) { DCHECK(location.IsRegister()) << location; - return vixl::aarch64::Register::GetWRegFromCode(VIXLRegCodeFromART(location.reg())); + return vixl::aarch64::WRegister(VIXLRegCodeFromART(location.reg())); } inline vixl::aarch64::Register RegisterFrom(Location location, DataType::Type type) { @@ -89,27 +89,27 @@ inline vixl::aarch64::Register InputRegisterAt(HInstruction* instr, int input_in inline vixl::aarch64::VRegister DRegisterFrom(Location location) { DCHECK(location.IsFpuRegister()) << location; - return vixl::aarch64::VRegister::GetDRegFromCode(location.reg()); + return vixl::aarch64::DRegister(location.reg()); } inline vixl::aarch64::VRegister QRegisterFrom(Location location) { DCHECK(location.IsFpuRegister()) << location; - return vixl::aarch64::VRegister::GetQRegFromCode(location.reg()); + return vixl::aarch64::QRegister(location.reg()); } inline vixl::aarch64::VRegister VRegisterFrom(Location location) { DCHECK(location.IsFpuRegister()) << location; - return vixl::aarch64::VRegister::GetVRegFromCode(location.reg()); + return vixl::aarch64::VRegister(location.reg()); } inline vixl::aarch64::VRegister SRegisterFrom(Location location) { DCHECK(location.IsFpuRegister()) << location; - return vixl::aarch64::VRegister::GetSRegFromCode(location.reg()); + return vixl::aarch64::SRegister(location.reg()); } inline vixl::aarch64::VRegister HRegisterFrom(Location location) { DCHECK(location.IsFpuRegister()) << location; - return vixl::aarch64::VRegister::GetHRegFromCode(location.reg()); + return vixl::aarch64::HRegister(location.reg()); } inline vixl::aarch64::VRegister FPRegisterFrom(Location location, DataType::Type type) { diff --git a/compiler/optimizing/intrinsics_arm64.cc b/compiler/optimizing/intrinsics_arm64.cc index c38f5d6748..4b31ac8e02 100644 --- a/compiler/optimizing/intrinsics_arm64.cc +++ b/compiler/optimizing/intrinsics_arm64.cc @@ -2768,16 +2768,16 @@ void IntrinsicCodeGeneratorARM64::VisitSystemArrayCopy(HInvoke* invoke) { static void GenIsInfinite(LocationSummary* locations, bool is64bit, MacroAssembler* masm) { - Operand infinity; - Operand tst_mask; + Operand infinity(0); + Operand tst_mask(0); Register out; if (is64bit) { - infinity = kPositiveInfinityDouble; + infinity = Operand(kPositiveInfinityDouble); tst_mask = MaskLeastSignificant<uint64_t>(63); out = XRegisterFrom(locations->Out()); } else { - infinity = kPositiveInfinityFloat; + infinity = Operand(kPositiveInfinityFloat); tst_mask = MaskLeastSignificant<uint32_t>(31); out = WRegisterFrom(locations->Out()); } diff --git a/compiler/optimizing/nodes_shared.cc b/compiler/optimizing/nodes_shared.cc index 2f971b93a6..eca97d7a70 100644 --- a/compiler/optimizing/nodes_shared.cc +++ b/compiler/optimizing/nodes_shared.cc @@ -21,7 +21,7 @@ #include "nodes_shared.h" -#include "common_arm64.h" +#include "instruction_simplifier_shared.h" namespace art { diff --git a/compiler/utils/arm64/assembler_arm64.cc b/compiler/utils/arm64/assembler_arm64.cc index d722e00646..7ab767f4fe 100644 --- a/compiler/utils/arm64/assembler_arm64.cc +++ b/compiler/utils/arm64/assembler_arm64.cc @@ -54,6 +54,9 @@ static void SetVIXLCPUFeaturesFromART(vixl::aarch64::MacroAssembler* vixl_masm_, if (art_features->HasLSE()) { features->Combine(vixl::CPUFeatures::kAtomics); } + if (art_features->HasSVE()) { + features->Combine(vixl::CPUFeatures::kSVE); + } } Arm64Assembler::Arm64Assembler(ArenaAllocator* allocator, diff --git a/compiler/utils/arm64/assembler_arm64.h b/compiler/utils/arm64/assembler_arm64.h index 232efd4917..5442b6a980 100644 --- a/compiler/utils/arm64/assembler_arm64.h +++ b/compiler/utils/arm64/assembler_arm64.h @@ -144,7 +144,7 @@ class Arm64Assembler final : public Assembler { } else if (code == XZR) { return vixl::aarch64::xzr; } - return vixl::aarch64::Register::GetXRegFromCode(code); + return vixl::aarch64::XRegister(code); } static vixl::aarch64::Register reg_w(int code) { @@ -154,15 +154,15 @@ class Arm64Assembler final : public Assembler { } else if (code == WZR) { return vixl::aarch64::wzr; } - return vixl::aarch64::Register::GetWRegFromCode(code); + return vixl::aarch64::WRegister(code); } static vixl::aarch64::VRegister reg_d(int code) { - return vixl::aarch64::VRegister::GetDRegFromCode(code); + return vixl::aarch64::DRegister(code); } static vixl::aarch64::VRegister reg_s(int code) { - return vixl::aarch64::VRegister::GetSRegFromCode(code); + return vixl::aarch64::SRegister(code); } private: diff --git a/dex2oat/linker/arm64/relative_patcher_arm64.cc b/dex2oat/linker/arm64/relative_patcher_arm64.cc index 4a73b83317..4028f758b9 100644 --- a/dex2oat/linker/arm64/relative_patcher_arm64.cc +++ b/dex2oat/linker/arm64/relative_patcher_arm64.cc @@ -33,7 +33,6 @@ #include "oat_quick_method_header.h" #include "read_barrier.h" #include "stream/output_stream.h" -#include "utils/arm64/assembler_arm64.h" namespace art { namespace linker { |