summaryrefslogtreecommitdiff
path: root/compiler/optimizing/intrinsics_x86_64.cc
diff options
context:
space:
mode:
author Santiago Aboy Solanes <solanes@google.com> 2024-10-11 15:40:57 +0000
committer Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2024-10-11 18:16:08 +0000
commitc1bd4376b18ff46e5156cc597bd3311dd86fabd9 (patch)
tree290cc78dc2bc21f0eb2ad87deb524d2fc9d767b2 /compiler/optimizing/intrinsics_x86_64.cc
parent23cfc82c8eaad0b7e613dcbc2447061c06f310a0 (diff)
Revert "Add intrinsics for the absolute forms of unsafe.{get,put}Int"
This reverts commit bcb5c19e5e200607fe76294aeb5273ddac5f04ae. Bug: 370098695 Reason for revert: Breaks LUCI builds for arm https://ci.chromium.org/ui/p/art/builders/ci/angler-armv7-non-gen-cc/4506/overview Change-Id: Ia72938c65c45db0ccd14f8901e715a9ec2930087
Diffstat (limited to 'compiler/optimizing/intrinsics_x86_64.cc')
-rw-r--r--compiler/optimizing/intrinsics_x86_64.cc97
1 files changed, 0 insertions, 97 deletions
diff --git a/compiler/optimizing/intrinsics_x86_64.cc b/compiler/optimizing/intrinsics_x86_64.cc
index 849203e286..a8e7bf4881 100644
--- a/compiler/optimizing/intrinsics_x86_64.cc
+++ b/compiler/optimizing/intrinsics_x86_64.cc
@@ -1889,43 +1889,6 @@ static void GenUnsafeGet(HInvoke* invoke,
}
}
-static void GenUnsafeGetAbsolute(HInvoke* invoke,
- DataType::Type type,
- CodeGeneratorX86_64* codegen) {
- X86_64Assembler* assembler = down_cast<X86_64Assembler*>(codegen->GetAssembler());
- LocationSummary* locations = invoke->GetLocations();
- Location address_loc = locations->InAt(1);
- Address address = Address(address_loc.AsRegister<CpuRegister>(), 0);
- Location output_loc = locations->Out();
- CpuRegister output = output_loc.AsRegister<CpuRegister>();
-
- switch (type) {
- case DataType::Type::kInt8:
- __ movsxb(output, address);
- break;
-
- case DataType::Type::kInt32:
- __ movl(output, address);
- break;
-
- case DataType::Type::kInt64:
- __ movq(output, address);
- break;
-
- default:
- LOG(FATAL) << "Unsupported op size " << type;
- UNREACHABLE();
- }
-}
-
-static void CreateIntIntToIntLocations(ArenaAllocator* allocator, HInvoke* invoke) {
- LocationSummary* locations =
- new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified);
- locations->SetInAt(0, Location::NoLocation()); // Unused receiver.
- locations->SetInAt(1, Location::RequiresRegister());
- locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
-}
-
static void CreateIntIntIntToIntLocations(ArenaAllocator* allocator,
HInvoke* invoke,
CodeGeneratorX86_64* codegen) {
@@ -1949,9 +1912,6 @@ static void CreateIntIntIntToIntLocations(ArenaAllocator* allocator,
void IntrinsicLocationsBuilderX86_64::VisitUnsafeGet(HInvoke* invoke) {
VisitJdkUnsafeGet(invoke);
}
-void IntrinsicLocationsBuilderX86_64::VisitUnsafeGetAbsolute(HInvoke* invoke) {
- VisitJdkUnsafeGetAbsolute(invoke);
-}
void IntrinsicLocationsBuilderX86_64::VisitUnsafeGetVolatile(HInvoke* invoke) {
VisitJdkUnsafeGetVolatile(invoke);
}
@@ -1974,9 +1934,6 @@ void IntrinsicLocationsBuilderX86_64::VisitUnsafeGetByte(HInvoke* invoke) {
void IntrinsicLocationsBuilderX86_64::VisitJdkUnsafeGet(HInvoke* invoke) {
CreateIntIntIntToIntLocations(allocator_, invoke, codegen_);
}
-void IntrinsicLocationsBuilderX86_64::VisitJdkUnsafeGetAbsolute(HInvoke* invoke) {
- CreateIntIntToIntLocations(allocator_, invoke);
-}
void IntrinsicLocationsBuilderX86_64::VisitJdkUnsafeGetVolatile(HInvoke* invoke) {
CreateIntIntIntToIntLocations(allocator_, invoke, codegen_);
}
@@ -2008,9 +1965,6 @@ void IntrinsicLocationsBuilderX86_64::VisitJdkUnsafeGetByte(HInvoke* invoke) {
void IntrinsicCodeGeneratorX86_64::VisitUnsafeGet(HInvoke* invoke) {
VisitJdkUnsafeGet(invoke);
}
-void IntrinsicCodeGeneratorX86_64::VisitUnsafeGetAbsolute(HInvoke* invoke) {
- VisitJdkUnsafeGetAbsolute(invoke);
-}
void IntrinsicCodeGeneratorX86_64::VisitUnsafeGetVolatile(HInvoke* invoke) {
VisitJdkUnsafeGetVolatile(invoke);
}
@@ -2033,9 +1987,6 @@ void IntrinsicCodeGeneratorX86_64::VisitUnsafeGetByte(HInvoke* invoke) {
void IntrinsicCodeGeneratorX86_64::VisitJdkUnsafeGet(HInvoke* invoke) {
GenUnsafeGet(invoke, DataType::Type::kInt32, /*is_volatile=*/ false, codegen_);
}
-void IntrinsicCodeGeneratorX86_64::VisitJdkUnsafeGetAbsolute(HInvoke* invoke) {
- GenUnsafeGetAbsolute(invoke, DataType::Type::kInt32, codegen_);
-}
void IntrinsicCodeGeneratorX86_64::VisitJdkUnsafeGetVolatile(HInvoke* invoke) {
GenUnsafeGet(invoke, DataType::Type::kInt32, /*is_volatile=*/ true, codegen_);
}
@@ -2064,16 +2015,6 @@ void IntrinsicCodeGeneratorX86_64::VisitJdkUnsafeGetByte(HInvoke* invoke) {
GenUnsafeGet(invoke, DataType::Type::kInt8, /*is_volatile=*/false, codegen_);
}
-static void CreateIntIntIntToVoidPlusTempsLocations(ArenaAllocator* allocator,
- [[maybe_unused]] DataType::Type type,
- HInvoke* invoke) {
- LocationSummary* locations =
- new (allocator) LocationSummary(invoke, LocationSummary::kNoCall, kIntrinsified);
- locations->SetInAt(0, Location::NoLocation()); // Unused receiver.
- locations->SetInAt(1, Location::RequiresRegister());
- locations->SetInAt(2, Location::RequiresRegister());
-}
-
static void CreateIntIntIntIntToVoidPlusTempsLocations(ArenaAllocator* allocator,
DataType::Type type,
HInvoke* invoke) {
@@ -2093,9 +2034,6 @@ static void CreateIntIntIntIntToVoidPlusTempsLocations(ArenaAllocator* allocator
void IntrinsicLocationsBuilderX86_64::VisitUnsafePut(HInvoke* invoke) {
VisitJdkUnsafePut(invoke);
}
-void IntrinsicLocationsBuilderX86_64::VisitUnsafePutAbsolute(HInvoke* invoke) {
- VisitJdkUnsafePutAbsolute(invoke);
-}
void IntrinsicLocationsBuilderX86_64::VisitUnsafePutOrdered(HInvoke* invoke) {
VisitJdkUnsafePutOrdered(invoke);
}
@@ -2127,9 +2065,6 @@ void IntrinsicLocationsBuilderX86_64::VisitUnsafePutByte(HInvoke* invoke) {
void IntrinsicLocationsBuilderX86_64::VisitJdkUnsafePut(HInvoke* invoke) {
CreateIntIntIntIntToVoidPlusTempsLocations(allocator_, DataType::Type::kInt32, invoke);
}
-void IntrinsicLocationsBuilderX86_64::VisitJdkUnsafePutAbsolute(HInvoke* invoke) {
- CreateIntIntIntToVoidPlusTempsLocations(allocator_, DataType::Type::kInt32, invoke);
-}
void IntrinsicLocationsBuilderX86_64::VisitJdkUnsafePutOrdered(HInvoke* invoke) {
CreateIntIntIntIntToVoidPlusTempsLocations(allocator_, DataType::Type::kInt32, invoke);
}
@@ -2204,37 +2139,9 @@ static void GenUnsafePut(LocationSummary* locations, DataType::Type type, bool i
}
}
-// We don't care for ordered: it requires an AnyStore barrier, which is already given by the x86
-// memory model.
-static void GenUnsafePutAbsolute(LocationSummary* locations,
- DataType::Type type,
- bool is_volatile,
- CodeGeneratorX86_64* codegen) {
- X86_64Assembler* assembler = down_cast<X86_64Assembler*>(codegen->GetAssembler());
- CpuRegister address_reg = locations->InAt(1).AsRegister<CpuRegister>();
- Address address = Address(address_reg, 0);
- CpuRegister value = locations->InAt(2).AsRegister<CpuRegister>();
-
- if (type == DataType::Type::kInt64) {
- __ movq(address, value);
- } else if (type == DataType::Type::kInt32) {
- __ movl(address, value);
- } else {
- CHECK_EQ(type, DataType::Type::kInt8) << "Unimplemented GenUnsafePut data type";
- __ movb(address, value);
- }
-
- if (is_volatile) {
- codegen->MemoryFence();
- }
-}
-
void IntrinsicCodeGeneratorX86_64::VisitUnsafePut(HInvoke* invoke) {
VisitJdkUnsafePut(invoke);
}
-void IntrinsicCodeGeneratorX86_64::VisitUnsafePutAbsolute(HInvoke* invoke) {
- VisitJdkUnsafePutAbsolute(invoke);
-}
void IntrinsicCodeGeneratorX86_64::VisitUnsafePutOrdered(HInvoke* invoke) {
VisitJdkUnsafePutOrdered(invoke);
}
@@ -2266,10 +2173,6 @@ void IntrinsicCodeGeneratorX86_64::VisitUnsafePutByte(HInvoke* invoke) {
void IntrinsicCodeGeneratorX86_64::VisitJdkUnsafePut(HInvoke* invoke) {
GenUnsafePut(invoke->GetLocations(), DataType::Type::kInt32, /*is_volatile=*/ false, codegen_);
}
-void IntrinsicCodeGeneratorX86_64::VisitJdkUnsafePutAbsolute(HInvoke* invoke) {
- GenUnsafePutAbsolute(
- invoke->GetLocations(), DataType::Type::kInt32, /*is_volatile=*/false, codegen_);
-}
void IntrinsicCodeGeneratorX86_64::VisitJdkUnsafePutOrdered(HInvoke* invoke) {
GenUnsafePut(invoke->GetLocations(), DataType::Type::kInt32, /*is_volatile=*/ false, codegen_);
}