summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'compiler')
-rw-r--r--compiler/optimizing/optimizing_compiler.cc50
1 files changed, 50 insertions, 0 deletions
diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc
index 62cae41665..f86ee4f70e 100644
--- a/compiler/optimizing/optimizing_compiler.cc
+++ b/compiler/optimizing/optimizing_compiler.cc
@@ -747,6 +747,56 @@ static bool CanAssembleGraphForRiscv64(HGraph* graph) {
case HInstruction::kReturn:
case HInstruction::kReturnVoid:
case HInstruction::kSuspendCheck:
+ case HInstruction::kDoubleConstant:
+ case HInstruction::kFloatConstant:
+ case HInstruction::kIntConstant:
+ case HInstruction::kLongConstant:
+ case HInstruction::kAbove:
+ case HInstruction::kAboveOrEqual:
+ case HInstruction::kBelow:
+ case HInstruction::kBelowOrEqual:
+ case HInstruction::kEqual:
+ case HInstruction::kGreaterThan:
+ case HInstruction::kGreaterThanOrEqual:
+ case HInstruction::kLessThan:
+ case HInstruction::kLessThanOrEqual:
+ case HInstruction::kNotEqual:
+ case HInstruction::kCompare:
+ case HInstruction::kIf:
+ case HInstruction::kAdd:
+ case HInstruction::kAnd:
+ case HInstruction::kOr:
+ case HInstruction::kSub:
+ case HInstruction::kXor:
+ case HInstruction::kRor:
+ case HInstruction::kShl:
+ case HInstruction::kShr:
+ case HInstruction::kUShr:
+ case HInstruction::kAbs:
+ case HInstruction::kBooleanNot:
+ case HInstruction::kMul:
+ break;
+ case HInstruction::kInvokeStaticOrDirect: {
+ Intrinsics intrinsic = it.Current()->AsInvokeStaticOrDirect()->GetIntrinsic();
+ if (intrinsic != Intrinsics::kDoubleDoubleToRawLongBits &&
+ intrinsic != Intrinsics::kDoubleIsInfinite &&
+ intrinsic != Intrinsics::kDoubleLongBitsToDouble &&
+ intrinsic != Intrinsics::kFloatFloatToRawIntBits &&
+ intrinsic != Intrinsics::kFloatIsInfinite &&
+ intrinsic != Intrinsics::kFloatIntBitsToFloat &&
+ intrinsic != Intrinsics::kMemoryPeekByte &&
+ intrinsic != Intrinsics::kMemoryPeekIntNative &&
+ intrinsic != Intrinsics::kMemoryPeekLongNative &&
+ intrinsic != Intrinsics::kMemoryPeekShortNative &&
+ intrinsic != Intrinsics::kMemoryPokeByte &&
+ intrinsic != Intrinsics::kMemoryPokeIntNative &&
+ intrinsic != Intrinsics::kMemoryPokeLongNative &&
+ intrinsic != Intrinsics::kMemoryPokeShortNative) {
+ return false;
+ }
+ break;
+ }
+ case HInstruction::kCurrentMethod:
break;
default:
// Unimplemented instruction.