Skip to content

Commit 7f97038

Browse files
committed
test all the things
1 parent 71ecbf7 commit 7f97038

File tree

1 file changed

+31
-7
lines changed

1 file changed

+31
-7
lines changed

libc/test/src/__support/CPP/simd_test.cpp

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,40 @@ TEST(LlvmLibcSIMDTest, TypeTraits) {
3737
}
3838

3939
TEST(LlvmLibcSIMDTest, ElementwiseOperations) {
40-
simd<int> v1 = splat(1);
41-
simd<int> v2 = splat(-1);
42-
43-
simd<int> v_abs = abs(v2);
44-
simd<int> v_min = min(v1, v2);
45-
simd<int> v_max = max(v1, v2);
40+
simd<int> vi1 = splat(1);
41+
simd<int> vi2 = splat(-1);
42+
simd<float> vf1 = splat(1.0f);
43+
simd<float> vf2 = splat(-1.0f);
44+
45+
simd<int> v_abs = abs(vi2);
46+
simd<int> v_min = min(vi1, vi2);
47+
simd<int> v_max = max(vi1, vi2);
48+
simd<float> v_fma = fma(vf1, vf2, vf1);
49+
simd<float> v_ceil = ceil(splat(1.2f));
50+
simd<float> v_floor = floor(splat(1.8f));
51+
simd<float> v_roundeven = roundeven(splat(2.5f));
52+
simd<float> v_round = round(splat(2.5f));
53+
simd<float> v_trunc = trunc(splat(-2.9f));
54+
simd<float> v_nearbyint = nearbyint(splat(3.4f));
55+
simd<float> v_rint = rint(splat(3.6f));
56+
simd<float> v_canonicalize = canonicalize(splat(1.0f));
57+
simd<float> v_copysign = copysign(vf1, vf2);
58+
simd<float> v_fmod = fmod(splat(5.5f), splat(2.0f));
4659

60+
EXPECT_EQ(v_abs[0], 1);
4761
EXPECT_EQ(v_min[0], -1);
4862
EXPECT_EQ(v_max[0], 1);
49-
EXPECT_EQ(v_abs[0], 1);
63+
EXPECT_FP_EQ(v_fma[0], 0.0f);
64+
EXPECT_FP_EQ(v_ceil[0], 2.0f);
65+
EXPECT_FP_EQ(v_floor[0], 1.0f);
66+
EXPECT_FP_EQ(v_roundeven[0], 2.0f);
67+
EXPECT_FP_EQ(v_round[0], 3.0f);
68+
EXPECT_FP_EQ(v_trunc[0], -2.0f);
69+
EXPECT_FP_EQ(v_nearbyint[0], 3.0f);
70+
EXPECT_FP_EQ(v_rint[0], 4.0f);
71+
EXPECT_FP_EQ(v_canonicalize[0], 1.0f);
72+
EXPECT_FP_EQ(v_copysign[0], -1.0f);
73+
EXPECT_FP_EQ(v_fmod[0], 1.5f);
5074
}
5175

5276
TEST(LlvmLibcSIMDTest, ReductionOperations) {

0 commit comments

Comments
 (0)