Prechádzať zdrojové kódy

Support reverse_bits for #simd

gingerBill 3 rokov pred
rodič
commit
70451f9335

+ 1 - 1
core/intrinsics/intrinsics.odin

@@ -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
core/simd/simd.odin

@@ -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

+ 1 - 1
src/check_builtin.cpp

@@ -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);