// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. #ifndef RUNTIME_VM_COMPILER_ASSEMBLER_ASSEMBLER_H_ #define RUNTIME_VM_COMPILER_ASSEMBLER_ASSEMBLER_H_ #if defined(DART_PRECOMPILED_RUNTIME) #error "AOT runtime should not use compiler sources (including header files)" #endif // defined(DART_PRECOMPILED_RUNTIME) #include "platform/assert.h" #include "vm/allocation.h" #include "vm/compiler/assembler/object_pool_builder.h" #include "vm/compiler/runtime_api.h" #include "vm/globals.h" #include "vm/growable_array.h" #include "vm/hash_map.h" #if defined(TARGET_ARCH_IA32) #include "vm/compiler/assembler/assembler_ia32.h" #elif defined(TARGET_ARCH_X64) #include "vm/compiler/assembler/assembler_x64.h" #elif defined(TARGET_ARCH_ARM) #include "vm/compiler/assembler/assembler_arm.h" #elif defined(TARGET_ARCH_ARM64) #include "vm/compiler/assembler/assembler_arm64.h" #elif defined(TARGET_ARCH_RISCV32) || defined(TARGET_ARCH_RISCV64) #include "vm/compiler/assembler/assembler_riscv.h" #else #error Unknown architecture. #endif namespace dart { // Convert comparison Token::Kind to GPR comparison condition. static inline Condition TokenKindToIntCondition(Token::Kind kind, bool is_unsigned) { // Use platform-independent condition names // declared in constant_.h on all platforms. switch (kind) { case Token::kEQ: return EQUAL; case Token::kNE: return NOT_EQUAL; case Token::kLT: return is_unsigned ? UNSIGNED_LESS : LESS; case Token::kGT: return is_unsigned ? UNSIGNED_GREATER : GREATER; case Token::kLTE: return is_unsigned ? UNSIGNED_LESS_EQUAL : LESS_EQUAL; case Token::kGTE: return is_unsigned ? UNSIGNED_GREATER_EQUAL : GREATER_EQUAL; default: UNREACHABLE(); return OVERFLOW; } } } // namespace dart #endif // RUNTIME_VM_COMPILER_ASSEMBLER_ASSEMBLER_H_