mirror of
https://github.com/odin-lang/Odin.git
synced 2026-06-04 01:34:39 +00:00
Support reverse_bits for #simd
This commit is contained in:
@@ -26,7 +26,7 @@ count_ones :: proc(x: $T) -> T where type_is_integer(T) || type_is_sim
|
||||
count_zeros :: proc(x: $T) -> T where type_is_integer(T) || type_is_simd_vector(T) ---
|
||||
count_trailing_zeros :: proc(x: $T) -> T where type_is_integer(T) || type_is_simd_vector(T) ---
|
||||
count_leading_zeros :: proc(x: $T) -> T where type_is_integer(T) || type_is_simd_vector(T) ---
|
||||
reverse_bits :: proc(x: $T) -> T where type_is_integer(T) ---
|
||||
reverse_bits :: proc(x: $T) -> T where type_is_integer(T) || type_is_simd_vector(T) ---
|
||||
byte_swap :: proc(x: $T) -> T where type_is_integer(T) || type_is_float(T) ---
|
||||
|
||||
overflow_add :: proc(lhs, rhs: $T) -> (T, bool) #optional_ok ---
|
||||
|
||||
@@ -99,7 +99,7 @@ nearest :: intrinsics.simd_nearest
|
||||
|
||||
to_bits :: intrinsics.simd_to_bits
|
||||
|
||||
reverse :: intrinsics.simd_reverse
|
||||
lanes_reverse :: intrinsics.simd_reverse
|
||||
|
||||
rotate_left :: intrinsics.simd_rotate_left
|
||||
rotate_right :: intrinsics.simd_rotate_right
|
||||
@@ -108,6 +108,7 @@ count_ones :: intrinsics.count_ones
|
||||
count_zeros :: intrinsics.count_zeros
|
||||
count_trailing_zeros :: intrinsics.count_trailing_zeros
|
||||
count_leading_zeros :: intrinsics.count_leading_zeros
|
||||
reverse_bits :: intrinsics.reverse_bits
|
||||
|
||||
fused_mul_add :: intrinsics.fused_mul_add
|
||||
fma :: intrinsics.fused_mul_add
|
||||
|
||||
@@ -3558,7 +3558,7 @@ bool check_builtin_procedure(CheckerContext *c, Operand *operand, Ast *call, i32
|
||||
return false;
|
||||
}
|
||||
|
||||
if (is_type_simd_vector(x.type) && id != BuiltinProc_reverse_bits) {
|
||||
if (is_type_simd_vector(x.type)) {
|
||||
Type *elem = base_array_type(x.type);
|
||||
if (!is_type_integer_like(elem)) {
|
||||
gbString xts = type_to_string(x.type);
|
||||
|
||||
Reference in New Issue
Block a user