From b851fb49e82bc287cea6c19b5fa2fa036dbfae01 Mon Sep 17 00:00:00 2001 From: Vladimir Marko Date: Tue, 17 Oct 2023 12:26:29 +0000 Subject: riscv64: Implement `art_quick_check_instance_of`... ... and two other entrypoints. Enable codegen for several instructions and fix exposed new-array and proxy bugs. Test: m # aosp_cf_riscv64_phone-userdebug Test: # Edit `run-test` to disable checker, then testrunner.py --target --64 --ndebug --optimizing # Ignore 3 pre-existing failures (down from 6). Bug: 283082089 Change-Id: I7764fa1b578639d4871c11a79c3980defada3e7d --- compiler/optimizing/optimizing_compiler.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'compiler/optimizing/optimizing_compiler.cc') diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc index bc0a66f7db..6062d25eb8 100644 --- a/compiler/optimizing/optimizing_compiler.cc +++ b/compiler/optimizing/optimizing_compiler.cc @@ -771,6 +771,8 @@ static bool CanAssembleGraphForRiscv64(HGraph* graph) { case HInstruction::kGoto: case HInstruction::kPackedSwitch: case HInstruction::kSelect: + case HInstruction::kThrow: + case HInstruction::kNop: case HInstruction::kTryBoundary: case HInstruction::kClearException: case HInstruction::kLoadException: @@ -790,6 +792,8 @@ static bool CanAssembleGraphForRiscv64(HGraph* graph) { case HInstruction::kLoadMethodType: case HInstruction::kNewArray: case HInstruction::kNewInstance: + case HInstruction::kConstructorFence: + case HInstruction::kMemoryBarrier: case HInstruction::kInstanceFieldGet: case HInstruction::kInstanceFieldSet: case HInstruction::kStaticFieldGet: @@ -821,16 +825,25 @@ static bool CanAssembleGraphForRiscv64(HGraph* graph) { case HInstruction::kUShr: case HInstruction::kAbs: case HInstruction::kBooleanNot: + case HInstruction::kDiv: + case HInstruction::kRem: case HInstruction::kMul: case HInstruction::kNeg: case HInstruction::kNot: case HInstruction::kMin: case HInstruction::kMax: + case HInstruction::kMonitorOperation: + case HInstruction::kStringBuilderAppend: case HInstruction::kInvokeStaticOrDirect: case HInstruction::kInvokeVirtual: case HInstruction::kInvokeInterface: case HInstruction::kCurrentMethod: case HInstruction::kNullCheck: + case HInstruction::kDeoptimize: + case HInstruction::kDivZeroCheck: + case HInstruction::kCheckCast: + case HInstruction::kInstanceOf: + case HInstruction::kBoundType: break; default: // Unimplemented instruction. -- cgit v1.2.3-59-g8ed1b