diff options
author | 2023-10-17 12:26:29 +0000 | |
---|---|---|
committer | 2023-10-19 16:00:34 +0000 | |
commit | b851fb49e82bc287cea6c19b5fa2fa036dbfae01 (patch) | |
tree | 4048ff0edcba2c2c0b6f3f8010f69c2155e09d08 /compiler/optimizing/optimizing_compiler.cc | |
parent | 7a718338b7654b58b38287de81465b98b5f916d7 (diff) |
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
Diffstat (limited to 'compiler/optimizing/optimizing_compiler.cc')
-rw-r--r-- | compiler/optimizing/optimizing_compiler.cc | 13 |
1 files changed, 13 insertions, 0 deletions
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. |