Support reverse_bits for #simd

This commit is contained in:
gingerBill
2022-05-26 20:40:48 +01:00
parent 1f438d4e6c
commit 70451f9335
3 changed files with 4 additions and 3 deletions

View File

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

View File

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

View File

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