blob: cd030edae8fa75ae688afc7d45c9fc52c8f091cf [file] [log] [blame] [edit]
// 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_<arch>.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_