0ca1ff2281
TEST=runtime/tests/vm/dart/multiple_uint32_comparisons_il_test.dart Fixes https://github.com/dart-lang/sdk/issues/56839 Change-Id: Ib4e0372e8def991d34b6b045d3acf62839296443 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/393905 Commit-Queue: Alexander Markov <alexmarkov@google.com> Reviewed-by: Slava Egorov <vegorov@google.com>
63 lines
2.0 KiB
C++
63 lines
2.0 KiB
C++
// 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_
|