[Testing] Add denormal input/output tests for VMX128 float instructions
This commit is contained in:
@@ -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]
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user