From 3e0e34aecdd73511c97133bdcf3ef1dfca325179 Mon Sep 17 00:00:00 2001 From: Stefan Maksimovic Date: Fri, 17 Jan 2020 12:58:07 +0000 Subject: [PATCH] mips64: rework math tests to take into account allowed approximation Change the math tests to check whether the results are approximate to the expected values instead of checking for exact matches since the calculations in question are allowed to be approximate. This fixes /none/tests/mips64/test_math and /none/tests/mips64/msa_fpu on mips64r6. --- none/tests/mips32/msa_fpu.c | 441 +++++++++++++++++---- none/tests/mips32/msa_fpu.stdout.exp | 512 ++++++++++++------------- none/tests/mips32/test_math.cpp | 8 +- none/tests/mips32/test_math.stdout.exp | 4 +- 4 files changed, 641 insertions(+), 324 deletions(-) diff --git a/none/tests/mips32/msa_fpu.c b/none/tests/mips32/msa_fpu.c index fea8784461..9a96c2a004 100644 --- a/none/tests/mips32/msa_fpu.c +++ b/none/tests/mips32/msa_fpu.c @@ -1,4 +1,6 @@ #include +#include +#include unsigned long long out[2]; @@ -56,6 +58,60 @@ unsigned long long data16[] = { 0x3c66f5a5c14efc00, }; +#define EPS 0.000001 + +union { + unsigned long long i[2]; + double d[2]; + float f[4]; +} frsqrt_out, frsqrt_exp; + +unsigned withinEpsOfF(float* p_out, float* p_exp, unsigned long long* data, unsigned offset) { + unsigned pair1_nan = isnan(p_out[2]) && isnan(p_exp[0]); + unsigned pair2_nan = isnan(p_out[3]) && isnan(p_exp[1]); + unsigned pair3_nan = isnan(p_out[0]) && isnan(p_exp[2]); + unsigned pair4_nan = isnan(p_out[1]) && isnan(p_exp[3]); + unsigned pair1_sub = fpclassify(*(((float*)data) + offset/4 )) == FP_SUBNORMAL; + unsigned pair2_sub = fpclassify(*(((float*)data) + offset/4 + 1)) == FP_SUBNORMAL; + unsigned pair3_sub = fpclassify(*(((float*)data) + offset/4 + 2)) == FP_SUBNORMAL; + unsigned pair4_sub = fpclassify(*(((float*)data) + offset/4 + 3)) == FP_SUBNORMAL; + if (pair1_sub || pair2_sub || pair3_sub || pair4_sub) { + unsigned p_out2_int = *(unsigned*)&p_out[2]; + unsigned p_exp0_int = *(unsigned*)&p_exp[0]; + unsigned p_out3_int = *(unsigned*)&p_out[3]; + unsigned p_exp1_int = *(unsigned*)&p_exp[1]; + unsigned p_out0_int = *(unsigned*)&p_out[0]; + unsigned p_exp2_int = *(unsigned*)&p_exp[2]; + unsigned p_out1_int = *(unsigned*)&p_out[1]; + unsigned p_exp3_int = *(unsigned*)&p_exp[3]; + pair1_sub = abs(p_out2_int - p_exp0_int) <= 1; + pair2_sub = abs(p_out3_int - p_exp1_int) <= 1; + pair3_sub = abs(p_out0_int - p_exp2_int) <= 1; + pair4_sub = abs(p_out1_int - p_exp3_int) <= 1; + } + return (pair1_nan || pair1_sub || ((p_out[2] <= p_exp[0] + EPS) && (p_out[2] >= p_exp[0] - EPS))) && + (pair2_nan || pair2_sub || ((p_out[3] <= p_exp[1] + EPS) && (p_out[3] >= p_exp[1] - EPS))) && + (pair3_nan || pair3_sub || ((p_out[0] <= p_exp[2] + EPS) && (p_out[0] >= p_exp[2] - EPS))) && + (pair4_nan || pair4_sub || ((p_out[1] <= p_exp[3] + EPS) && (p_out[1] >= p_exp[3] - EPS))); + +} +unsigned withinEpsOfD(double* p_out, double* p_exp, unsigned long long* data, unsigned offset) { + unsigned pair1_nan = isnan(p_out[0]) && isnan(p_exp[1]); + unsigned pair2_nan = isnan(p_out[1]) && isnan(p_exp[0]); + unsigned pair1_sub = fpclassify(*(((double*)data) + offset/8 )) == FP_SUBNORMAL; + unsigned pair2_sub = fpclassify(*(((double*)data) + offset/8 + 1)) == FP_SUBNORMAL; + if (pair1_sub || pair2_sub) { + unsigned long p_out0_int = *(unsigned long*)&p_out[0]; + unsigned long p_exp1_int = *(unsigned long*)&p_exp[1]; + unsigned long p_out1_int = *(unsigned long*)&p_out[1]; + unsigned long p_exp0_int = *(unsigned long*)&p_exp[0]; + pair1_sub = labs(p_out0_int - p_exp1_int) <= 1; + pair2_sub = labs(p_out1_int - p_exp0_int) <= 1; + } + return (pair1_nan || pair1_sub || ((p_out[0] <= p_exp[1] + EPS) && (p_out[0] >= p_exp[1] - EPS))) && + (pair2_nan || pair2_sub || ((p_out[1] <= p_exp[0] + EPS) && (p_out[1] >= p_exp[0] - EPS))); +} + #define TEST_3RF(instruction, data, offset1, offset2, WD, WS, WT) \ { \ __asm__ volatile ( \ @@ -136,6 +192,61 @@ unsigned long long data16[] = { data[offset / 8 + 1], data[offset / 8], msacsr); \ } +#define TEST_2RF_FRSQRT_W(instruction, data, offset, WD, WS, \ + exp_part1, exp_part2) \ +{ \ + frsqrt_exp.i[0] = exp_part1; \ + frsqrt_exp.i[1] = exp_part2; \ + __asm__ volatile ( \ + ".set push;\n\t" \ + ".set noreorder;\n\t" \ + "ctcmsa $1, %2\n\t" \ + "move $t0, %0\n\t" \ + "ld.d $"#WD", "#offset"($t0)\n\t" \ + "xori.b $"#WD", $"#WD", 0xff\n\t" \ + "ld.d $"#WS", "#offset"($t0)\n\t" \ + instruction" $"#WD", $"#WS"\n\t" \ + "move $t0, %1\n\t" \ + "st.d $"#WD", 0($t0)\n\t" \ + "cfcmsa %2, $1\n\t" \ + ".set pop;\n\t" \ + : \ + : "r" (data), "r" (frsqrt_out.f), "r"(msacsr) \ + : "t0", "memory" \ + ); \ + if(withinEpsOfF(frsqrt_out.f, frsqrt_exp.f, data, offset)) \ + printf(instruction" $"#WD", $"#WS", msacsr=%u: PASS\n", msacsr); \ + else \ + printf(instruction" $"#WD", $"#WS", msacsr=%u: FAIL\n", msacsr); \ +} + +#define TEST_2RF_FRSQRT_D(instruction, data, offset, WD, WS, \ + exp_part1, exp_part2) \ +{ \ + frsqrt_exp.i[0] = exp_part1; \ + frsqrt_exp.i[1] = exp_part2; \ + __asm__ volatile ( \ + ".set push;\n\t" \ + ".set noreorder;\n\t" \ + "ctcmsa $1, %2\n\t" \ + "move $t0, %0\n\t" \ + "ld.d $"#WD", "#offset"($t0)\n\t" \ + "xori.b $"#WD", $"#WD", 0xff\n\t" \ + "ld.d $"#WS", "#offset"($t0)\n\t" \ + instruction" $"#WD", $"#WS"\n\t" \ + "move $t0, %1\n\t" \ + "st.d $"#WD", 0($t0)\n\t" \ + "cfcmsa %2, $1\n\t" \ + ".set pop;\n\t" \ + : \ + : "r" (data), "r" (frsqrt_out.d), "r"(msacsr) \ + : "t0", "memory" \ + ); \ + if(withinEpsOfD(frsqrt_out.d, frsqrt_exp.d, data, offset)) \ + printf(instruction" $"#WD", $"#WS", msacsr=%u: PASS\n", msacsr); \ + else \ + printf(instruction" $"#WD", $"#WS", msacsr=%u: FAIL\n", msacsr); \ +} #define TEST_MSA_FPU_REG32(WS) \ { \ @@ -10850,70 +10961,6 @@ int main(int argc, char **argv) { TEST_2RF("frcp.d", datad, 144, w29, w11); TEST_2RF("frcp.d", datad, 0, w30, w30); TEST_2RF("frcp.d", datad, 16, w31, w22); - TEST_2RF("frsqrt.w", dataf, 0, w0, w10); - TEST_2RF("frsqrt.w", dataf, 8, w1, w20); - TEST_2RF("frsqrt.w", dataf, 16, w2, w26); - TEST_2RF("frsqrt.w", dataf, 24, w3, w12); - TEST_2RF("frsqrt.w", dataf, 32, w4, w0); - TEST_2RF("frsqrt.w", dataf, 40, w5, w22); - TEST_2RF("frsqrt.w", dataf, 48, w6, w26); - TEST_2RF("frsqrt.w", dataf, 56, w7, w14); - TEST_2RF("frsqrt.w", dataf, 64, w8, w8); - TEST_2RF("frsqrt.w", dataf, 72, w9, w17); - TEST_2RF("frsqrt.w", dataf, 0, w10, w28); - TEST_2RF("frsqrt.w", dataf, 8, w11, w8); - TEST_2RF("frsqrt.w", dataf, 16, w12, w16); - TEST_2RF("frsqrt.w", dataf, 24, w13, w9); - TEST_2RF("frsqrt.w", dataf, 32, w14, w3); - TEST_2RF("frsqrt.w", dataf, 40, w15, w21); - TEST_2RF("frsqrt.w", dataf, 48, w16, w9); - TEST_2RF("frsqrt.w", dataf, 56, w17, w14); - TEST_2RF("frsqrt.w", dataf, 64, w18, w10); - TEST_2RF("frsqrt.w", dataf, 72, w19, w17); - TEST_2RF("frsqrt.w", dataf, 0, w20, w25); - TEST_2RF("frsqrt.w", dataf, 8, w21, w7); - TEST_2RF("frsqrt.w", dataf, 16, w22, w26); - TEST_2RF("frsqrt.w", dataf, 24, w23, w28); - TEST_2RF("frsqrt.w", dataf, 32, w24, w4); - TEST_2RF("frsqrt.w", dataf, 40, w25, w8); - TEST_2RF("frsqrt.w", dataf, 48, w26, w1); - TEST_2RF("frsqrt.w", dataf, 56, w27, w13); - TEST_2RF("frsqrt.w", dataf, 64, w28, w14); - TEST_2RF("frsqrt.w", dataf, 72, w29, w12); - TEST_2RF("frsqrt.w", dataf, 0, w30, w30); - TEST_2RF("frsqrt.w", dataf, 8, w31, w17); - TEST_2RF("frsqrt.d", datad, 0, w0, w2); - TEST_2RF("frsqrt.d", datad, 16, w1, w14); - TEST_2RF("frsqrt.d", datad, 32, w2, w24); - TEST_2RF("frsqrt.d", datad, 48, w3, w20); - TEST_2RF("frsqrt.d", datad, 64, w4, w25); - TEST_2RF("frsqrt.d", datad, 80, w5, w0); - TEST_2RF("frsqrt.d", datad, 96, w6, w26); - TEST_2RF("frsqrt.d", datad, 112, w7, w26); - TEST_2RF("frsqrt.d", datad, 128, w8, w8); - TEST_2RF("frsqrt.d", datad, 144, w9, w19); - TEST_2RF("frsqrt.d", datad, 0, w10, w27); - TEST_2RF("frsqrt.d", datad, 16, w11, w8); - TEST_2RF("frsqrt.d", datad, 32, w12, w2); - TEST_2RF("frsqrt.d", datad, 48, w13, w31); - TEST_2RF("frsqrt.d", datad, 64, w14, w0); - TEST_2RF("frsqrt.d", datad, 80, w15, w30); - TEST_2RF("frsqrt.d", datad, 96, w16, w5); - TEST_2RF("frsqrt.d", datad, 112, w17, w3); - TEST_2RF("frsqrt.d", datad, 128, w18, w7); - TEST_2RF("frsqrt.d", datad, 144, w19, w3); - TEST_2RF("frsqrt.d", datad, 0, w20, w30); - TEST_2RF("frsqrt.d", datad, 16, w21, w27); - TEST_2RF("frsqrt.d", datad, 32, w22, w26); - TEST_2RF("frsqrt.d", datad, 48, w23, w20); - TEST_2RF("frsqrt.d", datad, 64, w24, w7); - TEST_2RF("frsqrt.d", datad, 80, w25, w10); - TEST_2RF("frsqrt.d", datad, 96, w26, w29); - TEST_2RF("frsqrt.d", datad, 112, w27, w20); - TEST_2RF("frsqrt.d", datad, 128, w28, w6); - TEST_2RF("frsqrt.d", datad, 144, w29, w24); - TEST_2RF("frsqrt.d", datad, 0, w30, w30); - TEST_2RF("frsqrt.d", datad, 16, w31, w6); TEST_2RF("fsqrt.w", dataf, 0, w0, w17); TEST_2RF("fsqrt.w", dataf, 8, w1, w14); TEST_2RF("fsqrt.w", dataf, 16, w2, w8); @@ -11492,6 +11539,272 @@ int main(int argc, char **argv) { TEST_2RF("ffqr.d", dataf, 8, w31, w28); } + // Duplicated for each of the rounding modes + msacsr = 0; + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 0, w0, w10, 0x7fc000007fc00000, 0x7fc000003fb504f3); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 8, w1, w20, 0x7fc000003d1abca5, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 16, w2, w26, 0xff8000007fc00000, 0x7fc000003d1abca5); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 24, w3, w12, 0x7f8000003d44c9f8, 0xff8000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 32, w4, w0, 0x5f21e89b7fc00000, 0x7f8000003d44c9f8); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 40, w5, w22, 0x3bd77f463f741620, 0x5f21e89b7fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 48, w6, w26, 0x000000007fc00000, 0x3bd77f463f741620); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 56, w7, w14, 0x7fc000007fc00000, 0x000000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 64, w8, w8, 0x3d2aaaab3c7349e0, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 72, w9, w17, 0x3d2aaaab3d2aaaab, 0x3d2aaaab3c7349e0); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 0, w10, w28, 0x7fc000007fc00000, 0x7fc000003fb504f3); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 8, w11, w8, 0x7fc000003d1abca5, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 16, w12, w16, 0xff8000007fc00000, 0x7fc000003d1abca5); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 24, w13, w9, 0x7f8000003d44c9f8, 0xff8000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 32, w14, w3, 0x5f21e89b7fc00000, 0x7f8000003d44c9f8); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 40, w15, w21, 0x3bd77f463f741620, 0x5f21e89b7fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 48, w16, w9, 0x000000007fc00000, 0x3bd77f463f741620); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 56, w17, w14, 0x7fc000007fc00000, 0x000000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 64, w18, w10, 0x3d2aaaab3c7349e0, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 72, w19, w17, 0x3d2aaaab3d2aaaab, 0x3d2aaaab3c7349e0); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 0, w20, w25, 0x7fc000007fc00000, 0x7fc000003fb504f3); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 8, w21, w7, 0x7fc000003d1abca5, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 16, w22, w26, 0xff8000007fc00000, 0x7fc000003d1abca5); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 24, w23, w28, 0x7f8000003d44c9f8, 0xff8000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 32, w24, w4, 0x5f21e89b7fc00000, 0x7f8000003d44c9f8); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 40, w25, w8, 0x3bd77f463f741620, 0x5f21e89b7fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 48, w26, w1, 0x000000007fc00000, 0x3bd77f463f741620); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 56, w27, w13, 0x7fc000007fc00000, 0x000000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 64, w28, w14, 0x3d2aaaab3c7349e0, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 72, w29, w12, 0x3d2aaaab3d2aaaab, 0x3d2aaaab3c7349e0); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 0, w30, w30, 0x7fc000007fc00000, 0x7fc000003fb504f3); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 8, w31, w17, 0x7fc000003d1abca5, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 0, w0, w2, 0x3ff6a09e667f3bcd, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 16, w1, w14, 0x7ff8000000000000, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 32, w2, w24, 0x3fa35794ad44f3ee, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 48, w3, w20, 0x7ff8000000000000, 0xfff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 64, w4, w25, 0x3fa8993eff4a591f, 0x7ff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 80, w5, w0, 0x7ff8000000000000, 0x604a20bd700c2c3e); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 96, w6, w26, 0x3fee82c3f9d89e1b, 0x3f458a24b20e5b9e); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 112, w7, w26, 0x7ff8000000000000, 0x0000000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 128, w8, w8, 0x3f733bbfdc427cac, 0x3fa5555555555555); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 144, w9, w19, 0x3fa5555555555555, 0x3fa5555555555555); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 0, w10, w27, 0x3ff6a09e667f3bcd, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 16, w11, w8, 0x7ff8000000000000, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 32, w12, w2, 0x3fa35794ad44f3ee, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 48, w13, w31, 0x7ff8000000000000, 0xfff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 64, w14, w0, 0x3fa8993eff4a591f, 0x7ff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 80, w15, w30, 0x7ff8000000000000, 0x604a20bd700c2c3e); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 96, w16, w5, 0x3fee82c3f9d89e1b, 0x3f458a24b20e5b9e); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 112, w17, w3, 0x7ff8000000000000, 0x0000000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 128, w18, w7, 0x3f733bbfdc427cac, 0x3fa5555555555555); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 144, w19, w3, 0x3fa5555555555555, 0x3fa5555555555555); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 0, w20, w30, 0x3ff6a09e667f3bcd, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 16, w21, w27, 0x7ff8000000000000, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 32, w22, w26, 0x3fa35794ad44f3ee, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 48, w23, w20, 0x7ff8000000000000, 0xfff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 64, w24, w7, 0x3fa8993eff4a591f, 0x7ff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 80, w25, w10, 0x7ff8000000000000, 0x604a20bd700c2c3e); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 96, w26, w29, 0x3fee82c3f9d89e1b, 0x3f458a24b20e5b9e); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 112, w27, w20, 0x7ff8000000000000, 0x0000000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 128, w28, w6, 0x3f733bbfdc427cac, 0x3fa5555555555555); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 144, w29, w24, 0x3fa5555555555555, 0x3fa5555555555555); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 0, w30, w30, 0x3ff6a09e667f3bcd, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 16, w31, w6, 0x7ff8000000000000, 0x7ff8000000000000); + + msacsr = 1; + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 0, w0, w10, 0x7fc000007fc00000, 0x7fc000003fb504f3); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 8, w1, w20, 0x7fc000003d1abca5, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 16, w2, w26, 0xff8000007fc00000, 0x7fc000003d1abca5); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 24, w3, w12, 0x7f8000003d44c9f7, 0xff8000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 32, w4, w0, 0x5f21e89b7fc00000, 0x7f8000003d44c9f7); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 40, w5, w22, 0x3bd77f463f74161f, 0x5f21e89b7fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 48, w6, w26, 0x000000007fc00000, 0x3bd77f463f74161f); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 56, w7, w14, 0x7fc000007fc00000, 0x000000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 64, w8, w8, 0x3d2aaaaa3c7349df, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 72, w9, w17, 0x3d2aaaaa3d2aaaaa, 0x3d2aaaaa3c7349df); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 0, w10, w28, 0x7fc000007fc00000, 0x7fc000003fb504f3); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 8, w11, w8, 0x7fc000003d1abca5, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 16, w12, w16, 0xff8000007fc00000, 0x7fc000003d1abca5); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 24, w13, w9, 0x7f8000003d44c9f7, 0xff8000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 32, w14, w3, 0x5f21e89b7fc00000, 0x7f8000003d44c9f7); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 40, w15, w21, 0x3bd77f463f74161f, 0x5f21e89b7fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 48, w16, w9, 0x000000007fc00000, 0x3bd77f463f74161f); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 56, w17, w14, 0x7fc000007fc00000, 0x000000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 64, w18, w10, 0x3d2aaaaa3c7349df, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 72, w19, w17, 0x3d2aaaaa3d2aaaaa, 0x3d2aaaaa3c7349df); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 0, w20, w25, 0x7fc000007fc00000, 0x7fc000003fb504f3); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 8, w21, w7, 0x7fc000003d1abca5, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 16, w22, w26, 0xff8000007fc00000, 0x7fc000003d1abca5); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 24, w23, w28, 0x7f8000003d44c9f7, 0xff8000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 32, w24, w4, 0x5f21e89b7fc00000, 0x7f8000003d44c9f7); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 40, w25, w8, 0x3bd77f463f74161f, 0x5f21e89b7fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 48, w26, w1, 0x000000007fc00000, 0x3bd77f463f74161f); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 56, w27, w13, 0x7fc000007fc00000, 0x000000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 64, w28, w14, 0x3d2aaaaa3c7349df, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 72, w29, w12, 0x3d2aaaaa3d2aaaaa, 0x3d2aaaaa3c7349df); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 0, w30, w30, 0x7fc000007fc00000, 0x7fc000003fb504f3); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 8, w31, w17, 0x7fc000003d1abca5, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 0, w0, w2, 0x3ff6a09e667f3bcc, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 16, w1, w14, 0x7ff8000000000000, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 32, w2, w24, 0x3fa35794ad44f3ee, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 48, w3, w20, 0x7ff8000000000000, 0xfff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 64, w4, w25, 0x3fa8993eff4a591e, 0x7ff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 80, w5, w0, 0x7ff8000000000000, 0x604a20bd700c2c3d); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 96, w6, w26, 0x3fee82c3f9d89e1b, 0x3f458a24b20e5b9d); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 112, w7, w26, 0x7ff8000000000000, 0x0000000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 128, w8, w8, 0x3f733bbfdc427cab, 0x3fa5555555555555); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 144, w9, w19, 0x3fa5555555555555, 0x3fa5555555555555); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 0, w10, w27, 0x3ff6a09e667f3bcc, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 16, w11, w8, 0x7ff8000000000000, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 32, w12, w2, 0x3fa35794ad44f3ee, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 48, w13, w31, 0x7ff8000000000000, 0xfff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 64, w14, w0, 0x3fa8993eff4a591e, 0x7ff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 80, w15, w30, 0x7ff8000000000000, 0x604a20bd700c2c3d); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 96, w16, w5, 0x3fee82c3f9d89e1b, 0x3f458a24b20e5b9d); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 112, w17, w3, 0x7ff8000000000000, 0x0000000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 128, w18, w7, 0x3f733bbfdc427cab, 0x3fa5555555555555); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 144, w19, w3, 0x3fa5555555555555, 0x3fa5555555555555); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 0, w20, w30, 0x3ff6a09e667f3bcc, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 16, w21, w27, 0x7ff8000000000000, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 32, w22, w26, 0x3fa35794ad44f3ee, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 48, w23, w20, 0x7ff8000000000000, 0xfff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 64, w24, w7, 0x3fa8993eff4a591e, 0x7ff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 80, w25, w10, 0x7ff8000000000000, 0x604a20bd700c2c3d); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 96, w26, w29, 0x3fee82c3f9d89e1b, 0x3f458a24b20e5b9d); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 112, w27, w20, 0x7ff8000000000000, 0x0000000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 128, w28, w6, 0x3f733bbfdc427cab, 0x3fa5555555555555); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 144, w29, w24, 0x3fa5555555555555, 0x3fa5555555555555); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 0, w30, w30, 0x3ff6a09e667f3bcc, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 16, w31, w6, 0x7ff8000000000000, 0x7ff8000000000000); + + msacsr = 2; + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 0, w0, w10, 0x7fc000007fc00000, 0x7fc000003fb504f4); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 8, w1, w20, 0x7fc000003d1abca6, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 16, w2, w26, 0xff8000007fc00000, 0x7fc000003d1abca6); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 24, w3, w12, 0x7f8000003d44c9f8, 0xff8000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 32, w4, w0, 0x5f21e89c7fc00000, 0x7f8000003d44c9f8); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 40, w5, w22, 0x3bd77f473f741620, 0x5f21e89c7fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 48, w6, w26, 0x000000007fc00000, 0x3bd77f473f741620); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 56, w7, w14, 0x7fc000007fc00000, 0x000000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 64, w8, w8, 0x3d2aaaab3c7349e0, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 72, w9, w17, 0x3d2aaaab3d2aaaab, 0x3d2aaaab3c7349e0); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 0, w10, w28, 0x7fc000007fc00000, 0x7fc000003fb504f4); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 8, w11, w8, 0x7fc000003d1abca6, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 16, w12, w16, 0xff8000007fc00000, 0x7fc000003d1abca6); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 24, w13, w9, 0x7f8000003d44c9f8, 0xff8000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 32, w14, w3, 0x5f21e89c7fc00000, 0x7f8000003d44c9f8); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 40, w15, w21, 0x3bd77f473f741620, 0x5f21e89c7fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 48, w16, w9, 0x000000007fc00000, 0x3bd77f473f741620); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 56, w17, w14, 0x7fc000007fc00000, 0x000000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 64, w18, w10, 0x3d2aaaab3c7349e0, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 72, w19, w17, 0x3d2aaaab3d2aaaab, 0x3d2aaaab3c7349e0); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 0, w20, w25, 0x7fc000007fc00000, 0x7fc000003fb504f4); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 8, w21, w7, 0x7fc000003d1abca6, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 16, w22, w26, 0xff8000007fc00000, 0x7fc000003d1abca6); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 24, w23, w28, 0x7f8000003d44c9f8, 0xff8000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 32, w24, w4, 0x5f21e89c7fc00000, 0x7f8000003d44c9f8); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 40, w25, w8, 0x3bd77f473f741620, 0x5f21e89c7fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 48, w26, w1, 0x000000007fc00000, 0x3bd77f473f741620); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 56, w27, w13, 0x7fc000007fc00000, 0x000000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 64, w28, w14, 0x3d2aaaab3c7349e0, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 72, w29, w12, 0x3d2aaaab3d2aaaab, 0x3d2aaaab3c7349e0); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 0, w30, w30, 0x7fc000007fc00000, 0x7fc000003fb504f4); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 8, w31, w17, 0x7fc000003d1abca6, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 0, w0, w2, 0x3ff6a09e667f3bcd, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 16, w1, w14, 0x7ff8000000000000, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 32, w2, w24, 0x3fa35794ad44f3ef, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 48, w3, w20, 0x7ff8000000000000, 0xfff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 64, w4, w25, 0x3fa8993eff4a591f, 0x7ff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 80, w5, w0, 0x7ff8000000000000, 0x604a20bd700c2c3e); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 96, w6, w26, 0x3fee82c3f9d89e1c, 0x3f458a24b20e5b9e); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 112, w7, w26, 0x7ff8000000000000, 0x0000000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 128, w8, w8, 0x3f733bbfdc427cac, 0x3fa5555555555556); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 144, w9, w19, 0x3fa5555555555556, 0x3fa5555555555556); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 0, w10, w27, 0x3ff6a09e667f3bcd, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 16, w11, w8, 0x7ff8000000000000, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 32, w12, w2, 0x3fa35794ad44f3ef, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 48, w13, w31, 0x7ff8000000000000, 0xfff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 64, w14, w0, 0x3fa8993eff4a591f, 0x7ff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 80, w15, w30, 0x7ff8000000000000, 0x604a20bd700c2c3e); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 96, w16, w5, 0x3fee82c3f9d89e1c, 0x3f458a24b20e5b9e); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 112, w17, w3, 0x7ff8000000000000, 0x0000000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 128, w18, w7, 0x3f733bbfdc427cac, 0x3fa5555555555556); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 144, w19, w3, 0x3fa5555555555556, 0x3fa5555555555556); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 0, w20, w30, 0x3ff6a09e667f3bcd, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 16, w21, w27, 0x7ff8000000000000, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 32, w22, w26, 0x3fa35794ad44f3ef, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 48, w23, w20, 0x7ff8000000000000, 0xfff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 64, w24, w7, 0x3fa8993eff4a591f, 0x7ff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 80, w25, w10, 0x7ff8000000000000, 0x604a20bd700c2c3e); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 96, w26, w29, 0x3fee82c3f9d89e1c, 0x3f458a24b20e5b9e); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 112, w27, w20, 0x7ff8000000000000, 0x0000000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 128, w28, w6, 0x3f733bbfdc427cac, 0x3fa5555555555556); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 144, w29, w24, 0x3fa5555555555556, 0x3fa5555555555556); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 0, w30, w30, 0x3ff6a09e667f3bcd, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 16, w31, w6, 0x7ff8000000000000, 0x7ff8000000000000); + + msacsr = 3; + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 0, w0, w10, 0x7fc000007fc00000, 0x7fc000003fb504f3); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 8, w1, w20, 0x7fc000003d1abca5, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 16, w2, w26, 0xff8000007fc00000, 0x7fc000003d1abca5); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 24, w3, w12, 0x7f8000003d44c9f7, 0xff8000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 32, w4, w0, 0x5f21e89b7fc00000, 0x7f8000003d44c9f7); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 40, w5, w22, 0x3bd77f463f74161f, 0x5f21e89b7fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 48, w6, w26, 0x000000007fc00000, 0x3bd77f463f74161f); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 56, w7, w14, 0x7fc000007fc00000, 0x000000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 64, w8, w8, 0x3d2aaaaa3c7349df, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 72, w9, w17, 0x3d2aaaaa3d2aaaaa, 0x3d2aaaaa3c7349df); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 0, w10, w28, 0x7fc000007fc00000, 0x7fc000003fb504f3); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 8, w11, w8, 0x7fc000003d1abca5, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 16, w12, w16, 0xff8000007fc00000, 0x7fc000003d1abca5); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 24, w13, w9, 0x7f8000003d44c9f7, 0xff8000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 32, w14, w3, 0x5f21e89b7fc00000, 0x7f8000003d44c9f7); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 40, w15, w21, 0x3bd77f463f74161f, 0x5f21e89b7fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 48, w16, w9, 0x000000007fc00000, 0x3bd77f463f74161f); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 56, w17, w14, 0x7fc000007fc00000, 0x000000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 64, w18, w10, 0x3d2aaaaa3c7349df, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 72, w19, w17, 0x3d2aaaaa3d2aaaaa, 0x3d2aaaaa3c7349df); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 0, w20, w25, 0x7fc000007fc00000, 0x7fc000003fb504f3); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 8, w21, w7, 0x7fc000003d1abca5, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 16, w22, w26, 0xff8000007fc00000, 0x7fc000003d1abca5); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 24, w23, w28, 0x7f8000003d44c9f7, 0xff8000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 32, w24, w4, 0x5f21e89b7fc00000, 0x7f8000003d44c9f7); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 40, w25, w8, 0x3bd77f463f74161f, 0x5f21e89b7fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 48, w26, w1, 0x000000007fc00000, 0x3bd77f463f74161f); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 56, w27, w13, 0x7fc000007fc00000, 0x000000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 64, w28, w14, 0x3d2aaaaa3c7349df, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 72, w29, w12, 0x3d2aaaaa3d2aaaaa, 0x3d2aaaaa3c7349df); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 0, w30, w30, 0x7fc000007fc00000, 0x7fc000003fb504f3); + TEST_2RF_FRSQRT_W("frsqrt.w", dataf, 8, w31, w17, 0x7fc000003d1abca5, 0x7fc000007fc00000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 0, w0, w2, 0x3ff6a09e667f3bcc, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 16, w1, w14, 0x7ff8000000000000, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 32, w2, w24, 0x3fa35794ad44f3ee, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 48, w3, w20, 0x7ff8000000000000, 0xfff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 64, w4, w25, 0x3fa8993eff4a591e, 0x7ff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 80, w5, w0, 0x7ff8000000000000, 0x604a20bd700c2c3d); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 96, w6, w26, 0x3fee82c3f9d89e1b, 0x3f458a24b20e5b9d); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 112, w7, w26, 0x7ff8000000000000, 0x0000000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 128, w8, w8, 0x3f733bbfdc427cab, 0x3fa5555555555555); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 144, w9, w19, 0x3fa5555555555555, 0x3fa5555555555555); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 0, w10, w27, 0x3ff6a09e667f3bcc, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 16, w11, w8, 0x7ff8000000000000, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 32, w12, w2, 0x3fa35794ad44f3ee, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 48, w13, w31, 0x7ff8000000000000, 0xfff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 64, w14, w0, 0x3fa8993eff4a591e, 0x7ff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 80, w15, w30, 0x7ff8000000000000, 0x604a20bd700c2c3d); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 96, w16, w5, 0x3fee82c3f9d89e1b, 0x3f458a24b20e5b9d); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 112, w17, w3, 0x7ff8000000000000, 0x0000000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 128, w18, w7, 0x3f733bbfdc427cab, 0x3fa5555555555555); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 144, w19, w3, 0x3fa5555555555555, 0x3fa5555555555555); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 0, w20, w30, 0x3ff6a09e667f3bcc, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 16, w21, w27, 0x7ff8000000000000, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 32, w22, w26, 0x3fa35794ad44f3ee, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 48, w23, w20, 0x7ff8000000000000, 0xfff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 64, w24, w7, 0x3fa8993eff4a591e, 0x7ff0000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 80, w25, w10, 0x7ff8000000000000, 0x604a20bd700c2c3d); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 96, w26, w29, 0x3fee82c3f9d89e1b, 0x3f458a24b20e5b9d); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 112, w27, w20, 0x7ff8000000000000, 0x0000000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 128, w28, w6, 0x3f733bbfdc427cab, 0x3fa5555555555555); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 144, w29, w24, 0x3fa5555555555555, 0x3fa5555555555555); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 0, w30, w30, 0x3ff6a09e667f3bcc, 0x7ff8000000000000); + TEST_2RF_FRSQRT_D("frsqrt.d", datad, 16, w31, w6, 0x7ff8000000000000, 0x7ff8000000000000); + + // Registers ovelapping tests. TEST_MSA_FPU_REG32(0); diff --git a/none/tests/mips32/msa_fpu.stdout.exp b/none/tests/mips32/msa_fpu.stdout.exp index 953f79b023..e45ed7471a 100644 --- a/none/tests/mips32/msa_fpu.stdout.exp +++ b/none/tests/mips32/msa_fpu.stdout.exp @@ -10618,70 +10618,6 @@ frcp.d $w28, $w6, w28: 3ef71ec6cb12f8fb3f5c71c71c71c71c w6: 40e6252666666666408 frcp.d $w29, $w11, w29: 3f5c71c71c71c71c3f5c71c71c71c71c w11: 40820000000000004082000000000000 msacsr 00000000 frcp.d $w30, $w30, w30: 40000000000000008000000000000000 w30: 3fe0000000000000fff0000000000000 msacsr 00000000 frcp.d $w31, $w22, w31: bfd81fa673fc86b5bbffffffc0000080 w22: c005395810624dd3c3e0000020000000 msacsr 00000000 -frsqrt.w $w0, $w10, w0: 7fc000007fc000007fc000003fb504f3 w10: cf000001c029cac1ff8000003f000000 msacsr 00000000 -frsqrt.w $w1, $w20, w1: 7fc000003d1abca57fc000007fc00000 w20: 80500000442f2ccdcf000001c029cac1 msacsr 00000000 -frsqrt.w $w2, $w26, w2: ff8000007fc000007fc000003d1abca5 w26: 80000000c447c7ae80500000442f2ccd msacsr 00000000 -frsqrt.w $w3, $w12, w3: 7f8000003d44c9f8ff8000007fc00000 w12: 0000000043d89d7180000000c447c7ae msacsr 00000000 -frsqrt.w $w4, $w0, w4: 5f21e89b7fc000007f8000003d44c9f8 w0: 00500000bf3333330000000043d89d71 msacsr 00000000 -frsqrt.w $w5, $w22, w5: 3bd77f463f7416205f21e89b7fc00000 w22: 46b4a3143f8ccccd00500000bf333333 msacsr 00000000 -frsqrt.w $w6, $w26, w6: 000000007fc000003bd77f463f741620 w26: 7f800000c70dabb346b4a3143f8ccccd msacsr 00000000 -frsqrt.w $w7, $w14, w7: 7fc000007fc00000000000007fc00000 w14: c029cac1c791bfa97f800000c70dabb3 msacsr 00000000 -frsqrt.w $w8, $w8, w8: 3d2aaaab3c7349e07fc000007fc00000 w8: 44100000458db99ac029cac1c791bfa9 msacsr 00000000 -frsqrt.w $w9, $w17, w9: 3d2aaaab3d2aaaab3d2aaaab3c7349e0 w17: 441000004410000044100000458db99a msacsr 00000000 -frsqrt.w $w10, $w28, w10: 7fc000007fc000007fc000003fb504f3 w28: cf000001c029cac1ff8000003f000000 msacsr 00000000 -frsqrt.w $w11, $w8, w11: 7fc000003d1abca57fc000007fc00000 w8: 80500000442f2ccdcf000001c029cac1 msacsr 00000000 -frsqrt.w $w12, $w16, w12: ff8000007fc000007fc000003d1abca5 w16: 80000000c447c7ae80500000442f2ccd msacsr 00000000 -frsqrt.w $w13, $w9, w13: 7f8000003d44c9f8ff8000007fc00000 w9: 0000000043d89d7180000000c447c7ae msacsr 00000000 -frsqrt.w $w14, $w3, w14: 5f21e89b7fc000007f8000003d44c9f8 w3: 00500000bf3333330000000043d89d71 msacsr 00000000 -frsqrt.w $w15, $w21, w15: 3bd77f463f7416205f21e89b7fc00000 w21: 46b4a3143f8ccccd00500000bf333333 msacsr 00000000 -frsqrt.w $w16, $w9, w16: 000000007fc000003bd77f463f741620 w9: 7f800000c70dabb346b4a3143f8ccccd msacsr 00000000 -frsqrt.w $w17, $w14, w17: 7fc000007fc00000000000007fc00000 w14: c029cac1c791bfa97f800000c70dabb3 msacsr 00000000 -frsqrt.w $w18, $w10, w18: 3d2aaaab3c7349e07fc000007fc00000 w10: 44100000458db99ac029cac1c791bfa9 msacsr 00000000 -frsqrt.w $w19, $w17, w19: 3d2aaaab3d2aaaab3d2aaaab3c7349e0 w17: 441000004410000044100000458db99a msacsr 00000000 -frsqrt.w $w20, $w25, w20: 7fc000007fc000007fc000003fb504f3 w25: cf000001c029cac1ff8000003f000000 msacsr 00000000 -frsqrt.w $w21, $w7, w21: 7fc000003d1abca57fc000007fc00000 w7: 80500000442f2ccdcf000001c029cac1 msacsr 00000000 -frsqrt.w $w22, $w26, w22: ff8000007fc000007fc000003d1abca5 w26: 80000000c447c7ae80500000442f2ccd msacsr 00000000 -frsqrt.w $w23, $w28, w23: 7f8000003d44c9f8ff8000007fc00000 w28: 0000000043d89d7180000000c447c7ae msacsr 00000000 -frsqrt.w $w24, $w4, w24: 5f21e89b7fc000007f8000003d44c9f8 w4: 00500000bf3333330000000043d89d71 msacsr 00000000 -frsqrt.w $w25, $w8, w25: 3bd77f463f7416205f21e89b7fc00000 w8: 46b4a3143f8ccccd00500000bf333333 msacsr 00000000 -frsqrt.w $w26, $w1, w26: 000000007fc000003bd77f463f741620 w1: 7f800000c70dabb346b4a3143f8ccccd msacsr 00000000 -frsqrt.w $w27, $w13, w27: 7fc000007fc00000000000007fc00000 w13: c029cac1c791bfa97f800000c70dabb3 msacsr 00000000 -frsqrt.w $w28, $w14, w28: 3d2aaaab3c7349e07fc000007fc00000 w14: 44100000458db99ac029cac1c791bfa9 msacsr 00000000 -frsqrt.w $w29, $w12, w29: 3d2aaaab3d2aaaab3d2aaaab3c7349e0 w12: 441000004410000044100000458db99a msacsr 00000000 -frsqrt.w $w30, $w30, w30: 7fc000007fc000007fc000003fb504f3 w30: cf000001c029cac1ff8000003f000000 msacsr 00000000 -frsqrt.w $w31, $w17, w31: 7fc000003d1abca57fc000007fc00000 w17: 80500000442f2ccdcf000001c029cac1 msacsr 00000000 -frsqrt.d $w0, $w2, w0: 3ff6a09e667f3bcd7ff8000000000000 w2: 3fe0000000000000fff0000000000000 msacsr 00000000 -frsqrt.d $w1, $w14, w1: 7ff80000000000007ff8000000000000 w14: c005395810624dd3c3e0000020000000 msacsr 00000000 -frsqrt.d $w2, $w24, w2: 3fa35794ad44f3ee7ff8000000000000 w24: 4085e5999999999a8000006000000000 msacsr 00000000 -frsqrt.d $w3, $w20, w3: 7ff8000000000000fff0000000000000 w20: c088f8f5c28f5c298000000000000000 msacsr 00000000 -frsqrt.d $w4, $w25, w4: 3fa8993eff4a591f7ff0000000000000 w25: 407b13ae147ae1480000000000000000 msacsr 00000000 -frsqrt.d $w5, $w0, w5: 7ff8000000000000604a20bd700c2c3e w0: bfe66666666666660000006000000000 msacsr 00000000 -frsqrt.d $w6, $w26, w6: 3fee82c3f9d89e1b3f458a24b20e5b9e w26: 3ff199999999999a4141a828c51eb852 msacsr 00000000 -frsqrt.d $w7, $w26, w7: 7ff80000000000000000000000000000 w26: c1b59e0837b333337ff0000000000000 msacsr 00000000 -frsqrt.d $w8, $w8, w8: 3f733bbfdc427cac3fa5555555555555 w8: 40e62526666666664082000000000000 msacsr 00000000 -frsqrt.d $w9, $w19, w9: 3fa55555555555553fa5555555555555 w19: 40820000000000004082000000000000 msacsr 00000000 -frsqrt.d $w10, $w27, w10: 3ff6a09e667f3bcd7ff8000000000000 w27: 3fe0000000000000fff0000000000000 msacsr 00000000 -frsqrt.d $w11, $w8, w11: 7ff80000000000007ff8000000000000 w8: c005395810624dd3c3e0000020000000 msacsr 00000000 -frsqrt.d $w12, $w2, w12: 3fa35794ad44f3ee7ff8000000000000 w2: 4085e5999999999a8000006000000000 msacsr 00000000 -frsqrt.d $w13, $w31, w13: 7ff8000000000000fff0000000000000 w31: c088f8f5c28f5c298000000000000000 msacsr 00000000 -frsqrt.d $w14, $w0, w14: 3fa8993eff4a591f7ff0000000000000 w0: 407b13ae147ae1480000000000000000 msacsr 00000000 -frsqrt.d $w15, $w30, w15: 7ff8000000000000604a20bd700c2c3e w30: bfe66666666666660000006000000000 msacsr 00000000 -frsqrt.d $w16, $w5, w16: 3fee82c3f9d89e1b3f458a24b20e5b9e w5: 3ff199999999999a4141a828c51eb852 msacsr 00000000 -frsqrt.d $w17, $w3, w17: 7ff80000000000000000000000000000 w3: c1b59e0837b333337ff0000000000000 msacsr 00000000 -frsqrt.d $w18, $w7, w18: 3f733bbfdc427cac3fa5555555555555 w7: 40e62526666666664082000000000000 msacsr 00000000 -frsqrt.d $w19, $w3, w19: 3fa55555555555553fa5555555555555 w3: 40820000000000004082000000000000 msacsr 00000000 -frsqrt.d $w20, $w30, w20: 3ff6a09e667f3bcd7ff8000000000000 w30: 3fe0000000000000fff0000000000000 msacsr 00000000 -frsqrt.d $w21, $w27, w21: 7ff80000000000007ff8000000000000 w27: c005395810624dd3c3e0000020000000 msacsr 00000000 -frsqrt.d $w22, $w26, w22: 3fa35794ad44f3ee7ff8000000000000 w26: 4085e5999999999a8000006000000000 msacsr 00000000 -frsqrt.d $w23, $w20, w23: 7ff8000000000000fff0000000000000 w20: c088f8f5c28f5c298000000000000000 msacsr 00000000 -frsqrt.d $w24, $w7, w24: 3fa8993eff4a591f7ff0000000000000 w7: 407b13ae147ae1480000000000000000 msacsr 00000000 -frsqrt.d $w25, $w10, w25: 7ff8000000000000604a20bd700c2c3e w10: bfe66666666666660000006000000000 msacsr 00000000 -frsqrt.d $w26, $w29, w26: 3fee82c3f9d89e1b3f458a24b20e5b9e w29: 3ff199999999999a4141a828c51eb852 msacsr 00000000 -frsqrt.d $w27, $w20, w27: 7ff80000000000000000000000000000 w20: c1b59e0837b333337ff0000000000000 msacsr 00000000 -frsqrt.d $w28, $w6, w28: 3f733bbfdc427cac3fa5555555555555 w6: 40e62526666666664082000000000000 msacsr 00000000 -frsqrt.d $w29, $w24, w29: 3fa55555555555553fa5555555555555 w24: 40820000000000004082000000000000 msacsr 00000000 -frsqrt.d $w30, $w30, w30: 3ff6a09e667f3bcd7ff8000000000000 w30: 3fe0000000000000fff0000000000000 msacsr 00000000 -frsqrt.d $w31, $w6, w31: 7ff80000000000007ff8000000000000 w6: c005395810624dd3c3e0000020000000 msacsr 00000000 fsqrt.w $w0, $w17, w0: 7fc000007fc000007fc000003f3504f3 w17: cf000001c029cac1ff8000003f000000 msacsr 00000000 fsqrt.w $w1, $w14, w1: 7fc0000041d3c4137fc000007fc00000 w14: 80500000442f2ccdcf000001c029cac1 msacsr 00000000 fsqrt.w $w2, $w8, w2: 800000007fc000007fc0000041d3c413 w8: 80000000c447c7ae80500000442f2ccd msacsr 00000000 @@ -16614,70 +16550,6 @@ frcp.d $w28, $w6, w28: 3ef71ec6cb12f8fb3f5c71c71c71c71c w6: 40e6252666666666408 frcp.d $w29, $w11, w29: 3f5c71c71c71c71c3f5c71c71c71c71c w11: 40820000000000004082000000000000 msacsr 00000001 frcp.d $w30, $w30, w30: 40000000000000008000000000000000 w30: 3fe0000000000000fff0000000000000 msacsr 00000001 frcp.d $w31, $w22, w31: bfd81fa673fc86b4bbffffffc000007f w22: c005395810624dd3c3e0000020000000 msacsr 00000001 -frsqrt.w $w0, $w10, w0: 7fc000007fc000007fc000003fb504f3 w10: cf000001c029cac1ff8000003f000000 msacsr 00000001 -frsqrt.w $w1, $w20, w1: 7fc000003d1abca57fc000007fc00000 w20: 80500000442f2ccdcf000001c029cac1 msacsr 00000001 -frsqrt.w $w2, $w26, w2: ff8000007fc000007fc000003d1abca5 w26: 80000000c447c7ae80500000442f2ccd msacsr 00000001 -frsqrt.w $w3, $w12, w3: 7f8000003d44c9f7ff8000007fc00000 w12: 0000000043d89d7180000000c447c7ae msacsr 00000001 -frsqrt.w $w4, $w0, w4: 5f21e89b7fc000007f8000003d44c9f7 w0: 00500000bf3333330000000043d89d71 msacsr 00000001 -frsqrt.w $w5, $w22, w5: 3bd77f463f74161f5f21e89b7fc00000 w22: 46b4a3143f8ccccd00500000bf333333 msacsr 00000001 -frsqrt.w $w6, $w26, w6: 000000007fc000003bd77f463f74161f w26: 7f800000c70dabb346b4a3143f8ccccd msacsr 00000001 -frsqrt.w $w7, $w14, w7: 7fc000007fc00000000000007fc00000 w14: c029cac1c791bfa97f800000c70dabb3 msacsr 00000001 -frsqrt.w $w8, $w8, w8: 3d2aaaaa3c7349df7fc000007fc00000 w8: 44100000458db99ac029cac1c791bfa9 msacsr 00000001 -frsqrt.w $w9, $w17, w9: 3d2aaaaa3d2aaaaa3d2aaaaa3c7349df w17: 441000004410000044100000458db99a msacsr 00000001 -frsqrt.w $w10, $w28, w10: 7fc000007fc000007fc000003fb504f3 w28: cf000001c029cac1ff8000003f000000 msacsr 00000001 -frsqrt.w $w11, $w8, w11: 7fc000003d1abca57fc000007fc00000 w8: 80500000442f2ccdcf000001c029cac1 msacsr 00000001 -frsqrt.w $w12, $w16, w12: ff8000007fc000007fc000003d1abca5 w16: 80000000c447c7ae80500000442f2ccd msacsr 00000001 -frsqrt.w $w13, $w9, w13: 7f8000003d44c9f7ff8000007fc00000 w9: 0000000043d89d7180000000c447c7ae msacsr 00000001 -frsqrt.w $w14, $w3, w14: 5f21e89b7fc000007f8000003d44c9f7 w3: 00500000bf3333330000000043d89d71 msacsr 00000001 -frsqrt.w $w15, $w21, w15: 3bd77f463f74161f5f21e89b7fc00000 w21: 46b4a3143f8ccccd00500000bf333333 msacsr 00000001 -frsqrt.w $w16, $w9, w16: 000000007fc000003bd77f463f74161f w9: 7f800000c70dabb346b4a3143f8ccccd msacsr 00000001 -frsqrt.w $w17, $w14, w17: 7fc000007fc00000000000007fc00000 w14: c029cac1c791bfa97f800000c70dabb3 msacsr 00000001 -frsqrt.w $w18, $w10, w18: 3d2aaaaa3c7349df7fc000007fc00000 w10: 44100000458db99ac029cac1c791bfa9 msacsr 00000001 -frsqrt.w $w19, $w17, w19: 3d2aaaaa3d2aaaaa3d2aaaaa3c7349df w17: 441000004410000044100000458db99a msacsr 00000001 -frsqrt.w $w20, $w25, w20: 7fc000007fc000007fc000003fb504f3 w25: cf000001c029cac1ff8000003f000000 msacsr 00000001 -frsqrt.w $w21, $w7, w21: 7fc000003d1abca57fc000007fc00000 w7: 80500000442f2ccdcf000001c029cac1 msacsr 00000001 -frsqrt.w $w22, $w26, w22: ff8000007fc000007fc000003d1abca5 w26: 80000000c447c7ae80500000442f2ccd msacsr 00000001 -frsqrt.w $w23, $w28, w23: 7f8000003d44c9f7ff8000007fc00000 w28: 0000000043d89d7180000000c447c7ae msacsr 00000001 -frsqrt.w $w24, $w4, w24: 5f21e89b7fc000007f8000003d44c9f7 w4: 00500000bf3333330000000043d89d71 msacsr 00000001 -frsqrt.w $w25, $w8, w25: 3bd77f463f74161f5f21e89b7fc00000 w8: 46b4a3143f8ccccd00500000bf333333 msacsr 00000001 -frsqrt.w $w26, $w1, w26: 000000007fc000003bd77f463f74161f w1: 7f800000c70dabb346b4a3143f8ccccd msacsr 00000001 -frsqrt.w $w27, $w13, w27: 7fc000007fc00000000000007fc00000 w13: c029cac1c791bfa97f800000c70dabb3 msacsr 00000001 -frsqrt.w $w28, $w14, w28: 3d2aaaaa3c7349df7fc000007fc00000 w14: 44100000458db99ac029cac1c791bfa9 msacsr 00000001 -frsqrt.w $w29, $w12, w29: 3d2aaaaa3d2aaaaa3d2aaaaa3c7349df w12: 441000004410000044100000458db99a msacsr 00000001 -frsqrt.w $w30, $w30, w30: 7fc000007fc000007fc000003fb504f3 w30: cf000001c029cac1ff8000003f000000 msacsr 00000001 -frsqrt.w $w31, $w17, w31: 7fc000003d1abca57fc000007fc00000 w17: 80500000442f2ccdcf000001c029cac1 msacsr 00000001 -frsqrt.d $w0, $w2, w0: 3ff6a09e667f3bcc7ff8000000000000 w2: 3fe0000000000000fff0000000000000 msacsr 00000001 -frsqrt.d $w1, $w14, w1: 7ff80000000000007ff8000000000000 w14: c005395810624dd3c3e0000020000000 msacsr 00000001 -frsqrt.d $w2, $w24, w2: 3fa35794ad44f3ee7ff8000000000000 w24: 4085e5999999999a8000006000000000 msacsr 00000001 -frsqrt.d $w3, $w20, w3: 7ff8000000000000fff0000000000000 w20: c088f8f5c28f5c298000000000000000 msacsr 00000001 -frsqrt.d $w4, $w25, w4: 3fa8993eff4a591e7ff0000000000000 w25: 407b13ae147ae1480000000000000000 msacsr 00000001 -frsqrt.d $w5, $w0, w5: 7ff8000000000000604a20bd700c2c3d w0: bfe66666666666660000006000000000 msacsr 00000001 -frsqrt.d $w6, $w26, w6: 3fee82c3f9d89e1b3f458a24b20e5b9d w26: 3ff199999999999a4141a828c51eb852 msacsr 00000001 -frsqrt.d $w7, $w26, w7: 7ff80000000000000000000000000000 w26: c1b59e0837b333337ff0000000000000 msacsr 00000001 -frsqrt.d $w8, $w8, w8: 3f733bbfdc427cab3fa5555555555555 w8: 40e62526666666664082000000000000 msacsr 00000001 -frsqrt.d $w9, $w19, w9: 3fa55555555555553fa5555555555555 w19: 40820000000000004082000000000000 msacsr 00000001 -frsqrt.d $w10, $w27, w10: 3ff6a09e667f3bcc7ff8000000000000 w27: 3fe0000000000000fff0000000000000 msacsr 00000001 -frsqrt.d $w11, $w8, w11: 7ff80000000000007ff8000000000000 w8: c005395810624dd3c3e0000020000000 msacsr 00000001 -frsqrt.d $w12, $w2, w12: 3fa35794ad44f3ee7ff8000000000000 w2: 4085e5999999999a8000006000000000 msacsr 00000001 -frsqrt.d $w13, $w31, w13: 7ff8000000000000fff0000000000000 w31: c088f8f5c28f5c298000000000000000 msacsr 00000001 -frsqrt.d $w14, $w0, w14: 3fa8993eff4a591e7ff0000000000000 w0: 407b13ae147ae1480000000000000000 msacsr 00000001 -frsqrt.d $w15, $w30, w15: 7ff8000000000000604a20bd700c2c3d w30: bfe66666666666660000006000000000 msacsr 00000001 -frsqrt.d $w16, $w5, w16: 3fee82c3f9d89e1b3f458a24b20e5b9d w5: 3ff199999999999a4141a828c51eb852 msacsr 00000001 -frsqrt.d $w17, $w3, w17: 7ff80000000000000000000000000000 w3: c1b59e0837b333337ff0000000000000 msacsr 00000001 -frsqrt.d $w18, $w7, w18: 3f733bbfdc427cab3fa5555555555555 w7: 40e62526666666664082000000000000 msacsr 00000001 -frsqrt.d $w19, $w3, w19: 3fa55555555555553fa5555555555555 w3: 40820000000000004082000000000000 msacsr 00000001 -frsqrt.d $w20, $w30, w20: 3ff6a09e667f3bcc7ff8000000000000 w30: 3fe0000000000000fff0000000000000 msacsr 00000001 -frsqrt.d $w21, $w27, w21: 7ff80000000000007ff8000000000000 w27: c005395810624dd3c3e0000020000000 msacsr 00000001 -frsqrt.d $w22, $w26, w22: 3fa35794ad44f3ee7ff8000000000000 w26: 4085e5999999999a8000006000000000 msacsr 00000001 -frsqrt.d $w23, $w20, w23: 7ff8000000000000fff0000000000000 w20: c088f8f5c28f5c298000000000000000 msacsr 00000001 -frsqrt.d $w24, $w7, w24: 3fa8993eff4a591e7ff0000000000000 w7: 407b13ae147ae1480000000000000000 msacsr 00000001 -frsqrt.d $w25, $w10, w25: 7ff8000000000000604a20bd700c2c3d w10: bfe66666666666660000006000000000 msacsr 00000001 -frsqrt.d $w26, $w29, w26: 3fee82c3f9d89e1b3f458a24b20e5b9d w29: 3ff199999999999a4141a828c51eb852 msacsr 00000001 -frsqrt.d $w27, $w20, w27: 7ff80000000000000000000000000000 w20: c1b59e0837b333337ff0000000000000 msacsr 00000001 -frsqrt.d $w28, $w6, w28: 3f733bbfdc427cab3fa5555555555555 w6: 40e62526666666664082000000000000 msacsr 00000001 -frsqrt.d $w29, $w24, w29: 3fa55555555555553fa5555555555555 w24: 40820000000000004082000000000000 msacsr 00000001 -frsqrt.d $w30, $w30, w30: 3ff6a09e667f3bcc7ff8000000000000 w30: 3fe0000000000000fff0000000000000 msacsr 00000001 -frsqrt.d $w31, $w6, w31: 7ff80000000000007ff8000000000000 w6: c005395810624dd3c3e0000020000000 msacsr 00000001 fsqrt.w $w0, $w17, w0: 7fc000007fc000007fc000003f3504f3 w17: cf000001c029cac1ff8000003f000000 msacsr 00000001 fsqrt.w $w1, $w14, w1: 7fc0000041d3c4127fc000007fc00000 w14: 80500000442f2ccdcf000001c029cac1 msacsr 00000001 fsqrt.w $w2, $w8, w2: 800000007fc000007fc0000041d3c412 w8: 80000000c447c7ae80500000442f2ccd msacsr 00000001 @@ -22610,70 +22482,6 @@ frcp.d $w28, $w6, w28: 3ef71ec6cb12f8fc3f5c71c71c71c71d w6: 40e6252666666666408 frcp.d $w29, $w11, w29: 3f5c71c71c71c71d3f5c71c71c71c71d w11: 40820000000000004082000000000000 msacsr 00000002 frcp.d $w30, $w30, w30: 40000000000000008000000000000000 w30: 3fe0000000000000fff0000000000000 msacsr 00000002 frcp.d $w31, $w22, w31: bfd81fa673fc86b4bbffffffc000007f w22: c005395810624dd3c3e0000020000000 msacsr 00000002 -frsqrt.w $w0, $w10, w0: 7fc000007fc000007fc000003fb504f4 w10: cf000001c029cac1ff8000003f000000 msacsr 00000002 -frsqrt.w $w1, $w20, w1: 7fc000003d1abca67fc000007fc00000 w20: 80500000442f2ccdcf000001c029cac1 msacsr 00000002 -frsqrt.w $w2, $w26, w2: ff8000007fc000007fc000003d1abca6 w26: 80000000c447c7ae80500000442f2ccd msacsr 00000002 -frsqrt.w $w3, $w12, w3: 7f8000003d44c9f8ff8000007fc00000 w12: 0000000043d89d7180000000c447c7ae msacsr 00000002 -frsqrt.w $w4, $w0, w4: 5f21e89c7fc000007f8000003d44c9f8 w0: 00500000bf3333330000000043d89d71 msacsr 00000002 -frsqrt.w $w5, $w22, w5: 3bd77f473f7416205f21e89c7fc00000 w22: 46b4a3143f8ccccd00500000bf333333 msacsr 00000002 -frsqrt.w $w6, $w26, w6: 000000007fc000003bd77f473f741620 w26: 7f800000c70dabb346b4a3143f8ccccd msacsr 00000002 -frsqrt.w $w7, $w14, w7: 7fc000007fc00000000000007fc00000 w14: c029cac1c791bfa97f800000c70dabb3 msacsr 00000002 -frsqrt.w $w8, $w8, w8: 3d2aaaab3c7349e07fc000007fc00000 w8: 44100000458db99ac029cac1c791bfa9 msacsr 00000002 -frsqrt.w $w9, $w17, w9: 3d2aaaab3d2aaaab3d2aaaab3c7349e0 w17: 441000004410000044100000458db99a msacsr 00000002 -frsqrt.w $w10, $w28, w10: 7fc000007fc000007fc000003fb504f4 w28: cf000001c029cac1ff8000003f000000 msacsr 00000002 -frsqrt.w $w11, $w8, w11: 7fc000003d1abca67fc000007fc00000 w8: 80500000442f2ccdcf000001c029cac1 msacsr 00000002 -frsqrt.w $w12, $w16, w12: ff8000007fc000007fc000003d1abca6 w16: 80000000c447c7ae80500000442f2ccd msacsr 00000002 -frsqrt.w $w13, $w9, w13: 7f8000003d44c9f8ff8000007fc00000 w9: 0000000043d89d7180000000c447c7ae msacsr 00000002 -frsqrt.w $w14, $w3, w14: 5f21e89c7fc000007f8000003d44c9f8 w3: 00500000bf3333330000000043d89d71 msacsr 00000002 -frsqrt.w $w15, $w21, w15: 3bd77f473f7416205f21e89c7fc00000 w21: 46b4a3143f8ccccd00500000bf333333 msacsr 00000002 -frsqrt.w $w16, $w9, w16: 000000007fc000003bd77f473f741620 w9: 7f800000c70dabb346b4a3143f8ccccd msacsr 00000002 -frsqrt.w $w17, $w14, w17: 7fc000007fc00000000000007fc00000 w14: c029cac1c791bfa97f800000c70dabb3 msacsr 00000002 -frsqrt.w $w18, $w10, w18: 3d2aaaab3c7349e07fc000007fc00000 w10: 44100000458db99ac029cac1c791bfa9 msacsr 00000002 -frsqrt.w $w19, $w17, w19: 3d2aaaab3d2aaaab3d2aaaab3c7349e0 w17: 441000004410000044100000458db99a msacsr 00000002 -frsqrt.w $w20, $w25, w20: 7fc000007fc000007fc000003fb504f4 w25: cf000001c029cac1ff8000003f000000 msacsr 00000002 -frsqrt.w $w21, $w7, w21: 7fc000003d1abca67fc000007fc00000 w7: 80500000442f2ccdcf000001c029cac1 msacsr 00000002 -frsqrt.w $w22, $w26, w22: ff8000007fc000007fc000003d1abca6 w26: 80000000c447c7ae80500000442f2ccd msacsr 00000002 -frsqrt.w $w23, $w28, w23: 7f8000003d44c9f8ff8000007fc00000 w28: 0000000043d89d7180000000c447c7ae msacsr 00000002 -frsqrt.w $w24, $w4, w24: 5f21e89c7fc000007f8000003d44c9f8 w4: 00500000bf3333330000000043d89d71 msacsr 00000002 -frsqrt.w $w25, $w8, w25: 3bd77f473f7416205f21e89c7fc00000 w8: 46b4a3143f8ccccd00500000bf333333 msacsr 00000002 -frsqrt.w $w26, $w1, w26: 000000007fc000003bd77f473f741620 w1: 7f800000c70dabb346b4a3143f8ccccd msacsr 00000002 -frsqrt.w $w27, $w13, w27: 7fc000007fc00000000000007fc00000 w13: c029cac1c791bfa97f800000c70dabb3 msacsr 00000002 -frsqrt.w $w28, $w14, w28: 3d2aaaab3c7349e07fc000007fc00000 w14: 44100000458db99ac029cac1c791bfa9 msacsr 00000002 -frsqrt.w $w29, $w12, w29: 3d2aaaab3d2aaaab3d2aaaab3c7349e0 w12: 441000004410000044100000458db99a msacsr 00000002 -frsqrt.w $w30, $w30, w30: 7fc000007fc000007fc000003fb504f4 w30: cf000001c029cac1ff8000003f000000 msacsr 00000002 -frsqrt.w $w31, $w17, w31: 7fc000003d1abca67fc000007fc00000 w17: 80500000442f2ccdcf000001c029cac1 msacsr 00000002 -frsqrt.d $w0, $w2, w0: 3ff6a09e667f3bcd7ff8000000000000 w2: 3fe0000000000000fff0000000000000 msacsr 00000002 -frsqrt.d $w1, $w14, w1: 7ff80000000000007ff8000000000000 w14: c005395810624dd3c3e0000020000000 msacsr 00000002 -frsqrt.d $w2, $w24, w2: 3fa35794ad44f3ef7ff8000000000000 w24: 4085e5999999999a8000006000000000 msacsr 00000002 -frsqrt.d $w3, $w20, w3: 7ff8000000000000fff0000000000000 w20: c088f8f5c28f5c298000000000000000 msacsr 00000002 -frsqrt.d $w4, $w25, w4: 3fa8993eff4a591f7ff0000000000000 w25: 407b13ae147ae1480000000000000000 msacsr 00000002 -frsqrt.d $w5, $w0, w5: 7ff8000000000000604a20bd700c2c3e w0: bfe66666666666660000006000000000 msacsr 00000002 -frsqrt.d $w6, $w26, w6: 3fee82c3f9d89e1c3f458a24b20e5b9e w26: 3ff199999999999a4141a828c51eb852 msacsr 00000002 -frsqrt.d $w7, $w26, w7: 7ff80000000000000000000000000000 w26: c1b59e0837b333337ff0000000000000 msacsr 00000002 -frsqrt.d $w8, $w8, w8: 3f733bbfdc427cac3fa5555555555556 w8: 40e62526666666664082000000000000 msacsr 00000002 -frsqrt.d $w9, $w19, w9: 3fa55555555555563fa5555555555556 w19: 40820000000000004082000000000000 msacsr 00000002 -frsqrt.d $w10, $w27, w10: 3ff6a09e667f3bcd7ff8000000000000 w27: 3fe0000000000000fff0000000000000 msacsr 00000002 -frsqrt.d $w11, $w8, w11: 7ff80000000000007ff8000000000000 w8: c005395810624dd3c3e0000020000000 msacsr 00000002 -frsqrt.d $w12, $w2, w12: 3fa35794ad44f3ef7ff8000000000000 w2: 4085e5999999999a8000006000000000 msacsr 00000002 -frsqrt.d $w13, $w31, w13: 7ff8000000000000fff0000000000000 w31: c088f8f5c28f5c298000000000000000 msacsr 00000002 -frsqrt.d $w14, $w0, w14: 3fa8993eff4a591f7ff0000000000000 w0: 407b13ae147ae1480000000000000000 msacsr 00000002 -frsqrt.d $w15, $w30, w15: 7ff8000000000000604a20bd700c2c3e w30: bfe66666666666660000006000000000 msacsr 00000002 -frsqrt.d $w16, $w5, w16: 3fee82c3f9d89e1c3f458a24b20e5b9e w5: 3ff199999999999a4141a828c51eb852 msacsr 00000002 -frsqrt.d $w17, $w3, w17: 7ff80000000000000000000000000000 w3: c1b59e0837b333337ff0000000000000 msacsr 00000002 -frsqrt.d $w18, $w7, w18: 3f733bbfdc427cac3fa5555555555556 w7: 40e62526666666664082000000000000 msacsr 00000002 -frsqrt.d $w19, $w3, w19: 3fa55555555555563fa5555555555556 w3: 40820000000000004082000000000000 msacsr 00000002 -frsqrt.d $w20, $w30, w20: 3ff6a09e667f3bcd7ff8000000000000 w30: 3fe0000000000000fff0000000000000 msacsr 00000002 -frsqrt.d $w21, $w27, w21: 7ff80000000000007ff8000000000000 w27: c005395810624dd3c3e0000020000000 msacsr 00000002 -frsqrt.d $w22, $w26, w22: 3fa35794ad44f3ef7ff8000000000000 w26: 4085e5999999999a8000006000000000 msacsr 00000002 -frsqrt.d $w23, $w20, w23: 7ff8000000000000fff0000000000000 w20: c088f8f5c28f5c298000000000000000 msacsr 00000002 -frsqrt.d $w24, $w7, w24: 3fa8993eff4a591f7ff0000000000000 w7: 407b13ae147ae1480000000000000000 msacsr 00000002 -frsqrt.d $w25, $w10, w25: 7ff8000000000000604a20bd700c2c3e w10: bfe66666666666660000006000000000 msacsr 00000002 -frsqrt.d $w26, $w29, w26: 3fee82c3f9d89e1c3f458a24b20e5b9e w29: 3ff199999999999a4141a828c51eb852 msacsr 00000002 -frsqrt.d $w27, $w20, w27: 7ff80000000000000000000000000000 w20: c1b59e0837b333337ff0000000000000 msacsr 00000002 -frsqrt.d $w28, $w6, w28: 3f733bbfdc427cac3fa5555555555556 w6: 40e62526666666664082000000000000 msacsr 00000002 -frsqrt.d $w29, $w24, w29: 3fa55555555555563fa5555555555556 w24: 40820000000000004082000000000000 msacsr 00000002 -frsqrt.d $w30, $w30, w30: 3ff6a09e667f3bcd7ff8000000000000 w30: 3fe0000000000000fff0000000000000 msacsr 00000002 -frsqrt.d $w31, $w6, w31: 7ff80000000000007ff8000000000000 w6: c005395810624dd3c3e0000020000000 msacsr 00000002 fsqrt.w $w0, $w17, w0: 7fc000007fc000007fc000003f3504f4 w17: cf000001c029cac1ff8000003f000000 msacsr 00000002 fsqrt.w $w1, $w14, w1: 7fc0000041d3c4137fc000007fc00000 w14: 80500000442f2ccdcf000001c029cac1 msacsr 00000002 fsqrt.w $w2, $w8, w2: 800000007fc000007fc0000041d3c413 w8: 80000000c447c7ae80500000442f2ccd msacsr 00000002 @@ -28606,70 +28414,6 @@ frcp.d $w28, $w6, w28: 3ef71ec6cb12f8fb3f5c71c71c71c71c w6: 40e6252666666666408 frcp.d $w29, $w11, w29: 3f5c71c71c71c71c3f5c71c71c71c71c w11: 40820000000000004082000000000000 msacsr 00000003 frcp.d $w30, $w30, w30: 40000000000000008000000000000000 w30: 3fe0000000000000fff0000000000000 msacsr 00000003 frcp.d $w31, $w22, w31: bfd81fa673fc86b5bbffffffc0000080 w22: c005395810624dd3c3e0000020000000 msacsr 00000003 -frsqrt.w $w0, $w10, w0: 7fc000007fc000007fc000003fb504f3 w10: cf000001c029cac1ff8000003f000000 msacsr 00000003 -frsqrt.w $w1, $w20, w1: 7fc000003d1abca57fc000007fc00000 w20: 80500000442f2ccdcf000001c029cac1 msacsr 00000003 -frsqrt.w $w2, $w26, w2: ff8000007fc000007fc000003d1abca5 w26: 80000000c447c7ae80500000442f2ccd msacsr 00000003 -frsqrt.w $w3, $w12, w3: 7f8000003d44c9f7ff8000007fc00000 w12: 0000000043d89d7180000000c447c7ae msacsr 00000003 -frsqrt.w $w4, $w0, w4: 5f21e89b7fc000007f8000003d44c9f7 w0: 00500000bf3333330000000043d89d71 msacsr 00000003 -frsqrt.w $w5, $w22, w5: 3bd77f463f74161f5f21e89b7fc00000 w22: 46b4a3143f8ccccd00500000bf333333 msacsr 00000003 -frsqrt.w $w6, $w26, w6: 000000007fc000003bd77f463f74161f w26: 7f800000c70dabb346b4a3143f8ccccd msacsr 00000003 -frsqrt.w $w7, $w14, w7: 7fc000007fc00000000000007fc00000 w14: c029cac1c791bfa97f800000c70dabb3 msacsr 00000003 -frsqrt.w $w8, $w8, w8: 3d2aaaaa3c7349df7fc000007fc00000 w8: 44100000458db99ac029cac1c791bfa9 msacsr 00000003 -frsqrt.w $w9, $w17, w9: 3d2aaaaa3d2aaaaa3d2aaaaa3c7349df w17: 441000004410000044100000458db99a msacsr 00000003 -frsqrt.w $w10, $w28, w10: 7fc000007fc000007fc000003fb504f3 w28: cf000001c029cac1ff8000003f000000 msacsr 00000003 -frsqrt.w $w11, $w8, w11: 7fc000003d1abca57fc000007fc00000 w8: 80500000442f2ccdcf000001c029cac1 msacsr 00000003 -frsqrt.w $w12, $w16, w12: ff8000007fc000007fc000003d1abca5 w16: 80000000c447c7ae80500000442f2ccd msacsr 00000003 -frsqrt.w $w13, $w9, w13: 7f8000003d44c9f7ff8000007fc00000 w9: 0000000043d89d7180000000c447c7ae msacsr 00000003 -frsqrt.w $w14, $w3, w14: 5f21e89b7fc000007f8000003d44c9f7 w3: 00500000bf3333330000000043d89d71 msacsr 00000003 -frsqrt.w $w15, $w21, w15: 3bd77f463f74161f5f21e89b7fc00000 w21: 46b4a3143f8ccccd00500000bf333333 msacsr 00000003 -frsqrt.w $w16, $w9, w16: 000000007fc000003bd77f463f74161f w9: 7f800000c70dabb346b4a3143f8ccccd msacsr 00000003 -frsqrt.w $w17, $w14, w17: 7fc000007fc00000000000007fc00000 w14: c029cac1c791bfa97f800000c70dabb3 msacsr 00000003 -frsqrt.w $w18, $w10, w18: 3d2aaaaa3c7349df7fc000007fc00000 w10: 44100000458db99ac029cac1c791bfa9 msacsr 00000003 -frsqrt.w $w19, $w17, w19: 3d2aaaaa3d2aaaaa3d2aaaaa3c7349df w17: 441000004410000044100000458db99a msacsr 00000003 -frsqrt.w $w20, $w25, w20: 7fc000007fc000007fc000003fb504f3 w25: cf000001c029cac1ff8000003f000000 msacsr 00000003 -frsqrt.w $w21, $w7, w21: 7fc000003d1abca57fc000007fc00000 w7: 80500000442f2ccdcf000001c029cac1 msacsr 00000003 -frsqrt.w $w22, $w26, w22: ff8000007fc000007fc000003d1abca5 w26: 80000000c447c7ae80500000442f2ccd msacsr 00000003 -frsqrt.w $w23, $w28, w23: 7f8000003d44c9f7ff8000007fc00000 w28: 0000000043d89d7180000000c447c7ae msacsr 00000003 -frsqrt.w $w24, $w4, w24: 5f21e89b7fc000007f8000003d44c9f7 w4: 00500000bf3333330000000043d89d71 msacsr 00000003 -frsqrt.w $w25, $w8, w25: 3bd77f463f74161f5f21e89b7fc00000 w8: 46b4a3143f8ccccd00500000bf333333 msacsr 00000003 -frsqrt.w $w26, $w1, w26: 000000007fc000003bd77f463f74161f w1: 7f800000c70dabb346b4a3143f8ccccd msacsr 00000003 -frsqrt.w $w27, $w13, w27: 7fc000007fc00000000000007fc00000 w13: c029cac1c791bfa97f800000c70dabb3 msacsr 00000003 -frsqrt.w $w28, $w14, w28: 3d2aaaaa3c7349df7fc000007fc00000 w14: 44100000458db99ac029cac1c791bfa9 msacsr 00000003 -frsqrt.w $w29, $w12, w29: 3d2aaaaa3d2aaaaa3d2aaaaa3c7349df w12: 441000004410000044100000458db99a msacsr 00000003 -frsqrt.w $w30, $w30, w30: 7fc000007fc000007fc000003fb504f3 w30: cf000001c029cac1ff8000003f000000 msacsr 00000003 -frsqrt.w $w31, $w17, w31: 7fc000003d1abca57fc000007fc00000 w17: 80500000442f2ccdcf000001c029cac1 msacsr 00000003 -frsqrt.d $w0, $w2, w0: 3ff6a09e667f3bcc7ff8000000000000 w2: 3fe0000000000000fff0000000000000 msacsr 00000003 -frsqrt.d $w1, $w14, w1: 7ff80000000000007ff8000000000000 w14: c005395810624dd3c3e0000020000000 msacsr 00000003 -frsqrt.d $w2, $w24, w2: 3fa35794ad44f3ee7ff8000000000000 w24: 4085e5999999999a8000006000000000 msacsr 00000003 -frsqrt.d $w3, $w20, w3: 7ff8000000000000fff0000000000000 w20: c088f8f5c28f5c298000000000000000 msacsr 00000003 -frsqrt.d $w4, $w25, w4: 3fa8993eff4a591e7ff0000000000000 w25: 407b13ae147ae1480000000000000000 msacsr 00000003 -frsqrt.d $w5, $w0, w5: 7ff8000000000000604a20bd700c2c3d w0: bfe66666666666660000006000000000 msacsr 00000003 -frsqrt.d $w6, $w26, w6: 3fee82c3f9d89e1b3f458a24b20e5b9d w26: 3ff199999999999a4141a828c51eb852 msacsr 00000003 -frsqrt.d $w7, $w26, w7: 7ff80000000000000000000000000000 w26: c1b59e0837b333337ff0000000000000 msacsr 00000003 -frsqrt.d $w8, $w8, w8: 3f733bbfdc427cab3fa5555555555555 w8: 40e62526666666664082000000000000 msacsr 00000003 -frsqrt.d $w9, $w19, w9: 3fa55555555555553fa5555555555555 w19: 40820000000000004082000000000000 msacsr 00000003 -frsqrt.d $w10, $w27, w10: 3ff6a09e667f3bcc7ff8000000000000 w27: 3fe0000000000000fff0000000000000 msacsr 00000003 -frsqrt.d $w11, $w8, w11: 7ff80000000000007ff8000000000000 w8: c005395810624dd3c3e0000020000000 msacsr 00000003 -frsqrt.d $w12, $w2, w12: 3fa35794ad44f3ee7ff8000000000000 w2: 4085e5999999999a8000006000000000 msacsr 00000003 -frsqrt.d $w13, $w31, w13: 7ff8000000000000fff0000000000000 w31: c088f8f5c28f5c298000000000000000 msacsr 00000003 -frsqrt.d $w14, $w0, w14: 3fa8993eff4a591e7ff0000000000000 w0: 407b13ae147ae1480000000000000000 msacsr 00000003 -frsqrt.d $w15, $w30, w15: 7ff8000000000000604a20bd700c2c3d w30: bfe66666666666660000006000000000 msacsr 00000003 -frsqrt.d $w16, $w5, w16: 3fee82c3f9d89e1b3f458a24b20e5b9d w5: 3ff199999999999a4141a828c51eb852 msacsr 00000003 -frsqrt.d $w17, $w3, w17: 7ff80000000000000000000000000000 w3: c1b59e0837b333337ff0000000000000 msacsr 00000003 -frsqrt.d $w18, $w7, w18: 3f733bbfdc427cab3fa5555555555555 w7: 40e62526666666664082000000000000 msacsr 00000003 -frsqrt.d $w19, $w3, w19: 3fa55555555555553fa5555555555555 w3: 40820000000000004082000000000000 msacsr 00000003 -frsqrt.d $w20, $w30, w20: 3ff6a09e667f3bcc7ff8000000000000 w30: 3fe0000000000000fff0000000000000 msacsr 00000003 -frsqrt.d $w21, $w27, w21: 7ff80000000000007ff8000000000000 w27: c005395810624dd3c3e0000020000000 msacsr 00000003 -frsqrt.d $w22, $w26, w22: 3fa35794ad44f3ee7ff8000000000000 w26: 4085e5999999999a8000006000000000 msacsr 00000003 -frsqrt.d $w23, $w20, w23: 7ff8000000000000fff0000000000000 w20: c088f8f5c28f5c298000000000000000 msacsr 00000003 -frsqrt.d $w24, $w7, w24: 3fa8993eff4a591e7ff0000000000000 w7: 407b13ae147ae1480000000000000000 msacsr 00000003 -frsqrt.d $w25, $w10, w25: 7ff8000000000000604a20bd700c2c3d w10: bfe66666666666660000006000000000 msacsr 00000003 -frsqrt.d $w26, $w29, w26: 3fee82c3f9d89e1b3f458a24b20e5b9d w29: 3ff199999999999a4141a828c51eb852 msacsr 00000003 -frsqrt.d $w27, $w20, w27: 7ff80000000000000000000000000000 w20: c1b59e0837b333337ff0000000000000 msacsr 00000003 -frsqrt.d $w28, $w6, w28: 3f733bbfdc427cab3fa5555555555555 w6: 40e62526666666664082000000000000 msacsr 00000003 -frsqrt.d $w29, $w24, w29: 3fa55555555555553fa5555555555555 w24: 40820000000000004082000000000000 msacsr 00000003 -frsqrt.d $w30, $w30, w30: 3ff6a09e667f3bcc7ff8000000000000 w30: 3fe0000000000000fff0000000000000 msacsr 00000003 -frsqrt.d $w31, $w6, w31: 7ff80000000000007ff8000000000000 w6: c005395810624dd3c3e0000020000000 msacsr 00000003 fsqrt.w $w0, $w17, w0: 7fc000007fc000007fc000003f3504f3 w17: cf000001c029cac1ff8000003f000000 msacsr 00000003 fsqrt.w $w1, $w14, w1: 7fc0000041d3c4127fc000007fc00000 w14: 80500000442f2ccdcf000001c029cac1 msacsr 00000003 fsqrt.w $w2, $w8, w2: 800000007fc000007fc0000041d3c412 w8: 80000000c447c7ae80500000442f2ccd msacsr 00000003 @@ -29246,6 +28990,262 @@ ffqr.d $w28, $w2, w28: bfdfeb1a9f800000bfdc37202b800000 w2: 44100000458db99ac02 ffqr.d $w29, $w4, w29: 3fe10400000000003fe1636e66800000 w4: 441000004410000044100000458db99a msacsr 00000003 ffqr.d $w30, $w15, w30: bf700000000000003fdf800000000000 w15: cf000001c029cac1ff8000003f000000 msacsr 00000003 ffqr.d $w31, $w28, w31: bfd87fffff800000bfdfeb1a9f800000 w28: 80500000442f2ccdcf000001c029cac1 msacsr 00000003 +frsqrt.w $w0, $w10, msacsr=0: PASS +frsqrt.w $w1, $w20, msacsr=0: PASS +frsqrt.w $w2, $w26, msacsr=0: PASS +frsqrt.w $w3, $w12, msacsr=0: PASS +frsqrt.w $w4, $w0, msacsr=0: PASS +frsqrt.w $w5, $w22, msacsr=0: PASS +frsqrt.w $w6, $w26, msacsr=0: PASS +frsqrt.w $w7, $w14, msacsr=0: PASS +frsqrt.w $w8, $w8, msacsr=0: PASS +frsqrt.w $w9, $w17, msacsr=0: PASS +frsqrt.w $w10, $w28, msacsr=0: PASS +frsqrt.w $w11, $w8, msacsr=0: PASS +frsqrt.w $w12, $w16, msacsr=0: PASS +frsqrt.w $w13, $w9, msacsr=0: PASS +frsqrt.w $w14, $w3, msacsr=0: PASS +frsqrt.w $w15, $w21, msacsr=0: PASS +frsqrt.w $w16, $w9, msacsr=0: PASS +frsqrt.w $w17, $w14, msacsr=0: PASS +frsqrt.w $w18, $w10, msacsr=0: PASS +frsqrt.w $w19, $w17, msacsr=0: PASS +frsqrt.w $w20, $w25, msacsr=0: PASS +frsqrt.w $w21, $w7, msacsr=0: PASS +frsqrt.w $w22, $w26, msacsr=0: PASS +frsqrt.w $w23, $w28, msacsr=0: PASS +frsqrt.w $w24, $w4, msacsr=0: PASS +frsqrt.w $w25, $w8, msacsr=0: PASS +frsqrt.w $w26, $w1, msacsr=0: PASS +frsqrt.w $w27, $w13, msacsr=0: PASS +frsqrt.w $w28, $w14, msacsr=0: PASS +frsqrt.w $w29, $w12, msacsr=0: PASS +frsqrt.w $w30, $w30, msacsr=0: PASS +frsqrt.w $w31, $w17, msacsr=0: PASS +frsqrt.d $w0, $w2, msacsr=0: PASS +frsqrt.d $w1, $w14, msacsr=0: PASS +frsqrt.d $w2, $w24, msacsr=0: PASS +frsqrt.d $w3, $w20, msacsr=0: PASS +frsqrt.d $w4, $w25, msacsr=0: PASS +frsqrt.d $w5, $w0, msacsr=0: PASS +frsqrt.d $w6, $w26, msacsr=0: PASS +frsqrt.d $w7, $w26, msacsr=0: PASS +frsqrt.d $w8, $w8, msacsr=0: PASS +frsqrt.d $w9, $w19, msacsr=0: PASS +frsqrt.d $w10, $w27, msacsr=0: PASS +frsqrt.d $w11, $w8, msacsr=0: PASS +frsqrt.d $w12, $w2, msacsr=0: PASS +frsqrt.d $w13, $w31, msacsr=0: PASS +frsqrt.d $w14, $w0, msacsr=0: PASS +frsqrt.d $w15, $w30, msacsr=0: PASS +frsqrt.d $w16, $w5, msacsr=0: PASS +frsqrt.d $w17, $w3, msacsr=0: PASS +frsqrt.d $w18, $w7, msacsr=0: PASS +frsqrt.d $w19, $w3, msacsr=0: PASS +frsqrt.d $w20, $w30, msacsr=0: PASS +frsqrt.d $w21, $w27, msacsr=0: PASS +frsqrt.d $w22, $w26, msacsr=0: PASS +frsqrt.d $w23, $w20, msacsr=0: PASS +frsqrt.d $w24, $w7, msacsr=0: PASS +frsqrt.d $w25, $w10, msacsr=0: PASS +frsqrt.d $w26, $w29, msacsr=0: PASS +frsqrt.d $w27, $w20, msacsr=0: PASS +frsqrt.d $w28, $w6, msacsr=0: PASS +frsqrt.d $w29, $w24, msacsr=0: PASS +frsqrt.d $w30, $w30, msacsr=0: PASS +frsqrt.d $w31, $w6, msacsr=0: PASS +frsqrt.w $w0, $w10, msacsr=1: PASS +frsqrt.w $w1, $w20, msacsr=1: PASS +frsqrt.w $w2, $w26, msacsr=1: PASS +frsqrt.w $w3, $w12, msacsr=1: PASS +frsqrt.w $w4, $w0, msacsr=1: PASS +frsqrt.w $w5, $w22, msacsr=1: PASS +frsqrt.w $w6, $w26, msacsr=1: PASS +frsqrt.w $w7, $w14, msacsr=1: PASS +frsqrt.w $w8, $w8, msacsr=1: PASS +frsqrt.w $w9, $w17, msacsr=1: PASS +frsqrt.w $w10, $w28, msacsr=1: PASS +frsqrt.w $w11, $w8, msacsr=1: PASS +frsqrt.w $w12, $w16, msacsr=1: PASS +frsqrt.w $w13, $w9, msacsr=1: PASS +frsqrt.w $w14, $w3, msacsr=1: PASS +frsqrt.w $w15, $w21, msacsr=1: PASS +frsqrt.w $w16, $w9, msacsr=1: PASS +frsqrt.w $w17, $w14, msacsr=1: PASS +frsqrt.w $w18, $w10, msacsr=1: PASS +frsqrt.w $w19, $w17, msacsr=1: PASS +frsqrt.w $w20, $w25, msacsr=1: PASS +frsqrt.w $w21, $w7, msacsr=1: PASS +frsqrt.w $w22, $w26, msacsr=1: PASS +frsqrt.w $w23, $w28, msacsr=1: PASS +frsqrt.w $w24, $w4, msacsr=1: PASS +frsqrt.w $w25, $w8, msacsr=1: PASS +frsqrt.w $w26, $w1, msacsr=1: PASS +frsqrt.w $w27, $w13, msacsr=1: PASS +frsqrt.w $w28, $w14, msacsr=1: PASS +frsqrt.w $w29, $w12, msacsr=1: PASS +frsqrt.w $w30, $w30, msacsr=1: PASS +frsqrt.w $w31, $w17, msacsr=1: PASS +frsqrt.d $w0, $w2, msacsr=1: PASS +frsqrt.d $w1, $w14, msacsr=1: PASS +frsqrt.d $w2, $w24, msacsr=1: PASS +frsqrt.d $w3, $w20, msacsr=1: PASS +frsqrt.d $w4, $w25, msacsr=1: PASS +frsqrt.d $w5, $w0, msacsr=1: PASS +frsqrt.d $w6, $w26, msacsr=1: PASS +frsqrt.d $w7, $w26, msacsr=1: PASS +frsqrt.d $w8, $w8, msacsr=1: PASS +frsqrt.d $w9, $w19, msacsr=1: PASS +frsqrt.d $w10, $w27, msacsr=1: PASS +frsqrt.d $w11, $w8, msacsr=1: PASS +frsqrt.d $w12, $w2, msacsr=1: PASS +frsqrt.d $w13, $w31, msacsr=1: PASS +frsqrt.d $w14, $w0, msacsr=1: PASS +frsqrt.d $w15, $w30, msacsr=1: PASS +frsqrt.d $w16, $w5, msacsr=1: PASS +frsqrt.d $w17, $w3, msacsr=1: PASS +frsqrt.d $w18, $w7, msacsr=1: PASS +frsqrt.d $w19, $w3, msacsr=1: PASS +frsqrt.d $w20, $w30, msacsr=1: PASS +frsqrt.d $w21, $w27, msacsr=1: PASS +frsqrt.d $w22, $w26, msacsr=1: PASS +frsqrt.d $w23, $w20, msacsr=1: PASS +frsqrt.d $w24, $w7, msacsr=1: PASS +frsqrt.d $w25, $w10, msacsr=1: PASS +frsqrt.d $w26, $w29, msacsr=1: PASS +frsqrt.d $w27, $w20, msacsr=1: PASS +frsqrt.d $w28, $w6, msacsr=1: PASS +frsqrt.d $w29, $w24, msacsr=1: PASS +frsqrt.d $w30, $w30, msacsr=1: PASS +frsqrt.d $w31, $w6, msacsr=1: PASS +frsqrt.w $w0, $w10, msacsr=2: PASS +frsqrt.w $w1, $w20, msacsr=2: PASS +frsqrt.w $w2, $w26, msacsr=2: PASS +frsqrt.w $w3, $w12, msacsr=2: PASS +frsqrt.w $w4, $w0, msacsr=2: PASS +frsqrt.w $w5, $w22, msacsr=2: PASS +frsqrt.w $w6, $w26, msacsr=2: PASS +frsqrt.w $w7, $w14, msacsr=2: PASS +frsqrt.w $w8, $w8, msacsr=2: PASS +frsqrt.w $w9, $w17, msacsr=2: PASS +frsqrt.w $w10, $w28, msacsr=2: PASS +frsqrt.w $w11, $w8, msacsr=2: PASS +frsqrt.w $w12, $w16, msacsr=2: PASS +frsqrt.w $w13, $w9, msacsr=2: PASS +frsqrt.w $w14, $w3, msacsr=2: PASS +frsqrt.w $w15, $w21, msacsr=2: PASS +frsqrt.w $w16, $w9, msacsr=2: PASS +frsqrt.w $w17, $w14, msacsr=2: PASS +frsqrt.w $w18, $w10, msacsr=2: PASS +frsqrt.w $w19, $w17, msacsr=2: PASS +frsqrt.w $w20, $w25, msacsr=2: PASS +frsqrt.w $w21, $w7, msacsr=2: PASS +frsqrt.w $w22, $w26, msacsr=2: PASS +frsqrt.w $w23, $w28, msacsr=2: PASS +frsqrt.w $w24, $w4, msacsr=2: PASS +frsqrt.w $w25, $w8, msacsr=2: PASS +frsqrt.w $w26, $w1, msacsr=2: PASS +frsqrt.w $w27, $w13, msacsr=2: PASS +frsqrt.w $w28, $w14, msacsr=2: PASS +frsqrt.w $w29, $w12, msacsr=2: PASS +frsqrt.w $w30, $w30, msacsr=2: PASS +frsqrt.w $w31, $w17, msacsr=2: PASS +frsqrt.d $w0, $w2, msacsr=2: PASS +frsqrt.d $w1, $w14, msacsr=2: PASS +frsqrt.d $w2, $w24, msacsr=2: PASS +frsqrt.d $w3, $w20, msacsr=2: PASS +frsqrt.d $w4, $w25, msacsr=2: PASS +frsqrt.d $w5, $w0, msacsr=2: PASS +frsqrt.d $w6, $w26, msacsr=2: PASS +frsqrt.d $w7, $w26, msacsr=2: PASS +frsqrt.d $w8, $w8, msacsr=2: PASS +frsqrt.d $w9, $w19, msacsr=2: PASS +frsqrt.d $w10, $w27, msacsr=2: PASS +frsqrt.d $w11, $w8, msacsr=2: PASS +frsqrt.d $w12, $w2, msacsr=2: PASS +frsqrt.d $w13, $w31, msacsr=2: PASS +frsqrt.d $w14, $w0, msacsr=2: PASS +frsqrt.d $w15, $w30, msacsr=2: PASS +frsqrt.d $w16, $w5, msacsr=2: PASS +frsqrt.d $w17, $w3, msacsr=2: PASS +frsqrt.d $w18, $w7, msacsr=2: PASS +frsqrt.d $w19, $w3, msacsr=2: PASS +frsqrt.d $w20, $w30, msacsr=2: PASS +frsqrt.d $w21, $w27, msacsr=2: PASS +frsqrt.d $w22, $w26, msacsr=2: PASS +frsqrt.d $w23, $w20, msacsr=2: PASS +frsqrt.d $w24, $w7, msacsr=2: PASS +frsqrt.d $w25, $w10, msacsr=2: PASS +frsqrt.d $w26, $w29, msacsr=2: PASS +frsqrt.d $w27, $w20, msacsr=2: PASS +frsqrt.d $w28, $w6, msacsr=2: PASS +frsqrt.d $w29, $w24, msacsr=2: PASS +frsqrt.d $w30, $w30, msacsr=2: PASS +frsqrt.d $w31, $w6, msacsr=2: PASS +frsqrt.w $w0, $w10, msacsr=3: PASS +frsqrt.w $w1, $w20, msacsr=3: PASS +frsqrt.w $w2, $w26, msacsr=3: PASS +frsqrt.w $w3, $w12, msacsr=3: PASS +frsqrt.w $w4, $w0, msacsr=3: PASS +frsqrt.w $w5, $w22, msacsr=3: PASS +frsqrt.w $w6, $w26, msacsr=3: PASS +frsqrt.w $w7, $w14, msacsr=3: PASS +frsqrt.w $w8, $w8, msacsr=3: PASS +frsqrt.w $w9, $w17, msacsr=3: PASS +frsqrt.w $w10, $w28, msacsr=3: PASS +frsqrt.w $w11, $w8, msacsr=3: PASS +frsqrt.w $w12, $w16, msacsr=3: PASS +frsqrt.w $w13, $w9, msacsr=3: PASS +frsqrt.w $w14, $w3, msacsr=3: PASS +frsqrt.w $w15, $w21, msacsr=3: PASS +frsqrt.w $w16, $w9, msacsr=3: PASS +frsqrt.w $w17, $w14, msacsr=3: PASS +frsqrt.w $w18, $w10, msacsr=3: PASS +frsqrt.w $w19, $w17, msacsr=3: PASS +frsqrt.w $w20, $w25, msacsr=3: PASS +frsqrt.w $w21, $w7, msacsr=3: PASS +frsqrt.w $w22, $w26, msacsr=3: PASS +frsqrt.w $w23, $w28, msacsr=3: PASS +frsqrt.w $w24, $w4, msacsr=3: PASS +frsqrt.w $w25, $w8, msacsr=3: PASS +frsqrt.w $w26, $w1, msacsr=3: PASS +frsqrt.w $w27, $w13, msacsr=3: PASS +frsqrt.w $w28, $w14, msacsr=3: PASS +frsqrt.w $w29, $w12, msacsr=3: PASS +frsqrt.w $w30, $w30, msacsr=3: PASS +frsqrt.w $w31, $w17, msacsr=3: PASS +frsqrt.d $w0, $w2, msacsr=3: PASS +frsqrt.d $w1, $w14, msacsr=3: PASS +frsqrt.d $w2, $w24, msacsr=3: PASS +frsqrt.d $w3, $w20, msacsr=3: PASS +frsqrt.d $w4, $w25, msacsr=3: PASS +frsqrt.d $w5, $w0, msacsr=3: PASS +frsqrt.d $w6, $w26, msacsr=3: PASS +frsqrt.d $w7, $w26, msacsr=3: PASS +frsqrt.d $w8, $w8, msacsr=3: PASS +frsqrt.d $w9, $w19, msacsr=3: PASS +frsqrt.d $w10, $w27, msacsr=3: PASS +frsqrt.d $w11, $w8, msacsr=3: PASS +frsqrt.d $w12, $w2, msacsr=3: PASS +frsqrt.d $w13, $w31, msacsr=3: PASS +frsqrt.d $w14, $w0, msacsr=3: PASS +frsqrt.d $w15, $w30, msacsr=3: PASS +frsqrt.d $w16, $w5, msacsr=3: PASS +frsqrt.d $w17, $w3, msacsr=3: PASS +frsqrt.d $w18, $w7, msacsr=3: PASS +frsqrt.d $w19, $w3, msacsr=3: PASS +frsqrt.d $w20, $w30, msacsr=3: PASS +frsqrt.d $w21, $w27, msacsr=3: PASS +frsqrt.d $w22, $w26, msacsr=3: PASS +frsqrt.d $w23, $w20, msacsr=3: PASS +frsqrt.d $w24, $w7, msacsr=3: PASS +frsqrt.d $w25, $w10, msacsr=3: PASS +frsqrt.d $w26, $w29, msacsr=3: PASS +frsqrt.d $w27, $w20, msacsr=3: PASS +frsqrt.d $w28, $w6, msacsr=3: PASS +frsqrt.d $w29, $w24, msacsr=3: PASS +frsqrt.d $w30, $w30, msacsr=3: PASS +frsqrt.d $w31, $w6, msacsr=3: PASS Load MSA store FPU $0 cf000001c029cac1ff8000003f000000 flt 3f000000 Load MSA store FPU $1 cf000001c029cac1ff8000003f000000 flt 3f000000 Load MSA store FPU $2 cf000001c029cac1ff8000003f000000 flt 3f000000 diff --git a/none/tests/mips32/test_math.cpp b/none/tests/mips32/test_math.cpp index 3d724d3a9b..989979caa9 100644 --- a/none/tests/mips32/test_math.cpp +++ b/none/tests/mips32/test_math.cpp @@ -98,11 +98,15 @@ int main () { /* Test log. */ printf("log(M_E): %lf\n", log(M_E)); + #define EPS 0.0000001 /* Test tgamma. */ - printf("tgamma(5.0): %lf\n", tgamma(5.0)); + double tgamma5 = tgamma(5.0); + printf(tgamma5 <= 24.0 + EPS && tgamma5 >= 24.0 - EPS ? "tgamma(5.0): PASS\n" : "tgamma(5.0): FAIL\n"); /* Test cbrt. */ - printf("cbrt(27.0): %lf\n", cbrt(cube)); + double cbrt27 = cbrt(cube); + printf(cbrt27 <= 3.0 + EPS && cbrt27 >= 3.0 - EPS ? "cbrt(27.0): PASS\n" : "cbrt(27.0): FAIL\n"); + #undef EPS /* Test dividing by zero. */ // Clearing clears. diff --git a/none/tests/mips32/test_math.stdout.exp b/none/tests/mips32/test_math.stdout.exp index 6017e26f41..320e6bdfc7 100644 --- a/none/tests/mips32/test_math.stdout.exp +++ b/none/tests/mips32/test_math.stdout.exp @@ -49,7 +49,7 @@ nearbyint(1234.01): 1234.000000 nearbyintf(1234.01f): 1234.000000 nearbyintl(1234.01): 1234.000000 log(M_E): 1.000000 -tgamma(5.0): 24.000000 -cbrt(27.0): 3.000000 +tgamma(5.0): PASS +cbrt(27.0): PASS feclearexcept(FE_ALL_EXCEPT): 0 raised: 32 -- 2.47.2