Add tests for type_elem_type on SIMD vectors

This commit is contained in:
Jeroen van Rijn
2025-04-11 23:31:02 +02:00
parent 29b03adab1
commit 0a97e01827

View File

@@ -1,6 +1,7 @@
// Tests "core:reflect/reflect".
package test_core_reflect
import "base:intrinsics"
import "core:reflect"
import "core:testing"
@@ -260,4 +261,74 @@ test_as_f64 :: proc(t: ^testing.T) {
testing.expectf(t, r == d.e, "f64 %v -> %v != %v", d.v, r, d.e)
}
}
}
@test
test_simd_vectors :: proc(t: ^testing.T) {
{
V :: #simd[2]u64
v: V
E := typeid_of(u64)
testing.expect(t, typeid_of(intrinsics.type_elem_type(V)) == E)
testing.expect(t, reflect.typeid_elem(V) == E)
testing.expect(t, reflect.length(v) == len(V))
testing.expect(t, reflect.capacity(v) == cap(V))
testing.expect(t, reflect.length(v) == 2)
}
{
V :: #simd[4]f32
v: V
E := typeid_of(f32)
testing.expect(t, typeid_of(intrinsics.type_elem_type(V)) == E)
testing.expect(t, reflect.typeid_elem(V) == E)
testing.expect(t, reflect.length(v) == len(V))
testing.expect(t, reflect.capacity(v) == cap(V))
testing.expect(t, reflect.length(v) == 4)
}
{
V :: #simd[8]i16
v: V
E := typeid_of(i16)
testing.expect(t, typeid_of(intrinsics.type_elem_type(V)) == E)
testing.expect(t, reflect.typeid_elem(V) == E)
testing.expect(t, reflect.length(v) == len(V))
testing.expect(t, reflect.capacity(v) == cap(V))
testing.expect(t, reflect.length(v) == 8)
}
{
V :: #simd[16]u32
v: V
E := typeid_of(u32)
testing.expect(t, typeid_of(intrinsics.type_elem_type(V)) == E)
testing.expect(t, reflect.typeid_elem(V) == E)
testing.expect(t, reflect.length(v) == len(V))
testing.expect(t, reflect.capacity(v) == cap(V))
testing.expect(t, reflect.length(v) == 16)
}
{
V :: #simd[32]u16
v: V
E := typeid_of(u16)
testing.expect(t, typeid_of(intrinsics.type_elem_type(V)) == E)
testing.expect(t, reflect.typeid_elem(V) == E)
testing.expect(t, reflect.length(v) == len(V))
testing.expect(t, reflect.capacity(v) == cap(V))
testing.expect(t, reflect.length(v) == 32)
}
{
V :: #simd[64]i8
v: V
E := typeid_of(i8)
testing.expect(t, typeid_of(intrinsics.type_elem_type(V)) == E)
testing.expect(t, reflect.typeid_elem(V) == E)
testing.expect(t, reflect.length(v) == len(V))
testing.expect(t, reflect.capacity(v) == cap(V))
testing.expect(t, reflect.length(v) == 64)
}
}