v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
instructions-arm64-constants.cc
Go to the documentation of this file.
1// Copyright 2017 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include <cstdint>
6
7#include "include/v8config.h"
8#include "src/base/macros.h"
10
11namespace v8 {
12namespace internal {
13
14// ISA constants. --------------------------------------------------------------
15
16// The following code initializes float/double variables with bit patterns.
17//
18// TODO(mostynb): replace these with std::numeric_limits constexpr's where
19// possible, and figure out how to replace *DefaultNaN with something clean,
20// then move this code back into instructions-arm64.cc with the same types
21// that client code uses.
22
23namespace integer_constants {
24constexpr uint16_t kFP16PositiveInfinity = 0x7C00;
25constexpr uint16_t kFP16NegativeInfinity = 0xFC00;
26constexpr uint32_t kFP32PositiveInfinity = 0x7F800000;
27constexpr uint32_t kFP32NegativeInfinity = 0xFF800000;
28constexpr uint64_t kFP64PositiveInfinity = 0x7FF0000000000000UL;
29constexpr uint64_t kFP64NegativeInfinity = 0xFFF0000000000000UL;
30
31// This value is a signalling NaN as both a double and as a float (taking the
32// least-significant word).
33constexpr uint64_t kFP64SignallingNaN = 0x7FF000007F800001;
34constexpr uint32_t kFP32SignallingNaN = 0x7F800001;
35
36// A similar value, but as a quiet NaN.
37constexpr uint64_t kFP64QuietNaN = 0x7FF800007FC00001;
38constexpr uint32_t kFP32QuietNaN = 0x7FC00001;
39
40// The default NaN values (for FPCR.DN=1).
41constexpr uint64_t kFP64DefaultNaN = 0x7FF8000000000000UL;
42constexpr uint32_t kFP32DefaultNaN = 0x7FC00000;
43extern const uint16_t kFP16DefaultNaN = 0x7E00;
44} // namespace integer_constants
45
46#if defined(V8_OS_WIN)
47extern "C" {
48#endif
49
50extern const float16 kFP16PositiveInfinity =
52extern const float16 kFP16NegativeInfinity =
58V8_EXPORT_PRIVATE extern const double kFP64PositiveInfinity =
60V8_EXPORT_PRIVATE extern const double kFP64NegativeInfinity =
62
63V8_EXPORT_PRIVATE extern const double kFP64SignallingNaN =
65V8_EXPORT_PRIVATE extern const float kFP32SignallingNaN =
67
68V8_EXPORT_PRIVATE extern const double kFP64QuietNaN =
70V8_EXPORT_PRIVATE extern const float kFP32QuietNaN =
72
73V8_EXPORT_PRIVATE extern const double kFP64DefaultNaN =
75V8_EXPORT_PRIVATE extern const float kFP32DefaultNaN =
77extern const float16 kFP16DefaultNaN =
79
80#if defined(V8_OS_WIN)
81} // end of extern "C"
82#endif
83
84} // namespace internal
85} // namespace v8
V8_INLINE Dest bit_cast(Source const &source)
Definition macros.h:95
V8_EXPORT_PRIVATE const float kFP32SignallingNaN
V8_EXPORT_PRIVATE const float kFP32PositiveInfinity
const float16 kFP16NegativeInfinity
V8_EXPORT_PRIVATE const double kFP64DefaultNaN
const float16 kFP16PositiveInfinity
V8_EXPORT_PRIVATE const float kFP32DefaultNaN
V8_EXPORT_PRIVATE const double kFP64PositiveInfinity
const float16 kFP16DefaultNaN
V8_EXPORT_PRIVATE const float kFP32QuietNaN
V8_EXPORT_PRIVATE const float kFP32NegativeInfinity
V8_EXPORT_PRIVATE const double kFP64NegativeInfinity
V8_EXPORT_PRIVATE const double kFP64SignallingNaN
V8_EXPORT_PRIVATE const double kFP64QuietNaN
#define V8_EXPORT_PRIVATE
Definition macros.h:460