v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
simd.cc File Reference
Include dependency graph for simd.cc:

Go to the source code of this file.

Namespaces

namespace  v8
 
namespace  v8::internal
 

Macros

#define VECTORIZED_LOOP_Neon(type_load, type_eq, set1, cmp, movemask)
 
#define VECTORIZED_LOOP_x86(type_load, type_eq, set1, cmp, movemask, extract)
 

Functions

uintptr_t v8::internal::ArrayIndexOfIncludesSmiOrObject (Address array_start, uintptr_t array_len, uintptr_t from_index, Address search_element)
 
uintptr_t v8::internal::ArrayIndexOfIncludesDouble (Address array_start, uintptr_t array_len, uintptr_t from_index, Address search_element)
 
Tagged< Objectv8::internal::Uint8ArrayToHex (const char *bytes, size_t length, DirectHandle< SeqOneByteString > string_output)
 
template<typename T >
bool v8::internal::ArrayBufferFromHex (base::Vector< T > &input_vector, DirectHandle< JSArrayBuffer > buffer, size_t output_length)
 
template bool v8::internal::ArrayBufferFromHex (base::Vector< const uint8_t > &input_vector, DirectHandle< JSArrayBuffer > buffer, size_t output_length)
 
template bool v8::internal::ArrayBufferFromHex (base::Vector< const base::uc16 > &input_vector, DirectHandle< JSArrayBuffer > buffer, size_t output_length)
 

Macro Definition Documentation

◆ VECTORIZED_LOOP_Neon

#define VECTORIZED_LOOP_Neon ( type_load,
type_eq,
set1,
cmp,
movemask )
Value:
{ \
constexpr int elems_in_vector = sizeof(type_load) / sizeof(T); \
type_load search_element_vec = set1(search_element); \
\
for (; index + elems_in_vector <= array_len; index += elems_in_vector) { \
type_load vector = *reinterpret_cast<type_load*>(&array[index]); \
type_eq eq = cmp(vector, search_element_vec); \
if (movemask(eq)) { \
return index + extract_first_nonzero_index_##type_eq(eq); \
} \
} \
}
OptionalOpIndex index

Definition at line 130 of file simd.cc.

◆ VECTORIZED_LOOP_x86

#define VECTORIZED_LOOP_x86 ( type_load,
type_eq,
set1,
cmp,
movemask,
extract )
Value:
{ \
constexpr int elems_in_vector = sizeof(type_load) / sizeof(T); \
type_load search_element_vec = set1(search_element); \
\
for (; index + elems_in_vector <= array_len; index += elems_in_vector) { \
type_load vector = *reinterpret_cast<type_load*>(&array[index]); \
type_eq eq = cmp(vector, search_element_vec); \
int eq_mask = movemask(eq); \
if (eq_mask) { \
return index + extract(eq_mask); \
} \
} \
}

Definition at line 144 of file simd.cc.