mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +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_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_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) ---
|
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) ---
|
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 ---
|
overflow_add :: proc(lhs, rhs: $T) -> (T, bool) #optional_ok ---
|
||||||
|
|||||||
+2
-1
@@ -99,7 +99,7 @@ nearest :: intrinsics.simd_nearest
|
|||||||
|
|
||||||
to_bits :: intrinsics.simd_to_bits
|
to_bits :: intrinsics.simd_to_bits
|
||||||
|
|
||||||
reverse :: intrinsics.simd_reverse
|
lanes_reverse :: intrinsics.simd_reverse
|
||||||
|
|
||||||
rotate_left :: intrinsics.simd_rotate_left
|
rotate_left :: intrinsics.simd_rotate_left
|
||||||
rotate_right :: intrinsics.simd_rotate_right
|
rotate_right :: intrinsics.simd_rotate_right
|
||||||
@@ -108,6 +108,7 @@ count_ones :: intrinsics.count_ones
|
|||||||
count_zeros :: intrinsics.count_zeros
|
count_zeros :: intrinsics.count_zeros
|
||||||
count_trailing_zeros :: intrinsics.count_trailing_zeros
|
count_trailing_zeros :: intrinsics.count_trailing_zeros
|
||||||
count_leading_zeros :: intrinsics.count_leading_zeros
|
count_leading_zeros :: intrinsics.count_leading_zeros
|
||||||
|
reverse_bits :: intrinsics.reverse_bits
|
||||||
|
|
||||||
fused_mul_add :: intrinsics.fused_mul_add
|
fused_mul_add :: intrinsics.fused_mul_add
|
||||||
fma :: 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;
|
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);
|
Type *elem = base_array_type(x.type);
|
||||||
if (!is_type_integer_like(elem)) {
|
if (!is_type_integer_like(elem)) {
|
||||||
gbString xts = type_to_string(x.type);
|
gbString xts = type_to_string(x.type);
|
||||||
|
|||||||
Reference in New Issue
Block a user