[Testing] Add denormal input/output tests for VMX128 float instructions

This commit is contained in:
Herman S.
2026-03-21 15:16:11 +09:00
parent 1c529287a3
commit 9621400ef6
4 changed files with 86 additions and 0 deletions

View File

@@ -52,3 +52,39 @@ test_vmaddfp128_5:
#_ REGISTER_OUT v3 [40400000, 40400000, 40400000, 40400000]
#_ REGISTER_OUT v4 [BF800000, BF800000, BF800000, BF800000]
#_ REGISTER_OUT v5 [40000000, 40000000, 40000000, 40000000]
test_vmaddfp128_6:
# Denormal in VA flushed to +0.0: (denorm * 2.0) + 1.0 = (0.0 * 2.0) + 1.0 = 1.0
#_ REGISTER_IN v3 [3F800000, 3F800000, 3F800000, 3F800000]
#_ REGISTER_IN v4 [007FFFFF, 007FFFFF, 007FFFFF, 007FFFFF]
#_ REGISTER_IN v5 [40000000, 40000000, 40000000, 40000000]
vmaddfp128 v3, v4, v5, v3
blr
#_ REGISTER_OUT v3 [3F800000, 3F800000, 3F800000, 3F800000]
test_vmaddfp128_7:
# Denormal in VB flushed to +0.0: (2.0 * denorm) + 1.0 = (2.0 * 0.0) + 1.0 = 1.0
#_ REGISTER_IN v3 [3F800000, 3F800000, 3F800000, 3F800000]
#_ REGISTER_IN v4 [40000000, 40000000, 40000000, 40000000]
#_ REGISTER_IN v5 [007FFFFF, 007FFFFF, 007FFFFF, 007FFFFF]
vmaddfp128 v3, v4, v5, v3
blr
#_ REGISTER_OUT v3 [3F800000, 3F800000, 3F800000, 3F800000]
test_vmaddfp128_8:
# Denormal in addend flushed to +0.0: (2.0 * 3.0) + denorm = 6.0 + 0.0 = 6.0
#_ REGISTER_IN v3 [007FFFFF, 007FFFFF, 007FFFFF, 007FFFFF]
#_ REGISTER_IN v4 [40000000, 40000000, 40000000, 40000000]
#_ REGISTER_IN v5 [40400000, 40400000, 40400000, 40400000]
vmaddfp128 v3, v4, v5, v3
blr
#_ REGISTER_OUT v3 [40C00000, 40C00000, 40C00000, 40C00000]
test_vmaddfp128_9:
# Negative denormal flushed to -0.0: (neg_denorm * 2.0) + 1.0 = (-0.0 * 2.0) + 1.0 = 1.0
#_ REGISTER_IN v3 [3F800000, 3F800000, 3F800000, 3F800000]
#_ REGISTER_IN v4 [807FFFFF, 807FFFFF, 807FFFFF, 807FFFFF]
#_ REGISTER_IN v5 [40000000, 40000000, 40000000, 40000000]
vmaddfp128 v3, v4, v5, v3
blr
#_ REGISTER_OUT v3 [3F800000, 3F800000, 3F800000, 3F800000]

View File

@@ -8,3 +8,19 @@ test_vmsum3fp128_1:
#_ REGISTER_OUT v3 [3f800000, 3fc00000, 3f8ccccd, 01020304]
#_ REGISTER_OUT v4 [40000000, 40700000, 4013d70a, 01020304]
#_ REGISTER_OUT v5 [4122A7F0, 4122A7F0, 4122A7F0, 4122A7F0]
test_vmsum3fp128_2:
# Denormal output flushed to +0.0: FLT_MIN * 0.5 + 0 + 0 = denormal -> +0.0
#_ REGISTER_IN v3 [00800000, 00000000, 00000000, 00000000]
#_ REGISTER_IN v4 [3F000000, 00000000, 00000000, 00000000]
vmsum3fp128 v5, v3, v4
blr
#_ REGISTER_OUT v5 [00000000, 00000000, 00000000, 00000000]
test_vmsum3fp128_3:
# Negative denormal output flushed to -0.0: -FLT_MIN * 0.5 + 0 + 0 = neg denormal -> -0.0
#_ REGISTER_IN v3 [80800000, 00000000, 00000000, 00000000]
#_ REGISTER_IN v4 [3F000000, 00000000, 00000000, 00000000]
vmsum3fp128 v5, v3, v4
blr
#_ REGISTER_OUT v5 [80000000, 80000000, 80000000, 80000000]

View File

@@ -6,3 +6,19 @@ test_vmsum4fp128_1:
#_ REGISTER_OUT v3 [3f800000, 3fc00000, 3f8ccccd, 3ff33333]
#_ REGISTER_OUT v4 [40000000, 40700000, 4013d70a, 40b051eb]
#_ REGISTER_OUT v5 [41A5147B, 41A5147B, 41A5147B, 41A5147B]
test_vmsum4fp128_2:
# Denormal output flushed to +0.0: FLT_MIN * 0.5 + 0 + 0 + 0 = denormal -> +0.0
#_ REGISTER_IN v3 [00800000, 00000000, 00000000, 00000000]
#_ REGISTER_IN v4 [3F000000, 00000000, 00000000, 00000000]
vmsum4fp128 v5, v3, v4
blr
#_ REGISTER_OUT v5 [00000000, 00000000, 00000000, 00000000]
test_vmsum4fp128_3:
# Negative denormal output flushed to -0.0: -FLT_MIN * 0.5 + 0 + 0 + 0 = neg denormal -> -0.0
#_ REGISTER_IN v3 [80800000, 00000000, 00000000, 00000000]
#_ REGISTER_IN v4 [3F000000, 00000000, 00000000, 00000000]
vmsum4fp128 v5, v3, v4
blr
#_ REGISTER_OUT v5 [80000000, 80000000, 80000000, 80000000]

View File

@@ -52,3 +52,21 @@ test_vnmsubfp128_5:
#_ REGISTER_OUT v3 [C0E00000, C0E00000, C0E00000, C0E00000]
#_ REGISTER_OUT v4 [40400000, 40400000, 40400000, 40400000]
#_ REGISTER_OUT v5 [40400000, 40400000, 40400000, 40400000]
test_vnmsubfp128_6:
# Denormal in VA flushed to +0.0: -((denorm * 2.0) - 1.0) = -((0.0) - 1.0) = 1.0
#_ REGISTER_IN v3 [3F800000, 3F800000, 3F800000, 3F800000]
#_ REGISTER_IN v4 [007FFFFF, 007FFFFF, 007FFFFF, 007FFFFF]
#_ REGISTER_IN v5 [40000000, 40000000, 40000000, 40000000]
vnmsubfp128 v3, v4, v5, v3
blr
#_ REGISTER_OUT v3 [3F800000, 3F800000, 3F800000, 3F800000]
test_vnmsubfp128_7:
# Denormal in subtrahend flushed to +0.0: -((2.0 * 3.0) - denorm) = -(6.0 - 0.0) = -6.0
#_ REGISTER_IN v3 [007FFFFF, 007FFFFF, 007FFFFF, 007FFFFF]
#_ REGISTER_IN v4 [40000000, 40000000, 40000000, 40000000]
#_ REGISTER_IN v5 [40400000, 40400000, 40400000, 40400000]
vnmsubfp128 v3, v4, v5, v3
blr
#_ REGISTER_OUT v3 [C0C00000, C0C00000, C0C00000, C0C00000]